c_src: gives c_src its own clibdir
[nit.git] / c_src / typing._sep.c
1 /* This C file is generated by NIT to compile module typing. */
2 #include "typing._sep.h"
3 void typing___MMSrcModule___do_typing(val_t self, val_t param0) {
4 struct trace_t trace = {NULL, NULL, 25, LOCATE_typing___MMSrcModule___do_typing};
5 val_t variable[5];
6 struct WBT_ **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_typing;
9 /* Register variable[0]: Local variable */
10 variable[0] = self;
11 /* Register variable[1]: Local variable */
12 variable[1] = param0;
13 /* Register variable[2]: Method return value and escape marker */
14 /* Register variable[3]: Local variable */
15 /* Register variable[4]: Result */
16 variable[4] = NEW_TypingVisitor_typing___TypingVisitor___init( variable[1] /*tc*/, variable[0]) /*new TypingVisitor*/;
17 variable[3] = variable[4];
18 /* Register variable[4]: Result */
19 variable[4] = CALL_syntax_base___MMSrcModule___node(variable[0])(variable[0]) /*MMSrcModule::node*/;
20 CALL_parser_prod___Visitor___visit( variable[3] /*tv*/)( variable[3] /*tv*/, variable[4]) /*TypingVisitor::visit*/;
21 return_label0: while(false);
22 tracehead = trace.prev;
23 return;
24 }
25 void typing___TypingVisitor___visit(val_t self, val_t param0) {
26 struct trace_t trace = {NULL, NULL, 41, LOCATE_typing___TypingVisitor___visit};
27 val_t variable[4];
28 struct WBT_ **closurevariable = NULL;
29 trace.prev = tracehead; tracehead = &trace;
30 trace.file = LOCATE_typing;
31 /* Register variable[0]: Local variable */
32 variable[0] = self;
33 /* Register variable[1]: Local variable */
34 variable[1] = param0;
35 /* Register variable[2]: Method return value and escape marker */
36 /* Register variable[3]: Result */
37 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[1] /*n*/ == NIT_NULL /*null*/) || (( variable[1] /*n*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[1] /*n*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[1] /*n*/)( variable[1] /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
38 if (UNTAG_Bool(variable[3])) { /*if*/
39 CALL_typing___PNode___accept_typing( variable[1] /*n*/)( variable[1] /*n*/, variable[0]) /*PNode::accept_typing*/;
40 }
41 return_label1: while(false);
42 tracehead = trace.prev;
43 return;
44 }
45 val_t typing___TypingVisitor___variable_ctx(val_t self) {
46 struct trace_t trace = {NULL, NULL, 46, LOCATE_typing___TypingVisitor___variable_ctx};
47 val_t *variable = NULL;
48 struct WBT_ **closurevariable = NULL;
49 trace.prev = tracehead; tracehead = &trace;
50 trace.file = LOCATE_typing;
51 tracehead = trace.prev;
52 return ATTR_typing___TypingVisitor____variable_ctx( self) /*TypingVisitor::_variable_ctx*/;
53 }
54 void typing___TypingVisitor___variable_ctx__eq(val_t self, val_t param0) {
55 struct trace_t trace = {NULL, NULL, 46, LOCATE_typing___TypingVisitor___variable_ctx__eq};
56 val_t *variable = NULL;
57 struct WBT_ **closurevariable = NULL;
58 trace.prev = tracehead; tracehead = &trace;
59 trace.file = LOCATE_typing;
60 ATTR_typing___TypingVisitor____variable_ctx( self) /*TypingVisitor::_variable_ctx*/ = param0;
61 tracehead = trace.prev;
62 return;
63 }
64 val_t typing___TypingVisitor___base_variable_ctx(val_t self) {
65 struct trace_t trace = {NULL, NULL, 49, LOCATE_typing___TypingVisitor___base_variable_ctx};
66 val_t *variable = NULL;
67 struct WBT_ **closurevariable = NULL;
68 trace.prev = tracehead; tracehead = &trace;
69 trace.file = LOCATE_typing;
70 tracehead = trace.prev;
71 return ATTR_typing___TypingVisitor____base_variable_ctx( self) /*TypingVisitor::_base_variable_ctx*/;
72 }
73 void typing___TypingVisitor___base_variable_ctx__eq(val_t self, val_t param0) {
74 struct trace_t trace = {NULL, NULL, 49, LOCATE_typing___TypingVisitor___base_variable_ctx__eq};
75 val_t *variable = NULL;
76 struct WBT_ **closurevariable = NULL;
77 trace.prev = tracehead; tracehead = &trace;
78 trace.file = LOCATE_typing;
79 ATTR_typing___TypingVisitor____base_variable_ctx( self) /*TypingVisitor::_base_variable_ctx*/ = param0;
80 tracehead = trace.prev;
81 return;
82 }
83 val_t typing___TypingVisitor___escapable_ctx(val_t self) {
84 struct trace_t trace = {NULL, NULL, 52, LOCATE_typing___TypingVisitor___escapable_ctx};
85 val_t *variable = NULL;
86 struct WBT_ **closurevariable = NULL;
87 trace.prev = tracehead; tracehead = &trace;
88 trace.file = LOCATE_typing;
89 tracehead = trace.prev;
90 return ATTR_typing___TypingVisitor____escapable_ctx( self) /*TypingVisitor::_escapable_ctx*/;
91 }
92 void typing___TypingVisitor___escapable_ctx__eq(val_t self, val_t param0) {
93 struct trace_t trace = {NULL, NULL, 52, LOCATE_typing___TypingVisitor___escapable_ctx__eq};
94 val_t *variable = NULL;
95 struct WBT_ **closurevariable = NULL;
96 trace.prev = tracehead; tracehead = &trace;
97 trace.file = LOCATE_typing;
98 ATTR_typing___TypingVisitor____escapable_ctx( self) /*TypingVisitor::_escapable_ctx*/ = param0;
99 tracehead = trace.prev;
100 return;
101 }
102 val_t typing___TypingVisitor___self_var(val_t self) {
103 struct trace_t trace = {NULL, NULL, 55, LOCATE_typing___TypingVisitor___self_var};
104 val_t *variable = NULL;
105 struct WBT_ **closurevariable = NULL;
106 trace.prev = tracehead; tracehead = &trace;
107 trace.file = LOCATE_typing;
108 tracehead = trace.prev;
109 return ATTR_typing___TypingVisitor____self_var( self) /*TypingVisitor::_self_var*/;
110 }
111 void typing___TypingVisitor___self_var__eq(val_t self, val_t param0) {
112 struct trace_t trace = {NULL, NULL, 55, LOCATE_typing___TypingVisitor___self_var__eq};
113 val_t *variable = NULL;
114 struct WBT_ **closurevariable = NULL;
115 trace.prev = tracehead; tracehead = &trace;
116 trace.file = LOCATE_typing;
117 ATTR_typing___TypingVisitor____self_var( self) /*TypingVisitor::_self_var*/ = param0;
118 tracehead = trace.prev;
119 return;
120 }
121 val_t typing___TypingVisitor___top_block(val_t self) {
122 struct trace_t trace = {NULL, NULL, 58, LOCATE_typing___TypingVisitor___top_block};
123 val_t *variable = NULL;
124 struct WBT_ **closurevariable = NULL;
125 trace.prev = tracehead; tracehead = &trace;
126 trace.file = LOCATE_typing;
127 tracehead = trace.prev;
128 return ATTR_typing___TypingVisitor____top_block( self) /*TypingVisitor::_top_block*/;
129 }
130 void typing___TypingVisitor___top_block__eq(val_t self, val_t param0) {
131 struct trace_t trace = {NULL, NULL, 58, LOCATE_typing___TypingVisitor___top_block__eq};
132 val_t *variable = NULL;
133 struct WBT_ **closurevariable = NULL;
134 trace.prev = tracehead; tracehead = &trace;
135 trace.file = LOCATE_typing;
136 ATTR_typing___TypingVisitor____top_block( self) /*TypingVisitor::_top_block*/ = param0;
137 tracehead = trace.prev;
138 return;
139 }
140 val_t typing___TypingVisitor___explicit_super_init_calls(val_t self) {
141 struct trace_t trace = {NULL, NULL, 61, LOCATE_typing___TypingVisitor___explicit_super_init_calls};
142 val_t *variable = NULL;
143 struct WBT_ **closurevariable = NULL;
144 trace.prev = tracehead; tracehead = &trace;
145 trace.file = LOCATE_typing;
146 tracehead = trace.prev;
147 return ATTR_typing___TypingVisitor____explicit_super_init_calls( self) /*TypingVisitor::_explicit_super_init_calls*/;
148 }
149 void typing___TypingVisitor___explicit_super_init_calls__eq(val_t self, val_t param0) {
150 struct trace_t trace = {NULL, NULL, 61, LOCATE_typing___TypingVisitor___explicit_super_init_calls__eq};
151 val_t *variable = NULL;
152 struct WBT_ **closurevariable = NULL;
153 trace.prev = tracehead; tracehead = &trace;
154 trace.file = LOCATE_typing;
155 ATTR_typing___TypingVisitor____explicit_super_init_calls( self) /*TypingVisitor::_explicit_super_init_calls*/ = param0;
156 tracehead = trace.prev;
157 return;
158 }
159 val_t typing___TypingVisitor___explicit_other_init_call(val_t self) {
160 struct trace_t trace = {NULL, NULL, 64, LOCATE_typing___TypingVisitor___explicit_other_init_call};
161 val_t *variable = NULL;
162 struct WBT_ **closurevariable = NULL;
163 trace.prev = tracehead; tracehead = &trace;
164 trace.file = LOCATE_typing;
165 tracehead = trace.prev;
166 return ATTR_typing___TypingVisitor____explicit_other_init_call( self) /*TypingVisitor::_explicit_other_init_call*/;
167 }
168 void typing___TypingVisitor___explicit_other_init_call__eq(val_t self, val_t param0) {
169 struct trace_t trace = {NULL, NULL, 64, LOCATE_typing___TypingVisitor___explicit_other_init_call__eq};
170 val_t *variable = NULL;
171 struct WBT_ **closurevariable = NULL;
172 trace.prev = tracehead; tracehead = &trace;
173 trace.file = LOCATE_typing;
174 ATTR_typing___TypingVisitor____explicit_other_init_call( self) /*TypingVisitor::_explicit_other_init_call*/ = param0;
175 tracehead = trace.prev;
176 return;
177 }
178 void typing___TypingVisitor___use_if_true_variable_ctx(val_t self, val_t param0) {
179 struct trace_t trace = {NULL, NULL, 67, LOCATE_typing___TypingVisitor___use_if_true_variable_ctx};
180 val_t variable[5];
181 struct WBT_ **closurevariable = NULL;
182 trace.prev = tracehead; tracehead = &trace;
183 trace.file = LOCATE_typing;
184 /* Register variable[0]: Local variable */
185 variable[0] = self;
186 /* Register variable[1]: Local variable */
187 variable[1] = param0;
188 /* Register variable[2]: Method return value and escape marker */
189 /* Register variable[3]: Local variable */
190 /* Register variable[4]: Result */
191 variable[4] = CALL_typing___PExpr___if_true_variable_ctx( variable[1] /*e*/)( variable[1] /*e*/) /*PExpr::if_true_variable_ctx*/;
192 variable[3] = variable[4];
193 /* Register variable[4]: Result */
194 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*ctx*/ == NIT_NULL /*null*/) || (( variable[3] /*ctx*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*ctx*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)( variable[3] /*ctx*/, NIT_NULL /*null*/) /*Object::==*/)))))));
195 if (UNTAG_Bool(variable[4])) { /*if*/
196 CALL_typing___TypingVisitor___variable_ctx__eq(variable[0])(variable[0], variable[3] /*ctx*/) /*TypingVisitor::variable_ctx=*/;
197 }
198 return_label2: while(false);
199 tracehead = trace.prev;
200 return;
201 }
202 void typing___TypingVisitor___use_if_false_variable_ctx(val_t self, val_t param0) {
203 struct trace_t trace = {NULL, NULL, 74, LOCATE_typing___TypingVisitor___use_if_false_variable_ctx};
204 val_t variable[5];
205 struct WBT_ **closurevariable = NULL;
206 trace.prev = tracehead; tracehead = &trace;
207 trace.file = LOCATE_typing;
208 /* Register variable[0]: Local variable */
209 variable[0] = self;
210 /* Register variable[1]: Local variable */
211 variable[1] = param0;
212 /* Register variable[2]: Method return value and escape marker */
213 /* Register variable[3]: Local variable */
214 /* Register variable[4]: Result */
215 variable[4] = CALL_typing___PExpr___if_false_variable_ctx( variable[1] /*e*/)( variable[1] /*e*/) /*PExpr::if_false_variable_ctx*/;
216 variable[3] = variable[4];
217 /* Register variable[4]: Result */
218 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*ctx*/ == NIT_NULL /*null*/) || (( variable[3] /*ctx*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*ctx*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*ctx*/)( variable[3] /*ctx*/, NIT_NULL /*null*/) /*Object::==*/)))))));
219 if (UNTAG_Bool(variable[4])) { /*if*/
220 CALL_typing___TypingVisitor___variable_ctx__eq(variable[0])(variable[0], variable[3] /*ctx*/) /*TypingVisitor::variable_ctx=*/;
221 }
222 return_label3: while(false);
223 tracehead = trace.prev;
224 return;
225 }
226 val_t typing___TypingVisitor___once_count(val_t self) {
227 struct trace_t trace = {NULL, NULL, 81, LOCATE_typing___TypingVisitor___once_count};
228 val_t *variable = NULL;
229 struct WBT_ **closurevariable = NULL;
230 trace.prev = tracehead; tracehead = &trace;
231 trace.file = LOCATE_typing;
232 tracehead = trace.prev;
233 return ATTR_typing___TypingVisitor____once_count( self) /*TypingVisitor::_once_count*/;
234 }
235 void typing___TypingVisitor___once_count__eq(val_t self, val_t param0) {
236 struct trace_t trace = {NULL, NULL, 81, LOCATE_typing___TypingVisitor___once_count__eq};
237 val_t *variable = NULL;
238 struct WBT_ **closurevariable = NULL;
239 trace.prev = tracehead; tracehead = &trace;
240 trace.file = LOCATE_typing;
241 ATTR_typing___TypingVisitor____once_count( self) /*TypingVisitor::_once_count*/ = param0;
242 tracehead = trace.prev;
243 return;
244 }
245 void typing___TypingVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
246 struct trace_t trace = {NULL, NULL, 84, LOCATE_typing___TypingVisitor___init};
247 val_t variable[4];
248 struct WBT_ **closurevariable = NULL;
249 trace.prev = tracehead; tracehead = &trace;
250 trace.file = LOCATE_typing;
251 /* Register variable[0]: Local variable */
252 variable[0] = self;
253 /* Register variable[1]: Local variable */
254 variable[1] = param0;
255 /* Register variable[2]: Local variable */
256 variable[2] = param1;
257 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TypingVisitor].i]) return;
258 /* Register variable[3]: Method return value and escape marker */
259 CALL_syntax_base___AbsSyntaxVisitor___init(variable[0])(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
260 return_label4: while(false);
261 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TypingVisitor].i] = 1;
262 tracehead = trace.prev;
263 return;
264 }
265 val_t typing___TypingVisitor___get_default_constructor_for(val_t self, val_t param0, val_t param1, val_t param2) {
266 struct trace_t trace = {NULL, NULL, 86, LOCATE_typing___TypingVisitor___get_default_constructor_for};
267 static val_t once_value_7; static int once_bool_7; /* Once value for variable[16]*/
268 static val_t once_value_8 = NIT_NULL; /* Once value for string variable[16]*/
269 static val_t once_value_10 = NIT_NULL; /* Once value for string variable[14]*/
270 static val_t once_value_11 = NIT_NULL; /* Once value for string variable[14]*/
271 static val_t once_value_12 = NIT_NULL; /* Once value for string variable[14]*/
272 static val_t once_value_13 = NIT_NULL; /* Once value for string variable[11]*/
273 static val_t once_value_14 = NIT_NULL; /* Once value for string variable[11]*/
274 static val_t once_value_15 = NIT_NULL; /* Once value for string variable[11]*/
275 static val_t once_value_16 = NIT_NULL; /* Once value for string variable[11]*/
276 static val_t once_value_18 = NIT_NULL; /* Once value for string variable[14]*/
277 static val_t once_value_19 = NIT_NULL; /* Once value for string variable[14]*/
278 static val_t once_value_20 = NIT_NULL; /* Once value for string variable[14]*/
279 static val_t once_value_21 = NIT_NULL; /* Once value for string variable[11]*/
280 static val_t once_value_22 = NIT_NULL; /* Once value for string variable[11]*/
281 static val_t once_value_23 = NIT_NULL; /* Once value for string variable[11]*/
282 static val_t once_value_24 = NIT_NULL; /* Once value for string variable[11]*/
283 static val_t once_value_25 = NIT_NULL; /* Once value for string variable[10]*/
284 static val_t once_value_26 = NIT_NULL; /* Once value for string variable[10]*/
285 val_t variable[17];
286 struct WBT_ **closurevariable = NULL;
287 trace.prev = tracehead; tracehead = &trace;
288 trace.file = LOCATE_typing;
289 /* Register variable[0]: Local variable */
290 variable[0] = self;
291 /* Register variable[1]: Local variable */
292 variable[1] = param0;
293 /* Register variable[2]: Local variable */
294 variable[2] = param1;
295 /* Register variable[3]: Local variable */
296 variable[3] = param2;
297 /* Register variable[4]: Method return value and escape marker */
298 /* Register variable[5]: Local variable */
299 variable[5] = variable[0];
300 /* Register variable[6]: Local variable */
301 /* Register variable[7]: Result */
302 variable[7] = NEW_Array_array___Array___init() /*new Array[MMMethod]*/;
303 variable[6] = variable[7];
304 /* Register variable[7]: Local variable */
305 /* Register variable[8]: Result */
306 variable[8] = NEW_Array_array___Array___init() /*new Array[MMMethod]*/;
307 variable[7] = variable[8];
308 /* Register variable[8]: Local variable */
309 /* Register variable[9]: Result */
310 variable[9] = CALL_static_type___MMLocalProperty___signature( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::signature*/;
311 /* Register variable[9]: Result */
312 variable[9] = CALL_static_type___MMSignature___arity(variable[9])(variable[9]) /*MMSignature::arity*/;
313 variable[8] = variable[9];
314 /* Register variable[9]: Result */
315 variable[9] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::global_properties*/;
316 /* Register variable[9]: For iterator */
317 variable[9] = CALL_abstract_collection___Collection___iterator(variable[9])(variable[9]) /*Collection::iterator*/;
318 while (true) { /*for*/
319 /* Register variable[10]: For 'is_ok' result */
320 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*Iterator::is_ok*/;
321 if (!UNTAG_Bool(variable[10])) break; /*for*/
322 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*Iterator::item*/ /* Ensure var: For item*/;
323 /* Register variable[11]: Local variable */
324 variable[11] = variable[10];
325 /* Register variable[12]: Result */
326 variable[12] = CALL_abstractmetamodel___MMGlobalProperty___is_init_for( variable[11] /*g*/)( variable[11] /*g*/, variable[2] /*c*/) /*MMGlobalProperty::is_init_for*/;
327 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[12])))) { /*if*/
328 goto continue_6;
329 }
330 /* Register variable[12]: Local variable */
331 /* Register variable[13]: Result */
332 variable[13] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[2] /*c*/)( variable[2] /*c*/, variable[11] /*g*/) /*MMLocalClass::[]*/;
333 variable[12] = variable[13];
334 /* Register variable[13]: Local variable */
335 /* Register variable[14]: Result */
336 variable[14] = CALL_static_type___MMLocalClass___get_type( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::get_type*/;
337 /* Register variable[14]: Result */
338 variable[14] = CALL_static_type___MMLocalProperty___signature_for( variable[12] /*gp*/)( variable[12] /*gp*/, variable[14]) /*MMLocalProperty::signature_for*/;
339 variable[13] = variable[14];
340 /* Register variable[14]: Result */
341 variable[14] = TAG_Bool(( variable[12] /*gp*/==NIT_NULL) || VAL_ISA( variable[12] /*gp*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
342 if (!UNTAG_Bool(variable[14])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___TypingVisitor___get_default_constructor_for, LOCATE_typing, 98); nit_exit(1);}
343 /* Register variable[14]: Local variable */
344 /* Register variable[15]: Result */
345 variable[15] = CALL_static_type___MMSignature___arity( variable[13] /*gps*/)( variable[13] /*gps*/) /*MMSignature::arity*/;
346 variable[14] = variable[15];
347 /* Register variable[15]: Result */
348 variable[15] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*prop*/ == NIT_NULL /*null*/) || (( variable[3] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*prop*/)( variable[3] /*prop*/, NIT_NULL /*null*/) /*Object::==*/)))))));
349 /* Ensure var variable[15]: Left 'and' operand*/
350 if (UNTAG_Bool(variable[15])) { /* and */
351 /* Register variable[15]: Result */
352 variable[15] = CALL_abstractmetamodel___MMLocalProperty___name( variable[12] /*gp*/)( variable[12] /*gp*/) /*MMLocalProperty::name*/;
353 /* Register variable[16]: Result */
354 variable[16] = CALL_abstractmetamodel___MMLocalProperty___name( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::name*/;
355 /* Register variable[15]: Result */
356 variable[15] = TAG_Bool((variable[15] == variable[16]) || ((variable[15] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[15])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[15],variable[16])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[15])(variable[15], variable[16]) /*Object::==*/)))));
357 }
358 /* Register variable[15]: Result */
359 if (UNTAG_Bool(variable[15])) { /*if*/
360 /* Register variable[15]: Result */
361 variable[15] = TAG_Bool(( variable[14] /*garity*/)==( TAG_Int(0)));
362 /* Ensure var variable[15]: Left 'or' operand*/
363 if (!UNTAG_Bool(variable[15])) { /* or */
364 /* Register variable[15]: Result */
365 variable[15] = TAG_Bool(( variable[8] /*parity*/)==( variable[14] /*garity*/));
366 /* Ensure var variable[15]: Left 'and' operand*/
367 if (UNTAG_Bool(variable[15])) { /* and */
368 /* Register variable[15]: Result */
369 variable[15] = CALL_static_type___MMLocalProperty___signature( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::signature*/;
370 /* Register variable[15]: Result */
371 variable[15] = CALL_static_type___MMSignature_____l(variable[15])(variable[15], variable[13] /*gps*/) /*MMSignature::<*/;
372 }
373 /* Register variable[15]: Result */
374 }
375 /* Register variable[15]: Result */
376 if (UNTAG_Bool(variable[15])) { /*if*/
377 variable[4] = variable[12] /*gp*/;
378 goto return_label5;
379 } else { /*if*/
380 CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/;
381 }
382 } else { /*if*/
383 /* Register variable[15]: Result */
384 variable[15] = TAG_Bool(( variable[14] /*garity*/)==( TAG_Int(0)));
385 /* Ensure var variable[15]: Left 'and' operand*/
386 if (UNTAG_Bool(variable[15])) { /* and */
387 /* Register variable[15]: Result */
388 variable[15] = CALL_abstractmetamodel___MMLocalProperty___name( variable[12] /*gp*/)( variable[12] /*gp*/) /*MMLocalProperty::name*/;
389 /* Register variable[16]: Once expression result */
390 if (once_bool_7) variable[16] = once_value_7;
391 else {
392 /* Register variable[16]: Once String constant */
393 if (once_value_8 != NIT_NULL) variable[16] = once_value_8;
394 else {
395 variable[16] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
396 once_value_8 = variable[16];
397 }
398 /* Register variable[16]: Result */
399 /* Register variable[16]: Result */
400 variable[16] = CALL_symbol___String___to_symbol(variable[16])(variable[16]) /*String::to_symbol*/;
401 once_value_7 = variable[16];
402 once_bool_7 = true;
403 }
404 /* Register variable[16]: Result */
405 /* Register variable[15]: Result */
406 variable[15] = TAG_Bool((variable[15] == variable[16]) || ((variable[15] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[15])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[15],variable[16])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[15])(variable[15], variable[16]) /*Object::==*/)))));
407 }
408 /* Register variable[15]: Result */
409 if (UNTAG_Bool(variable[15])) { /*if*/
410 CALL_abstract_collection___SimpleCollection___add( variable[6] /*candidates*/)( variable[6] /*candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/;
411 CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/;
412 } else { /*if*/
413 CALL_abstract_collection___SimpleCollection___add( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/, variable[12] /*gp*/) /*AbstractArray::add*/;
414 }
415 }
416 continue_6: while(0);
417 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*Iterator::next*/;
418 }
419 break_6: while(0);
420 /* Register variable[9]: Result */
421 variable[9] = CALL_abstract_collection___Collection___length( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::length*/;
422 /* Register variable[9]: Result */
423 variable[9] = TAG_Bool((variable[9])==( TAG_Int(1)));
424 if (UNTAG_Bool(variable[9])) { /*if*/
425 /* Register variable[9]: Result */
426 variable[9] = CALL_abstract_collection___Collection___first( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*IndexedCollectionRead::first*/;
427 variable[4] = variable[9];
428 goto return_label5;
429 } else { /*if*/
430 /* Register variable[9]: Result */
431 variable[9] = CALL_abstract_collection___Collection___length( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::length*/;
432 /* Register variable[9]: Result */
433 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0)));
434 if (UNTAG_Bool(variable[9])) { /*if*/
435 /* Register variable[9]: Local variable */
436 /* Register variable[10]: Result */
437 variable[10] = NEW_Array_array___Array___init() /*new Array[String]*/;
438 variable[9] = variable[10];
439 /* Register variable[10]: For iterator */
440 variable[10] = CALL_abstract_collection___Collection___iterator( variable[6] /*candidates*/)( variable[6] /*candidates*/) /*AbstractArrayRead::iterator*/;
441 while (true) { /*for*/
442 /* Register variable[11]: For 'is_ok' result */
443 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
444 if (!UNTAG_Bool(variable[11])) break; /*for*/
445 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
446 /* Register variable[12]: Local variable */
447 variable[12] = variable[11];
448 variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
449 /* Register variable[14]: Once String constant */
450 if (once_value_10 != NIT_NULL) variable[14] = once_value_10;
451 else {
452 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
453 once_value_10 = variable[14];
454 }
455 /* Register variable[14]: Result */
456 /* Ensure var variable[14]: super-string element*/
457 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
458 /* Register variable[14]: Result */
459 variable[14] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::full_name*/;
460 /* Ensure var variable[14]: super-string element*/
461 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
462 /* Register variable[14]: Once String constant */
463 if (once_value_11 != NIT_NULL) variable[14] = once_value_11;
464 else {
465 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
466 once_value_11 = variable[14];
467 }
468 /* Register variable[14]: Result */
469 /* Ensure var variable[14]: super-string element*/
470 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
471 /* Register variable[14]: Result */
472 variable[14] = CALL_static_type___MMLocalProperty___signature( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::signature*/;
473 /* Ensure var variable[14]: super-string element*/
474 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/) /*AbstractArray::add*/;
475 /* Register variable[14]: Once String constant */
476 if (once_value_12 != NIT_NULL) variable[14] = once_value_12;
477 else {
478 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
479 once_value_12 = variable[14];
480 }
481 /* Register variable[14]: Result */
482 /* Ensure var variable[14]: super-string element*/
483 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
484 /* Register variable[13]: Result */
485 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
486 CALL_abstract_collection___SimpleCollection___add( variable[9] /*a*/)( variable[9] /*a*/, variable[13]) /*AbstractArray::add*/;
487 continue_9: while(0);
488 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
489 }
490 break_9: while(0);
491 variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
492 /* Register variable[11]: Once String constant */
493 if (once_value_13 != NIT_NULL) variable[11] = once_value_13;
494 else {
495 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Error: Conflicting default constructor to call for "), TAG_Int(51)) /*new String*/;
496 once_value_13 = variable[11];
497 }
498 /* Register variable[11]: Result */
499 /* Ensure var variable[11]: super-string element*/
500 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
501 variable[11] = variable[2] /*c*/ /* Ensure var: super-string element*/;
502 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
503 /* Register variable[11]: Once String constant */
504 if (once_value_14 != NIT_NULL) variable[11] = once_value_14;
505 else {
506 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
507 once_value_14 = variable[11];
508 }
509 /* Register variable[11]: Result */
510 /* Ensure var variable[11]: super-string element*/
511 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
512 /* Register variable[11]: Once String constant */
513 if (once_value_15 != NIT_NULL) variable[11] = once_value_15;
514 else {
515 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
516 once_value_15 = variable[11];
517 }
518 /* Register variable[11]: Result */
519 /* Register variable[11]: Result */
520 variable[11] = CALL_string___Collection___join( variable[9] /*a*/)( variable[9] /*a*/, variable[11]) /*Collection::join*/;
521 /* Ensure var variable[11]: super-string element*/
522 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
523 /* Register variable[11]: Once String constant */
524 if (once_value_16 != NIT_NULL) variable[11] = once_value_16;
525 else {
526 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
527 once_value_16 = variable[11];
528 }
529 /* Register variable[11]: Result */
530 /* Ensure var variable[11]: super-string element*/
531 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
532 /* Register variable[10]: Result */
533 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
534 CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[10]) /*AbsSyntaxVisitor::error*/;
535 variable[4] = NIT_NULL /*null*/;
536 goto return_label5;
537 } else { /*if*/
538 /* Register variable[9]: Result */
539 variable[9] = CALL_abstract_collection___Collection___length( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/) /*AbstractArrayRead::length*/;
540 /* Register variable[9]: Result */
541 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(0)));
542 if (UNTAG_Bool(variable[9])) { /*if*/
543 /* Register variable[9]: Local variable */
544 /* Register variable[10]: Result */
545 variable[10] = NEW_Array_array___Array___init() /*new Array[String]*/;
546 variable[9] = variable[10];
547 /* Register variable[10]: For iterator */
548 variable[10] = CALL_abstract_collection___Collection___iterator( variable[7] /*false_candidates*/)( variable[7] /*false_candidates*/) /*AbstractArrayRead::iterator*/;
549 while (true) { /*for*/
550 /* Register variable[11]: For 'is_ok' result */
551 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*ArrayIterator::is_ok*/;
552 if (!UNTAG_Bool(variable[11])) break; /*for*/
553 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
554 /* Register variable[12]: Local variable */
555 variable[12] = variable[11];
556 variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
557 /* Register variable[14]: Once String constant */
558 if (once_value_18 != NIT_NULL) variable[14] = once_value_18;
559 else {
560 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
561 once_value_18 = variable[14];
562 }
563 /* Register variable[14]: Result */
564 /* Ensure var variable[14]: super-string element*/
565 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
566 /* Register variable[14]: Result */
567 variable[14] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::full_name*/;
568 /* Ensure var variable[14]: super-string element*/
569 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
570 /* Register variable[14]: Once String constant */
571 if (once_value_19 != NIT_NULL) variable[14] = once_value_19;
572 else {
573 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
574 once_value_19 = variable[14];
575 }
576 /* Register variable[14]: Result */
577 /* Ensure var variable[14]: super-string element*/
578 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
579 /* Register variable[14]: Result */
580 variable[14] = CALL_static_type___MMLocalProperty___signature( variable[12] /*p*/)( variable[12] /*p*/) /*MMLocalProperty::signature*/;
581 /* Ensure var variable[14]: super-string element*/
582 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/) /*AbstractArray::add*/;
583 /* Register variable[14]: Once String constant */
584 if (once_value_20 != NIT_NULL) variable[14] = once_value_20;
585 else {
586 variable[14] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
587 once_value_20 = variable[14];
588 }
589 /* Register variable[14]: Result */
590 /* Ensure var variable[14]: super-string element*/
591 CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
592 /* Register variable[13]: Result */
593 variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
594 CALL_abstract_collection___SimpleCollection___add( variable[9] /*a*/)( variable[9] /*a*/, variable[13]) /*AbstractArray::add*/;
595 continue_17: while(0);
596 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*ArrayIterator::next*/;
597 }
598 break_17: while(0);
599 variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
600 /* Register variable[11]: Once String constant */
601 if (once_value_21 != NIT_NULL) variable[11] = once_value_21;
602 else {
603 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Error: there is no available compatible constrctor in "), TAG_Int(54)) /*new String*/;
604 once_value_21 = variable[11];
605 }
606 /* Register variable[11]: Result */
607 /* Ensure var variable[11]: super-string element*/
608 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
609 variable[11] = variable[2] /*c*/ /* Ensure var: super-string element*/;
610 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
611 /* Register variable[11]: Once String constant */
612 if (once_value_22 != NIT_NULL) variable[11] = once_value_22;
613 else {
614 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(". Discarded candidates are "), TAG_Int(27)) /*new String*/;
615 once_value_22 = variable[11];
616 }
617 /* Register variable[11]: Result */
618 /* Ensure var variable[11]: super-string element*/
619 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
620 /* Register variable[11]: Once String constant */
621 if (once_value_23 != NIT_NULL) variable[11] = once_value_23;
622 else {
623 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
624 once_value_23 = variable[11];
625 }
626 /* Register variable[11]: Result */
627 /* Register variable[11]: Result */
628 variable[11] = CALL_string___Collection___join( variable[9] /*a*/)( variable[9] /*a*/, variable[11]) /*Collection::join*/;
629 /* Ensure var variable[11]: super-string element*/
630 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
631 /* Register variable[11]: Once String constant */
632 if (once_value_24 != NIT_NULL) variable[11] = once_value_24;
633 else {
634 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
635 once_value_24 = variable[11];
636 }
637 /* Register variable[11]: Result */
638 /* Ensure var variable[11]: super-string element*/
639 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
640 /* Register variable[10]: Result */
641 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
642 CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[10]) /*AbsSyntaxVisitor::error*/;
643 variable[4] = NIT_NULL /*null*/;
644 goto return_label5;
645 } else { /*if*/
646 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
647 /* Register variable[10]: Once String constant */
648 if (once_value_25 != NIT_NULL) variable[10] = once_value_25;
649 else {
650 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: there is no available compatible constrctor in "), TAG_Int(54)) /*new String*/;
651 once_value_25 = variable[10];
652 }
653 /* Register variable[10]: Result */
654 /* Ensure var variable[10]: super-string element*/
655 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
656 variable[10] = variable[2] /*c*/ /* Ensure var: super-string element*/;
657 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
658 /* Register variable[10]: Once String constant */
659 if (once_value_26 != NIT_NULL) variable[10] = once_value_26;
660 else {
661 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
662 once_value_26 = variable[10];
663 }
664 /* Register variable[10]: Result */
665 /* Ensure var variable[10]: super-string element*/
666 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
667 /* Register variable[9]: Result */
668 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
669 CALL_syntax_base___AbsSyntaxVisitor___error( variable[5] /*v*/)( variable[5] /*v*/, variable[1] /*n*/, variable[9]) /*AbsSyntaxVisitor::error*/;
670 variable[4] = NIT_NULL /*null*/;
671 goto return_label5;
672 }
673 }
674 }
675 return_label5: while(false);
676 tracehead = trace.prev;
677 return variable[4];
678 }
679 void typing___PNode___accept_typing(val_t self, val_t param0) {
680 struct trace_t trace = {NULL, NULL, 140, LOCATE_typing___PNode___accept_typing};
681 val_t variable[3];
682 struct WBT_ **closurevariable = NULL;
683 trace.prev = tracehead; tracehead = &trace;
684 trace.file = LOCATE_typing;
685 /* Register variable[0]: Local variable */
686 variable[0] = self;
687 /* Register variable[1]: Local variable */
688 variable[1] = param0;
689 /* Register variable[2]: Method return value and escape marker */
690 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable[0])(variable[0], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
691 CALL_typing___PNode___after_typing(variable[0])(variable[0], variable[1] /*v*/) /*PNode::after_typing*/;
692 return_label27: while(false);
693 tracehead = trace.prev;
694 return;
695 }
696 void typing___PNode___after_typing(val_t self, val_t param0) {
697 struct trace_t trace = {NULL, NULL, 145, LOCATE_typing___PNode___after_typing};
698 val_t variable[3];
699 struct WBT_ **closurevariable = NULL;
700 trace.prev = tracehead; tracehead = &trace;
701 trace.file = LOCATE_typing;
702 /* Register variable[0]: Local variable */
703 variable[0] = self;
704 /* Register variable[1]: Local variable */
705 variable[1] = param0;
706 /* Register variable[2]: Method return value and escape marker */
707 return_label28: while(false);
708 tracehead = trace.prev;
709 return;
710 }
711 void typing___PClassdef___accept_typing(val_t self, val_t param0) {
712 struct trace_t trace = {NULL, NULL, 149, LOCATE_typing___PClassdef___accept_typing};
713 static val_t once_value_30 = NIT_NULL; /* Once value for string variable[3]*/
714 val_t variable[5];
715 struct WBT_ **closurevariable = NULL;
716 trace.prev = tracehead; tracehead = &trace;
717 trace.file = LOCATE_typing;
718 /* Register variable[0]: Local variable */
719 variable[0] = self;
720 /* Register variable[1]: Local variable */
721 variable[1] = param0;
722 /* Register variable[2]: Method return value and escape marker */
723 /* Register variable[3]: Once String constant */
724 if (once_value_30 != NIT_NULL) variable[3] = once_value_30;
725 else {
726 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("self"), TAG_Int(4)) /*new String*/;
727 once_value_30 = variable[3];
728 }
729 /* Register variable[3]: Result */
730 /* Register variable[3]: Result */
731 variable[3] = CALL_symbol___String___to_symbol(variable[3])(variable[3]) /*String::to_symbol*/;
732 /* Register variable[3]: Result */
733 variable[3] = NEW_ParamVariable_syntax_base___ParamVariable___init(variable[3], variable[0]) /*new ParamVariable*/;
734 CALL_typing___TypingVisitor___self_var__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::self_var=*/;
735 /* Register variable[3]: Result */
736 variable[3] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
737 /* Register variable[4]: Result */
738 variable[4] = CALL_syntax_base___PClassdef___local_class(variable[0])(variable[0]) /*PClassdef::local_class*/;
739 /* Register variable[4]: Result */
740 variable[4] = CALL_static_type___MMLocalClass___get_type(variable[4])(variable[4]) /*MMLocalClass::get_type*/;
741 CALL_syntax_base___Variable___stype__eq(variable[3])(variable[3], variable[4]) /*Variable::stype=*/;
742 CALL_SUPER_typing___PClassdef___accept_typing(variable[0])(variable[0], variable[1]) /*super PClassdef::accept_typing*/;
743 return_label29: while(false);
744 tracehead = trace.prev;
745 return;
746 }
747 void typing___AAttrPropdef___accept_typing(val_t self, val_t param0) {
748 struct trace_t trace = {NULL, NULL, 158, LOCATE_typing___AAttrPropdef___accept_typing};
749 val_t variable[5];
750 struct WBT_ **closurevariable = NULL;
751 trace.prev = tracehead; tracehead = &trace;
752 trace.file = LOCATE_typing;
753 /* Register variable[0]: Local variable */
754 variable[0] = self;
755 /* Register variable[1]: Local variable */
756 variable[1] = param0;
757 /* Register variable[2]: Method return value and escape marker */
758 CALL_SUPER_typing___AAttrPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AAttrPropdef::accept_typing*/;
759 /* Register variable[3]: Result */
760 variable[3] = CALL_parser_nodes___AAttrPropdef___n_expr(variable[0])(variable[0]) /*AAttrPropdef::n_expr*/;
761 /* Register variable[3]: Result */
762 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::==*/)))))));
763 if (UNTAG_Bool(variable[3])) { /*if*/
764 /* Register variable[3]: Result */
765 variable[3] = CALL_parser_nodes___AAttrPropdef___n_expr(variable[0])(variable[0]) /*AAttrPropdef::n_expr*/;
766 /* Register variable[4]: Result */
767 variable[4] = CALL_syntax_base___AAttrPropdef___prop(variable[0])(variable[0]) /*AAttrPropdef::prop*/;
768 /* Register variable[4]: Result */
769 variable[4] = CALL_static_type___MMLocalProperty___signature(variable[4])(variable[4]) /*MMLocalProperty::signature*/;
770 /* Register variable[4]: Result */
771 variable[4] = CALL_static_type___MMSignature___return_type(variable[4])(variable[4]) /*MMSignature::return_type*/;
772 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::check_conform_expr*/;
773 }
774 return_label31: while(false);
775 tracehead = trace.prev;
776 return;
777 }
778 val_t typing___AMethPropdef___self_var(val_t self) {
779 struct trace_t trace = {NULL, NULL, 168, LOCATE_typing___AMethPropdef___self_var};
780 val_t *variable = NULL;
781 struct WBT_ **closurevariable = NULL;
782 trace.prev = tracehead; tracehead = &trace;
783 trace.file = LOCATE_typing;
784 tracehead = trace.prev;
785 return ATTR_typing___AMethPropdef____self_var( self) /*AMethPropdef::_self_var*/;
786 }
787 void typing___AMethPropdef___accept_typing(val_t self, val_t param0) {
788 struct trace_t trace = {NULL, NULL, 169, LOCATE_typing___AMethPropdef___accept_typing};
789 val_t variable[4];
790 struct WBT_ **closurevariable = NULL;
791 trace.prev = tracehead; tracehead = &trace;
792 trace.file = LOCATE_typing;
793 /* Register variable[0]: Local variable */
794 variable[0] = self;
795 /* Register variable[1]: Local variable */
796 variable[1] = param0;
797 /* Register variable[2]: Method return value and escape marker */
798 /* Register variable[3]: Result */
799 variable[3] = NEW_RootVariableContext_control_flow___RootVariableContext___init( variable[1] /*v*/, variable[0]) /*new RootVariableContext*/;
800 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::variable_ctx=*/;
801 /* Register variable[3]: Result */
802 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
803 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::base_variable_ctx=*/;
804 /* Register variable[3]: Result */
805 variable[3] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
806 ATTR_typing___AMethPropdef____self_var(variable[0]) /*AMethPropdef::_self_var*/ = variable[3];
807 CALL_SUPER_typing___AMethPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AMethPropdef::accept_typing*/;
808 return_label32: while(false);
809 tracehead = trace.prev;
810 return;
811 }
812 void typing___AConcreteMethPropdef___accept_typing(val_t self, val_t param0) {
813 struct trace_t trace = {NULL, NULL, 179, LOCATE_typing___AConcreteMethPropdef___accept_typing};
814 static val_t once_value_34 = NIT_NULL; /* Once value for string variable[3]*/
815 val_t variable[4];
816 struct WBT_ **closurevariable = NULL;
817 trace.prev = tracehead; tracehead = &trace;
818 trace.file = LOCATE_typing;
819 /* Register variable[0]: Local variable */
820 variable[0] = self;
821 /* Register variable[1]: Local variable */
822 variable[1] = param0;
823 /* Register variable[2]: Method return value and escape marker */
824 CALL_SUPER_typing___AConcreteMethPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AConcreteMethPropdef::accept_typing*/;
825 /* Register variable[3]: Result */
826 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
827 /* Register variable[3]: Result */
828 variable[3] = CALL_control_flow___VariableContext___unreash(variable[3])(variable[3]) /*VariableContext::unreash*/;
829 /* Register variable[3]: Result */
830 variable[3] = TAG_Bool((variable[3])==( TAG_Bool(false)));
831 /* Ensure var variable[3]: Left 'and' operand*/
832 if (UNTAG_Bool(variable[3])) { /* and */
833 /* Register variable[3]: Result */
834 variable[3] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/;
835 /* Register variable[3]: Result */
836 variable[3] = CALL_static_type___MMLocalProperty___signature(variable[3])(variable[3]) /*MMLocalProperty::signature*/;
837 /* Register variable[3]: Result */
838 variable[3] = CALL_static_type___MMSignature___return_type(variable[3])(variable[3]) /*MMSignature::return_type*/;
839 /* Register variable[3]: Result */
840 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::==*/)))))));
841 }
842 /* Register variable[3]: Result */
843 if (UNTAG_Bool(variable[3])) { /*if*/
844 /* Register variable[3]: Once String constant */
845 if (once_value_34 != NIT_NULL) variable[3] = once_value_34;
846 else {
847 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected)."), TAG_Int(78)) /*new String*/;
848 once_value_34 = variable[3];
849 }
850 /* Register variable[3]: Result */
851 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
852 }
853 return_label33: while(false);
854 tracehead = trace.prev;
855 return;
856 }
857 void typing___AConcreteInitPropdef___accept_typing(val_t self, val_t param0) {
858 struct trace_t trace = {NULL, NULL, 191, LOCATE_typing___AConcreteInitPropdef___accept_typing};
859 val_t variable[14];
860 struct WBT_ **closurevariable = NULL;
861 trace.prev = tracehead; tracehead = &trace;
862 trace.file = LOCATE_typing;
863 /* Register variable[0]: Local variable */
864 variable[0] = self;
865 /* Register variable[1]: Local variable */
866 variable[1] = param0;
867 /* Register variable[2]: Method return value and escape marker */
868 /* Register variable[3]: Result */
869 variable[3] = CALL_parser_nodes___AConcreteMethPropdef___n_block(variable[0])(variable[0]) /*AConcreteMethPropdef::n_block*/;
870 CALL_typing___TypingVisitor___top_block__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::top_block=*/;
871 /* Register variable[3]: Result */
872 variable[3] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/;
873 CALL_typing___TypingVisitor___explicit_super_init_calls__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::explicit_super_init_calls=*/;
874 CALL_typing___TypingVisitor___explicit_other_init_call__eq( variable[1] /*v*/)( variable[1] /*v*/, TAG_Bool(false)) /*TypingVisitor::explicit_other_init_call=*/;
875 CALL_SUPER_typing___AConcreteInitPropdef___accept_typing(variable[0])(variable[0], variable[1]) /*super AConcreteInitPropdef::accept_typing*/;
876 /* Register variable[3]: Result */
877 variable[3] = CALL_typing___TypingVisitor___explicit_other_init_call( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::explicit_other_init_call*/;
878 /* Ensure var variable[3]: Left 'or' operand*/
879 if (!UNTAG_Bool(variable[3])) { /* or */
880 /* Register variable[3]: Result */
881 variable[3] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/;
882 /* Register variable[3]: Result */
883 variable[3] = CALL_abstractmetamodel___MMLocalProperty___global(variable[3])(variable[3]) /*MMLocalProperty::global*/;
884 /* Register variable[3]: Result */
885 variable[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[3])(variable[3]) /*MMGlobalProperty::intro*/;
886 /* Register variable[4]: Result */
887 variable[4] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/;
888 /* Register variable[3]: Result */
889 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::==*/)))))));
890 }
891 /* Register variable[3]: Result */
892 if (UNTAG_Bool(variable[3])) { /*if*/
893 } else { /*if*/
894 /* Register variable[3]: Local variable */
895 variable[3] = TAG_Int(0);
896 /* Register variable[4]: Local variable */
897 /* Register variable[5]: Result */
898 variable[5] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/;
899 /* Register variable[5]: Result */
900 variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
901 variable[4] = variable[5];
902 /* Register variable[5]: Local variable */
903 variable[5] = NIT_NULL /*null*/;
904 /* Register variable[6]: Local variable */
905 variable[6] = NIT_NULL /*null*/;
906 /* Register variable[7]: Result */
907 variable[7] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int( variable[4] /*l*/));
908 if (UNTAG_Bool(variable[7])) { /*if*/
909 /* Register variable[7]: Result */
910 variable[7] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/;
911 /* Register variable[8]: Local variable */
912 variable[8] = variable[7];
913 /* Register variable[9]: Local variable */
914 variable[9] = variable[3] /*i*/;
915 /* Register variable[10]: Method return value and escape marker */
916 /* Register variable[11]: Result */
917 variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)>=UNTAG_Int( TAG_Int(0)));
918 /* Ensure var variable[11]: Left 'and' operand*/
919 if (UNTAG_Bool(variable[11])) { /* and */
920 /* Register variable[11]: Result */
921 variable[11] = ATTR_array___AbstractArrayRead____length(variable[8]) /*AbstractArrayRead::_length*/;
922 /* Register variable[11]: Result */
923 variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)<UNTAG_Int(variable[11]));
924 }
925 /* Register variable[11]: Result */
926 if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
927 /* Register variable[11]: Result */
928 variable[11] = ATTR_array___Array____items(variable[8]) /*Array::_items*/;
929 /* Register variable[11]: Result */
930 variable[11] = UNBOX_NativeArray(variable[11])[UNTAG_Int( variable[9] /*index*/)];
931 variable[10] = variable[11];
932 goto return_label36;
933 return_label36: while(false);
934 /* Register variable[7]: Result */
935 variable[7] = variable[10];
936 variable[5] = variable[7] /*cur_m=*/;
937 /* Register variable[7]: Result */
938 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global( variable[5] /*cur_m*/)( variable[5] /*cur_m*/) /*MMLocalProperty::global*/;
939 /* Register variable[7]: Result */
940 variable[7] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[7])(variable[7]) /*MMGlobalProperty::intro*/;
941 /* Register variable[7]: Result */
942 variable[7] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[7])(variable[7]) /*MMLocalProperty::local_class*/;
943 /* Register variable[8]: Result */
944 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
945 /* Register variable[7]: Result */
946 variable[7] = CALL_abstractmetamodel___MMLocalClass___for_module(variable[7])(variable[7], variable[8]) /*MMLocalClass::for_module*/;
947 variable[6] = variable[7] /*cur_c=*/;
948 }
949 /* Register variable[7]: Local variable */
950 variable[7] = TAG_Int(0);
951 while (true) { /*while*/
952 /* Register variable[8]: Result */
953 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
954 /* Register variable[8]: Result */
955 variable[8] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[8])(variable[8]) /*MMLocalClass::cshe*/;
956 /* Register variable[8]: Result */
957 variable[8] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[8])(variable[8]) /*PartialOrderElement::direct_greaters*/;
958 /* Register variable[8]: Result */
959 variable[8] = CALL_abstract_collection___Collection___length(variable[8])(variable[8]) /*AbstractArrayRead::length*/;
960 /* Register variable[8]: Result */
961 variable[8] = TAG_Bool(UNTAG_Int( variable[7] /*j*/)<UNTAG_Int(variable[8]));
962 if (!UNTAG_Bool(variable[8])) break; /* while*/
963 /* Register variable[8]: Local variable */
964 /* Register variable[9]: Result */
965 variable[9] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
966 /* Register variable[9]: Result */
967 variable[9] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[9])(variable[9]) /*MMLocalClass::cshe*/;
968 /* Register variable[9]: Result */
969 variable[9] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[9])(variable[9]) /*PartialOrderElement::direct_greaters*/;
970 /* Register variable[10]: Local variable */
971 variable[10] = variable[9];
972 /* Register variable[11]: Local variable */
973 variable[11] = variable[7] /*j*/;
974 /* Register variable[12]: Method return value and escape marker */
975 /* Register variable[13]: Result */
976 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
977 /* Ensure var variable[13]: Left 'and' operand*/
978 if (UNTAG_Bool(variable[13])) { /* and */
979 /* Register variable[13]: Result */
980 variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/;
981 /* Register variable[13]: Result */
982 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[13]));
983 }
984 /* Register variable[13]: Result */
985 if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
986 /* Register variable[13]: Result */
987 variable[13] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
988 /* Register variable[13]: Result */
989 variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
990 variable[12] = variable[13];
991 goto return_label38;
992 return_label38: while(false);
993 /* Register variable[9]: Result */
994 variable[9] = variable[12];
995 variable[8] = variable[9];
996 /* Register variable[9]: Result */
997 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[8] /*c*/)( variable[8] /*c*/) /*MMLocalClass::global*/;
998 /* Register variable[9]: Result */
999 variable[9] = CALL_abstractmetamodel___MMGlobalClass___is_interface(variable[9])(variable[9]) /*MMGlobalClass::is_interface*/;
1000 /* Ensure var variable[9]: Left 'or' operand*/
1001 if (!UNTAG_Bool(variable[9])) { /* or */
1002 /* Register variable[9]: Result */
1003 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[8] /*c*/)( variable[8] /*c*/) /*MMLocalClass::global*/;
1004 /* Register variable[9]: Result */
1005 variable[9] = CALL_abstractmetamodel___MMGlobalClass___is_universal(variable[9])(variable[9]) /*MMGlobalClass::is_universal*/;
1006 }
1007 /* Register variable[9]: Result */
1008 /* Ensure var variable[9]: Left 'or' operand*/
1009 if (!UNTAG_Bool(variable[9])) { /* or */
1010 /* Register variable[9]: Result */
1011 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[8] /*c*/)( variable[8] /*c*/) /*MMLocalClass::global*/;
1012 /* Register variable[9]: Result */
1013 variable[9] = CALL_abstractmetamodel___MMGlobalClass___is_mixin(variable[9])(variable[9]) /*MMGlobalClass::is_mixin*/;
1014 }
1015 /* Register variable[9]: Result */
1016 if (UNTAG_Bool(variable[9])) { /*if*/
1017 variable[7] = TAG_Int(UNTAG_Int(variable[7])+UNTAG_Int( TAG_Int(1))) /*j*/;
1018 } else { /*if*/
1019 /* Register variable[9]: Result */
1020 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*cur_c*/ == NIT_NULL /*null*/) || (( variable[6] /*cur_c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*cur_c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*cur_c*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*cur_c*/)( variable[6] /*cur_c*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1021 /* Ensure var variable[9]: Left 'and' operand*/
1022 if (UNTAG_Bool(variable[9])) { /* and */
1023 /* Register variable[9]: Result */
1024 variable[9] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[8] /*c*/)( variable[8] /*c*/) /*MMLocalClass::cshe*/;
1025 /* Register variable[9]: Result */
1026 variable[9] = CALL_partial_order___PartialOrderElement_____leq(variable[9])(variable[9], variable[6] /*cur_c*/) /*PartialOrderElement::<=*/;
1027 /* Ensure var variable[9]: Left 'or' operand*/
1028 if (!UNTAG_Bool(variable[9])) { /* or */
1029 /* Register variable[9]: Result */
1030 variable[9] = CALL_abstractmetamodel___MMLocalClass___global( variable[6] /*cur_c*/)( variable[6] /*cur_c*/) /*MMLocalClass::global*/;
1031 /* Register variable[9]: Result */
1032 variable[9] = CALL_abstractmetamodel___MMGlobalClass___is_mixin(variable[9])(variable[9]) /*MMGlobalClass::is_mixin*/;
1033 }
1034 /* Register variable[9]: Result */
1035 }
1036 /* Register variable[9]: Result */
1037 if (UNTAG_Bool(variable[9])) { /*if*/
1038 /* Register variable[9]: Result */
1039 variable[9] = TAG_Bool(( variable[8] /*c*/ == variable[6] /*cur_c*/) || (( variable[8] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*c*/, variable[6] /*cur_c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*c*/)( variable[8] /*c*/, variable[6] /*cur_c*/) /*Object::==*/)))));
1040 if (UNTAG_Bool(variable[9])) { /*if*/
1041 variable[7] = TAG_Int(UNTAG_Int(variable[7])+UNTAG_Int( TAG_Int(1))) /*j*/;
1042 }
1043 /* Register variable[9]: Result */
1044 variable[9] = CALL_typing___AConcreteInitPropdef___super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::super_init_calls*/;
1045 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[5] /*cur_m*/) /*AbstractArray::add*/;
1046 variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1))) /*i*/;
1047 /* Register variable[9]: Result */
1048 variable[9] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int( variable[4] /*l*/));
1049 if (UNTAG_Bool(variable[9])) { /*if*/
1050 /* Register variable[9]: Result */
1051 variable[9] = CALL_typing___AConcreteInitPropdef___explicit_super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::explicit_super_init_calls*/;
1052 /* Register variable[10]: Local variable */
1053 variable[10] = variable[9];
1054 /* Register variable[11]: Local variable */
1055 variable[11] = variable[3] /*i*/;
1056 /* Register variable[12]: Method return value and escape marker */
1057 /* Register variable[13]: Result */
1058 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)>=UNTAG_Int( TAG_Int(0)));
1059 /* Ensure var variable[13]: Left 'and' operand*/
1060 if (UNTAG_Bool(variable[13])) { /* and */
1061 /* Register variable[13]: Result */
1062 variable[13] = ATTR_array___AbstractArrayRead____length(variable[10]) /*AbstractArrayRead::_length*/;
1063 /* Register variable[13]: Result */
1064 variable[13] = TAG_Bool(UNTAG_Int( variable[11] /*index*/)<UNTAG_Int(variable[13]));
1065 }
1066 /* Register variable[13]: Result */
1067 if (!UNTAG_Bool(variable[13])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
1068 /* Register variable[13]: Result */
1069 variable[13] = ATTR_array___Array____items(variable[10]) /*Array::_items*/;
1070 /* Register variable[13]: Result */
1071 variable[13] = UNBOX_NativeArray(variable[13])[UNTAG_Int( variable[11] /*index*/)];
1072 variable[12] = variable[13];
1073 goto return_label39;
1074 return_label39: while(false);
1075 /* Register variable[9]: Result */
1076 variable[9] = variable[12];
1077 variable[5] = variable[9] /*cur_m=*/;
1078 /* Register variable[9]: Result */
1079 variable[9] = CALL_abstractmetamodel___MMLocalProperty___global( variable[5] /*cur_m*/)( variable[5] /*cur_m*/) /*MMLocalProperty::global*/;
1080 /* Register variable[9]: Result */
1081 variable[9] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[9])(variable[9]) /*MMGlobalProperty::intro*/;
1082 /* Register variable[9]: Result */
1083 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[9])(variable[9]) /*MMLocalProperty::local_class*/;
1084 /* Register variable[10]: Result */
1085 variable[10] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
1086 /* Register variable[9]: Result */
1087 variable[9] = CALL_abstractmetamodel___MMLocalClass___for_module(variable[9])(variable[9], variable[10]) /*MMLocalClass::for_module*/;
1088 variable[6] = variable[9] /*cur_c=*/;
1089 } else { /*if*/
1090 variable[5] = NIT_NULL /*null*/ /*cur_m=*/;
1091 variable[6] = NIT_NULL /*null*/ /*cur_c=*/;
1092 }
1093 } else { /*if*/
1094 /* Register variable[9]: Local variable */
1095 /* Register variable[10]: Result */
1096 variable[10] = CALL_syntax_base___AMethPropdef___method(variable[0])(variable[0]) /*AMethPropdef::method*/;
1097 /* Register variable[10]: Result */
1098 variable[10] = CALL_typing___TypingVisitor___get_default_constructor_for( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8] /*c*/, variable[10]) /*TypingVisitor::get_default_constructor_for*/;
1099 variable[9] = variable[10];
1100 /* Register variable[10]: Result */
1101 variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*p*/ == NIT_NULL /*null*/) || (( variable[9] /*p*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*p*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*p*/)( variable[9] /*p*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1102 if (UNTAG_Bool(variable[10])) { /*if*/
1103 /* Register variable[10]: Result */
1104 variable[10] = CALL_typing___AConcreteInitPropdef___super_init_calls(variable[0])(variable[0]) /*AConcreteInitPropdef::super_init_calls*/;
1105 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[9] /*p*/) /*AbstractArray::add*/;
1106 }
1107 variable[7] = TAG_Int(UNTAG_Int(variable[7])+UNTAG_Int( TAG_Int(1))) /*j*/;
1108 }
1109 }
1110 continue_37: while(0);
1111 }
1112 break_37: while(0);
1113 }
1114 return_label35: while(false);
1115 tracehead = trace.prev;
1116 return;
1117 }
1118 val_t typing___AConcreteInitPropdef___super_init_calls(val_t self) {
1119 struct trace_t trace = {NULL, NULL, 189, LOCATE_typing___AConcreteInitPropdef___super_init_calls};
1120 val_t *variable = NULL;
1121 struct WBT_ **closurevariable = NULL;
1122 trace.prev = tracehead; tracehead = &trace;
1123 trace.file = LOCATE_typing;
1124 tracehead = trace.prev;
1125 return ATTR_typing___AConcreteInitPropdef____super_init_calls( self) /*AConcreteInitPropdef::_super_init_calls*/;
1126 }
1127 val_t typing___AConcreteInitPropdef___explicit_super_init_calls(val_t self) {
1128 struct trace_t trace = {NULL, NULL, 190, LOCATE_typing___AConcreteInitPropdef___explicit_super_init_calls};
1129 val_t *variable = NULL;
1130 struct WBT_ **closurevariable = NULL;
1131 trace.prev = tracehead; tracehead = &trace;
1132 trace.file = LOCATE_typing;
1133 tracehead = trace.prev;
1134 return ATTR_typing___AConcreteInitPropdef____explicit_super_init_calls( self) /*AConcreteInitPropdef::_explicit_super_init_calls*/;
1135 }
1136 void typing___PParam___after_typing(val_t self, val_t param0) {
1137 struct trace_t trace = {NULL, NULL, 237, LOCATE_typing___PParam___after_typing};
1138 val_t variable[5];
1139 struct WBT_ **closurevariable = NULL;
1140 trace.prev = tracehead; tracehead = &trace;
1141 trace.file = LOCATE_typing;
1142 /* Register variable[0]: Local variable */
1143 variable[0] = self;
1144 /* Register variable[1]: Local variable */
1145 variable[1] = param0;
1146 /* Register variable[2]: Method return value and escape marker */
1147 /* Register variable[3]: Result */
1148 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1149 /* Register variable[3]: Result */
1150 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::==*/)))))));
1151 if (UNTAG_Bool(variable[3])) { /*if*/
1152 /* Register variable[3]: Result */
1153 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1154 /* Register variable[4]: Result */
1155 variable[4] = CALL_syntax_base___PParam___variable(variable[0])(variable[0]) /*PParam::variable*/;
1156 CALL_control_flow___VariableContext___add(variable[3])(variable[3], variable[4]) /*VariableContext::add*/;
1157 }
1158 return_label40: while(false);
1159 tracehead = trace.prev;
1160 return;
1161 }
1162 void typing___AClosureDecl___accept_typing(val_t self, val_t param0) {
1163 struct trace_t trace = {NULL, NULL, 250, LOCATE_typing___AClosureDecl___accept_typing};
1164 static val_t once_value_42 = NIT_NULL; /* Once value for string variable[5]*/
1165 static val_t once_value_43 = NIT_NULL; /* Once value for string variable[5]*/
1166 val_t variable[7];
1167 struct WBT_ **closurevariable = NULL;
1168 trace.prev = tracehead; tracehead = &trace;
1169 trace.file = LOCATE_typing;
1170 /* Register variable[0]: Local variable */
1171 variable[0] = self;
1172 /* Register variable[1]: Local variable */
1173 variable[1] = param0;
1174 /* Register variable[2]: Method return value and escape marker */
1175 /* Register variable[3]: Result */
1176 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1177 /* Register variable[4]: Result */
1178 variable[4] = CALL_syntax_base___PClosureDecl___variable(variable[0])(variable[0]) /*PClosureDecl::variable*/;
1179 CALL_control_flow___VariableContext___add(variable[3])(variable[3], variable[4]) /*VariableContext::add*/;
1180 /* Register variable[3]: Local variable */
1181 /* Register variable[4]: Result */
1182 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1183 variable[3] = variable[4];
1184 /* Register variable[4]: Local variable */
1185 /* Register variable[5]: Result */
1186 variable[5] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
1187 variable[4] = variable[5];
1188 /* Register variable[5]: Result */
1189 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1190 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::base_variable_ctx=*/;
1191 /* Register variable[5]: Result */
1192 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1193 /* Register variable[5]: Result */
1194 variable[5] = CALL_control_flow___VariableContext___sub(variable[5])(variable[5], variable[0]) /*VariableContext::sub*/;
1195 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::variable_ctx=*/;
1196 /* Register variable[5]: Result */
1197 variable[5] = CALL_syntax_base___PClosureDecl___variable(variable[0])(variable[0]) /*PClosureDecl::variable*/;
1198 /* Register variable[5]: Result */
1199 variable[5] = CALL_syntax_base___ClosureVariable___closure(variable[5])(variable[5]) /*ClosureVariable::closure*/;
1200 /* Register variable[5]: Result */
1201 variable[5] = NEW_EscapableClosure_escape___EscapableClosure___init(variable[0], variable[5], NIT_NULL /*null*/) /*new EscapableClosure*/;
1202 ATTR_typing___AClosureDecl____escapable(variable[0]) /*AClosureDecl::_escapable*/ = variable[5];
1203 /* Register variable[5]: Result */
1204 variable[5] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
1205 /* Register variable[6]: Result */
1206 variable[6] = ATTR_typing___AClosureDecl____escapable(variable[0]) /*AClosureDecl::_escapable*/;
1207 CALL_escape___EscapableContext___push(variable[5])(variable[5], variable[6]) /*EscapableContext::push*/;
1208 CALL_SUPER_typing___AClosureDecl___accept_typing(variable[0])(variable[0], variable[1]) /*super AClosureDecl::accept_typing*/;
1209 /* Register variable[5]: Result */
1210 variable[5] = CALL_parser_nodes___AClosureDecl___n_expr(variable[0])(variable[0]) /*AClosureDecl::n_expr*/;
1211 /* Register variable[5]: Result */
1212 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::==*/)))))));
1213 if (UNTAG_Bool(variable[5])) { /*if*/
1214 /* Register variable[5]: Result */
1215 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1216 /* Register variable[5]: Result */
1217 variable[5] = CALL_control_flow___VariableContext___unreash(variable[5])(variable[5]) /*VariableContext::unreash*/;
1218 /* Register variable[5]: Result */
1219 variable[5] = TAG_Bool((variable[5])==( TAG_Bool(false)));
1220 if (UNTAG_Bool(variable[5])) { /*if*/
1221 /* Register variable[5]: Result */
1222 variable[5] = CALL_syntax_base___PClosureDecl___variable(variable[0])(variable[0]) /*PClosureDecl::variable*/;
1223 /* Register variable[5]: Result */
1224 variable[5] = CALL_syntax_base___ClosureVariable___closure(variable[5])(variable[5]) /*ClosureVariable::closure*/;
1225 /* Register variable[5]: Result */
1226 variable[5] = CALL_static_type___MMClosure___signature(variable[5])(variable[5]) /*MMClosure::signature*/;
1227 /* Register variable[5]: Result */
1228 variable[5] = CALL_static_type___MMSignature___return_type(variable[5])(variable[5]) /*MMSignature::return_type*/;
1229 /* Register variable[5]: Result */
1230 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::==*/)))))));
1231 if (UNTAG_Bool(variable[5])) { /*if*/
1232 /* Register variable[5]: Once String constant */
1233 if (once_value_42 != NIT_NULL) variable[5] = once_value_42;
1234 else {
1235 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected)."), TAG_Int(77)) /*new String*/;
1236 once_value_42 = variable[5];
1237 }
1238 /* Register variable[5]: Result */
1239 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1240 } else { /*if*/
1241 /* Register variable[5]: Result */
1242 variable[5] = CALL_syntax_base___PClosureDecl___variable(variable[0])(variable[0]) /*PClosureDecl::variable*/;
1243 /* Register variable[5]: Result */
1244 variable[5] = CALL_syntax_base___ClosureVariable___closure(variable[5])(variable[5]) /*ClosureVariable::closure*/;
1245 /* Register variable[5]: Result */
1246 variable[5] = CALL_static_type___MMClosure___is_break(variable[5])(variable[5]) /*MMClosure::is_break*/;
1247 if (UNTAG_Bool(variable[5])) { /*if*/
1248 /* Register variable[5]: Once String constant */
1249 if (once_value_43 != NIT_NULL) variable[5] = once_value_43;
1250 else {
1251 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of break block (an 'abort' was expected)."), TAG_Int(68)) /*new String*/;
1252 once_value_43 = variable[5];
1253 }
1254 /* Register variable[5]: Result */
1255 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1256 }
1257 }
1258 }
1259 }
1260 /* Register variable[5]: Result */
1261 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1262 CALL_control_flow___VariableContext___merge( variable[3] /*old_var_ctx*/)( variable[3] /*old_var_ctx*/, variable[5]) /*VariableContext::merge*/;
1263 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
1264 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4] /*old_base_var_ctx*/) /*TypingVisitor::base_variable_ctx=*/;
1265 /* Register variable[5]: Result */
1266 variable[5] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
1267 CALL_escape___EscapableContext___pop(variable[5])(variable[5]) /*EscapableContext::pop*/;
1268 return_label41: while(false);
1269 tracehead = trace.prev;
1270 return;
1271 }
1272 val_t typing___AClosureDecl___escapable(val_t self) {
1273 struct trace_t trace = {NULL, NULL, 247, LOCATE_typing___AClosureDecl___escapable};
1274 val_t *variable = NULL;
1275 struct WBT_ **closurevariable = NULL;
1276 trace.prev = tracehead; tracehead = &trace;
1277 trace.file = LOCATE_typing;
1278 tracehead = trace.prev;
1279 return ATTR_typing___AClosureDecl____escapable( self) /*AClosureDecl::_escapable*/;
1280 }
1281 void typing___PType___after_typing(val_t self, val_t param0) {
1282 struct trace_t trace = {NULL, NULL, 284, LOCATE_typing___PType___after_typing};
1283 val_t variable[4];
1284 struct WBT_ **closurevariable = NULL;
1285 trace.prev = tracehead; tracehead = &trace;
1286 trace.file = LOCATE_typing;
1287 /* Register variable[0]: Local variable */
1288 variable[0] = self;
1289 /* Register variable[1]: Local variable */
1290 variable[1] = param0;
1291 /* Register variable[2]: Method return value and escape marker */
1292 /* Register variable[3]: Result */
1293 variable[3] = CALL_syntax_base___PType___get_stype(variable[0])(variable[0], variable[1] /*v*/) /*PType::get_stype*/;
1294 ATTR_typing___PType____stype(variable[0]) /*PType::_stype*/ = variable[3];
1295 return_label44: while(false);
1296 tracehead = trace.prev;
1297 return;
1298 }
1299 val_t typing___PType___stype(val_t self) {
1300 struct trace_t trace = {NULL, NULL, 283, LOCATE_typing___PType___stype};
1301 val_t *variable = NULL;
1302 struct WBT_ **closurevariable = NULL;
1303 trace.prev = tracehead; tracehead = &trace;
1304 trace.file = LOCATE_typing;
1305 tracehead = trace.prev;
1306 return ATTR_typing___PType____stype( self) /*PType::_stype*/;
1307 }
1308 val_t typing___PExpr___is_typed(val_t self) {
1309 struct trace_t trace = {NULL, NULL, 291, LOCATE_typing___PExpr___is_typed};
1310 val_t *variable = NULL;
1311 struct WBT_ **closurevariable = NULL;
1312 trace.prev = tracehead; tracehead = &trace;
1313 trace.file = LOCATE_typing;
1314 tracehead = trace.prev;
1315 return ATTR_typing___PExpr____is_typed( self) /*PExpr::_is_typed*/;
1316 }
1317 val_t typing___PExpr___is_statement(val_t self) {
1318 struct trace_t trace = {NULL, NULL, 292, LOCATE_typing___PExpr___is_statement};
1319 val_t variable[3];
1320 struct WBT_ **closurevariable = NULL;
1321 trace.prev = tracehead; tracehead = &trace;
1322 trace.file = LOCATE_typing;
1323 /* Register variable[0]: Local variable */
1324 variable[0] = self;
1325 /* Register variable[1]: Method return value and escape marker */
1326 /* Register variable[2]: Result */
1327 variable[2] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
1328 /* Register variable[2]: Result */
1329 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
1330 variable[1] = variable[2];
1331 goto return_label45;
1332 return_label45: while(false);
1333 tracehead = trace.prev;
1334 return variable[1];
1335 }
1336 val_t typing___PExpr___stype(val_t self) {
1337 struct trace_t trace = {NULL, NULL, 293, LOCATE_typing___PExpr___stype};
1338 static val_t once_value_47 = NIT_NULL; /* Once value for string variable[3]*/
1339 static val_t once_value_48 = NIT_NULL; /* Once value for string variable[3]*/
1340 static val_t once_value_49 = NIT_NULL; /* Once value for string variable[3]*/
1341 static val_t once_value_50 = NIT_NULL; /* Once value for string variable[3]*/
1342 val_t variable[4];
1343 struct WBT_ **closurevariable = NULL;
1344 trace.prev = tracehead; tracehead = &trace;
1345 trace.file = LOCATE_typing;
1346 /* Register variable[0]: Local variable */
1347 variable[0] = self;
1348 /* Register variable[1]: Method return value and escape marker */
1349 /* Register variable[2]: Result */
1350 variable[2] = CALL_syntax_base___PExpr___is_typed(variable[0])(variable[0]) /*PExpr::is_typed*/;
1351 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[2])))) { /*if*/
1352 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1353 /* Register variable[3]: Once String constant */
1354 if (once_value_47 != NIT_NULL) variable[3] = once_value_47;
1355 else {
1356 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1357 once_value_47 = variable[3];
1358 }
1359 /* Register variable[3]: Result */
1360 /* Ensure var variable[3]: super-string element*/
1361 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1362 /* Register variable[3]: Result */
1363 variable[3] = CALL_parser_prod___PNode___locate(variable[0])(variable[0]) /*Prod::locate*/;
1364 /* Ensure var variable[3]: super-string element*/
1365 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1366 /* Register variable[3]: Once String constant */
1367 if (once_value_48 != NIT_NULL) variable[3] = once_value_48;
1368 else {
1369 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(": not is_typed"), TAG_Int(14)) /*new String*/;
1370 once_value_48 = variable[3];
1371 }
1372 /* Register variable[3]: Result */
1373 /* Ensure var variable[3]: super-string element*/
1374 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1375 /* Register variable[2]: Result */
1376 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
1377 CALL_file___Object___print(variable[0])(variable[0], variable[2]) /*Object::print*/;
1378 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___PExpr___stype, LOCATE_typing, 297); nit_exit(1);
1379 }
1380 /* Register variable[2]: Result */
1381 variable[2] = CALL_syntax_base___PExpr___is_statement(variable[0])(variable[0]) /*PExpr::is_statement*/;
1382 if (UNTAG_Bool(variable[2])) { /*if*/
1383 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
1384 /* Register variable[3]: Once String constant */
1385 if (once_value_49 != NIT_NULL) variable[3] = once_value_49;
1386 else {
1387 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
1388 once_value_49 = variable[3];
1389 }
1390 /* Register variable[3]: Result */
1391 /* Ensure var variable[3]: super-string element*/
1392 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1393 /* Register variable[3]: Result */
1394 variable[3] = CALL_parser_prod___PNode___locate(variable[0])(variable[0]) /*Prod::locate*/;
1395 /* Ensure var variable[3]: super-string element*/
1396 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1397 /* Register variable[3]: Once String constant */
1398 if (once_value_50 != NIT_NULL) variable[3] = once_value_50;
1399 else {
1400 variable[3] = NEW_String_string___String___with_native(BOX_NativeString(": is_statement"), TAG_Int(14)) /*new String*/;
1401 once_value_50 = variable[3];
1402 }
1403 /* Register variable[3]: Result */
1404 /* Ensure var variable[3]: super-string element*/
1405 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
1406 /* Register variable[2]: Result */
1407 variable[2] = CALL_string___Object___to_s(variable[2])(variable[2]) /*Object::to_s*/;
1408 CALL_file___Object___print(variable[0])(variable[0], variable[2]) /*Object::print*/;
1409 fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___PExpr___stype, LOCATE_typing, 301); nit_exit(1);
1410 }
1411 /* Register variable[2]: Result */
1412 variable[2] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
1413 variable[1] = variable[2];
1414 goto return_label46;
1415 return_label46: while(false);
1416 tracehead = trace.prev;
1417 return variable[1];
1418 }
1419 val_t typing___PExpr___is_implicit_self(val_t self) {
1420 struct trace_t trace = {NULL, NULL, 307, LOCATE_typing___PExpr___is_implicit_self};
1421 val_t variable[2];
1422 struct WBT_ **closurevariable = NULL;
1423 trace.prev = tracehead; tracehead = &trace;
1424 trace.file = LOCATE_typing;
1425 /* Register variable[0]: Local variable */
1426 variable[0] = self;
1427 /* Register variable[1]: Method return value and escape marker */
1428 variable[1] = TAG_Bool(false);
1429 goto return_label51;
1430 return_label51: while(false);
1431 tracehead = trace.prev;
1432 return variable[1];
1433 }
1434 val_t typing___PExpr___is_self(val_t self) {
1435 struct trace_t trace = {NULL, NULL, 310, LOCATE_typing___PExpr___is_self};
1436 val_t variable[2];
1437 struct WBT_ **closurevariable = NULL;
1438 trace.prev = tracehead; tracehead = &trace;
1439 trace.file = LOCATE_typing;
1440 /* Register variable[0]: Local variable */
1441 variable[0] = self;
1442 /* Register variable[1]: Method return value and escape marker */
1443 variable[1] = TAG_Bool(false);
1444 goto return_label52;
1445 return_label52: while(false);
1446 tracehead = trace.prev;
1447 return variable[1];
1448 }
1449 val_t typing___PExpr___its_variable(val_t self) {
1450 struct trace_t trace = {NULL, NULL, 313, LOCATE_typing___PExpr___its_variable};
1451 val_t variable[2];
1452 struct WBT_ **closurevariable = NULL;
1453 trace.prev = tracehead; tracehead = &trace;
1454 trace.file = LOCATE_typing;
1455 /* Register variable[0]: Local variable */
1456 variable[0] = self;
1457 /* Register variable[1]: Method return value and escape marker */
1458 variable[1] = NIT_NULL /*null*/;
1459 goto return_label53;
1460 return_label53: while(false);
1461 tracehead = trace.prev;
1462 return variable[1];
1463 }
1464 val_t typing___PExpr___if_true_variable_ctx(val_t self) {
1465 struct trace_t trace = {NULL, NULL, 316, LOCATE_typing___PExpr___if_true_variable_ctx};
1466 val_t *variable = NULL;
1467 struct WBT_ **closurevariable = NULL;
1468 trace.prev = tracehead; tracehead = &trace;
1469 trace.file = LOCATE_typing;
1470 tracehead = trace.prev;
1471 return ATTR_typing___PExpr____if_true_variable_ctx( self) /*PExpr::_if_true_variable_ctx*/;
1472 }
1473 val_t typing___PExpr___if_false_variable_ctx(val_t self) {
1474 struct trace_t trace = {NULL, NULL, 319, LOCATE_typing___PExpr___if_false_variable_ctx};
1475 val_t *variable = NULL;
1476 struct WBT_ **closurevariable = NULL;
1477 trace.prev = tracehead; tracehead = &trace;
1478 trace.file = LOCATE_typing;
1479 tracehead = trace.prev;
1480 return ATTR_typing___PExpr____if_false_variable_ctx( self) /*PExpr::_if_false_variable_ctx*/;
1481 }
1482 void typing___AVardeclExpr___after_typing(val_t self, val_t param0) {
1483 struct trace_t trace = {NULL, NULL, 324, LOCATE_typing___AVardeclExpr___after_typing};
1484 val_t variable[6];
1485 struct WBT_ **closurevariable = NULL;
1486 trace.prev = tracehead; tracehead = &trace;
1487 trace.file = LOCATE_typing;
1488 /* Register variable[0]: Local variable */
1489 variable[0] = self;
1490 /* Register variable[1]: Local variable */
1491 variable[1] = param0;
1492 /* Register variable[2]: Method return value and escape marker */
1493 /* Register variable[3]: Local variable */
1494 /* Register variable[4]: Result */
1495 variable[4] = CALL_parser_nodes___AVardeclExpr___n_id(variable[0])(variable[0]) /*AVardeclExpr::n_id*/;
1496 /* Register variable[4]: Result */
1497 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
1498 /* Register variable[4]: Result */
1499 variable[4] = NEW_VarVariable_syntax_base___VarVariable___init(variable[4], variable[0]) /*new VarVariable*/;
1500 variable[3] = variable[4];
1501 CALL_syntax_base___AVardeclExpr___variable__eq(variable[0])(variable[0], variable[3] /*va*/) /*AVardeclExpr::variable=*/;
1502 /* Register variable[4]: Result */
1503 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1504 CALL_control_flow___VariableContext___add(variable[4])(variable[4], variable[3] /*va*/) /*VariableContext::add*/;
1505 /* Register variable[4]: Result */
1506 variable[4] = CALL_parser_nodes___AVardeclExpr___n_expr(variable[0])(variable[0]) /*AVardeclExpr::n_expr*/;
1507 /* Register variable[4]: Result */
1508 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::==*/)))))));
1509 if (UNTAG_Bool(variable[4])) { /*if*/
1510 /* Register variable[4]: Result */
1511 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1512 CALL_control_flow___VariableContext___mark_is_set(variable[4])(variable[4], variable[3] /*va*/) /*VariableContext::mark_is_set*/;
1513 }
1514 /* Register variable[4]: Result */
1515 variable[4] = CALL_parser_nodes___AVardeclExpr___n_type(variable[0])(variable[0]) /*AVardeclExpr::n_type*/;
1516 /* Register variable[4]: Result */
1517 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::==*/)))))));
1518 if (UNTAG_Bool(variable[4])) { /*if*/
1519 /* Register variable[4]: Result */
1520 variable[4] = CALL_parser_nodes___AVardeclExpr___n_type(variable[0])(variable[0]) /*AVardeclExpr::n_type*/;
1521 /* Register variable[4]: Result */
1522 variable[4] = CALL_typing___PType___stype(variable[4])(variable[4]) /*PType::stype*/;
1523 CALL_syntax_base___Variable___stype__eq( variable[3] /*va*/)( variable[3] /*va*/, variable[4]) /*Variable::stype=*/;
1524 /* Register variable[4]: Result */
1525 variable[4] = CALL_parser_nodes___AVardeclExpr___n_expr(variable[0])(variable[0]) /*AVardeclExpr::n_expr*/;
1526 /* Register variable[4]: Result */
1527 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::==*/)))))));
1528 if (UNTAG_Bool(variable[4])) { /*if*/
1529 /* Register variable[4]: Result */
1530 variable[4] = CALL_parser_nodes___AVardeclExpr___n_expr(variable[0])(variable[0]) /*AVardeclExpr::n_expr*/;
1531 /* Register variable[5]: Result */
1532 variable[5] = CALL_syntax_base___Variable___stype( variable[3] /*va*/)( variable[3] /*va*/) /*Variable::stype*/;
1533 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
1534 }
1535 } else { /*if*/
1536 /* Register variable[4]: Result */
1537 variable[4] = CALL_parser_nodes___AVardeclExpr___n_expr(variable[0])(variable[0]) /*AVardeclExpr::n_expr*/;
1538 /* Register variable[4]: Result */
1539 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*AbsSyntaxVisitor::check_expr*/;
1540 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
1541 goto return_label54;
1542 }
1543 /* Register variable[4]: Result */
1544 variable[4] = CALL_parser_nodes___AVardeclExpr___n_expr(variable[0])(variable[0]) /*AVardeclExpr::n_expr*/;
1545 /* Register variable[4]: Result */
1546 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
1547 CALL_syntax_base___Variable___stype__eq( variable[3] /*va*/)( variable[3] /*va*/, variable[4]) /*Variable::stype=*/;
1548 }
1549 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
1550 return_label54: while(false);
1551 tracehead = trace.prev;
1552 return;
1553 }
1554 void typing___ABlockExpr___accept_typing(val_t self, val_t param0) {
1555 struct trace_t trace = {NULL, NULL, 345, LOCATE_typing___ABlockExpr___accept_typing};
1556 static val_t once_value_57 = NIT_NULL; /* Once value for string variable[7]*/
1557 val_t variable[8];
1558 struct WBT_ **closurevariable = NULL;
1559 trace.prev = tracehead; tracehead = &trace;
1560 trace.file = LOCATE_typing;
1561 /* Register variable[0]: Local variable */
1562 variable[0] = self;
1563 /* Register variable[1]: Local variable */
1564 variable[1] = param0;
1565 /* Register variable[2]: Method return value and escape marker */
1566 /* Register variable[3]: Local variable */
1567 /* Register variable[4]: Result */
1568 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1569 variable[3] = variable[4];
1570 /* Register variable[4]: Result */
1571 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1572 /* Register variable[4]: Result */
1573 variable[4] = CALL_control_flow___VariableContext___sub(variable[4])(variable[4], variable[0]) /*VariableContext::sub*/;
1574 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::variable_ctx=*/;
1575 /* Register variable[4]: Result */
1576 variable[4] = CALL_parser_nodes___ABlockExpr___n_expr(variable[0])(variable[0]) /*ABlockExpr::n_expr*/;
1577 /* Register variable[4]: For iterator */
1578 variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*List::iterator*/;
1579 while (true) { /*for*/
1580 /* Register variable[5]: For 'is_ok' result */
1581 variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ListIterator::is_ok*/;
1582 if (!UNTAG_Bool(variable[5])) break; /*for*/
1583 variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ListIterator::item*/ /* Ensure var: For item*/;
1584 /* Register variable[6]: Local variable */
1585 variable[6] = variable[5];
1586 /* Register variable[7]: Result */
1587 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1588 /* Register variable[7]: Result */
1589 variable[7] = CALL_control_flow___VariableContext___unreash(variable[7])(variable[7]) /*VariableContext::unreash*/;
1590 /* Ensure var variable[7]: Left 'and' operand*/
1591 if (UNTAG_Bool(variable[7])) { /* and */
1592 /* Register variable[7]: Result */
1593 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1594 /* Register variable[7]: Result */
1595 variable[7] = CALL_control_flow___VariableContext___already_unreash(variable[7])(variable[7]) /*VariableContext::already_unreash*/;
1596 variable[7] = TAG_Bool(!UNTAG_Bool(variable[7]));
1597 }
1598 /* Register variable[7]: Result */
1599 if (UNTAG_Bool(variable[7])) { /*if*/
1600 /* Register variable[7]: Result */
1601 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1602 CALL_control_flow___VariableContext___already_unreash__eq(variable[7])(variable[7], TAG_Bool(true)) /*VariableContext::already_unreash=*/;
1603 /* Register variable[7]: Once String constant */
1604 if (once_value_57 != NIT_NULL) variable[7] = once_value_57;
1605 else {
1606 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Warning: unreachable statement."), TAG_Int(31)) /*new String*/;
1607 once_value_57 = variable[7];
1608 }
1609 /* Register variable[7]: Result */
1610 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[6] /*e*/, variable[7]) /*AbsSyntaxVisitor::warning*/;
1611 }
1612 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[6] /*e*/) /*TypingVisitor::visit*/;
1613 continue_56: while(0);
1614 CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ListIterator::next*/;
1615 }
1616 break_56: while(0);
1617 /* Register variable[4]: Result */
1618 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1619 CALL_control_flow___VariableContext___merge( variable[3] /*old_var_ctx*/)( variable[3] /*old_var_ctx*/, variable[4]) /*VariableContext::merge*/;
1620 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
1621 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
1622 return_label55: while(false);
1623 tracehead = trace.prev;
1624 return;
1625 }
1626 void typing___AReturnExpr___after_typing(val_t self, val_t param0) {
1627 struct trace_t trace = {NULL, NULL, 365, LOCATE_typing___AReturnExpr___after_typing};
1628 static val_t once_value_59 = NIT_NULL; /* Once value for string variable[4]*/
1629 static val_t once_value_60 = NIT_NULL; /* Once value for string variable[4]*/
1630 val_t variable[5];
1631 struct WBT_ **closurevariable = NULL;
1632 trace.prev = tracehead; tracehead = &trace;
1633 trace.file = LOCATE_typing;
1634 /* Register variable[0]: Local variable */
1635 variable[0] = self;
1636 /* Register variable[1]: Local variable */
1637 variable[1] = param0;
1638 /* Register variable[2]: Method return value and escape marker */
1639 /* Register variable[3]: Result */
1640 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1641 CALL_control_flow___VariableContext___unreash__eq(variable[3])(variable[3], TAG_Bool(true)) /*VariableContext::unreash=*/;
1642 /* Register variable[3]: Local variable */
1643 /* Register variable[4]: Result */
1644 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
1645 /* Register variable[4]: Result */
1646 variable[4] = CALL_static_type___MMLocalProperty___signature(variable[4])(variable[4]) /*MMLocalProperty::signature*/;
1647 /* Register variable[4]: Result */
1648 variable[4] = CALL_static_type___MMSignature___return_type(variable[4])(variable[4]) /*MMSignature::return_type*/;
1649 variable[3] = variable[4];
1650 /* Register variable[4]: Result */
1651 variable[4] = CALL_parser_nodes___AReturnExpr___n_expr(variable[0])(variable[0]) /*AReturnExpr::n_expr*/;
1652 /* Register variable[4]: Result */
1653 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::==*/)))));
1654 /* Ensure var variable[4]: Left 'and' operand*/
1655 if (UNTAG_Bool(variable[4])) { /* and */
1656 /* Register variable[4]: Result */
1657 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1658 }
1659 /* Register variable[4]: Result */
1660 if (UNTAG_Bool(variable[4])) { /*if*/
1661 /* Register variable[4]: Once String constant */
1662 if (once_value_59 != NIT_NULL) variable[4] = once_value_59;
1663 else {
1664 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Error: Return without value in a function."), TAG_Int(42)) /*new String*/;
1665 once_value_59 = variable[4];
1666 }
1667 /* Register variable[4]: Result */
1668 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
1669 } else { /*if*/
1670 /* Register variable[4]: Result */
1671 variable[4] = CALL_parser_nodes___AReturnExpr___n_expr(variable[0])(variable[0]) /*AReturnExpr::n_expr*/;
1672 /* Register variable[4]: Result */
1673 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::==*/)))))));
1674 /* Ensure var variable[4]: Left 'and' operand*/
1675 if (UNTAG_Bool(variable[4])) { /* and */
1676 /* Register variable[4]: Result */
1677 variable[4] = TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))));
1678 }
1679 /* Register variable[4]: Result */
1680 if (UNTAG_Bool(variable[4])) { /*if*/
1681 /* Register variable[4]: Once String constant */
1682 if (once_value_60 != NIT_NULL) variable[4] = once_value_60;
1683 else {
1684 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Error: Return with value in a procedure."), TAG_Int(40)) /*new String*/;
1685 once_value_60 = variable[4];
1686 }
1687 /* Register variable[4]: Result */
1688 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
1689 } else { /*if*/
1690 /* Register variable[4]: Result */
1691 variable[4] = CALL_parser_nodes___AReturnExpr___n_expr(variable[0])(variable[0]) /*AReturnExpr::n_expr*/;
1692 /* Register variable[4]: Result */
1693 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::==*/)))))));
1694 /* Ensure var variable[4]: Left 'and' operand*/
1695 if (UNTAG_Bool(variable[4])) { /* and */
1696 /* Register variable[4]: Result */
1697 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1698 }
1699 /* Register variable[4]: Result */
1700 if (UNTAG_Bool(variable[4])) { /*if*/
1701 /* Register variable[4]: Result */
1702 variable[4] = CALL_parser_nodes___AReturnExpr___n_expr(variable[0])(variable[0]) /*AReturnExpr::n_expr*/;
1703 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[3] /*t*/) /*AbsSyntaxVisitor::check_conform_expr*/;
1704 }
1705 }
1706 }
1707 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
1708 return_label58: while(false);
1709 tracehead = trace.prev;
1710 return;
1711 }
1712 void typing___AContinueExpr___after_typing(val_t self, val_t param0) {
1713 struct trace_t trace = {NULL, NULL, 381, LOCATE_typing___AContinueExpr___after_typing};
1714 static val_t once_value_62 = NIT_NULL; /* Once value for string variable[4]*/
1715 static val_t once_value_63 = NIT_NULL; /* Once value for string variable[5]*/
1716 static val_t once_value_64 = NIT_NULL; /* Once value for string variable[5]*/
1717 val_t variable[6];
1718 struct WBT_ **closurevariable = NULL;
1719 trace.prev = tracehead; tracehead = &trace;
1720 trace.file = LOCATE_typing;
1721 /* Register variable[0]: Local variable */
1722 variable[0] = self;
1723 /* Register variable[1]: Local variable */
1724 variable[1] = param0;
1725 /* Register variable[2]: Method return value and escape marker */
1726 /* Register variable[3]: Result */
1727 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1728 CALL_control_flow___VariableContext___unreash__eq(variable[3])(variable[3], TAG_Bool(true)) /*VariableContext::unreash=*/;
1729 /* Register variable[3]: Local variable */
1730 /* Register variable[4]: Result */
1731 variable[4] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
1732 /* Register variable[4]: Result */
1733 variable[4] = CALL_escape___AEscapeExpr___compute_escapable_block(variable[0])(variable[0], variable[4]) /*AEscapeExpr::compute_escapable_block*/;
1734 variable[3] = variable[4];
1735 /* Register variable[4]: Result */
1736 variable[4] = TAG_Bool(( variable[3] /*esc*/ == NIT_NULL /*null*/) || (( variable[3] /*esc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*esc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*esc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*esc*/)( variable[3] /*esc*/, NIT_NULL /*null*/) /*Object::==*/)))));
1737 if (UNTAG_Bool(variable[4])) { /*if*/
1738 goto return_label61;
1739 }
1740 /* Register variable[4]: Result */
1741 variable[4] = CALL_escape___EscapableBlock___is_break_block( variable[3] /*esc*/)( variable[3] /*esc*/) /*EscapableBlock::is_break_block*/;
1742 if (UNTAG_Bool(variable[4])) { /*if*/
1743 /* Register variable[4]: Once String constant */
1744 if (once_value_62 != NIT_NULL) variable[4] = once_value_62;
1745 else {
1746 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Error: 'continue' forbiden in break blocks."), TAG_Int(43)) /*new String*/;
1747 once_value_62 = variable[4];
1748 }
1749 /* Register variable[4]: Result */
1750 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
1751 goto return_label61;
1752 }
1753 /* Register variable[4]: Local variable */
1754 /* Register variable[5]: Result */
1755 variable[5] = CALL_escape___EscapableBlock___continue_stype( variable[3] /*esc*/)( variable[3] /*esc*/) /*EscapableBlock::continue_stype*/;
1756 variable[4] = variable[5];
1757 /* Register variable[5]: Result */
1758 variable[5] = CALL_parser_nodes___AContinueExpr___n_expr(variable[0])(variable[0]) /*AContinueExpr::n_expr*/;
1759 /* Register variable[5]: Result */
1760 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::==*/)))));
1761 /* Ensure var variable[5]: Left 'and' operand*/
1762 if (UNTAG_Bool(variable[5])) { /* and */
1763 /* Register variable[5]: Result */
1764 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
1765 }
1766 /* Register variable[5]: Result */
1767 if (UNTAG_Bool(variable[5])) { /*if*/
1768 /* Register variable[5]: Once String constant */
1769 if (once_value_63 != NIT_NULL) variable[5] = once_value_63;
1770 else {
1771 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: continue with a value required in this block."), TAG_Int(52)) /*new String*/;
1772 once_value_63 = variable[5];
1773 }
1774 /* Register variable[5]: Result */
1775 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1776 } else { /*if*/
1777 /* Register variable[5]: Result */
1778 variable[5] = CALL_parser_nodes___AContinueExpr___n_expr(variable[0])(variable[0]) /*AContinueExpr::n_expr*/;
1779 /* Register variable[5]: Result */
1780 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::==*/)))))));
1781 /* Ensure var variable[5]: Left 'and' operand*/
1782 if (UNTAG_Bool(variable[5])) { /* and */
1783 /* Register variable[5]: Result */
1784 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::==*/)))));
1785 }
1786 /* Register variable[5]: Result */
1787 if (UNTAG_Bool(variable[5])) { /*if*/
1788 /* Register variable[5]: Once String constant */
1789 if (once_value_64 != NIT_NULL) variable[5] = once_value_64;
1790 else {
1791 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: continue without value required in this block."), TAG_Int(53)) /*new String*/;
1792 once_value_64 = variable[5];
1793 }
1794 /* Register variable[5]: Result */
1795 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1796 } else { /*if*/
1797 /* Register variable[5]: Result */
1798 variable[5] = CALL_parser_nodes___AContinueExpr___n_expr(variable[0])(variable[0]) /*AContinueExpr::n_expr*/;
1799 /* Register variable[5]: Result */
1800 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::==*/)))))));
1801 /* Ensure var variable[5]: Left 'and' operand*/
1802 if (UNTAG_Bool(variable[5])) { /* and */
1803 /* Register variable[5]: Result */
1804 variable[5] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
1805 }
1806 /* Register variable[5]: Result */
1807 if (UNTAG_Bool(variable[5])) { /*if*/
1808 /* Register variable[5]: Result */
1809 variable[5] = CALL_parser_nodes___AContinueExpr___n_expr(variable[0])(variable[0]) /*AContinueExpr::n_expr*/;
1810 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[4] /*t*/) /*AbsSyntaxVisitor::check_conform_expr*/;
1811 }
1812 }
1813 }
1814 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
1815 return_label61: while(false);
1816 tracehead = trace.prev;
1817 return;
1818 }
1819 void typing___ABreakExpr___after_typing(val_t self, val_t param0) {
1820 struct trace_t trace = {NULL, NULL, 405, LOCATE_typing___ABreakExpr___after_typing};
1821 static val_t once_value_66 = NIT_NULL; /* Once value for string variable[5]*/
1822 static val_t once_value_67 = NIT_NULL; /* Once value for string variable[5]*/
1823 val_t variable[6];
1824 struct WBT_ **closurevariable = NULL;
1825 trace.prev = tracehead; tracehead = &trace;
1826 trace.file = LOCATE_typing;
1827 /* Register variable[0]: Local variable */
1828 variable[0] = self;
1829 /* Register variable[1]: Local variable */
1830 variable[1] = param0;
1831 /* Register variable[2]: Method return value and escape marker */
1832 /* Register variable[3]: Result */
1833 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1834 CALL_control_flow___VariableContext___unreash__eq(variable[3])(variable[3], TAG_Bool(true)) /*VariableContext::unreash=*/;
1835 /* Register variable[3]: Local variable */
1836 /* Register variable[4]: Result */
1837 variable[4] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
1838 /* Register variable[4]: Result */
1839 variable[4] = CALL_escape___AEscapeExpr___compute_escapable_block(variable[0])(variable[0], variable[4]) /*AEscapeExpr::compute_escapable_block*/;
1840 variable[3] = variable[4];
1841 /* Register variable[4]: Result */
1842 variable[4] = TAG_Bool(( variable[3] /*esc*/ == NIT_NULL /*null*/) || (( variable[3] /*esc*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*esc*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*esc*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*esc*/)( variable[3] /*esc*/, NIT_NULL /*null*/) /*Object::==*/)))));
1843 if (UNTAG_Bool(variable[4])) { /*if*/
1844 goto return_label65;
1845 }
1846 /* Register variable[4]: Local variable */
1847 /* Register variable[5]: Result */
1848 variable[5] = CALL_escape___EscapableBlock___break_list( variable[3] /*esc*/)( variable[3] /*esc*/) /*EscapableBlock::break_list*/;
1849 variable[4] = variable[5];
1850 /* Register variable[5]: Result */
1851 variable[5] = CALL_parser_nodes___ABreakExpr___n_expr(variable[0])(variable[0]) /*ABreakExpr::n_expr*/;
1852 /* Register variable[5]: Result */
1853 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::==*/)))));
1854 /* Ensure var variable[5]: Left 'and' operand*/
1855 if (UNTAG_Bool(variable[5])) { /* and */
1856 /* Register variable[5]: Result */
1857 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*bl*/ == NIT_NULL /*null*/) || (( variable[4] /*bl*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*bl*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*bl*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*bl*/)( variable[4] /*bl*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1858 }
1859 /* Register variable[5]: Result */
1860 if (UNTAG_Bool(variable[5])) { /*if*/
1861 /* Register variable[5]: Once String constant */
1862 if (once_value_66 != NIT_NULL) variable[5] = once_value_66;
1863 else {
1864 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: break with a value required in this block."), TAG_Int(49)) /*new String*/;
1865 once_value_66 = variable[5];
1866 }
1867 /* Register variable[5]: Result */
1868 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1869 } else { /*if*/
1870 /* Register variable[5]: Result */
1871 variable[5] = CALL_parser_nodes___ABreakExpr___n_expr(variable[0])(variable[0]) /*ABreakExpr::n_expr*/;
1872 /* Register variable[5]: Result */
1873 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::==*/)))))));
1874 /* Ensure var variable[5]: Left 'and' operand*/
1875 if (UNTAG_Bool(variable[5])) { /* and */
1876 /* Register variable[5]: Result */
1877 variable[5] = TAG_Bool(( variable[4] /*bl*/ == NIT_NULL /*null*/) || (( variable[4] /*bl*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*bl*/)( variable[4] /*bl*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/)));
1878 }
1879 /* Register variable[5]: Result */
1880 if (UNTAG_Bool(variable[5])) { /*if*/
1881 /* Register variable[5]: Once String constant */
1882 if (once_value_67 != NIT_NULL) variable[5] = once_value_67;
1883 else {
1884 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: break without value required in this block."), TAG_Int(50)) /*new String*/;
1885 once_value_67 = variable[5];
1886 }
1887 /* Register variable[5]: Result */
1888 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
1889 } else { /*if*/
1890 /* Register variable[5]: Result */
1891 variable[5] = CALL_parser_nodes___ABreakExpr___n_expr(variable[0])(variable[0]) /*ABreakExpr::n_expr*/;
1892 /* Register variable[5]: Result */
1893 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::==*/)))))));
1894 /* Ensure var variable[5]: Left 'and' operand*/
1895 if (UNTAG_Bool(variable[5])) { /* and */
1896 /* Register variable[5]: Result */
1897 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*bl*/ == NIT_NULL /*null*/) || (( variable[4] /*bl*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*bl*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*bl*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*bl*/)( variable[4] /*bl*/, NIT_NULL /*null*/) /*Object::==*/)))))));
1898 }
1899 /* Register variable[5]: Result */
1900 if (UNTAG_Bool(variable[5])) { /*if*/
1901 /* Register variable[5]: Result */
1902 variable[5] = CALL_parser_nodes___ABreakExpr___n_expr(variable[0])(variable[0]) /*ABreakExpr::n_expr*/;
1903 CALL_abstract_collection___SimpleCollection___add( variable[4] /*bl*/)( variable[4] /*bl*/, variable[5]) /*AbstractArray::add*/;
1904 }
1905 }
1906 }
1907 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
1908 return_label65: while(false);
1909 tracehead = trace.prev;
1910 return;
1911 }
1912 void typing___AAbortExpr___after_typing(val_t self, val_t param0) {
1913 struct trace_t trace = {NULL, NULL, 425, LOCATE_typing___AAbortExpr___after_typing};
1914 val_t variable[4];
1915 struct WBT_ **closurevariable = NULL;
1916 trace.prev = tracehead; tracehead = &trace;
1917 trace.file = LOCATE_typing;
1918 /* Register variable[0]: Local variable */
1919 variable[0] = self;
1920 /* Register variable[1]: Local variable */
1921 variable[1] = param0;
1922 /* Register variable[2]: Method return value and escape marker */
1923 /* Register variable[3]: Result */
1924 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1925 CALL_control_flow___VariableContext___unreash__eq(variable[3])(variable[3], TAG_Bool(true)) /*VariableContext::unreash=*/;
1926 return_label68: while(false);
1927 tracehead = trace.prev;
1928 return;
1929 }
1930 void typing___AIfExpr___accept_typing(val_t self, val_t param0) {
1931 struct trace_t trace = {NULL, NULL, 432, LOCATE_typing___AIfExpr___accept_typing};
1932 val_t variable[7];
1933 struct WBT_ **closurevariable = NULL;
1934 trace.prev = tracehead; tracehead = &trace;
1935 trace.file = LOCATE_typing;
1936 /* Register variable[0]: Local variable */
1937 variable[0] = self;
1938 /* Register variable[1]: Local variable */
1939 variable[1] = param0;
1940 /* Register variable[2]: Method return value and escape marker */
1941 /* Register variable[3]: Local variable */
1942 /* Register variable[4]: Result */
1943 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1944 variable[3] = variable[4];
1945 /* Register variable[4]: Result */
1946 variable[4] = CALL_parser_nodes___AIfExpr___n_expr(variable[0])(variable[0]) /*AIfExpr::n_expr*/;
1947 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
1948 /* Register variable[4]: Result */
1949 variable[4] = CALL_parser_nodes___AIfExpr___n_expr(variable[0])(variable[0]) /*AIfExpr::n_expr*/;
1950 /* Register variable[5]: Result */
1951 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
1952 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
1953 /* Register variable[4]: Result */
1954 variable[4] = CALL_parser_nodes___AIfExpr___n_expr(variable[0])(variable[0]) /*AIfExpr::n_expr*/;
1955 CALL_typing___TypingVisitor___use_if_true_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::use_if_true_variable_ctx*/;
1956 /* Register variable[4]: Result */
1957 variable[4] = CALL_parser_nodes___AIfExpr___n_then(variable[0])(variable[0]) /*AIfExpr::n_then*/;
1958 /* Register variable[4]: Result */
1959 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::==*/)))))));
1960 if (UNTAG_Bool(variable[4])) { /*if*/
1961 /* Register variable[4]: Result */
1962 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1963 /* Register variable[5]: Result */
1964 variable[5] = CALL_parser_nodes___AIfExpr___n_then(variable[0])(variable[0]) /*AIfExpr::n_then*/;
1965 /* Register variable[4]: Result */
1966 variable[4] = CALL_control_flow___VariableContext___sub(variable[4])(variable[4], variable[5]) /*VariableContext::sub*/;
1967 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::variable_ctx=*/;
1968 /* Register variable[4]: Result */
1969 variable[4] = CALL_parser_nodes___AIfExpr___n_then(variable[0])(variable[0]) /*AIfExpr::n_then*/;
1970 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
1971 }
1972 /* Register variable[4]: Local variable */
1973 /* Register variable[5]: Result */
1974 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1975 variable[4] = variable[5];
1976 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
1977 /* Register variable[5]: Result */
1978 variable[5] = CALL_parser_nodes___AIfExpr___n_expr(variable[0])(variable[0]) /*AIfExpr::n_expr*/;
1979 CALL_typing___TypingVisitor___use_if_false_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::use_if_false_variable_ctx*/;
1980 /* Register variable[5]: Result */
1981 variable[5] = CALL_parser_nodes___AIfExpr___n_else(variable[0])(variable[0]) /*AIfExpr::n_else*/;
1982 /* Register variable[5]: Result */
1983 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::==*/)))))));
1984 if (UNTAG_Bool(variable[5])) { /*if*/
1985 /* Register variable[5]: Result */
1986 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1987 /* Register variable[6]: Result */
1988 variable[6] = CALL_parser_nodes___AIfExpr___n_else(variable[0])(variable[0]) /*AIfExpr::n_else*/;
1989 /* Register variable[5]: Result */
1990 variable[5] = CALL_control_flow___VariableContext___sub(variable[5])(variable[5], variable[6]) /*VariableContext::sub*/;
1991 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::variable_ctx=*/;
1992 /* Register variable[5]: Result */
1993 variable[5] = CALL_parser_nodes___AIfExpr___n_else(variable[0])(variable[0]) /*AIfExpr::n_else*/;
1994 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::visit*/;
1995 }
1996 /* Register variable[5]: Result */
1997 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
1998 /* Register variable[6]: Result */
1999 variable[6] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
2000 CALL_control_flow___VariableContext___merge2( variable[3] /*old_var_ctx*/)( variable[3] /*old_var_ctx*/, variable[4] /*then_var_ctx*/, variable[5], variable[6]) /*VariableContext::merge2*/;
2001 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
2002 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2003 return_label69: while(false);
2004 tracehead = trace.prev;
2005 return;
2006 }
2007 void typing___AWhileExpr___accept_typing(val_t self, val_t param0) {
2008 struct trace_t trace = {NULL, NULL, 471, LOCATE_typing___AWhileExpr___accept_typing};
2009 val_t variable[7];
2010 struct WBT_ **closurevariable = NULL;
2011 trace.prev = tracehead; tracehead = &trace;
2012 trace.file = LOCATE_typing;
2013 /* Register variable[0]: Local variable */
2014 variable[0] = self;
2015 /* Register variable[1]: Local variable */
2016 variable[1] = param0;
2017 /* Register variable[2]: Method return value and escape marker */
2018 /* Register variable[3]: Result */
2019 variable[3] = NEW_EscapableBlock_escape___EscapableBlock___init(variable[0]) /*new EscapableBlock*/;
2020 ATTR_typing___AWhileExpr____escapable(variable[0]) /*AWhileExpr::_escapable*/ = variable[3];
2021 /* Register variable[3]: Result */
2022 variable[3] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
2023 /* Register variable[4]: Result */
2024 variable[4] = ATTR_typing___AWhileExpr____escapable(variable[0]) /*AWhileExpr::_escapable*/;
2025 CALL_escape___EscapableContext___push(variable[3])(variable[3], variable[4]) /*EscapableContext::push*/;
2026 /* Register variable[3]: Local variable */
2027 /* Register variable[4]: Result */
2028 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2029 variable[3] = variable[4];
2030 /* Register variable[4]: Local variable */
2031 /* Register variable[5]: Result */
2032 variable[5] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
2033 variable[4] = variable[5];
2034 /* Register variable[5]: Result */
2035 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2036 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::base_variable_ctx=*/;
2037 /* Register variable[5]: Result */
2038 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2039 /* Register variable[5]: Result */
2040 variable[5] = CALL_control_flow___VariableContext___sub(variable[5])(variable[5], variable[0]) /*VariableContext::sub*/;
2041 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::variable_ctx=*/;
2042 /* Register variable[5]: Result */
2043 variable[5] = CALL_parser_nodes___AWhileExpr___n_expr(variable[0])(variable[0]) /*AWhileExpr::n_expr*/;
2044 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::visit*/;
2045 /* Register variable[5]: Result */
2046 variable[5] = CALL_parser_nodes___AWhileExpr___n_expr(variable[0])(variable[0]) /*AWhileExpr::n_expr*/;
2047 /* Register variable[6]: Result */
2048 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
2049 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[6]) /*AbsSyntaxVisitor::check_conform_expr*/;
2050 /* Register variable[5]: Result */
2051 variable[5] = CALL_parser_nodes___AWhileExpr___n_expr(variable[0])(variable[0]) /*AWhileExpr::n_expr*/;
2052 CALL_typing___TypingVisitor___use_if_true_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::use_if_true_variable_ctx*/;
2053 /* Register variable[5]: Result */
2054 variable[5] = CALL_parser_nodes___AWhileExpr___n_block(variable[0])(variable[0]) /*AWhileExpr::n_block*/;
2055 /* Register variable[5]: Result */
2056 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::==*/)))))));
2057 if (UNTAG_Bool(variable[5])) { /*if*/
2058 /* Register variable[5]: Result */
2059 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2060 /* Register variable[6]: Result */
2061 variable[6] = CALL_parser_nodes___AWhileExpr___n_block(variable[0])(variable[0]) /*AWhileExpr::n_block*/;
2062 /* Register variable[5]: Result */
2063 variable[5] = CALL_control_flow___VariableContext___sub(variable[5])(variable[5], variable[6]) /*VariableContext::sub*/;
2064 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::variable_ctx=*/;
2065 /* Register variable[5]: Result */
2066 variable[5] = CALL_parser_nodes___AWhileExpr___n_block(variable[0])(variable[0]) /*AWhileExpr::n_block*/;
2067 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::visit*/;
2068 }
2069 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
2070 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4] /*old_base_var_ctx*/) /*TypingVisitor::base_variable_ctx=*/;
2071 /* Register variable[5]: Result */
2072 variable[5] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
2073 CALL_escape___EscapableContext___pop(variable[5])(variable[5]) /*EscapableContext::pop*/;
2074 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2075 return_label70: while(false);
2076 tracehead = trace.prev;
2077 return;
2078 }
2079 val_t typing___AWhileExpr___escapable(val_t self) {
2080 struct trace_t trace = {NULL, NULL, 468, LOCATE_typing___AWhileExpr___escapable};
2081 val_t *variable = NULL;
2082 struct WBT_ **closurevariable = NULL;
2083 trace.prev = tracehead; tracehead = &trace;
2084 trace.file = LOCATE_typing;
2085 tracehead = trace.prev;
2086 return ATTR_typing___AWhileExpr____escapable( self) /*AWhileExpr::_escapable*/;
2087 }
2088 void typing___AForExpr___accept_typing(val_t self, val_t param0) {
2089 struct trace_t trace = {NULL, NULL, 508, LOCATE_typing___AForExpr___accept_typing};
2090 static val_t once_value_72; static int once_bool_72; /* Once value for variable[8]*/
2091 static val_t once_value_73 = NIT_NULL; /* Once value for string variable[8]*/
2092 static val_t once_value_74 = NIT_NULL; /* Once value for string variable[7]*/
2093 static val_t once_value_75; static int once_bool_75; /* Once value for variable[9]*/
2094 static val_t once_value_76 = NIT_NULL; /* Once value for string variable[9]*/
2095 static val_t once_value_77 = NIT_NULL; /* Once value for string variable[9]*/
2096 static val_t once_value_78 = NIT_NULL; /* Once value for string variable[9]*/
2097 static val_t once_value_79; static int once_bool_79; /* Once value for variable[9]*/
2098 static val_t once_value_80 = NIT_NULL; /* Once value for string variable[9]*/
2099 static val_t once_value_81 = NIT_NULL; /* Once value for string variable[9]*/
2100 static val_t once_value_82 = NIT_NULL; /* Once value for string variable[9]*/
2101 static val_t once_value_83; static int once_bool_83; /* Once value for variable[9]*/
2102 static val_t once_value_84 = NIT_NULL; /* Once value for string variable[9]*/
2103 static val_t once_value_85 = NIT_NULL; /* Once value for string variable[9]*/
2104 static val_t once_value_86 = NIT_NULL; /* Once value for string variable[9]*/
2105 val_t variable[10];
2106 struct WBT_ **closurevariable = NULL;
2107 trace.prev = tracehead; tracehead = &trace;
2108 trace.file = LOCATE_typing;
2109 /* Register variable[0]: Local variable */
2110 variable[0] = self;
2111 /* Register variable[1]: Local variable */
2112 variable[1] = param0;
2113 /* Register variable[2]: Method return value and escape marker */
2114 /* Register variable[3]: Result */
2115 variable[3] = NEW_EscapableBlock_escape___EscapableBlock___init(variable[0]) /*new EscapableBlock*/;
2116 ATTR_typing___AForExpr____escapable(variable[0]) /*AForExpr::_escapable*/ = variable[3];
2117 /* Register variable[3]: Result */
2118 variable[3] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
2119 /* Register variable[4]: Result */
2120 variable[4] = ATTR_typing___AForExpr____escapable(variable[0]) /*AForExpr::_escapable*/;
2121 CALL_escape___EscapableContext___push(variable[3])(variable[3], variable[4]) /*EscapableContext::push*/;
2122 /* Register variable[3]: Local variable */
2123 /* Register variable[4]: Result */
2124 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2125 variable[3] = variable[4];
2126 /* Register variable[4]: Local variable */
2127 /* Register variable[5]: Result */
2128 variable[5] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
2129 variable[4] = variable[5];
2130 /* Register variable[5]: Result */
2131 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2132 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::base_variable_ctx=*/;
2133 /* Register variable[5]: Result */
2134 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2135 /* Register variable[5]: Result */
2136 variable[5] = CALL_control_flow___VariableContext___sub(variable[5])(variable[5], variable[0]) /*VariableContext::sub*/;
2137 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*TypingVisitor::variable_ctx=*/;
2138 /* Register variable[5]: Local variable */
2139 /* Register variable[6]: Result */
2140 variable[6] = CALL_parser_nodes___AForExpr___n_id(variable[0])(variable[0]) /*AForExpr::n_id*/;
2141 /* Register variable[6]: Result */
2142 variable[6] = CALL_syntax_base___Token___to_symbol(variable[6])(variable[6]) /*Token::to_symbol*/;
2143 /* Register variable[6]: Result */
2144 variable[6] = NEW_AutoVariable_syntax_base___AutoVariable___init(variable[6], variable[0]) /*new AutoVariable*/;
2145 variable[5] = variable[6];
2146 CALL_syntax_base___AForExpr___variable__eq(variable[0])(variable[0], variable[5] /*va*/) /*AForExpr::variable=*/;
2147 /* Register variable[6]: Result */
2148 variable[6] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2149 CALL_control_flow___VariableContext___add(variable[6])(variable[6], variable[5] /*va*/) /*VariableContext::add*/;
2150 /* Register variable[6]: Result */
2151 variable[6] = CALL_parser_nodes___AForExpr___n_expr(variable[0])(variable[0]) /*AForExpr::n_expr*/;
2152 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*TypingVisitor::visit*/;
2153 /* Register variable[6]: Result */
2154 variable[6] = CALL_parser_nodes___AForExpr___n_expr(variable[0])(variable[0]) /*AForExpr::n_expr*/;
2155 /* Register variable[7]: Result */
2156 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___type_collection( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_collection*/;
2157 /* Register variable[6]: Result */
2158 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[7]) /*AbsSyntaxVisitor::check_conform_expr*/;
2159 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
2160 goto return_label71;
2161 }
2162 /* Register variable[6]: Local variable */
2163 /* Register variable[7]: Result */
2164 variable[7] = CALL_parser_nodes___AForExpr___n_expr(variable[0])(variable[0]) /*AForExpr::n_expr*/;
2165 /* Register variable[7]: Result */
2166 variable[7] = CALL_syntax_base___PExpr___stype(variable[7])(variable[7]) /*PExpr::stype*/;
2167 variable[6] = variable[7];
2168 /* Register variable[7]: Result */
2169 variable[7] = CALL_static_type___MMType___local_class( variable[6] /*expr_type*/)( variable[6] /*expr_type*/) /*MMType::local_class*/;
2170 /* Register variable[8]: Once expression result */
2171 if (once_bool_72) variable[8] = once_value_72;
2172 else {
2173 /* Register variable[8]: Once String constant */
2174 if (once_value_73 != NIT_NULL) variable[8] = once_value_73;
2175 else {
2176 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("iterator"), TAG_Int(8)) /*new String*/;
2177 once_value_73 = variable[8];
2178 }
2179 /* Register variable[8]: Result */
2180 /* Register variable[8]: Result */
2181 variable[8] = CALL_symbol___String___to_symbol(variable[8])(variable[8]) /*String::to_symbol*/;
2182 once_value_72 = variable[8];
2183 once_bool_72 = true;
2184 }
2185 /* Register variable[8]: Result */
2186 /* Register variable[7]: Result */
2187 variable[7] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[7])(variable[7], variable[8]) /*MMLocalClass::select_method*/;
2188 ATTR_typing___AForExpr____meth_iterator(variable[0]) /*AForExpr::_meth_iterator*/ = variable[7];
2189 /* Register variable[7]: Result */
2190 variable[7] = ATTR_typing___AForExpr____meth_iterator(variable[0]) /*AForExpr::_meth_iterator*/;
2191 /* Register variable[7]: Result */
2192 variable[7] = 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::==*/)))));
2193 if (UNTAG_Bool(variable[7])) { /*if*/
2194 /* Register variable[7]: Once String constant */
2195 if (once_value_74 != NIT_NULL) variable[7] = once_value_74;
2196 else {
2197 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: Collection MUST have an iterate method"), TAG_Int(45)) /*new String*/;
2198 once_value_74 = variable[7];
2199 }
2200 /* Register variable[7]: Result */
2201 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
2202 goto return_label71;
2203 }
2204 /* Register variable[7]: Local variable */
2205 /* Register variable[8]: Result */
2206 variable[8] = ATTR_typing___AForExpr____meth_iterator(variable[0]) /*AForExpr::_meth_iterator*/;
2207 /* Register variable[8]: Result */
2208 variable[8] = CALL_static_type___MMLocalProperty___signature_for(variable[8])(variable[8], variable[6] /*expr_type*/) /*MMLocalProperty::signature_for*/;
2209 /* Register variable[8]: Result */
2210 variable[8] = CALL_static_type___MMSignature___return_type(variable[8])(variable[8]) /*MMSignature::return_type*/;
2211 variable[7] = variable[8];
2212 /* Register variable[8]: Result */
2213 variable[8] = CALL_static_type___MMType___local_class( variable[7] /*iter_type*/)( variable[7] /*iter_type*/) /*MMType::local_class*/;
2214 /* Register variable[9]: Once expression result */
2215 if (once_bool_75) variable[9] = once_value_75;
2216 else {
2217 /* Register variable[9]: Once String constant */
2218 if (once_value_76 != NIT_NULL) variable[9] = once_value_76;
2219 else {
2220 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("is_ok"), TAG_Int(5)) /*new String*/;
2221 once_value_76 = variable[9];
2222 }
2223 /* Register variable[9]: Result */
2224 /* Register variable[9]: Result */
2225 variable[9] = CALL_symbol___String___to_symbol(variable[9])(variable[9]) /*String::to_symbol*/;
2226 once_value_75 = variable[9];
2227 once_bool_75 = true;
2228 }
2229 /* Register variable[9]: Result */
2230 /* Register variable[8]: Result */
2231 variable[8] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[8])(variable[8], variable[9]) /*MMLocalClass::select_method*/;
2232 ATTR_typing___AForExpr____meth_is_ok(variable[0]) /*AForExpr::_meth_is_ok*/ = variable[8];
2233 /* Register variable[8]: Result */
2234 variable[8] = ATTR_typing___AForExpr____meth_is_ok(variable[0]) /*AForExpr::_meth_is_ok*/;
2235 /* Register variable[8]: Result */
2236 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::==*/)))));
2237 if (UNTAG_Bool(variable[8])) { /*if*/
2238 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2239 /* Register variable[9]: Once String constant */
2240 if (once_value_77 != NIT_NULL) variable[9] = once_value_77;
2241 else {
2242 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
2243 once_value_77 = variable[9];
2244 }
2245 /* Register variable[9]: Result */
2246 /* Ensure var variable[9]: super-string element*/
2247 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2248 variable[9] = variable[7] /*iter_type*/ /* Ensure var: super-string element*/;
2249 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2250 /* Register variable[9]: Once String constant */
2251 if (once_value_78 != NIT_NULL) variable[9] = once_value_78;
2252 else {
2253 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have an is_ok method"), TAG_Int(26)) /*new String*/;
2254 once_value_78 = variable[9];
2255 }
2256 /* Register variable[9]: Result */
2257 /* Ensure var variable[9]: super-string element*/
2258 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2259 /* Register variable[8]: Result */
2260 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2261 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2262 goto return_label71;
2263 }
2264 /* Register variable[8]: Result */
2265 variable[8] = CALL_static_type___MMType___local_class( variable[7] /*iter_type*/)( variable[7] /*iter_type*/) /*MMType::local_class*/;
2266 /* Register variable[9]: Once expression result */
2267 if (once_bool_79) variable[9] = once_value_79;
2268 else {
2269 /* Register variable[9]: Once String constant */
2270 if (once_value_80 != NIT_NULL) variable[9] = once_value_80;
2271 else {
2272 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("item"), TAG_Int(4)) /*new String*/;
2273 once_value_80 = variable[9];
2274 }
2275 /* Register variable[9]: Result */
2276 /* Register variable[9]: Result */
2277 variable[9] = CALL_symbol___String___to_symbol(variable[9])(variable[9]) /*String::to_symbol*/;
2278 once_value_79 = variable[9];
2279 once_bool_79 = true;
2280 }
2281 /* Register variable[9]: Result */
2282 /* Register variable[8]: Result */
2283 variable[8] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[8])(variable[8], variable[9]) /*MMLocalClass::select_method*/;
2284 ATTR_typing___AForExpr____meth_item(variable[0]) /*AForExpr::_meth_item*/ = variable[8];
2285 /* Register variable[8]: Result */
2286 variable[8] = ATTR_typing___AForExpr____meth_item(variable[0]) /*AForExpr::_meth_item*/;
2287 /* Register variable[8]: Result */
2288 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::==*/)))));
2289 if (UNTAG_Bool(variable[8])) { /*if*/
2290 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2291 /* Register variable[9]: Once String constant */
2292 if (once_value_81 != NIT_NULL) variable[9] = once_value_81;
2293 else {
2294 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
2295 once_value_81 = variable[9];
2296 }
2297 /* Register variable[9]: Result */
2298 /* Ensure var variable[9]: super-string element*/
2299 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2300 variable[9] = variable[7] /*iter_type*/ /* Ensure var: super-string element*/;
2301 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2302 /* Register variable[9]: Once String constant */
2303 if (once_value_82 != NIT_NULL) variable[9] = once_value_82;
2304 else {
2305 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have an item method"), TAG_Int(25)) /*new String*/;
2306 once_value_82 = variable[9];
2307 }
2308 /* Register variable[9]: Result */
2309 /* Ensure var variable[9]: super-string element*/
2310 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2311 /* Register variable[8]: Result */
2312 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2313 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2314 goto return_label71;
2315 }
2316 /* Register variable[8]: Result */
2317 variable[8] = CALL_static_type___MMType___local_class( variable[7] /*iter_type*/)( variable[7] /*iter_type*/) /*MMType::local_class*/;
2318 /* Register variable[9]: Once expression result */
2319 if (once_bool_83) variable[9] = once_value_83;
2320 else {
2321 /* Register variable[9]: Once String constant */
2322 if (once_value_84 != NIT_NULL) variable[9] = once_value_84;
2323 else {
2324 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("next"), TAG_Int(4)) /*new String*/;
2325 once_value_84 = variable[9];
2326 }
2327 /* Register variable[9]: Result */
2328 /* Register variable[9]: Result */
2329 variable[9] = CALL_symbol___String___to_symbol(variable[9])(variable[9]) /*String::to_symbol*/;
2330 once_value_83 = variable[9];
2331 once_bool_83 = true;
2332 }
2333 /* Register variable[9]: Result */
2334 /* Register variable[8]: Result */
2335 variable[8] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[8])(variable[8], variable[9]) /*MMLocalClass::select_method*/;
2336 ATTR_typing___AForExpr____meth_next(variable[0]) /*AForExpr::_meth_next*/ = variable[8];
2337 /* Register variable[8]: Result */
2338 variable[8] = ATTR_typing___AForExpr____meth_next(variable[0]) /*AForExpr::_meth_next*/;
2339 /* Register variable[8]: Result */
2340 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::==*/)))));
2341 if (UNTAG_Bool(variable[8])) { /*if*/
2342 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2343 /* Register variable[9]: Once String constant */
2344 if (once_value_85 != NIT_NULL) variable[9] = once_value_85;
2345 else {
2346 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
2347 once_value_85 = variable[9];
2348 }
2349 /* Register variable[9]: Result */
2350 /* Ensure var variable[9]: super-string element*/
2351 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2352 variable[9] = variable[7] /*iter_type*/ /* Ensure var: super-string element*/;
2353 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
2354 /* Register variable[9]: Once String constant */
2355 if (once_value_86 != NIT_NULL) variable[9] = once_value_86;
2356 else {
2357 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have a next method"), TAG_Int(24)) /*new String*/;
2358 once_value_86 = variable[9];
2359 }
2360 /* Register variable[9]: Result */
2361 /* Ensure var variable[9]: super-string element*/
2362 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
2363 /* Register variable[8]: Result */
2364 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
2365 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
2366 goto return_label71;
2367 }
2368 /* Register variable[8]: Local variable */
2369 /* Register variable[9]: Result */
2370 variable[9] = ATTR_typing___AForExpr____meth_item(variable[0]) /*AForExpr::_meth_item*/;
2371 /* Register variable[9]: Result */
2372 variable[9] = CALL_static_type___MMLocalProperty___signature_for(variable[9])(variable[9], variable[7] /*iter_type*/) /*MMLocalProperty::signature_for*/;
2373 /* Register variable[9]: Result */
2374 variable[9] = CALL_static_type___MMSignature___return_type(variable[9])(variable[9]) /*MMSignature::return_type*/;
2375 variable[8] = variable[9];
2376 /* Register variable[9]: Result */
2377 variable[9] = CALL_parser_nodes___AForExpr___n_expr(variable[0])(variable[0]) /*AForExpr::n_expr*/;
2378 /* Register variable[9]: Result */
2379 variable[9] = CALL_typing___PExpr___is_self(variable[9])(variable[9]) /*PExpr::is_self*/;
2380 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[9])))) { /*if*/
2381 /* Register variable[9]: Result */
2382 variable[9] = CALL_static_type___MMType___not_for_self( variable[8] /*t*/)( variable[8] /*t*/) /*MMType::not_for_self*/;
2383 variable[8] = variable[9] /*t=*/;
2384 }
2385 CALL_syntax_base___Variable___stype__eq( variable[5] /*va*/)( variable[5] /*va*/, variable[8] /*t*/) /*Variable::stype=*/;
2386 /* Register variable[9]: Result */
2387 variable[9] = CALL_parser_nodes___AForExpr___n_block(variable[0])(variable[0]) /*AForExpr::n_block*/;
2388 /* Register variable[9]: Result */
2389 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::==*/)))))));
2390 if (UNTAG_Bool(variable[9])) { /*if*/
2391 /* Register variable[9]: Result */
2392 variable[9] = CALL_parser_nodes___AForExpr___n_block(variable[0])(variable[0]) /*AForExpr::n_block*/;
2393 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[9]) /*TypingVisitor::visit*/;
2394 }
2395 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
2396 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[4] /*old_base_var_ctx*/) /*TypingVisitor::base_variable_ctx=*/;
2397 /* Register variable[9]: Result */
2398 variable[9] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
2399 CALL_escape___EscapableContext___pop(variable[9])(variable[9]) /*EscapableContext::pop*/;
2400 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2401 return_label71: while(false);
2402 tracehead = trace.prev;
2403 return;
2404 }
2405 val_t typing___AForExpr___escapable(val_t self) {
2406 struct trace_t trace = {NULL, NULL, 501, LOCATE_typing___AForExpr___escapable};
2407 val_t *variable = NULL;
2408 struct WBT_ **closurevariable = NULL;
2409 trace.prev = tracehead; tracehead = &trace;
2410 trace.file = LOCATE_typing;
2411 tracehead = trace.prev;
2412 return ATTR_typing___AForExpr____escapable( self) /*AForExpr::_escapable*/;
2413 }
2414 val_t typing___AForExpr___meth_iterator(val_t self) {
2415 struct trace_t trace = {NULL, NULL, 504, LOCATE_typing___AForExpr___meth_iterator};
2416 val_t *variable = NULL;
2417 struct WBT_ **closurevariable = NULL;
2418 trace.prev = tracehead; tracehead = &trace;
2419 trace.file = LOCATE_typing;
2420 tracehead = trace.prev;
2421 return ATTR_typing___AForExpr____meth_iterator( self) /*AForExpr::_meth_iterator*/;
2422 }
2423 val_t typing___AForExpr___meth_is_ok(val_t self) {
2424 struct trace_t trace = {NULL, NULL, 505, LOCATE_typing___AForExpr___meth_is_ok};
2425 val_t *variable = NULL;
2426 struct WBT_ **closurevariable = NULL;
2427 trace.prev = tracehead; tracehead = &trace;
2428 trace.file = LOCATE_typing;
2429 tracehead = trace.prev;
2430 return ATTR_typing___AForExpr____meth_is_ok( self) /*AForExpr::_meth_is_ok*/;
2431 }
2432 val_t typing___AForExpr___meth_item(val_t self) {
2433 struct trace_t trace = {NULL, NULL, 506, LOCATE_typing___AForExpr___meth_item};
2434 val_t *variable = NULL;
2435 struct WBT_ **closurevariable = NULL;
2436 trace.prev = tracehead; tracehead = &trace;
2437 trace.file = LOCATE_typing;
2438 tracehead = trace.prev;
2439 return ATTR_typing___AForExpr____meth_item( self) /*AForExpr::_meth_item*/;
2440 }
2441 val_t typing___AForExpr___meth_next(val_t self) {
2442 struct trace_t trace = {NULL, NULL, 507, LOCATE_typing___AForExpr___meth_next};
2443 val_t *variable = NULL;
2444 struct WBT_ **closurevariable = NULL;
2445 trace.prev = tracehead; tracehead = &trace;
2446 trace.file = LOCATE_typing;
2447 tracehead = trace.prev;
2448 return ATTR_typing___AForExpr____meth_next( self) /*AForExpr::_meth_next*/;
2449 }
2450 void typing___AAssertExpr___after_typing(val_t self, val_t param0) {
2451 struct trace_t trace = {NULL, NULL, 561, LOCATE_typing___AAssertExpr___after_typing};
2452 val_t variable[5];
2453 struct WBT_ **closurevariable = NULL;
2454 trace.prev = tracehead; tracehead = &trace;
2455 trace.file = LOCATE_typing;
2456 /* Register variable[0]: Local variable */
2457 variable[0] = self;
2458 /* Register variable[1]: Local variable */
2459 variable[1] = param0;
2460 /* Register variable[2]: Method return value and escape marker */
2461 /* Register variable[3]: Result */
2462 variable[3] = CALL_parser_nodes___AAssertExpr___n_expr(variable[0])(variable[0]) /*AAssertExpr::n_expr*/;
2463 /* Register variable[4]: Result */
2464 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
2465 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::check_conform_expr*/;
2466 /* Register variable[3]: Result */
2467 variable[3] = CALL_parser_nodes___AAssertExpr___n_expr(variable[0])(variable[0]) /*AAssertExpr::n_expr*/;
2468 CALL_typing___TypingVisitor___use_if_true_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::use_if_true_variable_ctx*/;
2469 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2470 return_label87: while(false);
2471 tracehead = trace.prev;
2472 return;
2473 }
2474 void typing___AVarExpr___after_typing(val_t self, val_t param0) {
2475 struct trace_t trace = {NULL, NULL, 572, LOCATE_typing___AVarExpr___after_typing};
2476 val_t variable[5];
2477 struct WBT_ **closurevariable = NULL;
2478 trace.prev = tracehead; tracehead = &trace;
2479 trace.file = LOCATE_typing;
2480 /* Register variable[0]: Local variable */
2481 variable[0] = self;
2482 /* Register variable[1]: Local variable */
2483 variable[1] = param0;
2484 /* Register variable[2]: Method return value and escape marker */
2485 /* Register variable[3]: Result */
2486 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2487 /* Register variable[4]: Result */
2488 variable[4] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2489 CALL_control_flow___VariableContext___check_is_set(variable[3])(variable[3], variable[0], variable[4]) /*VariableContext::check_is_set*/;
2490 /* Register variable[3]: Result */
2491 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2492 /* Register variable[4]: Result */
2493 variable[4] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2494 /* Register variable[3]: Result */
2495 variable[3] = CALL_control_flow___VariableContext___stype(variable[3])(variable[3], variable[4]) /*VariableContext::stype*/;
2496 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
2497 /* Register variable[3]: Result */
2498 variable[3] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
2499 /* Register variable[3]: Result */
2500 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::==*/)))))));
2501 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = variable[3];
2502 return_label88: while(false);
2503 tracehead = trace.prev;
2504 return;
2505 }
2506 val_t typing___AVarExpr___its_variable(val_t self) {
2507 struct trace_t trace = {NULL, NULL, 570, LOCATE_typing___AVarExpr___its_variable};
2508 val_t variable[3];
2509 struct WBT_ **closurevariable = NULL;
2510 trace.prev = tracehead; tracehead = &trace;
2511 trace.file = LOCATE_typing;
2512 /* Register variable[0]: Local variable */
2513 variable[0] = self;
2514 /* Register variable[1]: Method return value and escape marker */
2515 /* Register variable[2]: Result */
2516 variable[2] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2517 variable[1] = variable[2];
2518 goto return_label89;
2519 return_label89: while(false);
2520 tracehead = trace.prev;
2521 return variable[1];
2522 }
2523 void typing___AVarAssignExpr___after_typing(val_t self, val_t param0) {
2524 struct trace_t trace = {NULL, NULL, 581, LOCATE_typing___AVarAssignExpr___after_typing};
2525 val_t variable[8];
2526 struct WBT_ **closurevariable = NULL;
2527 trace.prev = tracehead; tracehead = &trace;
2528 trace.file = LOCATE_typing;
2529 /* Register variable[0]: Local variable */
2530 variable[0] = self;
2531 /* Register variable[1]: Local variable */
2532 variable[1] = param0;
2533 /* Register variable[2]: Method return value and escape marker */
2534 /* Register variable[3]: Result */
2535 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2536 /* Register variable[4]: Result */
2537 variable[4] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2538 CALL_control_flow___VariableContext___mark_is_set(variable[3])(variable[3], variable[4]) /*VariableContext::mark_is_set*/;
2539 /* Register variable[3]: Local variable */
2540 /* Register variable[4]: Result */
2541 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2542 /* Register variable[5]: Result */
2543 variable[5] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2544 /* Register variable[4]: Result */
2545 variable[4] = CALL_control_flow___VariableContext___stype(variable[4])(variable[4], variable[5]) /*VariableContext::stype*/;
2546 variable[3] = variable[4];
2547 /* Register variable[4]: Local variable */
2548 /* Register variable[5]: Result */
2549 variable[5] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
2550 /* Register variable[6]: Result */
2551 variable[6] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2552 /* Register variable[5]: Result */
2553 variable[5] = CALL_control_flow___VariableContext___stype(variable[5])(variable[5], variable[6]) /*VariableContext::stype*/;
2554 variable[4] = variable[5];
2555 /* Register variable[5]: Result */
2556 variable[5] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
2557 /* Register variable[5]: Result */
2558 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[5], variable[4] /*btype*/) /*AbsSyntaxVisitor::check_conform_expr*/;
2559 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
2560 goto return_label90;
2561 }
2562 /* Register variable[5]: Result */
2563 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2564 /* Register variable[6]: Result */
2565 variable[6] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2566 /* Register variable[7]: Result */
2567 variable[7] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
2568 /* Register variable[7]: Result */
2569 variable[7] = CALL_syntax_base___PExpr___stype(variable[7])(variable[7]) /*PExpr::stype*/;
2570 CALL_control_flow___VariableContext___stype__eq(variable[5])(variable[5], variable[6], variable[7]) /*VariableContext::stype=*/;
2571 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2572 return_label90: while(false);
2573 tracehead = trace.prev;
2574 return;
2575 }
2576 val_t typing___AReassignFormExpr___do_rvalue_typing(val_t self, val_t param0, val_t param1) {
2577 struct trace_t trace = {NULL, NULL, 598, LOCATE_typing___AReassignFormExpr___do_rvalue_typing};
2578 static val_t once_value_92 = NIT_NULL; /* Once value for string variable[7]*/
2579 static val_t once_value_93 = NIT_NULL; /* Once value for string variable[7]*/
2580 static val_t once_value_94 = NIT_NULL; /* Once value for string variable[7]*/
2581 val_t variable[10];
2582 struct WBT_ **closurevariable = NULL;
2583 trace.prev = tracehead; tracehead = &trace;
2584 trace.file = LOCATE_typing;
2585 /* Register variable[0]: Local variable */
2586 variable[0] = self;
2587 /* Register variable[1]: Local variable */
2588 variable[1] = param0;
2589 /* Register variable[2]: Local variable */
2590 variable[2] = param1;
2591 /* Register variable[3]: Method return value and escape marker */
2592 /* Register variable[4]: Result */
2593 variable[4] = TAG_Bool(( variable[2] /*type_lvalue*/ == NIT_NULL /*null*/) || (( variable[2] /*type_lvalue*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*type_lvalue*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*type_lvalue*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*type_lvalue*/)( variable[2] /*type_lvalue*/, NIT_NULL /*null*/) /*Object::==*/)))));
2594 if (UNTAG_Bool(variable[4])) { /*if*/
2595 variable[3] = NIT_NULL /*null*/;
2596 goto return_label91;
2597 }
2598 /* Register variable[4]: Local variable */
2599 /* Register variable[5]: Result */
2600 variable[5] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(variable[0])(variable[0]) /*AReassignFormExpr::n_assign_op*/;
2601 /* Register variable[5]: Result */
2602 variable[5] = CALL_typing___PAssignOp___method_name(variable[5])(variable[5]) /*PAssignOp::method_name*/;
2603 variable[4] = variable[5];
2604 /* Register variable[5]: Local variable */
2605 /* Register variable[6]: Result */
2606 variable[6] = CALL_static_type___MMType___local_class( variable[2] /*type_lvalue*/)( variable[2] /*type_lvalue*/) /*MMType::local_class*/;
2607 variable[5] = variable[6];
2608 /* Register variable[6]: Result */
2609 variable[6] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name( variable[5] /*lc*/)( variable[5] /*lc*/, variable[4] /*name*/) /*MMLocalClass::has_global_property_by_name*/;
2610 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
2611 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
2612 /* Register variable[7]: Once String constant */
2613 if (once_value_92 != NIT_NULL) variable[7] = once_value_92;
2614 else {
2615 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: Method '"), TAG_Int(15)) /*new String*/;
2616 once_value_92 = variable[7];
2617 }
2618 /* Register variable[7]: Result */
2619 /* Ensure var variable[7]: super-string element*/
2620 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2621 variable[7] = variable[4] /*name*/ /* Ensure var: super-string element*/;
2622 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
2623 /* Register variable[7]: Once String constant */
2624 if (once_value_93 != NIT_NULL) variable[7] = once_value_93;
2625 else {
2626 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("' doesn't exists in "), TAG_Int(20)) /*new String*/;
2627 once_value_93 = variable[7];
2628 }
2629 /* Register variable[7]: Result */
2630 /* Ensure var variable[7]: super-string element*/
2631 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2632 variable[7] = variable[2] /*type_lvalue*/ /* Ensure var: super-string element*/;
2633 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
2634 /* Register variable[7]: Once String constant */
2635 if (once_value_94 != NIT_NULL) variable[7] = once_value_94;
2636 else {
2637 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
2638 once_value_94 = variable[7];
2639 }
2640 /* Register variable[7]: Result */
2641 /* Ensure var variable[7]: super-string element*/
2642 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
2643 /* Register variable[6]: Result */
2644 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
2645 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[6]) /*AbsSyntaxVisitor::error*/;
2646 variable[3] = NIT_NULL /*null*/;
2647 goto return_label91;
2648 }
2649 /* Register variable[6]: Local variable */
2650 /* Register variable[7]: Result */
2651 variable[7] = CALL_abstractmetamodel___MMLocalClass___select_method( variable[5] /*lc*/)( variable[5] /*lc*/, variable[4] /*name*/) /*MMLocalClass::select_method*/;
2652 variable[6] = variable[7];
2653 /* Register variable[7]: Result */
2654 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global( variable[6] /*prop*/)( variable[6] /*prop*/) /*MMLocalProperty::global*/;
2655 /* Register variable[8]: Result */
2656 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
2657 CALL_syntax_base___MMGlobalProperty___check_visibility(variable[7])(variable[7], variable[1] /*v*/, variable[0], variable[8], TAG_Bool(false)) /*MMGlobalProperty::check_visibility*/;
2658 /* Register variable[7]: Local variable */
2659 /* Register variable[8]: Result */
2660 variable[8] = CALL_static_type___MMLocalProperty___signature_for( variable[6] /*prop*/)( variable[6] /*prop*/, variable[2] /*type_lvalue*/) /*MMLocalProperty::signature_for*/;
2661 variable[7] = variable[8];
2662 ATTR_typing___AReassignFormExpr____assign_method(variable[0]) /*AReassignFormExpr::_assign_method*/ = variable[6] /*prop*/;
2663 /* Register variable[8]: Result */
2664 variable[8] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
2665 /* Register variable[9]: Result */
2666 variable[9] = CALL_static_type___MMSignature_____bra( variable[7] /*psig*/)( variable[7] /*psig*/, TAG_Int(0)) /*MMSignature::[]*/;
2667 /* Register variable[9]: Result */
2668 variable[9] = CALL_static_type___MMType___not_for_self(variable[9])(variable[9]) /*MMType::not_for_self*/;
2669 /* Register variable[8]: Result */
2670 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[8], variable[9]) /*AbsSyntaxVisitor::check_conform_expr*/;
2671 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
2672 variable[3] = NIT_NULL /*null*/;
2673 goto return_label91;
2674 }
2675 /* Register variable[8]: Result */
2676 variable[8] = CALL_static_type___MMSignature___return_type( variable[7] /*psig*/)( variable[7] /*psig*/) /*MMSignature::return_type*/;
2677 /* Register variable[8]: Result */
2678 variable[8] = CALL_static_type___MMType___not_for_self(variable[8])(variable[8]) /*MMType::not_for_self*/;
2679 variable[3] = variable[8];
2680 goto return_label91;
2681 return_label91: while(false);
2682 tracehead = trace.prev;
2683 return variable[3];
2684 }
2685 val_t typing___AReassignFormExpr___assign_method(val_t self) {
2686 struct trace_t trace = {NULL, NULL, 620, LOCATE_typing___AReassignFormExpr___assign_method};
2687 val_t *variable = NULL;
2688 struct WBT_ **closurevariable = NULL;
2689 trace.prev = tracehead; tracehead = &trace;
2690 trace.file = LOCATE_typing;
2691 tracehead = trace.prev;
2692 return ATTR_typing___AReassignFormExpr____assign_method( self) /*AReassignFormExpr::_assign_method*/;
2693 }
2694 void typing___AVarReassignExpr___after_typing(val_t self, val_t param0) {
2695 struct trace_t trace = {NULL, NULL, 625, LOCATE_typing___AVarReassignExpr___after_typing};
2696 val_t variable[8];
2697 struct WBT_ **closurevariable = NULL;
2698 trace.prev = tracehead; tracehead = &trace;
2699 trace.file = LOCATE_typing;
2700 /* Register variable[0]: Local variable */
2701 variable[0] = self;
2702 /* Register variable[1]: Local variable */
2703 variable[1] = param0;
2704 /* Register variable[2]: Method return value and escape marker */
2705 /* Register variable[3]: Result */
2706 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2707 /* Register variable[4]: Result */
2708 variable[4] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2709 CALL_control_flow___VariableContext___check_is_set(variable[3])(variable[3], variable[0], variable[4]) /*VariableContext::check_is_set*/;
2710 /* Register variable[3]: Result */
2711 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2712 /* Register variable[4]: Result */
2713 variable[4] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2714 CALL_control_flow___VariableContext___mark_is_set(variable[3])(variable[3], variable[4]) /*VariableContext::mark_is_set*/;
2715 /* Register variable[3]: Local variable */
2716 /* Register variable[4]: Result */
2717 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2718 /* Register variable[5]: Result */
2719 variable[5] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2720 /* Register variable[4]: Result */
2721 variable[4] = CALL_control_flow___VariableContext___stype(variable[4])(variable[4], variable[5]) /*VariableContext::stype*/;
2722 variable[3] = variable[4];
2723 /* Register variable[4]: Local variable */
2724 /* Register variable[5]: Result */
2725 variable[5] = CALL_typing___AReassignFormExpr___do_rvalue_typing(variable[0])(variable[0], variable[1] /*v*/, variable[3] /*t*/) /*AReassignFormExpr::do_rvalue_typing*/;
2726 variable[4] = variable[5];
2727 /* Register variable[5]: Result */
2728 variable[5] = TAG_Bool(( variable[4] /*t2*/ == NIT_NULL /*null*/) || (( variable[4] /*t2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*t2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*t2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*t2*/)( variable[4] /*t2*/, NIT_NULL /*null*/) /*Object::==*/)))));
2729 if (UNTAG_Bool(variable[5])) { /*if*/
2730 goto return_label95;
2731 }
2732 /* Register variable[5]: Local variable */
2733 /* Register variable[6]: Result */
2734 variable[6] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
2735 /* Register variable[7]: Result */
2736 variable[7] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2737 /* Register variable[6]: Result */
2738 variable[6] = CALL_control_flow___VariableContext___stype(variable[6])(variable[6], variable[7]) /*VariableContext::stype*/;
2739 variable[5] = variable[6];
2740 /* Register variable[6]: Result */
2741 variable[6] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
2742 /* Register variable[6]: Result */
2743 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___check_conform( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[4] /*t2*/, variable[5] /*btype*/) /*AbsSyntaxVisitor::check_conform*/;
2744 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
2745 goto return_label95;
2746 }
2747 /* Register variable[6]: Result */
2748 variable[6] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2749 /* Register variable[7]: Result */
2750 variable[7] = CALL_syntax_base___AVarFormExpr___variable(variable[0])(variable[0]) /*AVarFormExpr::variable*/;
2751 CALL_control_flow___VariableContext___stype__eq(variable[6])(variable[6], variable[7], variable[4] /*t2*/) /*VariableContext::stype=*/;
2752 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2753 return_label95: while(false);
2754 tracehead = trace.prev;
2755 return;
2756 }
2757 val_t typing___PAssignOp___method_name(val_t self) {
2758 struct trace_t trace = {NULL, NULL, 645, LOCATE_typing___PAssignOp___method_name};
2759 val_t *variable = NULL;
2760 struct WBT_ **closurevariable = NULL;
2761 trace.prev = tracehead; tracehead = &trace;
2762 trace.file = LOCATE_typing;
2763 fprintf(stderr, "Deferred method called");
2764 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 645);
2765 nit_exit(1);
2766 tracehead = trace.prev;
2767 return NIT_NULL;
2768 }
2769 val_t typing___APlusAssignOp___method_name(val_t self) {
2770 struct trace_t trace = {NULL, NULL, 648, LOCATE_typing___APlusAssignOp___method_name};
2771 static val_t once_value_97; static int once_bool_97; /* Once value for variable[2]*/
2772 static val_t once_value_98 = NIT_NULL; /* Once value for string variable[2]*/
2773 val_t variable[3];
2774 struct WBT_ **closurevariable = NULL;
2775 trace.prev = tracehead; tracehead = &trace;
2776 trace.file = LOCATE_typing;
2777 /* Register variable[0]: Local variable */
2778 variable[0] = self;
2779 /* Register variable[1]: Method return value and escape marker */
2780 /* Register variable[2]: Once expression result */
2781 if (once_bool_97) variable[2] = once_value_97;
2782 else {
2783 /* Register variable[2]: Once String constant */
2784 if (once_value_98 != NIT_NULL) variable[2] = once_value_98;
2785 else {
2786 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("+"), TAG_Int(1)) /*new String*/;
2787 once_value_98 = variable[2];
2788 }
2789 /* Register variable[2]: Result */
2790 /* Register variable[2]: Result */
2791 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2792 once_value_97 = variable[2];
2793 once_bool_97 = true;
2794 }
2795 /* Register variable[2]: Result */
2796 variable[1] = variable[2];
2797 goto return_label96;
2798 return_label96: while(false);
2799 tracehead = trace.prev;
2800 return variable[1];
2801 }
2802 val_t typing___AMinusAssignOp___method_name(val_t self) {
2803 struct trace_t trace = {NULL, NULL, 651, LOCATE_typing___AMinusAssignOp___method_name};
2804 static val_t once_value_100; static int once_bool_100; /* Once value for variable[2]*/
2805 static val_t once_value_101 = NIT_NULL; /* Once value for string variable[2]*/
2806 val_t variable[3];
2807 struct WBT_ **closurevariable = NULL;
2808 trace.prev = tracehead; tracehead = &trace;
2809 trace.file = LOCATE_typing;
2810 /* Register variable[0]: Local variable */
2811 variable[0] = self;
2812 /* Register variable[1]: Method return value and escape marker */
2813 /* Register variable[2]: Once expression result */
2814 if (once_bool_100) variable[2] = once_value_100;
2815 else {
2816 /* Register variable[2]: Once String constant */
2817 if (once_value_101 != NIT_NULL) variable[2] = once_value_101;
2818 else {
2819 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)) /*new String*/;
2820 once_value_101 = variable[2];
2821 }
2822 /* Register variable[2]: Result */
2823 /* Register variable[2]: Result */
2824 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
2825 once_value_100 = variable[2];
2826 once_bool_100 = true;
2827 }
2828 /* Register variable[2]: Result */
2829 variable[1] = variable[2];
2830 goto return_label99;
2831 return_label99: while(false);
2832 tracehead = trace.prev;
2833 return variable[1];
2834 }
2835 void typing___ASelfExpr___after_typing(val_t self, val_t param0) {
2836 struct trace_t trace = {NULL, NULL, 657, LOCATE_typing___ASelfExpr___after_typing};
2837 val_t variable[5];
2838 struct WBT_ **closurevariable = NULL;
2839 trace.prev = tracehead; tracehead = &trace;
2840 trace.file = LOCATE_typing;
2841 /* Register variable[0]: Local variable */
2842 variable[0] = self;
2843 /* Register variable[1]: Local variable */
2844 variable[1] = param0;
2845 /* Register variable[2]: Method return value and escape marker */
2846 /* Register variable[3]: Result */
2847 variable[3] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
2848 CALL_syntax_base___ASelfExpr___variable__eq(variable[0])(variable[0], variable[3]) /*ASelfExpr::variable=*/;
2849 /* Register variable[3]: Result */
2850 variable[3] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2851 /* Register variable[4]: Result */
2852 variable[4] = CALL_syntax_base___ASelfExpr___variable(variable[0])(variable[0]) /*ASelfExpr::variable*/;
2853 /* Register variable[3]: Result */
2854 variable[3] = CALL_control_flow___VariableContext___stype(variable[3])(variable[3], variable[4]) /*VariableContext::stype*/;
2855 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
2856 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2857 return_label102: while(false);
2858 tracehead = trace.prev;
2859 return;
2860 }
2861 val_t typing___ASelfExpr___is_self(val_t self) {
2862 struct trace_t trace = {NULL, NULL, 664, LOCATE_typing___ASelfExpr___is_self};
2863 val_t variable[2];
2864 struct WBT_ **closurevariable = NULL;
2865 trace.prev = tracehead; tracehead = &trace;
2866 trace.file = LOCATE_typing;
2867 /* Register variable[0]: Local variable */
2868 variable[0] = self;
2869 /* Register variable[1]: Method return value and escape marker */
2870 variable[1] = TAG_Bool(true);
2871 goto return_label103;
2872 return_label103: while(false);
2873 tracehead = trace.prev;
2874 return variable[1];
2875 }
2876 val_t typing___ASelfExpr___its_variable(val_t self) {
2877 struct trace_t trace = {NULL, NULL, 655, LOCATE_typing___ASelfExpr___its_variable};
2878 val_t variable[3];
2879 struct WBT_ **closurevariable = NULL;
2880 trace.prev = tracehead; tracehead = &trace;
2881 trace.file = LOCATE_typing;
2882 /* Register variable[0]: Local variable */
2883 variable[0] = self;
2884 /* Register variable[1]: Method return value and escape marker */
2885 /* Register variable[2]: Result */
2886 variable[2] = CALL_syntax_base___ASelfExpr___variable(variable[0])(variable[0]) /*ASelfExpr::variable*/;
2887 variable[1] = variable[2];
2888 goto return_label104;
2889 return_label104: while(false);
2890 tracehead = trace.prev;
2891 return variable[1];
2892 }
2893 val_t typing___AImplicitSelfExpr___is_implicit_self(val_t self) {
2894 struct trace_t trace = {NULL, NULL, 668, LOCATE_typing___AImplicitSelfExpr___is_implicit_self};
2895 val_t variable[2];
2896 struct WBT_ **closurevariable = NULL;
2897 trace.prev = tracehead; tracehead = &trace;
2898 trace.file = LOCATE_typing;
2899 /* Register variable[0]: Local variable */
2900 variable[0] = self;
2901 /* Register variable[1]: Method return value and escape marker */
2902 variable[1] = TAG_Bool(true);
2903 goto return_label105;
2904 return_label105: while(false);
2905 tracehead = trace.prev;
2906 return variable[1];
2907 }
2908 void typing___AIfexprExpr___accept_typing(val_t self, val_t param0) {
2909 struct trace_t trace = {NULL, NULL, 672, LOCATE_typing___AIfexprExpr___accept_typing};
2910 val_t variable[7];
2911 struct WBT_ **closurevariable = NULL;
2912 trace.prev = tracehead; tracehead = &trace;
2913 trace.file = LOCATE_typing;
2914 /* Register variable[0]: Local variable */
2915 variable[0] = self;
2916 /* Register variable[1]: Local variable */
2917 variable[1] = param0;
2918 /* Register variable[2]: Method return value and escape marker */
2919 /* Register variable[3]: Local variable */
2920 /* Register variable[4]: Result */
2921 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2922 variable[3] = variable[4];
2923 /* Register variable[4]: Result */
2924 variable[4] = CALL_parser_nodes___AIfexprExpr___n_expr(variable[0])(variable[0]) /*AIfexprExpr::n_expr*/;
2925 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
2926 /* Register variable[4]: Result */
2927 variable[4] = CALL_parser_nodes___AIfexprExpr___n_expr(variable[0])(variable[0]) /*AIfexprExpr::n_expr*/;
2928 CALL_typing___TypingVisitor___use_if_true_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::use_if_true_variable_ctx*/;
2929 /* Register variable[4]: Result */
2930 variable[4] = CALL_parser_nodes___AIfexprExpr___n_then(variable[0])(variable[0]) /*AIfexprExpr::n_then*/;
2931 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
2932 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
2933 /* Register variable[4]: Result */
2934 variable[4] = CALL_parser_nodes___AIfexprExpr___n_expr(variable[0])(variable[0]) /*AIfexprExpr::n_expr*/;
2935 CALL_typing___TypingVisitor___use_if_false_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::use_if_false_variable_ctx*/;
2936 /* Register variable[4]: Result */
2937 variable[4] = CALL_parser_nodes___AIfexprExpr___n_else(variable[0])(variable[0]) /*AIfexprExpr::n_else*/;
2938 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
2939 /* Register variable[4]: Result */
2940 variable[4] = CALL_parser_nodes___AIfexprExpr___n_expr(variable[0])(variable[0]) /*AIfexprExpr::n_expr*/;
2941 /* Register variable[5]: Result */
2942 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
2943 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
2944 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[PExpr]*/ /* Ensure var: Literal array*/;
2945 /* Register variable[5]: Result */
2946 variable[5] = CALL_parser_nodes___AIfexprExpr___n_then(variable[0])(variable[0]) /*AIfexprExpr::n_then*/;
2947 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
2948 /* Register variable[6]: Result */
2949 variable[6] = CALL_parser_nodes___AIfexprExpr___n_else(variable[0])(variable[0]) /*AIfexprExpr::n_else*/;
2950 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
2951 /* Register variable[4]: Result */
2952 /* Register variable[4]: Result */
2953 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/, variable[4]) /*AbsSyntaxVisitor::check_conform_multiexpr*/;
2954 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
2955 /* Register variable[4]: Result */
2956 variable[4] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
2957 /* Register variable[4]: Result */
2958 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::==*/)))))));
2959 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = variable[4];
2960 return_label106: while(false);
2961 tracehead = trace.prev;
2962 return;
2963 }
2964 void typing___ABoolExpr___after_typing(val_t self, val_t param0) {
2965 struct trace_t trace = {NULL, NULL, 691, LOCATE_typing___ABoolExpr___after_typing};
2966 val_t variable[4];
2967 struct WBT_ **closurevariable = NULL;
2968 trace.prev = tracehead; tracehead = &trace;
2969 trace.file = LOCATE_typing;
2970 /* Register variable[0]: Local variable */
2971 variable[0] = self;
2972 /* Register variable[1]: Local variable */
2973 variable[1] = param0;
2974 /* Register variable[2]: Method return value and escape marker */
2975 /* Register variable[3]: Result */
2976 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
2977 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
2978 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
2979 return_label107: while(false);
2980 tracehead = trace.prev;
2981 return;
2982 }
2983 void typing___AOrExpr___accept_typing(val_t self, val_t param0) {
2984 struct trace_t trace = {NULL, NULL, 699, LOCATE_typing___AOrExpr___accept_typing};
2985 val_t variable[6];
2986 struct WBT_ **closurevariable = NULL;
2987 trace.prev = tracehead; tracehead = &trace;
2988 trace.file = LOCATE_typing;
2989 /* Register variable[0]: Local variable */
2990 variable[0] = self;
2991 /* Register variable[1]: Local variable */
2992 variable[1] = param0;
2993 /* Register variable[2]: Method return value and escape marker */
2994 /* Register variable[3]: Local variable */
2995 /* Register variable[4]: Result */
2996 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
2997 variable[3] = variable[4];
2998 /* Register variable[4]: Result */
2999 variable[4] = CALL_parser_nodes___AOrExpr___n_expr(variable[0])(variable[0]) /*AOrExpr::n_expr*/;
3000 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
3001 /* Register variable[4]: Result */
3002 variable[4] = CALL_parser_nodes___AOrExpr___n_expr(variable[0])(variable[0]) /*AOrExpr::n_expr*/;
3003 CALL_typing___TypingVisitor___use_if_false_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::use_if_false_variable_ctx*/;
3004 /* Register variable[4]: Result */
3005 variable[4] = CALL_parser_nodes___AOrExpr___n_expr2(variable[0])(variable[0]) /*AOrExpr::n_expr2*/;
3006 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
3007 /* Register variable[4]: Result */
3008 variable[4] = CALL_parser_nodes___AOrExpr___n_expr2(variable[0])(variable[0]) /*AOrExpr::n_expr2*/;
3009 /* Register variable[4]: Result */
3010 variable[4] = CALL_typing___PExpr___if_false_variable_ctx(variable[4])(variable[4]) /*PExpr::if_false_variable_ctx*/;
3011 /* Register variable[4]: Result */
3012 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::==*/)))))));
3013 if (UNTAG_Bool(variable[4])) { /*if*/
3014 /* Register variable[4]: Result */
3015 variable[4] = CALL_parser_nodes___AOrExpr___n_expr2(variable[0])(variable[0]) /*AOrExpr::n_expr2*/;
3016 /* Register variable[4]: Result */
3017 variable[4] = CALL_typing___PExpr___if_false_variable_ctx(variable[4])(variable[4]) /*PExpr::if_false_variable_ctx*/;
3018 ATTR_typing___PExpr____if_false_variable_ctx(variable[0]) /*PExpr::_if_false_variable_ctx*/ = variable[4];
3019 } else { /*if*/
3020 /* Register variable[4]: Result */
3021 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
3022 ATTR_typing___PExpr____if_false_variable_ctx(variable[0]) /*PExpr::_if_false_variable_ctx*/ = variable[4];
3023 }
3024 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
3025 /* Register variable[4]: Result */
3026 variable[4] = CALL_parser_nodes___AOrExpr___n_expr(variable[0])(variable[0]) /*AOrExpr::n_expr*/;
3027 /* Register variable[5]: Result */
3028 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3029 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
3030 /* Register variable[4]: Result */
3031 variable[4] = CALL_parser_nodes___AOrExpr___n_expr2(variable[0])(variable[0]) /*AOrExpr::n_expr2*/;
3032 /* Register variable[5]: Result */
3033 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3034 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
3035 /* Register variable[4]: Result */
3036 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3037 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
3038 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3039 return_label108: while(false);
3040 tracehead = trace.prev;
3041 return;
3042 }
3043 void typing___AAndExpr___accept_typing(val_t self, val_t param0) {
3044 struct trace_t trace = {NULL, NULL, 723, LOCATE_typing___AAndExpr___accept_typing};
3045 val_t variable[6];
3046 struct WBT_ **closurevariable = NULL;
3047 trace.prev = tracehead; tracehead = &trace;
3048 trace.file = LOCATE_typing;
3049 /* Register variable[0]: Local variable */
3050 variable[0] = self;
3051 /* Register variable[1]: Local variable */
3052 variable[1] = param0;
3053 /* Register variable[2]: Method return value and escape marker */
3054 /* Register variable[3]: Local variable */
3055 /* Register variable[4]: Result */
3056 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
3057 variable[3] = variable[4];
3058 /* Register variable[4]: Result */
3059 variable[4] = CALL_parser_nodes___AAndExpr___n_expr(variable[0])(variable[0]) /*AAndExpr::n_expr*/;
3060 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
3061 /* Register variable[4]: Result */
3062 variable[4] = CALL_parser_nodes___AAndExpr___n_expr(variable[0])(variable[0]) /*AAndExpr::n_expr*/;
3063 CALL_typing___TypingVisitor___use_if_true_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::use_if_true_variable_ctx*/;
3064 /* Register variable[4]: Result */
3065 variable[4] = CALL_parser_nodes___AAndExpr___n_expr2(variable[0])(variable[0]) /*AAndExpr::n_expr2*/;
3066 CALL_parser_prod___Visitor___visit( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*TypingVisitor::visit*/;
3067 /* Register variable[4]: Result */
3068 variable[4] = CALL_parser_nodes___AAndExpr___n_expr2(variable[0])(variable[0]) /*AAndExpr::n_expr2*/;
3069 /* Register variable[4]: Result */
3070 variable[4] = CALL_typing___PExpr___if_true_variable_ctx(variable[4])(variable[4]) /*PExpr::if_true_variable_ctx*/;
3071 /* Register variable[4]: Result */
3072 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::==*/)))))));
3073 if (UNTAG_Bool(variable[4])) { /*if*/
3074 /* Register variable[4]: Result */
3075 variable[4] = CALL_parser_nodes___AAndExpr___n_expr2(variable[0])(variable[0]) /*AAndExpr::n_expr2*/;
3076 /* Register variable[4]: Result */
3077 variable[4] = CALL_typing___PExpr___if_true_variable_ctx(variable[4])(variable[4]) /*PExpr::if_true_variable_ctx*/;
3078 ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[4];
3079 } else { /*if*/
3080 /* Register variable[4]: Result */
3081 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
3082 ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[4];
3083 }
3084 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
3085 /* Register variable[4]: Result */
3086 variable[4] = CALL_parser_nodes___AAndExpr___n_expr(variable[0])(variable[0]) /*AAndExpr::n_expr*/;
3087 /* Register variable[5]: Result */
3088 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3089 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
3090 /* Register variable[4]: Result */
3091 variable[4] = CALL_parser_nodes___AAndExpr___n_expr2(variable[0])(variable[0]) /*AAndExpr::n_expr2*/;
3092 /* Register variable[5]: Result */
3093 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3094 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::check_conform_expr*/;
3095 /* Register variable[4]: Result */
3096 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3097 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
3098 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3099 return_label109: while(false);
3100 tracehead = trace.prev;
3101 return;
3102 }
3103 void typing___ANotExpr___after_typing(val_t self, val_t param0) {
3104 struct trace_t trace = {NULL, NULL, 747, LOCATE_typing___ANotExpr___after_typing};
3105 val_t variable[5];
3106 struct WBT_ **closurevariable = NULL;
3107 trace.prev = tracehead; tracehead = &trace;
3108 trace.file = LOCATE_typing;
3109 /* Register variable[0]: Local variable */
3110 variable[0] = self;
3111 /* Register variable[1]: Local variable */
3112 variable[1] = param0;
3113 /* Register variable[2]: Method return value and escape marker */
3114 /* Register variable[3]: Result */
3115 variable[3] = CALL_parser_nodes___ANotExpr___n_expr(variable[0])(variable[0]) /*ANotExpr::n_expr*/;
3116 /* Register variable[4]: Result */
3117 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3118 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::check_conform_expr*/;
3119 /* Register variable[3]: Result */
3120 variable[3] = CALL_parser_nodes___ANotExpr___n_expr(variable[0])(variable[0]) /*ANotExpr::n_expr*/;
3121 /* Register variable[3]: Result */
3122 variable[3] = ATTR_typing___PExpr____if_true_variable_ctx(variable[3]) /*PExpr::_if_true_variable_ctx*/;
3123 ATTR_typing___PExpr____if_false_variable_ctx(variable[0]) /*PExpr::_if_false_variable_ctx*/ = variable[3];
3124 /* Register variable[3]: Result */
3125 variable[3] = CALL_parser_nodes___ANotExpr___n_expr(variable[0])(variable[0]) /*ANotExpr::n_expr*/;
3126 /* Register variable[3]: Result */
3127 variable[3] = ATTR_typing___PExpr____if_false_variable_ctx(variable[3]) /*PExpr::_if_false_variable_ctx*/;
3128 ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[3];
3129 /* Register variable[3]: Result */
3130 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
3131 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3132 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3133 return_label110: while(false);
3134 tracehead = trace.prev;
3135 return;
3136 }
3137 void typing___AIntExpr___after_typing(val_t self, val_t param0) {
3138 struct trace_t trace = {NULL, NULL, 761, LOCATE_typing___AIntExpr___after_typing};
3139 val_t variable[4];
3140 struct WBT_ **closurevariable = NULL;
3141 trace.prev = tracehead; tracehead = &trace;
3142 trace.file = LOCATE_typing;
3143 /* Register variable[0]: Local variable */
3144 variable[0] = self;
3145 /* Register variable[1]: Local variable */
3146 variable[1] = param0;
3147 /* Register variable[2]: Method return value and escape marker */
3148 /* Register variable[3]: Result */
3149 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_int( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_int*/;
3150 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3151 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3152 return_label111: while(false);
3153 tracehead = trace.prev;
3154 return;
3155 }
3156 void typing___AFloatExpr___after_typing(val_t self, val_t param0) {
3157 struct trace_t trace = {NULL, NULL, 769, LOCATE_typing___AFloatExpr___after_typing};
3158 val_t variable[4];
3159 struct WBT_ **closurevariable = NULL;
3160 trace.prev = tracehead; tracehead = &trace;
3161 trace.file = LOCATE_typing;
3162 /* Register variable[0]: Local variable */
3163 variable[0] = self;
3164 /* Register variable[1]: Local variable */
3165 variable[1] = param0;
3166 /* Register variable[2]: Method return value and escape marker */
3167 /* Register variable[3]: Result */
3168 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_float( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_float*/;
3169 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3170 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3171 return_label112: while(false);
3172 tracehead = trace.prev;
3173 return;
3174 }
3175 void typing___ACharExpr___after_typing(val_t self, val_t param0) {
3176 struct trace_t trace = {NULL, NULL, 777, LOCATE_typing___ACharExpr___after_typing};
3177 val_t variable[4];
3178 struct WBT_ **closurevariable = NULL;
3179 trace.prev = tracehead; tracehead = &trace;
3180 trace.file = LOCATE_typing;
3181 /* Register variable[0]: Local variable */
3182 variable[0] = self;
3183 /* Register variable[1]: Local variable */
3184 variable[1] = param0;
3185 /* Register variable[2]: Method return value and escape marker */
3186 /* Register variable[3]: Result */
3187 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_char( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_char*/;
3188 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3189 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3190 return_label113: while(false);
3191 tracehead = trace.prev;
3192 return;
3193 }
3194 void typing___AStringFormExpr___after_typing(val_t self, val_t param0) {
3195 struct trace_t trace = {NULL, NULL, 786, LOCATE_typing___AStringFormExpr___after_typing};
3196 static val_t once_value_115; static int once_bool_115; /* Once value for variable[4]*/
3197 static val_t once_value_116 = NIT_NULL; /* Once value for string variable[4]*/
3198 static val_t once_value_117 = NIT_NULL; /* Once value for string variable[4]*/
3199 static val_t once_value_118 = NIT_NULL; /* Once value for string variable[4]*/
3200 val_t variable[5];
3201 struct WBT_ **closurevariable = NULL;
3202 trace.prev = tracehead; tracehead = &trace;
3203 trace.file = LOCATE_typing;
3204 /* Register variable[0]: Local variable */
3205 variable[0] = self;
3206 /* Register variable[1]: Local variable */
3207 variable[1] = param0;
3208 /* Register variable[2]: Method return value and escape marker */
3209 /* Register variable[3]: Result */
3210 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_string( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_string*/;
3211 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3212 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3213 /* Register variable[3]: Result */
3214 variable[3] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3215 /* Register variable[3]: Result */
3216 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3217 /* Register variable[4]: Once expression result */
3218 if (once_bool_115) variable[4] = once_value_115;
3219 else {
3220 /* Register variable[4]: Once String constant */
3221 if (once_value_116 != NIT_NULL) variable[4] = once_value_116;
3222 else {
3223 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("with_native"), TAG_Int(11)) /*new String*/;
3224 once_value_116 = variable[4];
3225 }
3226 /* Register variable[4]: Result */
3227 /* Register variable[4]: Result */
3228 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3229 once_value_115 = variable[4];
3230 once_bool_115 = true;
3231 }
3232 /* Register variable[4]: Result */
3233 /* Register variable[3]: Result */
3234 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3235 ATTR_typing___AStringFormExpr____meth_with_native(variable[0]) /*AStringFormExpr::_meth_with_native*/ = variable[3];
3236 /* Register variable[3]: Result */
3237 variable[3] = ATTR_typing___AStringFormExpr____meth_with_native(variable[0]) /*AStringFormExpr::_meth_with_native*/;
3238 /* Register variable[3]: Result */
3239 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::==*/)))));
3240 if (UNTAG_Bool(variable[3])) { /*if*/
3241 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3242 /* Register variable[4]: Once String constant */
3243 if (once_value_117 != NIT_NULL) variable[4] = once_value_117;
3244 else {
3245 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
3246 once_value_117 = variable[4];
3247 }
3248 /* Register variable[4]: Result */
3249 /* Ensure var variable[4]: super-string element*/
3250 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3251 /* Register variable[4]: Result */
3252 variable[4] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3253 /* Ensure var variable[4]: super-string element*/
3254 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
3255 /* Register variable[4]: Once String constant */
3256 if (once_value_118 != NIT_NULL) variable[4] = once_value_118;
3257 else {
3258 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have a with_native method."), TAG_Int(32)) /*new String*/;
3259 once_value_118 = variable[4];
3260 }
3261 /* Register variable[4]: Result */
3262 /* Ensure var variable[4]: super-string element*/
3263 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3264 /* Register variable[3]: Result */
3265 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
3266 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
3267 }
3268 return_label114: while(false);
3269 tracehead = trace.prev;
3270 return;
3271 }
3272 val_t typing___AStringFormExpr___meth_with_native(val_t self) {
3273 struct trace_t trace = {NULL, NULL, 785, LOCATE_typing___AStringFormExpr___meth_with_native};
3274 val_t *variable = NULL;
3275 struct WBT_ **closurevariable = NULL;
3276 trace.prev = tracehead; tracehead = &trace;
3277 trace.file = LOCATE_typing;
3278 tracehead = trace.prev;
3279 return ATTR_typing___AStringFormExpr____meth_with_native( self) /*AStringFormExpr::_meth_with_native*/;
3280 }
3281 void typing___ASuperstringExpr___after_typing(val_t self, val_t param0) {
3282 struct trace_t trace = {NULL, NULL, 800, LOCATE_typing___ASuperstringExpr___after_typing};
3283 static val_t once_value_120; static int once_bool_120; /* Once value for variable[4]*/
3284 static val_t once_value_121 = NIT_NULL; /* Once value for string variable[4]*/
3285 static val_t once_value_122 = NIT_NULL; /* Once value for string variable[4]*/
3286 static val_t once_value_123 = NIT_NULL; /* Once value for string variable[4]*/
3287 static val_t once_value_124; static int once_bool_124; /* Once value for variable[4]*/
3288 static val_t once_value_125 = NIT_NULL; /* Once value for string variable[4]*/
3289 static val_t once_value_126 = NIT_NULL; /* Once value for string variable[4]*/
3290 static val_t once_value_127 = NIT_NULL; /* Once value for string variable[4]*/
3291 static val_t once_value_128; static int once_bool_128; /* Once value for variable[4]*/
3292 static val_t once_value_129 = NIT_NULL; /* Once value for string variable[4]*/
3293 static val_t once_value_130 = NIT_NULL; /* Once value for string variable[3]*/
3294 val_t variable[5];
3295 struct WBT_ **closurevariable = NULL;
3296 trace.prev = tracehead; tracehead = &trace;
3297 trace.file = LOCATE_typing;
3298 /* Register variable[0]: Local variable */
3299 variable[0] = self;
3300 /* Register variable[1]: Local variable */
3301 variable[1] = param0;
3302 /* Register variable[2]: Method return value and escape marker */
3303 /* Register variable[3]: Result */
3304 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_string( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_string*/;
3305 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3306 /* Register variable[3]: Result */
3307 variable[3] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3308 /* Register variable[3]: Result */
3309 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::type_array*/;
3310 ATTR_typing___ASuperstringExpr____atype(variable[0]) /*ASuperstringExpr::_atype*/ = variable[3];
3311 /* Register variable[3]: Result */
3312 variable[3] = ATTR_typing___ASuperstringExpr____atype(variable[0]) /*ASuperstringExpr::_atype*/;
3313 /* Register variable[3]: Result */
3314 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3315 /* Register variable[4]: Once expression result */
3316 if (once_bool_120) variable[4] = once_value_120;
3317 else {
3318 /* Register variable[4]: Once String constant */
3319 if (once_value_121 != NIT_NULL) variable[4] = once_value_121;
3320 else {
3321 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("with_capacity"), TAG_Int(13)) /*new String*/;
3322 once_value_121 = variable[4];
3323 }
3324 /* Register variable[4]: Result */
3325 /* Register variable[4]: Result */
3326 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3327 once_value_120 = variable[4];
3328 once_bool_120 = true;
3329 }
3330 /* Register variable[4]: Result */
3331 /* Register variable[3]: Result */
3332 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3333 ATTR_typing___ASuperstringExpr____meth_with_capacity(variable[0]) /*ASuperstringExpr::_meth_with_capacity*/ = variable[3];
3334 /* Register variable[3]: Result */
3335 variable[3] = ATTR_typing___ASuperstringExpr____meth_with_capacity(variable[0]) /*ASuperstringExpr::_meth_with_capacity*/;
3336 /* Register variable[3]: Result */
3337 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::==*/)))));
3338 if (UNTAG_Bool(variable[3])) { /*if*/
3339 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3340 /* Register variable[4]: Once String constant */
3341 if (once_value_122 != NIT_NULL) variable[4] = once_value_122;
3342 else {
3343 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
3344 once_value_122 = variable[4];
3345 }
3346 /* Register variable[4]: Result */
3347 /* Ensure var variable[4]: super-string element*/
3348 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3349 /* Register variable[4]: Result */
3350 variable[4] = ATTR_typing___ASuperstringExpr____atype(variable[0]) /*ASuperstringExpr::_atype*/;
3351 /* Ensure var variable[4]: super-string element*/
3352 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
3353 /* Register variable[4]: Once String constant */
3354 if (once_value_123 != NIT_NULL) variable[4] = once_value_123;
3355 else {
3356 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have a with_capacity method."), TAG_Int(34)) /*new String*/;
3357 once_value_123 = variable[4];
3358 }
3359 /* Register variable[4]: Result */
3360 /* Ensure var variable[4]: super-string element*/
3361 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3362 /* Register variable[3]: Result */
3363 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
3364 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
3365 }
3366 /* Register variable[3]: Result */
3367 variable[3] = ATTR_typing___ASuperstringExpr____atype(variable[0]) /*ASuperstringExpr::_atype*/;
3368 /* Register variable[3]: Result */
3369 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3370 /* Register variable[4]: Once expression result */
3371 if (once_bool_124) variable[4] = once_value_124;
3372 else {
3373 /* Register variable[4]: Once String constant */
3374 if (once_value_125 != NIT_NULL) variable[4] = once_value_125;
3375 else {
3376 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("add"), TAG_Int(3)) /*new String*/;
3377 once_value_125 = variable[4];
3378 }
3379 /* Register variable[4]: Result */
3380 /* Register variable[4]: Result */
3381 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3382 once_value_124 = variable[4];
3383 once_bool_124 = true;
3384 }
3385 /* Register variable[4]: Result */
3386 /* Register variable[3]: Result */
3387 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3388 ATTR_typing___ASuperstringExpr____meth_add(variable[0]) /*ASuperstringExpr::_meth_add*/ = variable[3];
3389 /* Register variable[3]: Result */
3390 variable[3] = ATTR_typing___ASuperstringExpr____meth_add(variable[0]) /*ASuperstringExpr::_meth_add*/;
3391 /* Register variable[3]: Result */
3392 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::==*/)))));
3393 if (UNTAG_Bool(variable[3])) { /*if*/
3394 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3395 /* Register variable[4]: Once String constant */
3396 if (once_value_126 != NIT_NULL) variable[4] = once_value_126;
3397 else {
3398 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
3399 once_value_126 = variable[4];
3400 }
3401 /* Register variable[4]: Result */
3402 /* Ensure var variable[4]: super-string element*/
3403 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3404 /* Register variable[4]: Result */
3405 variable[4] = ATTR_typing___ASuperstringExpr____atype(variable[0]) /*ASuperstringExpr::_atype*/;
3406 /* Ensure var variable[4]: super-string element*/
3407 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
3408 /* Register variable[4]: Once String constant */
3409 if (once_value_127 != NIT_NULL) variable[4] = once_value_127;
3410 else {
3411 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have an add method."), TAG_Int(25)) /*new String*/;
3412 once_value_127 = variable[4];
3413 }
3414 /* Register variable[4]: Result */
3415 /* Ensure var variable[4]: super-string element*/
3416 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
3417 /* Register variable[3]: Result */
3418 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
3419 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
3420 }
3421 /* Register variable[3]: Result */
3422 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_object( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_object*/;
3423 /* Register variable[3]: Result */
3424 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3425 /* Register variable[4]: Once expression result */
3426 if (once_bool_128) variable[4] = once_value_128;
3427 else {
3428 /* Register variable[4]: Once String constant */
3429 if (once_value_129 != NIT_NULL) variable[4] = once_value_129;
3430 else {
3431 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("to_s"), TAG_Int(4)) /*new String*/;
3432 once_value_129 = variable[4];
3433 }
3434 /* Register variable[4]: Result */
3435 /* Register variable[4]: Result */
3436 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3437 once_value_128 = variable[4];
3438 once_bool_128 = true;
3439 }
3440 /* Register variable[4]: Result */
3441 /* Register variable[3]: Result */
3442 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3443 ATTR_typing___ASuperstringExpr____meth_to_s(variable[0]) /*ASuperstringExpr::_meth_to_s*/ = variable[3];
3444 /* Register variable[3]: Result */
3445 variable[3] = ATTR_typing___ASuperstringExpr____meth_to_s(variable[0]) /*ASuperstringExpr::_meth_to_s*/;
3446 /* Register variable[3]: Result */
3447 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::==*/)))));
3448 if (UNTAG_Bool(variable[3])) { /*if*/
3449 /* Register variable[3]: Once String constant */
3450 if (once_value_130 != NIT_NULL) variable[3] = once_value_130;
3451 else {
3452 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Object MUST have a to_s method."), TAG_Int(31)) /*new String*/;
3453 once_value_130 = variable[3];
3454 }
3455 /* Register variable[3]: Result */
3456 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
3457 }
3458 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3459 return_label119: while(false);
3460 tracehead = trace.prev;
3461 return;
3462 }
3463 val_t typing___ASuperstringExpr___meth_with_capacity(val_t self) {
3464 struct trace_t trace = {NULL, NULL, 796, LOCATE_typing___ASuperstringExpr___meth_with_capacity};
3465 val_t *variable = NULL;
3466 struct WBT_ **closurevariable = NULL;
3467 trace.prev = tracehead; tracehead = &trace;
3468 trace.file = LOCATE_typing;
3469 tracehead = trace.prev;
3470 return ATTR_typing___ASuperstringExpr____meth_with_capacity( self) /*ASuperstringExpr::_meth_with_capacity*/;
3471 }
3472 val_t typing___ASuperstringExpr___meth_add(val_t self) {
3473 struct trace_t trace = {NULL, NULL, 797, LOCATE_typing___ASuperstringExpr___meth_add};
3474 val_t *variable = NULL;
3475 struct WBT_ **closurevariable = NULL;
3476 trace.prev = tracehead; tracehead = &trace;
3477 trace.file = LOCATE_typing;
3478 tracehead = trace.prev;
3479 return ATTR_typing___ASuperstringExpr____meth_add( self) /*ASuperstringExpr::_meth_add*/;
3480 }
3481 val_t typing___ASuperstringExpr___meth_to_s(val_t self) {
3482 struct trace_t trace = {NULL, NULL, 798, LOCATE_typing___ASuperstringExpr___meth_to_s};
3483 val_t *variable = NULL;
3484 struct WBT_ **closurevariable = NULL;
3485 trace.prev = tracehead; tracehead = &trace;
3486 trace.file = LOCATE_typing;
3487 tracehead = trace.prev;
3488 return ATTR_typing___ASuperstringExpr____meth_to_s( self) /*ASuperstringExpr::_meth_to_s*/;
3489 }
3490 val_t typing___ASuperstringExpr___atype(val_t self) {
3491 struct trace_t trace = {NULL, NULL, 799, LOCATE_typing___ASuperstringExpr___atype};
3492 val_t *variable = NULL;
3493 struct WBT_ **closurevariable = NULL;
3494 trace.prev = tracehead; tracehead = &trace;
3495 trace.file = LOCATE_typing;
3496 tracehead = trace.prev;
3497 return ATTR_typing___ASuperstringExpr____atype( self) /*ASuperstringExpr::_atype*/;
3498 }
3499 void typing___ANullExpr___after_typing(val_t self, val_t param0) {
3500 struct trace_t trace = {NULL, NULL, 815, LOCATE_typing___ANullExpr___after_typing};
3501 val_t variable[4];
3502 struct WBT_ **closurevariable = NULL;
3503 trace.prev = tracehead; tracehead = &trace;
3504 trace.file = LOCATE_typing;
3505 /* Register variable[0]: Local variable */
3506 variable[0] = self;
3507 /* Register variable[1]: Local variable */
3508 variable[1] = param0;
3509 /* Register variable[2]: Method return value and escape marker */
3510 /* Register variable[3]: Result */
3511 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_none( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_none*/;
3512 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
3513 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3514 return_label131: while(false);
3515 tracehead = trace.prev;
3516 return;
3517 }
3518 void typing___AArrayExpr___after_typing(val_t self, val_t param0) {
3519 struct trace_t trace = {NULL, NULL, 826, LOCATE_typing___AArrayExpr___after_typing};
3520 val_t variable[5];
3521 struct WBT_ **closurevariable = NULL;
3522 trace.prev = tracehead; tracehead = &trace;
3523 trace.file = LOCATE_typing;
3524 /* Register variable[0]: Local variable */
3525 variable[0] = self;
3526 /* Register variable[1]: Local variable */
3527 variable[1] = param0;
3528 /* Register variable[2]: Method return value and escape marker */
3529 /* Register variable[3]: Local variable */
3530 /* Register variable[4]: Result */
3531 variable[4] = CALL_parser_nodes___AArrayExpr___n_exprs(variable[0])(variable[0]) /*AArrayExpr::n_exprs*/;
3532 /* Register variable[4]: Result */
3533 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr( variable[1] /*v*/)( variable[1] /*v*/, NIT_NULL /*null*/, variable[4]) /*AbsSyntaxVisitor::check_conform_multiexpr*/;
3534 variable[3] = variable[4];
3535 /* Register variable[4]: Result */
3536 variable[4] = TAG_Bool(( variable[3] /*stype*/ == NIT_NULL /*null*/) || (( variable[3] /*stype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*stype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*stype*/)( variable[3] /*stype*/, NIT_NULL /*null*/) /*Object::==*/)))));
3537 if (UNTAG_Bool(variable[4])) { /*if*/
3538 goto return_label132;
3539 }
3540 CALL_typing___AArrayExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/, variable[3] /*stype*/) /*AArrayExpr::do_typing*/;
3541 return_label132: while(false);
3542 tracehead = trace.prev;
3543 return;
3544 }
3545 val_t typing___AArrayExpr___meth_with_capacity(val_t self) {
3546 struct trace_t trace = {NULL, NULL, 823, LOCATE_typing___AArrayExpr___meth_with_capacity};
3547 val_t *variable = NULL;
3548 struct WBT_ **closurevariable = NULL;
3549 trace.prev = tracehead; tracehead = &trace;
3550 trace.file = LOCATE_typing;
3551 tracehead = trace.prev;
3552 return ATTR_typing___AArrayExpr____meth_with_capacity( self) /*AArrayExpr::_meth_with_capacity*/;
3553 }
3554 val_t typing___AArrayExpr___meth_add(val_t self) {
3555 struct trace_t trace = {NULL, NULL, 824, LOCATE_typing___AArrayExpr___meth_add};
3556 val_t *variable = NULL;
3557 struct WBT_ **closurevariable = NULL;
3558 trace.prev = tracehead; tracehead = &trace;
3559 trace.file = LOCATE_typing;
3560 tracehead = trace.prev;
3561 return ATTR_typing___AArrayExpr____meth_add( self) /*AArrayExpr::_meth_add*/;
3562 }
3563 void typing___AArrayExpr___do_typing(val_t self, val_t param0, val_t param1) {
3564 struct trace_t trace = {NULL, NULL, 833, LOCATE_typing___AArrayExpr___do_typing};
3565 static val_t once_value_134; static int once_bool_134; /* Once value for variable[5]*/
3566 static val_t once_value_135 = NIT_NULL; /* Once value for string variable[5]*/
3567 static val_t once_value_136 = NIT_NULL; /* Once value for string variable[5]*/
3568 static val_t once_value_137 = NIT_NULL; /* Once value for string variable[5]*/
3569 static val_t once_value_138; static int once_bool_138; /* Once value for variable[5]*/
3570 static val_t once_value_139 = NIT_NULL; /* Once value for string variable[5]*/
3571 static val_t once_value_140 = NIT_NULL; /* Once value for string variable[5]*/
3572 static val_t once_value_141 = NIT_NULL; /* Once value for string variable[5]*/
3573 val_t variable[6];
3574 struct WBT_ **closurevariable = NULL;
3575 trace.prev = tracehead; tracehead = &trace;
3576 trace.file = LOCATE_typing;
3577 /* Register variable[0]: Local variable */
3578 variable[0] = self;
3579 /* Register variable[1]: Local variable */
3580 variable[1] = param0;
3581 /* Register variable[2]: Local variable */
3582 variable[2] = param1;
3583 /* Register variable[3]: Method return value and escape marker */
3584 /* Register variable[4]: Result */
3585 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_array( variable[1] /*v*/)( variable[1] /*v*/, variable[2] /*element_type*/) /*AbsSyntaxVisitor::type_array*/;
3586 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
3587 /* Register variable[4]: Result */
3588 variable[4] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3589 /* Register variable[4]: Result */
3590 variable[4] = CALL_static_type___MMType___local_class(variable[4])(variable[4]) /*MMType::local_class*/;
3591 /* Register variable[5]: Once expression result */
3592 if (once_bool_134) variable[5] = once_value_134;
3593 else {
3594 /* Register variable[5]: Once String constant */
3595 if (once_value_135 != NIT_NULL) variable[5] = once_value_135;
3596 else {
3597 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("with_capacity"), TAG_Int(13)) /*new String*/;
3598 once_value_135 = variable[5];
3599 }
3600 /* Register variable[5]: Result */
3601 /* Register variable[5]: Result */
3602 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3603 once_value_134 = variable[5];
3604 once_bool_134 = true;
3605 }
3606 /* Register variable[5]: Result */
3607 /* Register variable[4]: Result */
3608 variable[4] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[4])(variable[4], variable[5]) /*MMLocalClass::select_method*/;
3609 ATTR_typing___AArrayExpr____meth_with_capacity(variable[0]) /*AArrayExpr::_meth_with_capacity*/ = variable[4];
3610 /* Register variable[4]: Result */
3611 variable[4] = ATTR_typing___AArrayExpr____meth_with_capacity(variable[0]) /*AArrayExpr::_meth_with_capacity*/;
3612 /* Register variable[4]: Result */
3613 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::==*/)))));
3614 if (UNTAG_Bool(variable[4])) { /*if*/
3615 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3616 /* Register variable[5]: Once String constant */
3617 if (once_value_136 != NIT_NULL) variable[5] = once_value_136;
3618 else {
3619 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
3620 once_value_136 = variable[5];
3621 }
3622 /* Register variable[5]: Result */
3623 /* Ensure var variable[5]: super-string element*/
3624 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
3625 /* Register variable[5]: Result */
3626 variable[5] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3627 /* Ensure var variable[5]: super-string element*/
3628 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
3629 /* Register variable[5]: Once String constant */
3630 if (once_value_137 != NIT_NULL) variable[5] = once_value_137;
3631 else {
3632 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have a with_capacity method."), TAG_Int(34)) /*new String*/;
3633 once_value_137 = variable[5];
3634 }
3635 /* Register variable[5]: Result */
3636 /* Ensure var variable[5]: super-string element*/
3637 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
3638 /* Register variable[4]: Result */
3639 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
3640 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
3641 }
3642 /* Register variable[4]: Result */
3643 variable[4] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3644 /* Register variable[4]: Result */
3645 variable[4] = CALL_static_type___MMType___local_class(variable[4])(variable[4]) /*MMType::local_class*/;
3646 /* Register variable[5]: Once expression result */
3647 if (once_bool_138) variable[5] = once_value_138;
3648 else {
3649 /* Register variable[5]: Once String constant */
3650 if (once_value_139 != NIT_NULL) variable[5] = once_value_139;
3651 else {
3652 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("add"), TAG_Int(3)) /*new String*/;
3653 once_value_139 = variable[5];
3654 }
3655 /* Register variable[5]: Result */
3656 /* Register variable[5]: Result */
3657 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
3658 once_value_138 = variable[5];
3659 once_bool_138 = true;
3660 }
3661 /* Register variable[5]: Result */
3662 /* Register variable[4]: Result */
3663 variable[4] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[4])(variable[4], variable[5]) /*MMLocalClass::select_method*/;
3664 ATTR_typing___AArrayExpr____meth_add(variable[0]) /*AArrayExpr::_meth_add*/ = variable[4];
3665 /* Register variable[4]: Result */
3666 variable[4] = ATTR_typing___AArrayExpr____meth_add(variable[0]) /*AArrayExpr::_meth_add*/;
3667 /* Register variable[4]: Result */
3668 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::==*/)))));
3669 if (UNTAG_Bool(variable[4])) { /*if*/
3670 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3671 /* Register variable[5]: Once String constant */
3672 if (once_value_140 != NIT_NULL) variable[5] = once_value_140;
3673 else {
3674 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
3675 once_value_140 = variable[5];
3676 }
3677 /* Register variable[5]: Result */
3678 /* Ensure var variable[5]: super-string element*/
3679 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
3680 /* Register variable[5]: Result */
3681 variable[5] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
3682 /* Ensure var variable[5]: super-string element*/
3683 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
3684 /* Register variable[5]: Once String constant */
3685 if (once_value_141 != NIT_NULL) variable[5] = once_value_141;
3686 else {
3687 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" MUST have an add method."), TAG_Int(25)) /*new String*/;
3688 once_value_141 = variable[5];
3689 }
3690 /* Register variable[5]: Result */
3691 /* Ensure var variable[5]: super-string element*/
3692 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
3693 /* Register variable[4]: Result */
3694 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
3695 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
3696 }
3697 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3698 return_label133: while(false);
3699 tracehead = trace.prev;
3700 return;
3701 }
3702 void typing___ARangeExpr___after_typing(val_t self, val_t param0) {
3703 struct trace_t trace = {NULL, NULL, 848, LOCATE_typing___ARangeExpr___after_typing};
3704 static val_t once_value_143 = NIT_NULL; /* Once value for string variable[6]*/
3705 static val_t once_value_144 = NIT_NULL; /* Once value for string variable[6]*/
3706 static val_t once_value_145 = NIT_NULL; /* Once value for string variable[6]*/
3707 val_t variable[7];
3708 struct WBT_ **closurevariable = NULL;
3709 trace.prev = tracehead; tracehead = &trace;
3710 trace.file = LOCATE_typing;
3711 /* Register variable[0]: Local variable */
3712 variable[0] = self;
3713 /* Register variable[1]: Local variable */
3714 variable[1] = param0;
3715 /* Register variable[2]: Method return value and escape marker */
3716 /* Register variable[3]: Result */
3717 variable[3] = CALL_parser_nodes___ARangeExpr___n_expr(variable[0])(variable[0]) /*ARangeExpr::n_expr*/;
3718 /* Register variable[3]: Result */
3719 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
3720 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3])) /* Ensure var: Left 'or' operand*/;
3721 if (!UNTAG_Bool(variable[3])) { /* or */
3722 /* Register variable[3]: Result */
3723 variable[3] = CALL_parser_nodes___ARangeExpr___n_expr2(variable[0])(variable[0]) /*ARangeExpr::n_expr2*/;
3724 /* Register variable[3]: Result */
3725 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
3726 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
3727 }
3728 /* Register variable[3]: Result */
3729 if (UNTAG_Bool(variable[3])) { /*if*/
3730 goto return_label142;
3731 }
3732 /* Register variable[3]: Local variable */
3733 /* Register variable[4]: Result */
3734 variable[4] = CALL_parser_nodes___ARangeExpr___n_expr(variable[0])(variable[0]) /*ARangeExpr::n_expr*/;
3735 /* Register variable[4]: Result */
3736 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
3737 variable[3] = variable[4];
3738 /* Register variable[4]: Local variable */
3739 /* Register variable[5]: Result */
3740 variable[5] = CALL_parser_nodes___ARangeExpr___n_expr2(variable[0])(variable[0]) /*ARangeExpr::n_expr2*/;
3741 /* Register variable[5]: Result */
3742 variable[5] = CALL_syntax_base___PExpr___stype(variable[5])(variable[5]) /*PExpr::stype*/;
3743 variable[4] = variable[5];
3744 /* Register variable[5]: Result */
3745 variable[5] = CALL_static_type___MMType_____l( variable[3] /*ntype*/)( variable[3] /*ntype*/, variable[4] /*ntype2*/) /*MMType::<*/;
3746 if (UNTAG_Bool(variable[5])) { /*if*/
3747 variable[3] = variable[4] /*ntype2*/ /*ntype=*/;
3748 } else { /*if*/
3749 /* Register variable[5]: Result */
3750 variable[5] = CALL_static_type___MMType_____l( variable[4] /*ntype2*/)( variable[4] /*ntype2*/, variable[3] /*ntype*/) /*MMType::<*/;
3751 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
3752 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3753 /* Register variable[6]: Once String constant */
3754 if (once_value_143 != NIT_NULL) variable[6] = once_value_143;
3755 else {
3756 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Type error: "), TAG_Int(12)) /*new String*/;
3757 once_value_143 = variable[6];
3758 }
3759 /* Register variable[6]: Result */
3760 /* Ensure var variable[6]: super-string element*/
3761 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
3762 variable[6] = variable[3] /*ntype*/ /* Ensure var: super-string element*/;
3763 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
3764 /* Register variable[6]: Once String constant */
3765 if (once_value_144 != NIT_NULL) variable[6] = once_value_144;
3766 else {
3767 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" incompatible with "), TAG_Int(19)) /*new String*/;
3768 once_value_144 = variable[6];
3769 }
3770 /* Register variable[6]: Result */
3771 /* Ensure var variable[6]: super-string element*/
3772 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
3773 variable[6] = variable[4] /*ntype2*/ /* Ensure var: super-string element*/;
3774 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
3775 /* Register variable[6]: Once String constant */
3776 if (once_value_145 != NIT_NULL) variable[6] = once_value_145;
3777 else {
3778 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
3779 once_value_145 = variable[6];
3780 }
3781 /* Register variable[6]: Result */
3782 /* Ensure var variable[6]: super-string element*/
3783 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
3784 /* Register variable[5]: Result */
3785 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
3786 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
3787 goto return_label142;
3788 }
3789 }
3790 /* Register variable[5]: Local variable */
3791 /* Register variable[6]: Result */
3792 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___type_discrete( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_discrete*/;
3793 variable[5] = variable[6];
3794 /* Register variable[6]: Result */
3795 variable[6] = CALL_parser_nodes___ARangeExpr___n_expr(variable[0])(variable[0]) /*ARangeExpr::n_expr*/;
3796 /* Register variable[6]: Result */
3797 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[5] /*dtype*/) /*AbsSyntaxVisitor::check_conform_expr*/;
3798 variable[6] = TAG_Bool(!UNTAG_Bool(variable[6])) /* Ensure var: Left 'or' operand*/;
3799 if (!UNTAG_Bool(variable[6])) { /* or */
3800 /* Register variable[6]: Result */
3801 variable[6] = CALL_parser_nodes___ARangeExpr___n_expr2(variable[0])(variable[0]) /*ARangeExpr::n_expr2*/;
3802 /* Register variable[6]: Result */
3803 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[6], variable[5] /*dtype*/) /*AbsSyntaxVisitor::check_conform_expr*/;
3804 variable[6] = TAG_Bool(!UNTAG_Bool(variable[6]));
3805 }
3806 /* Register variable[6]: Result */
3807 if (UNTAG_Bool(variable[6])) { /*if*/
3808 goto return_label142;
3809 }
3810 /* Register variable[6]: Result */
3811 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___type_range( variable[1] /*v*/)( variable[1] /*v*/, variable[3] /*ntype*/) /*AbsSyntaxVisitor::type_range*/;
3812 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[6];
3813 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
3814 return_label142: while(false);
3815 tracehead = trace.prev;
3816 return;
3817 }
3818 val_t typing___ARangeExpr___meth_init(val_t self) {
3819 struct trace_t trace = {NULL, NULL, 847, LOCATE_typing___ARangeExpr___meth_init};
3820 val_t *variable = NULL;
3821 struct WBT_ **closurevariable = NULL;
3822 trace.prev = tracehead; tracehead = &trace;
3823 trace.file = LOCATE_typing;
3824 tracehead = trace.prev;
3825 return ATTR_typing___ARangeExpr____meth_init( self) /*ARangeExpr::_meth_init*/;
3826 }
3827 void typing___ACrangeExpr___after_typing(val_t self, val_t param0) {
3828 struct trace_t trace = {NULL, NULL, 867, LOCATE_typing___ACrangeExpr___after_typing};
3829 static val_t once_value_147; static int once_bool_147; /* Once value for variable[4]*/
3830 static val_t once_value_148 = NIT_NULL; /* Once value for string variable[4]*/
3831 val_t variable[5];
3832 struct WBT_ **closurevariable = NULL;
3833 trace.prev = tracehead; tracehead = &trace;
3834 trace.file = LOCATE_typing;
3835 /* Register variable[0]: Local variable */
3836 variable[0] = self;
3837 /* Register variable[1]: Local variable */
3838 variable[1] = param0;
3839 /* Register variable[2]: Method return value and escape marker */
3840 CALL_SUPER_typing___ACrangeExpr___after_typing(variable[0])(variable[0], variable[1]) /*super ACrangeExpr::after_typing*/;
3841 /* Register variable[3]: Result */
3842 variable[3] = CALL_syntax_base___PExpr___stype(variable[0])(variable[0]) /*PExpr::stype*/;
3843 /* Register variable[3]: Result */
3844 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3845 /* Register variable[4]: Once expression result */
3846 if (once_bool_147) variable[4] = once_value_147;
3847 else {
3848 /* Register variable[4]: Once String constant */
3849 if (once_value_148 != NIT_NULL) variable[4] = once_value_148;
3850 else {
3851 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
3852 once_value_148 = variable[4];
3853 }
3854 /* Register variable[4]: Result */
3855 /* Register variable[4]: Result */
3856 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3857 once_value_147 = variable[4];
3858 once_bool_147 = true;
3859 }
3860 /* Register variable[4]: Result */
3861 /* Register variable[3]: Result */
3862 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3863 ATTR_typing___ARangeExpr____meth_init(variable[0]) /*ARangeExpr::_meth_init*/ = variable[3];
3864 return_label146: while(false);
3865 tracehead = trace.prev;
3866 return;
3867 }
3868 void typing___AOrangeExpr___after_typing(val_t self, val_t param0) {
3869 struct trace_t trace = {NULL, NULL, 874, LOCATE_typing___AOrangeExpr___after_typing};
3870 static val_t once_value_150; static int once_bool_150; /* Once value for variable[4]*/
3871 static val_t once_value_151 = NIT_NULL; /* Once value for string variable[4]*/
3872 val_t variable[5];
3873 struct WBT_ **closurevariable = NULL;
3874 trace.prev = tracehead; tracehead = &trace;
3875 trace.file = LOCATE_typing;
3876 /* Register variable[0]: Local variable */
3877 variable[0] = self;
3878 /* Register variable[1]: Local variable */
3879 variable[1] = param0;
3880 /* Register variable[2]: Method return value and escape marker */
3881 CALL_SUPER_typing___AOrangeExpr___after_typing(variable[0])(variable[0], variable[1]) /*super AOrangeExpr::after_typing*/;
3882 /* Register variable[3]: Result */
3883 variable[3] = CALL_syntax_base___PExpr___stype(variable[0])(variable[0]) /*PExpr::stype*/;
3884 /* Register variable[3]: Result */
3885 variable[3] = CALL_static_type___MMType___local_class(variable[3])(variable[3]) /*MMType::local_class*/;
3886 /* Register variable[4]: Once expression result */
3887 if (once_bool_150) variable[4] = once_value_150;
3888 else {
3889 /* Register variable[4]: Once String constant */
3890 if (once_value_151 != NIT_NULL) variable[4] = once_value_151;
3891 else {
3892 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("without_last"), TAG_Int(12)) /*new String*/;
3893 once_value_151 = variable[4];
3894 }
3895 /* Register variable[4]: Result */
3896 /* Register variable[4]: Result */
3897 variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
3898 once_value_150 = variable[4];
3899 once_bool_150 = true;
3900 }
3901 /* Register variable[4]: Result */
3902 /* Register variable[3]: Result */
3903 variable[3] = CALL_abstractmetamodel___MMLocalClass___select_method(variable[3])(variable[3], variable[4]) /*MMLocalClass::select_method*/;
3904 ATTR_typing___ARangeExpr____meth_init(variable[0]) /*ARangeExpr::_meth_init*/ = variable[3];
3905 return_label149: while(false);
3906 tracehead = trace.prev;
3907 return;
3908 }
3909 void typing___ASuperExpr___after_typing(val_t self, val_t param0) {
3910 struct trace_t trace = {NULL, NULL, 886, LOCATE_typing___ASuperExpr___after_typing};
3911 static val_t once_value_154 = NIT_NULL; /* Once value for string variable[9]*/
3912 static val_t once_value_155 = NIT_NULL; /* Once value for string variable[9]*/
3913 static val_t once_value_156 = NIT_NULL; /* Once value for string variable[9]*/
3914 static val_t once_value_157 = NIT_NULL; /* Once value for string variable[6]*/
3915 static val_t once_value_158 = NIT_NULL; /* Once value for string variable[6]*/
3916 static val_t once_value_159 = NIT_NULL; /* Once value for string variable[6]*/
3917 static val_t once_value_160 = NIT_NULL; /* Once value for string variable[6]*/
3918 static val_t once_value_161 = NIT_NULL; /* Once value for string variable[6]*/
3919 static val_t once_value_162 = NIT_NULL; /* Once value for string variable[6]*/
3920 static val_t once_value_163 = NIT_NULL; /* Once value for string variable[5]*/
3921 static val_t once_value_164 = NIT_NULL; /* Once value for string variable[5]*/
3922 val_t variable[12];
3923 struct WBT_ **closurevariable = NULL;
3924 trace.prev = tracehead; tracehead = &trace;
3925 trace.file = LOCATE_typing;
3926 /* Register variable[0]: Local variable */
3927 variable[0] = self;
3928 /* Register variable[1]: Local variable */
3929 variable[1] = param0;
3930 /* Register variable[2]: Method return value and escape marker */
3931 /* Register variable[3]: Local variable */
3932 /* Register variable[4]: Result */
3933 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
3934 /* Register variable[4]: Result */
3935 variable[4] = CALL_abstractmetamodel___MMLocalProperty___prhe(variable[4])(variable[4]) /*MMLocalProperty::prhe*/;
3936 /* Register variable[4]: Result */
3937 variable[4] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[4])(variable[4]) /*PartialOrderElement::direct_greaters*/;
3938 variable[3] = variable[4];
3939 /* Register variable[4]: Result */
3940 variable[4] = CALL_abstract_collection___Collection___is_empty( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::is_empty*/;
3941 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
3942 /* Register variable[4]: Result */
3943 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
3944 CALL_abstractmetamodel___MMLocalProperty___need_super__eq(variable[4])(variable[4], TAG_Bool(true)) /*MMLocalProperty::need_super=*/;
3945 } else { /*if*/
3946 /* Register variable[4]: Result */
3947 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
3948 /* Register variable[4]: Result */
3949 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global(variable[4])(variable[4]) /*MMLocalProperty::global*/;
3950 /* Register variable[4]: Result */
3951 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[4])(variable[4]) /*MMGlobalProperty::is_init*/;
3952 if (UNTAG_Bool(variable[4])) { /*if*/
3953 /* Register variable[4]: Local variable */
3954 /* Register variable[5]: Result */
3955 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
3956 /* Register variable[6]: Result */
3957 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
3958 /* Register variable[6]: Result */
3959 variable[6] = CALL_abstractmetamodel___MMLocalProperty___name(variable[6])(variable[6]) /*MMLocalProperty::name*/;
3960 /* Register variable[5]: Result */
3961 variable[5] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(variable[5])(variable[5], variable[6]) /*MMLocalClass::super_methods_named*/;
3962 variable[4] = variable[5];
3963 /* Register variable[5]: For iterator */
3964 variable[5] = CALL_abstract_collection___Collection___iterator( variable[4] /*base_precs*/)( variable[4] /*base_precs*/) /*AbstractArrayRead::iterator*/;
3965 while (true) { /*for*/
3966 /* Register variable[6]: For 'is_ok' result */
3967 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
3968 if (!UNTAG_Bool(variable[6])) break; /*for*/
3969 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
3970 /* Register variable[7]: Local variable */
3971 variable[7] = variable[6];
3972 /* Register variable[8]: Result */
3973 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global( variable[7] /*p*/)( variable[7] /*p*/) /*MMLocalProperty::global*/;
3974 /* Register variable[8]: Result */
3975 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[8])(variable[8]) /*MMGlobalProperty::is_init*/;
3976 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
3977 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
3978 /* Register variable[9]: Once String constant */
3979 if (once_value_154 != NIT_NULL) variable[9] = once_value_154;
3980 else {
3981 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
3982 once_value_154 = variable[9];
3983 }
3984 /* Register variable[9]: Result */
3985 /* Ensure var variable[9]: super-string element*/
3986 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
3987 /* Register variable[9]: Result */
3988 variable[9] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[7] /*p*/)( variable[7] /*p*/) /*MMLocalProperty::local_class*/;
3989 /* Ensure var variable[9]: super-string element*/
3990 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
3991 /* Register variable[9]: Once String constant */
3992 if (once_value_155 != NIT_NULL) variable[9] = once_value_155;
3993 else {
3994 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
3995 once_value_155 = variable[9];
3996 }
3997 /* Register variable[9]: Result */
3998 /* Ensure var variable[9]: super-string element*/
3999 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
4000 variable[9] = variable[7] /*p*/ /* Ensure var: super-string element*/;
4001 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
4002 /* Register variable[9]: Once String constant */
4003 if (once_value_156 != NIT_NULL) variable[9] = once_value_156;
4004 else {
4005 variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" is not a constructor."), TAG_Int(22)) /*new String*/;
4006 once_value_156 = variable[9];
4007 }
4008 /* Register variable[9]: Result */
4009 /* Ensure var variable[9]: super-string element*/
4010 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
4011 /* Register variable[8]: Result */
4012 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
4013 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
4014 } else { /*if*/
4015 /* Register variable[8]: Result */
4016 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
4017 /* Register variable[9]: Result */
4018 variable[9] = CALL_abstractmetamodel___MMLocalProperty___global( variable[7] /*p*/)( variable[7] /*p*/) /*MMLocalProperty::global*/;
4019 /* Register variable[8]: Result */
4020 variable[8] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[8])(variable[8], variable[9]) /*MMLocalClass::[]*/;
4021 CALL_abstract_collection___SimpleCollection___add( variable[3] /*precs*/)( variable[3] /*precs*/, variable[8]) /*AbstractArray::add*/;
4022 }
4023 continue_153: while(0);
4024 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
4025 }
4026 break_153: while(0);
4027 /* Register variable[5]: Result */
4028 variable[5] = CALL_abstract_collection___Collection___is_empty( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::is_empty*/;
4029 if (UNTAG_Bool(variable[5])) { /*if*/
4030 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4031 /* Register variable[6]: Once String constant */
4032 if (once_value_157 != NIT_NULL) variable[6] = once_value_157;
4033 else {
4034 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: No contructor named "), TAG_Int(27)) /*new String*/;
4035 once_value_157 = variable[6];
4036 }
4037 /* Register variable[6]: Result */
4038 /* Ensure var variable[6]: super-string element*/
4039 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4040 /* Register variable[6]: Result */
4041 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
4042 /* Register variable[6]: Result */
4043 variable[6] = CALL_abstractmetamodel___MMLocalProperty___name(variable[6])(variable[6]) /*MMLocalProperty::name*/;
4044 /* Ensure var variable[6]: super-string element*/
4045 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
4046 /* Register variable[6]: Once String constant */
4047 if (once_value_158 != NIT_NULL) variable[6] = once_value_158;
4048 else {
4049 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" in superclasses."), TAG_Int(17)) /*new String*/;
4050 once_value_158 = variable[6];
4051 }
4052 /* Register variable[6]: Result */
4053 /* Ensure var variable[6]: super-string element*/
4054 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4055 /* Register variable[5]: Result */
4056 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
4057 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
4058 goto return_label152;
4059 } else { /*if*/
4060 /* Register variable[5]: Result */
4061 variable[5] = CALL_abstract_collection___Collection___length( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::length*/;
4062 /* Register variable[5]: Result */
4063 variable[5] = TAG_Bool(UNTAG_Int(variable[5])>UNTAG_Int( TAG_Int(1)));
4064 if (UNTAG_Bool(variable[5])) { /*if*/
4065 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4066 /* Register variable[6]: Once String constant */
4067 if (once_value_159 != NIT_NULL) variable[6] = once_value_159;
4068 else {
4069 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: Conflicting contructors named "), TAG_Int(37)) /*new String*/;
4070 once_value_159 = variable[6];
4071 }
4072 /* Register variable[6]: Result */
4073 /* Ensure var variable[6]: super-string element*/
4074 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4075 /* Register variable[6]: Result */
4076 variable[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
4077 /* Register variable[6]: Result */
4078 variable[6] = CALL_abstractmetamodel___MMLocalProperty___name(variable[6])(variable[6]) /*MMLocalProperty::name*/;
4079 /* Ensure var variable[6]: super-string element*/
4080 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
4081 /* Register variable[6]: Once String constant */
4082 if (once_value_160 != NIT_NULL) variable[6] = once_value_160;
4083 else {
4084 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" in superclasses: "), TAG_Int(18)) /*new String*/;
4085 once_value_160 = variable[6];
4086 }
4087 /* Register variable[6]: Result */
4088 /* Ensure var variable[6]: super-string element*/
4089 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4090 /* Register variable[6]: Once String constant */
4091 if (once_value_161 != NIT_NULL) variable[6] = once_value_161;
4092 else {
4093 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
4094 once_value_161 = variable[6];
4095 }
4096 /* Register variable[6]: Result */
4097 /* Register variable[6]: Result */
4098 variable[6] = CALL_string___Collection___join( variable[3] /*precs*/)( variable[3] /*precs*/, variable[6]) /*Collection::join*/;
4099 /* Ensure var variable[6]: super-string element*/
4100 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4101 /* Register variable[6]: Once String constant */
4102 if (once_value_162 != NIT_NULL) variable[6] = once_value_162;
4103 else {
4104 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4105 once_value_162 = variable[6];
4106 }
4107 /* Register variable[6]: Result */
4108 /* Ensure var variable[6]: super-string element*/
4109 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
4110 /* Register variable[5]: Result */
4111 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
4112 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
4113 goto return_label152;
4114 }
4115 }
4116 /* Register variable[5]: Local variable */
4117 /* Register variable[6]: Result */
4118 variable[6] = CALL_abstract_collection___Collection___first( variable[4] /*base_precs*/)( variable[4] /*base_precs*/) /*IndexedCollectionRead::first*/;
4119 variable[5] = variable[6];
4120 /* Register variable[6]: Result */
4121 variable[6] = TAG_Bool(( variable[5] /*p*/==NIT_NULL) || VAL_ISA( variable[5] /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
4122 if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 908); nit_exit(1);}
4123 ATTR_typing___ASuperExpr____init_in_superclass(variable[0]) /*ASuperExpr::_init_in_superclass*/ = variable[5] /*p*/;
4124 CALL_typing___ASuperInitCall___register_super_init_call(variable[0])(variable[0], variable[1] /*v*/, variable[5] /*p*/) /*ASuperInitCall::register_super_init_call*/;
4125 /* Register variable[6]: Result */
4126 variable[6] = CALL_parser_nodes___ASuperExpr___n_args(variable[0])(variable[0]) /*ASuperExpr::n_args*/;
4127 /* Register variable[6]: Result */
4128 variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/;
4129 /* Register variable[6]: Result */
4130 variable[6] = TAG_Bool(UNTAG_Int(variable[6])>UNTAG_Int( TAG_Int(0)));
4131 if (UNTAG_Bool(variable[6])) { /*if*/
4132 /* Register variable[6]: Local variable */
4133 /* Register variable[7]: Result */
4134 variable[7] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
4135 /* Register variable[7]: Result */
4136 variable[7] = CALL_syntax_base___Variable___stype(variable[7])(variable[7]) /*Variable::stype*/;
4137 /* Register variable[7]: Result */
4138 variable[7] = CALL_typing___AAbsSendExpr___get_signature(variable[0])(variable[0], variable[1] /*v*/, variable[7], variable[5] /*p*/, TAG_Bool(true)) /*AAbsSendExpr::get_signature*/;
4139 variable[6] = variable[7];
4140 /* Register variable[7]: Result */
4141 variable[7] = CALL_abstractmetamodel___MMLocalProperty___name( variable[5] /*p*/)( variable[5] /*p*/) /*MMLocalProperty::name*/;
4142 /* Register variable[8]: Result */
4143 variable[8] = CALL_parser_nodes___ASuperExpr___n_args(variable[0])(variable[0]) /*ASuperExpr::n_args*/;
4144 /* Register variable[8]: Result */
4145 variable[8] = CALL_array___Collection___to_a(variable[8])(variable[8]) /*Collection::to_a*/;
4146 /* Register variable[7]: Result */
4147 variable[7] = CALL_typing___AAbsAbsSendExpr___process_signature(variable[0])(variable[0], variable[1] /*v*/, variable[6] /*signature*/, variable[7], variable[8]) /*AAbsAbsSendExpr::process_signature*/;
4148 ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[7];
4149 }
4150 } else { /*if*/
4151 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4152 /* Register variable[5]: Once String constant */
4153 if (once_value_163 != NIT_NULL) variable[5] = once_value_163;
4154 else {
4155 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: No super method to call for "), TAG_Int(35)) /*new String*/;
4156 once_value_163 = variable[5];
4157 }
4158 /* Register variable[5]: Result */
4159 /* Ensure var variable[5]: super-string element*/
4160 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
4161 /* Register variable[5]: Result */
4162 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
4163 /* Ensure var variable[5]: super-string element*/
4164 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
4165 /* Register variable[5]: Once String constant */
4166 if (once_value_164 != NIT_NULL) variable[5] = once_value_164;
4167 else {
4168 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4169 once_value_164 = variable[5];
4170 }
4171 /* Register variable[5]: Result */
4172 /* Ensure var variable[5]: super-string element*/
4173 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
4174 /* Register variable[4]: Result */
4175 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
4176 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
4177 goto return_label152;
4178 }
4179 }
4180 /* Register variable[4]: Result */
4181 variable[4] = CALL_abstract_collection___Collection___first( variable[3] /*precs*/)( variable[3] /*precs*/) /*IndexedCollectionRead::first*/;
4182 /* Register variable[5]: Result */
4183 variable[5] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
4184 /* Register variable[5]: Result */
4185 variable[5] = CALL_syntax_base___Variable___stype(variable[5])(variable[5]) /*Variable::stype*/;
4186 /* Register variable[4]: Result */
4187 variable[4] = CALL_static_type___MMLocalProperty___signature_for(variable[4])(variable[4], variable[5]) /*MMLocalProperty::signature_for*/;
4188 /* Register variable[4]: Result */
4189 variable[4] = CALL_static_type___MMSignature___return_type(variable[4])(variable[4]) /*MMSignature::return_type*/;
4190 /* Register variable[4]: Result */
4191 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::==*/)))))));
4192 if (UNTAG_Bool(variable[4])) { /*if*/
4193 /* Register variable[4]: Local variable */
4194 /* Register variable[5]: Result */
4195 variable[5] = NEW_Array_array___Array___init() /*new Array[MMType]*/;
4196 variable[4] = variable[5];
4197 /* Register variable[5]: Local variable */
4198 variable[5] = NIT_NULL /*null*/;
4199 /* Register variable[6]: For iterator */
4200 variable[6] = CALL_abstract_collection___Collection___iterator( variable[3] /*precs*/)( variable[3] /*precs*/) /*AbstractArrayRead::iterator*/;
4201 while (true) { /*for*/
4202 /* Register variable[7]: For 'is_ok' result */
4203 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
4204 if (!UNTAG_Bool(variable[7])) break; /*for*/
4205 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
4206 /* Register variable[8]: Local variable */
4207 variable[8] = variable[7];
4208 /* Register variable[9]: Result */
4209 variable[9] = TAG_Bool(( variable[8] /*prop*/==NIT_NULL) || VAL_ISA( variable[8] /*prop*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
4210 if (!UNTAG_Bool(variable[9])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 924); nit_exit(1);}
4211 /* Register variable[9]: Local variable */
4212 /* Register variable[10]: Result */
4213 variable[10] = CALL_typing___TypingVisitor___self_var( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::self_var*/;
4214 /* Register variable[10]: Result */
4215 variable[10] = CALL_syntax_base___Variable___stype(variable[10])(variable[10]) /*Variable::stype*/;
4216 /* Register variable[10]: Result */
4217 variable[10] = CALL_static_type___MMLocalProperty___signature_for( variable[8] /*prop*/)( variable[8] /*prop*/, variable[10]) /*MMLocalProperty::signature_for*/;
4218 /* Register variable[10]: Result */
4219 variable[10] = CALL_static_type___MMSignature___return_type(variable[10])(variable[10]) /*MMSignature::return_type*/;
4220 /* Register variable[11]: Result */
4221 variable[11] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
4222 /* Register variable[10]: Result */
4223 variable[10] = CALL_static_type___MMType___for_module(variable[10])(variable[10], variable[11]) /*MMType::for_module*/;
4224 /* Register variable[11]: Result */
4225 variable[11] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
4226 /* Register variable[11]: Result */
4227 variable[11] = CALL_static_type___MMLocalProperty___signature(variable[11])(variable[11]) /*MMLocalProperty::signature*/;
4228 /* Register variable[11]: Result */
4229 variable[11] = CALL_static_type___MMSignature___recv(variable[11])(variable[11]) /*MMSignature::recv*/;
4230 /* Register variable[10]: Result */
4231 variable[10] = CALL_static_type___MMType___adapt_to(variable[10])(variable[10], variable[11]) /*MMType::adapt_to*/;
4232 variable[9] = variable[10];
4233 CALL_abstract_collection___SimpleCollection___add( variable[4] /*stypes*/)( variable[4] /*stypes*/, variable[9] /*t*/) /*AbstractArray::add*/;
4234 /* Register variable[10]: Result */
4235 variable[10] = TAG_Bool(( variable[5] /*stype*/ == NIT_NULL /*null*/) || (( variable[5] /*stype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*stype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*stype*/)( variable[5] /*stype*/, NIT_NULL /*null*/) /*Object::==*/)))));
4236 /* Ensure var variable[10]: Left 'or' operand*/
4237 if (!UNTAG_Bool(variable[10])) { /* or */
4238 /* Register variable[10]: Result */
4239 variable[10] = CALL_static_type___MMType_____l( variable[5] /*stype*/)( variable[5] /*stype*/, variable[9] /*t*/) /*MMType::<*/;
4240 }
4241 /* Register variable[10]: Result */
4242 if (UNTAG_Bool(variable[10])) { /*if*/
4243 variable[5] = variable[9] /*t*/ /*stype=*/;
4244 }
4245 continue_165: while(0);
4246 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
4247 }
4248 break_165: while(0);
4249 /* Register variable[6]: For iterator */
4250 variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*stypes*/)( variable[4] /*stypes*/) /*AbstractArrayRead::iterator*/;
4251 while (true) { /*for*/
4252 /* Register variable[7]: For 'is_ok' result */
4253 variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
4254 if (!UNTAG_Bool(variable[7])) break; /*for*/
4255 variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
4256 /* Register variable[8]: Local variable */
4257 variable[8] = variable[7];
4258 CALL_syntax_base___AbsSyntaxVisitor___check_conform( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8] /*t*/, variable[5] /*stype*/) /*AbsSyntaxVisitor::check_conform*/;
4259 continue_166: while(0);
4260 CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
4261 }
4262 break_166: while(0);
4263 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[5] /*stype*/;
4264 }
4265 /* Register variable[4]: Local variable */
4266 /* Register variable[5]: Result */
4267 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
4268 variable[4] = variable[5];
4269 /* Register variable[5]: Result */
4270 variable[5] = TAG_Bool(( variable[4] /*p*/==NIT_NULL) || VAL_ISA( variable[4] /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
4271 if (!UNTAG_Bool(variable[5])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___ASuperExpr___after_typing, LOCATE_typing, 937); nit_exit(1);}
4272 ATTR_typing___AAbsSendExpr____prop(variable[0]) /*AAbsSendExpr::_prop*/ = variable[4] /*p*/;
4273 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
4274 return_label152: while(false);
4275 tracehead = trace.prev;
4276 return;
4277 }
4278 val_t typing___ASuperExpr___init_in_superclass(val_t self) {
4279 struct trace_t trace = {NULL, NULL, 884, LOCATE_typing___ASuperExpr___init_in_superclass};
4280 val_t *variable = NULL;
4281 struct WBT_ **closurevariable = NULL;
4282 trace.prev = tracehead; tracehead = &trace;
4283 trace.file = LOCATE_typing;
4284 tracehead = trace.prev;
4285 return ATTR_typing___ASuperExpr____init_in_superclass( self) /*ASuperExpr::_init_in_superclass*/;
4286 }
4287 val_t typing___AAttrFormExpr___prop(val_t self) {
4288 struct trace_t trace = {NULL, NULL, 944, LOCATE_typing___AAttrFormExpr___prop};
4289 val_t *variable = NULL;
4290 struct WBT_ **closurevariable = NULL;
4291 trace.prev = tracehead; tracehead = &trace;
4292 trace.file = LOCATE_typing;
4293 tracehead = trace.prev;
4294 return ATTR_typing___AAttrFormExpr____prop( self) /*AAttrFormExpr::_prop*/;
4295 }
4296 val_t typing___AAttrFormExpr___attr_type(val_t self) {
4297 struct trace_t trace = {NULL, NULL, 947, LOCATE_typing___AAttrFormExpr___attr_type};
4298 val_t *variable = NULL;
4299 struct WBT_ **closurevariable = NULL;
4300 trace.prev = tracehead; tracehead = &trace;
4301 trace.file = LOCATE_typing;
4302 tracehead = trace.prev;
4303 return ATTR_typing___AAttrFormExpr____attr_type( self) /*AAttrFormExpr::_attr_type*/;
4304 }
4305 void typing___AAttrFormExpr___do_typing(val_t self, val_t param0) {
4306 struct trace_t trace = {NULL, NULL, 950, LOCATE_typing___AAttrFormExpr___do_typing};
4307 static val_t once_value_168 = NIT_NULL; /* Once value for string variable[7]*/
4308 static val_t once_value_169 = NIT_NULL; /* Once value for string variable[7]*/
4309 static val_t once_value_170 = NIT_NULL; /* Once value for string variable[7]*/
4310 static val_t once_value_171 = NIT_NULL; /* Once value for string variable[8]*/
4311 static val_t once_value_172 = NIT_NULL; /* Once value for string variable[8]*/
4312 static val_t once_value_173 = NIT_NULL; /* Once value for string variable[8]*/
4313 static val_t once_value_174 = NIT_NULL; /* Once value for string variable[8]*/
4314 val_t variable[9];
4315 struct WBT_ **closurevariable = NULL;
4316 trace.prev = tracehead; tracehead = &trace;
4317 trace.file = LOCATE_typing;
4318 /* Register variable[0]: Local variable */
4319 variable[0] = self;
4320 /* Register variable[1]: Local variable */
4321 variable[1] = param0;
4322 /* Register variable[2]: Method return value and escape marker */
4323 /* Register variable[3]: Result */
4324 variable[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(variable[0])(variable[0]) /*AAttrFormExpr::n_expr*/;
4325 /* Register variable[3]: Result */
4326 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
4327 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
4328 goto return_label167;
4329 }
4330 /* Register variable[3]: Local variable */
4331 /* Register variable[4]: Result */
4332 variable[4] = CALL_parser_nodes___AAttrFormExpr___n_expr(variable[0])(variable[0]) /*AAttrFormExpr::n_expr*/;
4333 /* Register variable[4]: Result */
4334 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
4335 variable[3] = variable[4];
4336 /* Register variable[4]: Local variable */
4337 /* Register variable[5]: Result */
4338 variable[5] = CALL_parser_nodes___AAttrFormExpr___n_id(variable[0])(variable[0]) /*AAttrFormExpr::n_id*/;
4339 /* Register variable[5]: Result */
4340 variable[5] = CALL_syntax_base___Token___to_symbol(variable[5])(variable[5]) /*Token::to_symbol*/;
4341 variable[4] = variable[5];
4342 /* Register variable[5]: Local variable */
4343 /* Register variable[6]: Result */
4344 variable[6] = CALL_static_type___MMType___local_class( variable[3] /*type_recv*/)( variable[3] /*type_recv*/) /*MMType::local_class*/;
4345 variable[5] = variable[6];
4346 /* Register variable[6]: Result */
4347 variable[6] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name( variable[5] /*lc*/)( variable[5] /*lc*/, variable[4] /*name*/) /*MMLocalClass::has_global_property_by_name*/;
4348 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
4349 variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4350 /* Register variable[7]: Once String constant */
4351 if (once_value_168 != NIT_NULL) variable[7] = once_value_168;
4352 else {
4353 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attribute "), TAG_Int(17)) /*new String*/;
4354 once_value_168 = variable[7];
4355 }
4356 /* Register variable[7]: Result */
4357 /* Ensure var variable[7]: super-string element*/
4358 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
4359 variable[7] = variable[4] /*name*/ /* Ensure var: super-string element*/;
4360 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
4361 /* Register variable[7]: Once String constant */
4362 if (once_value_169 != NIT_NULL) variable[7] = once_value_169;
4363 else {
4364 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" doesn't exists in "), TAG_Int(19)) /*new String*/;
4365 once_value_169 = variable[7];
4366 }
4367 /* Register variable[7]: Result */
4368 /* Ensure var variable[7]: super-string element*/
4369 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
4370 variable[7] = variable[3] /*type_recv*/ /* Ensure var: super-string element*/;
4371 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
4372 /* Register variable[7]: Once String constant */
4373 if (once_value_170 != NIT_NULL) variable[7] = once_value_170;
4374 else {
4375 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
4376 once_value_170 = variable[7];
4377 }
4378 /* Register variable[7]: Result */
4379 /* Ensure var variable[7]: super-string element*/
4380 CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
4381 /* Register variable[6]: Result */
4382 variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
4383 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[6]) /*AbsSyntaxVisitor::error*/;
4384 goto return_label167;
4385 }
4386 /* Register variable[6]: Local variable */
4387 /* Register variable[7]: Result */
4388 variable[7] = CALL_abstractmetamodel___MMLocalClass___select_attribute( variable[5] /*lc*/)( variable[5] /*lc*/, variable[4] /*name*/) /*MMLocalClass::select_attribute*/;
4389 variable[6] = variable[7];
4390 /* Register variable[7]: Result */
4391 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
4392 /* Register variable[8]: Result */
4393 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global( variable[6] /*prop*/)( variable[6] /*prop*/) /*MMLocalProperty::global*/;
4394 /* Register variable[8]: Result */
4395 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___local_class(variable[8])(variable[8]) /*MMGlobalProperty::local_class*/;
4396 /* Register variable[8]: Result */
4397 variable[8] = CALL_abstractmetamodel___MMLocalClass___module(variable[8])(variable[8]) /*MMLocalClass::module*/;
4398 /* Register variable[7]: Result */
4399 variable[7] = CALL_abstractmetamodel___MMModule___visibility_for(variable[7])(variable[7], variable[8]) /*MMModule::visibility_for*/;
4400 /* Register variable[7]: Result */
4401 variable[7] = TAG_Bool(UNTAG_Int(variable[7])<UNTAG_Int( TAG_Int(3)));
4402 if (UNTAG_Bool(variable[7])) { /*if*/
4403 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4404 /* Register variable[8]: Once String constant */
4405 if (once_value_171 != NIT_NULL) variable[8] = once_value_171;
4406 else {
4407 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: Attribute "), TAG_Int(17)) /*new String*/;
4408 once_value_171 = variable[8];
4409 }
4410 /* Register variable[8]: Result */
4411 /* Ensure var variable[8]: super-string element*/
4412 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
4413 variable[8] = variable[4] /*name*/ /* Ensure var: super-string element*/;
4414 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
4415 /* Register variable[8]: Once String constant */
4416 if (once_value_172 != NIT_NULL) variable[8] = once_value_172;
4417 else {
4418 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" from "), TAG_Int(6)) /*new String*/;
4419 once_value_172 = variable[8];
4420 }
4421 /* Register variable[8]: Result */
4422 /* Ensure var variable[8]: super-string element*/
4423 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
4424 /* Register variable[8]: Result */
4425 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global( variable[6] /*prop*/)( variable[6] /*prop*/) /*MMLocalProperty::global*/;
4426 /* Register variable[8]: Result */
4427 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___local_class(variable[8])(variable[8]) /*MMGlobalProperty::local_class*/;
4428 /* Register variable[8]: Result */
4429 variable[8] = CALL_abstractmetamodel___MMLocalClass___module(variable[8])(variable[8]) /*MMLocalClass::module*/;
4430 /* Ensure var variable[8]: super-string element*/
4431 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
4432 /* Register variable[8]: Once String constant */
4433 if (once_value_173 != NIT_NULL) variable[8] = once_value_173;
4434 else {
4435 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" is invisible in "), TAG_Int(17)) /*new String*/;
4436 once_value_173 = variable[8];
4437 }
4438 /* Register variable[8]: Result */
4439 /* Ensure var variable[8]: super-string element*/
4440 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
4441 /* Register variable[8]: Result */
4442 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
4443 /* Ensure var variable[8]: super-string element*/
4444 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
4445 /* Register variable[8]: Once String constant */
4446 if (once_value_174 != NIT_NULL) variable[8] = once_value_174;
4447 else {
4448 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
4449 once_value_174 = variable[8];
4450 }
4451 /* Register variable[8]: Result */
4452 /* Ensure var variable[8]: super-string element*/
4453 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
4454 /* Register variable[7]: Result */
4455 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
4456 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
4457 }
4458 ATTR_typing___AAttrFormExpr____prop(variable[0]) /*AAttrFormExpr::_prop*/ = variable[6] /*prop*/;
4459 /* Register variable[7]: Local variable */
4460 /* Register variable[8]: Result */
4461 variable[8] = CALL_static_type___MMLocalProperty___signature_for( variable[6] /*prop*/)( variable[6] /*prop*/, variable[3] /*type_recv*/) /*MMLocalProperty::signature_for*/;
4462 /* Register variable[8]: Result */
4463 variable[8] = CALL_static_type___MMSignature___return_type(variable[8])(variable[8]) /*MMSignature::return_type*/;
4464 variable[7] = variable[8];
4465 /* Register variable[8]: Result */
4466 variable[8] = CALL_parser_nodes___AAttrFormExpr___n_expr(variable[0])(variable[0]) /*AAttrFormExpr::n_expr*/;
4467 /* Register variable[8]: Result */
4468 variable[8] = CALL_typing___PExpr___is_self(variable[8])(variable[8]) /*PExpr::is_self*/;
4469 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
4470 /* Register variable[8]: Result */
4471 variable[8] = CALL_static_type___MMType___not_for_self( variable[7] /*at*/)( variable[7] /*at*/) /*MMType::not_for_self*/;
4472 variable[7] = variable[8] /*at=*/;
4473 }
4474 ATTR_typing___AAttrFormExpr____attr_type(variable[0]) /*AAttrFormExpr::_attr_type*/ = variable[7] /*at*/;
4475 return_label167: while(false);
4476 tracehead = trace.prev;
4477 return;
4478 }
4479 void typing___AAttrExpr___after_typing(val_t self, val_t param0) {
4480 struct trace_t trace = {NULL, NULL, 973, LOCATE_typing___AAttrExpr___after_typing};
4481 val_t variable[4];
4482 struct WBT_ **closurevariable = NULL;
4483 trace.prev = tracehead; tracehead = &trace;
4484 trace.file = LOCATE_typing;
4485 /* Register variable[0]: Local variable */
4486 variable[0] = self;
4487 /* Register variable[1]: Local variable */
4488 variable[1] = param0;
4489 /* Register variable[2]: Method return value and escape marker */
4490 CALL_typing___AAttrFormExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/) /*AAttrFormExpr::do_typing*/;
4491 /* Register variable[3]: Result */
4492 variable[3] = CALL_typing___AAttrFormExpr___prop(variable[0])(variable[0]) /*AAttrFormExpr::prop*/;
4493 /* Register variable[3]: Result */
4494 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::==*/)))));
4495 if (UNTAG_Bool(variable[3])) { /*if*/
4496 goto return_label175;
4497 }
4498 /* Register variable[3]: Result */
4499 variable[3] = CALL_typing___AAttrFormExpr___attr_type(variable[0])(variable[0]) /*AAttrFormExpr::attr_type*/;
4500 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
4501 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
4502 return_label175: while(false);
4503 tracehead = trace.prev;
4504 return;
4505 }
4506 void typing___AAttrAssignExpr___after_typing(val_t self, val_t param0) {
4507 struct trace_t trace = {NULL, NULL, 983, LOCATE_typing___AAttrAssignExpr___after_typing};
4508 val_t variable[5];
4509 struct WBT_ **closurevariable = NULL;
4510 trace.prev = tracehead; tracehead = &trace;
4511 trace.file = LOCATE_typing;
4512 /* Register variable[0]: Local variable */
4513 variable[0] = self;
4514 /* Register variable[1]: Local variable */
4515 variable[1] = param0;
4516 /* Register variable[2]: Method return value and escape marker */
4517 CALL_typing___AAttrFormExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/) /*AAttrFormExpr::do_typing*/;
4518 /* Register variable[3]: Result */
4519 variable[3] = CALL_typing___AAttrFormExpr___prop(variable[0])(variable[0]) /*AAttrFormExpr::prop*/;
4520 /* Register variable[3]: Result */
4521 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::==*/)))));
4522 if (UNTAG_Bool(variable[3])) { /*if*/
4523 goto return_label176;
4524 }
4525 /* Register variable[3]: Result */
4526 variable[3] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
4527 /* Register variable[4]: Result */
4528 variable[4] = CALL_typing___AAttrFormExpr___attr_type(variable[0])(variable[0]) /*AAttrFormExpr::attr_type*/;
4529 /* Register variable[3]: Result */
4530 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::check_conform_expr*/;
4531 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
4532 goto return_label176;
4533 }
4534 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
4535 return_label176: while(false);
4536 tracehead = trace.prev;
4537 return;
4538 }
4539 void typing___AAttrReassignExpr___after_typing(val_t self, val_t param0) {
4540 struct trace_t trace = {NULL, NULL, 993, LOCATE_typing___AAttrReassignExpr___after_typing};
4541 val_t variable[5];
4542 struct WBT_ **closurevariable = NULL;
4543 trace.prev = tracehead; tracehead = &trace;
4544 trace.file = LOCATE_typing;
4545 /* Register variable[0]: Local variable */
4546 variable[0] = self;
4547 /* Register variable[1]: Local variable */
4548 variable[1] = param0;
4549 /* Register variable[2]: Method return value and escape marker */
4550 CALL_typing___AAttrFormExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/) /*AAttrFormExpr::do_typing*/;
4551 /* Register variable[3]: Result */
4552 variable[3] = CALL_typing___AAttrFormExpr___prop(variable[0])(variable[0]) /*AAttrFormExpr::prop*/;
4553 /* Register variable[3]: Result */
4554 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::==*/)))));
4555 if (UNTAG_Bool(variable[3])) { /*if*/
4556 goto return_label177;
4557 }
4558 /* Register variable[3]: Local variable */
4559 /* Register variable[4]: Result */
4560 variable[4] = CALL_typing___AAttrFormExpr___attr_type(variable[0])(variable[0]) /*AAttrFormExpr::attr_type*/;
4561 /* Register variable[4]: Result */
4562 variable[4] = CALL_typing___AReassignFormExpr___do_rvalue_typing(variable[0])(variable[0], variable[1] /*v*/, variable[4]) /*AReassignFormExpr::do_rvalue_typing*/;
4563 variable[3] = variable[4];
4564 /* Register variable[4]: Result */
4565 variable[4] = TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))));
4566 if (UNTAG_Bool(variable[4])) { /*if*/
4567 goto return_label177;
4568 }
4569 /* Register variable[4]: Result */
4570 variable[4] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
4571 /* Register variable[4]: Result */
4572 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
4573 CALL_syntax_base___AbsSyntaxVisitor___check_conform( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3] /*t*/, variable[4]) /*AbsSyntaxVisitor::check_conform*/;
4574 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
4575 return_label177: while(false);
4576 tracehead = trace.prev;
4577 return;
4578 }
4579 void typing___AIssetAttrExpr___after_typing(val_t self, val_t param0) {
4580 struct trace_t trace = {NULL, NULL, 1005, LOCATE_typing___AIssetAttrExpr___after_typing};
4581 static val_t once_value_179 = NIT_NULL; /* Once value for string variable[3]*/
4582 val_t variable[4];
4583 struct WBT_ **closurevariable = NULL;
4584 trace.prev = tracehead; tracehead = &trace;
4585 trace.file = LOCATE_typing;
4586 /* Register variable[0]: Local variable */
4587 variable[0] = self;
4588 /* Register variable[1]: Local variable */
4589 variable[1] = param0;
4590 /* Register variable[2]: Method return value and escape marker */
4591 CALL_typing___AAttrFormExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/) /*AAttrFormExpr::do_typing*/;
4592 /* Register variable[3]: Result */
4593 variable[3] = CALL_typing___AAttrFormExpr___prop(variable[0])(variable[0]) /*AAttrFormExpr::prop*/;
4594 /* Register variable[3]: Result */
4595 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::==*/)))));
4596 if (UNTAG_Bool(variable[3])) { /*if*/
4597 goto return_label178;
4598 }
4599 /* Register variable[3]: Result */
4600 variable[3] = CALL_typing___AAttrFormExpr___attr_type(variable[0])(variable[0]) /*AAttrFormExpr::attr_type*/;
4601 /* Register variable[3]: Result */
4602 variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/;
4603 if (UNTAG_Bool(variable[3])) { /*if*/
4604 /* Register variable[3]: Once String constant */
4605 if (once_value_179 != NIT_NULL) variable[3] = once_value_179;
4606 else {
4607 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Error: isset on a nullable attribute."), TAG_Int(37)) /*new String*/;
4608 once_value_179 = variable[3];
4609 }
4610 /* Register variable[3]: Result */
4611 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
4612 }
4613 /* Register variable[3]: Result */
4614 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
4615 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
4616 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
4617 return_label178: while(false);
4618 tracehead = trace.prev;
4619 return;
4620 }
4621 val_t typing___AAbsAbsSendExpr___prop_signature(val_t self) {
4622 struct trace_t trace = {NULL, NULL, 1019, LOCATE_typing___AAbsAbsSendExpr___prop_signature};
4623 val_t *variable = NULL;
4624 struct WBT_ **closurevariable = NULL;
4625 trace.prev = tracehead; tracehead = &trace;
4626 trace.file = LOCATE_typing;
4627 tracehead = trace.prev;
4628 return ATTR_typing___AAbsAbsSendExpr____prop_signature( self) /*AAbsAbsSendExpr::_prop_signature*/;
4629 }
4630 val_t typing___AAbsAbsSendExpr___arguments(val_t self) {
4631 struct trace_t trace = {NULL, NULL, 1022, LOCATE_typing___AAbsAbsSendExpr___arguments};
4632 val_t *variable = NULL;
4633 struct WBT_ **closurevariable = NULL;
4634 trace.prev = tracehead; tracehead = &trace;
4635 trace.file = LOCATE_typing;
4636 tracehead = trace.prev;
4637 return ATTR_typing___AAbsAbsSendExpr____arguments( self) /*AAbsAbsSendExpr::_arguments*/;
4638 }
4639 val_t typing___AAbsAbsSendExpr___process_signature(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
4640 struct trace_t trace = {NULL, NULL, 1025, LOCATE_typing___AAbsAbsSendExpr___process_signature};
4641 static val_t once_value_181 = NIT_NULL; /* Once value for string variable[10]*/
4642 static val_t once_value_182 = NIT_NULL; /* Once value for string variable[10]*/
4643 val_t variable[24];
4644 struct WBT_ **closurevariable = NULL;
4645 trace.prev = tracehead; tracehead = &trace;
4646 trace.file = LOCATE_typing;
4647 /* Register variable[0]: Local variable */
4648 variable[0] = self;
4649 /* Register variable[1]: Local variable */
4650 variable[1] = param0;
4651 /* Register variable[2]: Local variable */
4652 variable[2] = param1;
4653 /* Register variable[3]: Local variable */
4654 variable[3] = param2;
4655 /* Register variable[4]: Local variable */
4656 variable[4] = param3;
4657 /* Register variable[5]: Method return value and escape marker */
4658 /* Register variable[6]: Local variable */
4659 /* Register variable[7]: Result */
4660 variable[7] = CALL_vararg___MMSignature___vararg_rank( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::vararg_rank*/;
4661 variable[6] = variable[7];
4662 /* Register variable[7]: Local variable */
4663 /* Register variable[8]: Result */
4664 variable[8] = CALL_static_type___MMSignature___arity( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::arity*/;
4665 variable[7] = variable[8];
4666 /* Register variable[8]: Local variable */
4667 /*variable[8] is variable raw_arity*/
4668 /* Register variable[9]: Result */
4669 variable[9] = TAG_Bool(( variable[4] /*raw_args*/ == NIT_NULL /*null*/) || (( variable[4] /*raw_args*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*raw_args*/)( variable[4] /*raw_args*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/)));
4670 if (UNTAG_Bool(variable[9])) { /*if*/
4671 variable[8] = TAG_Int(0) /*raw_arity=*/;
4672 } else { /*if*/
4673 /* Register variable[9]: Result */
4674 variable[9] = CALL_abstract_collection___Collection___length( variable[4] /*raw_args*/)( variable[4] /*raw_args*/) /*AbstractArrayRead::length*/;
4675 variable[8] = variable[9] /*raw_arity=*/;
4676 }
4677 /* Register variable[9]: Result */
4678 variable[9] = TAG_Bool(UNTAG_Int( variable[7] /*par_arity*/)>UNTAG_Int( variable[8] /*raw_arity*/));
4679 /* Ensure var variable[9]: Left 'or' operand*/
4680 if (!UNTAG_Bool(variable[9])) { /* or */
4681 /* Register variable[9]: Result */
4682 variable[9] = TAG_Bool(( variable[7] /*par_arity*/)!=( variable[8] /*raw_arity*/));
4683 /* Ensure var variable[9]: Left 'and' operand*/
4684 if (UNTAG_Bool(variable[9])) { /* and */
4685 /* Register variable[9]: Result */
4686 variable[9] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
4687 /* Register variable[9]: Result */
4688 variable[9] = TAG_Bool(( variable[6] /*par_vararg*/)==(variable[9]));
4689 }
4690 /* Register variable[9]: Result */
4691 }
4692 /* Register variable[9]: Result */
4693 if (UNTAG_Bool(variable[9])) { /*if*/
4694 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4695 /* Register variable[10]: Once String constant */
4696 if (once_value_181 != NIT_NULL) variable[10] = once_value_181;
4697 else {
4698 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: '"), TAG_Int(8)) /*new String*/;
4699 once_value_181 = variable[10];
4700 }
4701 /* Register variable[10]: Result */
4702 /* Ensure var variable[10]: super-string element*/
4703 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4704 variable[10] = variable[3] /*name*/ /* Ensure var: super-string element*/;
4705 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4706 /* Register variable[10]: Once String constant */
4707 if (once_value_182 != NIT_NULL) variable[10] = once_value_182;
4708 else {
4709 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("' arity missmatch."), TAG_Int(18)) /*new String*/;
4710 once_value_182 = variable[10];
4711 }
4712 /* Register variable[10]: Result */
4713 /* Ensure var variable[10]: super-string element*/
4714 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4715 /* Register variable[9]: Result */
4716 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
4717 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
4718 variable[5] = NIT_NULL /*null*/;
4719 goto return_label180;
4720 }
4721 /* Register variable[9]: Local variable */
4722 variable[9] = TAG_Int(0);
4723 /* Register variable[10]: Local variable */
4724 /* Register variable[11]: Result */
4725 variable[11] = NEW_Array_array___Array___init() /*new Array[PExpr]*/;
4726 variable[10] = variable[11];
4727 /* Register variable[11]: Result */
4728 variable[11] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[7] /*par_arity*/) /*new Range[Int]*/;
4729 /* Register variable[11]: For iterator */
4730 variable[11] = CALL_abstract_collection___Collection___iterator(variable[11])(variable[11]) /*Range::iterator*/;
4731 while (true) { /*for*/
4732 /* Register variable[12]: For 'is_ok' result */
4733 variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*Iterator::is_ok*/;
4734 if (!UNTAG_Bool(variable[12])) break; /*for*/
4735 variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*Iterator::item*/ /* Ensure var: For item*/;
4736 /* Register variable[13]: Local variable */
4737 variable[13] = variable[12];
4738 /* Register variable[14]: Local variable */
4739 /*variable[14] is variable a*/
4740 /* Register variable[15]: Local variable */
4741 /* Register variable[16]: Result */
4742 variable[16] = CALL_static_type___MMSignature_____bra( variable[2] /*psig*/)( variable[2] /*psig*/, variable[13] /*par_idx*/) /*MMSignature::[]*/;
4743 variable[15] = variable[16];
4744 /* Register variable[16]: Result */
4745 variable[16] = TAG_Bool(( variable[13] /*par_idx*/)==( variable[6] /*par_vararg*/));
4746 if (UNTAG_Bool(variable[16])) { /*if*/
4747 /* Register variable[16]: Local variable */
4748 /* Register variable[17]: Result */
4749 variable[17] = NEW_Array_array___Array___init() /*new Array[PExpr]*/;
4750 variable[16] = variable[17];
4751 /* Register variable[17]: Result */
4752 variable[17] = TAG_Int(UNTAG_Int( variable[8] /*raw_arity*/)-UNTAG_Int( variable[7] /*par_arity*/));
4753 /* Register variable[17]: Result */
4754 variable[17] = NEW_Range_range___Range___init( TAG_Int(0), variable[17]) /*new Range[Int]*/;
4755 /* Register variable[17]: For iterator */
4756 variable[17] = CALL_abstract_collection___Collection___iterator(variable[17])(variable[17]) /*Range::iterator*/;
4757 while (true) { /*for*/
4758 /* Register variable[18]: For 'is_ok' result */
4759 variable[18] = CALL_abstract_collection___Iterator___is_ok(variable[17])(variable[17]) /*Iterator::is_ok*/;
4760 if (!UNTAG_Bool(variable[18])) break; /*for*/
4761 variable[18] = CALL_abstract_collection___Iterator___item(variable[17])(variable[17]) /*Iterator::item*/ /* Ensure var: For item*/;
4762 /* Register variable[19]: Local variable */
4763 variable[19] = variable[18];
4764 /* Register variable[20]: Local variable */
4765 variable[20] = variable[4] /*raw_args*/;
4766 /* Register variable[21]: Local variable */
4767 variable[21] = variable[9] /*arg_idx*/;
4768 /* Register variable[22]: Method return value and escape marker */
4769 /* Register variable[23]: Result */
4770 variable[23] = TAG_Bool(UNTAG_Int( variable[21] /*index*/)>=UNTAG_Int( TAG_Int(0)));
4771 /* Ensure var variable[23]: Left 'and' operand*/
4772 if (UNTAG_Bool(variable[23])) { /* and */
4773 /* Register variable[23]: Result */
4774 variable[23] = ATTR_array___AbstractArrayRead____length(variable[20]) /*AbstractArrayRead::_length*/;
4775 /* Register variable[23]: Result */
4776 variable[23] = TAG_Bool(UNTAG_Int( variable[21] /*index*/)<UNTAG_Int(variable[23]));
4777 }
4778 /* Register variable[23]: Result */
4779 if (!UNTAG_Bool(variable[23])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
4780 /* Register variable[23]: Result */
4781 variable[23] = ATTR_array___Array____items(variable[20]) /*Array::_items*/;
4782 /* Register variable[23]: Result */
4783 variable[23] = UNBOX_NativeArray(variable[23])[UNTAG_Int( variable[21] /*index*/)];
4784 variable[22] = variable[23];
4785 goto return_label185;
4786 return_label185: while(false);
4787 /* Register variable[20]: Result */
4788 variable[20] = variable[22];
4789 variable[14] = variable[20] /*a=*/;
4790 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[14] /*a*/, variable[15] /*par_type*/) /*AbsSyntaxVisitor::check_conform_expr*/;
4791 CALL_abstract_collection___SimpleCollection___add( variable[16] /*star*/)( variable[16] /*star*/, variable[14] /*a*/) /*AbstractArray::add*/;
4792 /* Register variable[20]: Result */
4793 variable[20] = TAG_Int(UNTAG_Int( variable[9] /*arg_idx*/)+UNTAG_Int( TAG_Int(1)));
4794 variable[9] = variable[20] /*arg_idx=*/;
4795 continue_184: while(0);
4796 CALL_abstract_collection___Iterator___next(variable[17])(variable[17]) /*Iterator::next*/;
4797 }
4798 break_184: while(0);
4799 /* Register variable[17]: Local variable */
4800 /* Register variable[18]: Result */
4801 variable[18] = NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr( variable[16] /*star*/) /*new AArrayExpr*/;
4802 variable[17] = variable[18];
4803 CALL_typing___AArrayExpr___do_typing( variable[17] /*aa*/)( variable[17] /*aa*/, variable[1] /*v*/, variable[15] /*par_type*/) /*AArrayExpr::do_typing*/;
4804 variable[14] = variable[17] /*aa*/ /*a=*/;
4805 } else { /*if*/
4806 /* Register variable[16]: Local variable */
4807 variable[16] = variable[4] /*raw_args*/;
4808 /* Register variable[17]: Local variable */
4809 variable[17] = variable[9] /*arg_idx*/;
4810 /* Register variable[18]: Method return value and escape marker */
4811 /* Register variable[19]: Result */
4812 variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)>=UNTAG_Int( TAG_Int(0)));
4813 /* Ensure var variable[19]: Left 'and' operand*/
4814 if (UNTAG_Bool(variable[19])) { /* and */
4815 /* Register variable[19]: Result */
4816 variable[19] = ATTR_array___AbstractArrayRead____length(variable[16]) /*AbstractArrayRead::_length*/;
4817 /* Register variable[19]: Result */
4818 variable[19] = TAG_Bool(UNTAG_Int( variable[17] /*index*/)<UNTAG_Int(variable[19]));
4819 }
4820 /* Register variable[19]: Result */
4821 if (!UNTAG_Bool(variable[19])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
4822 /* Register variable[19]: Result */
4823 variable[19] = ATTR_array___Array____items(variable[16]) /*Array::_items*/;
4824 /* Register variable[19]: Result */
4825 variable[19] = UNBOX_NativeArray(variable[19])[UNTAG_Int( variable[17] /*index*/)];
4826 variable[18] = variable[19];
4827 goto return_label186;
4828 return_label186: while(false);
4829 /* Register variable[16]: Result */
4830 variable[16] = variable[18];
4831 variable[14] = variable[16] /*a=*/;
4832 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[14] /*a*/, variable[15] /*par_type*/) /*AbsSyntaxVisitor::check_conform_expr*/;
4833 /* Register variable[16]: Result */
4834 variable[16] = TAG_Int(UNTAG_Int( variable[9] /*arg_idx*/)+UNTAG_Int( TAG_Int(1)));
4835 variable[9] = variable[16] /*arg_idx=*/;
4836 }
4837 CALL_abstract_collection___SimpleCollection___add( variable[10] /*args*/)( variable[10] /*args*/, variable[14] /*a*/) /*AbstractArray::add*/;
4838 continue_183: while(0);
4839 CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*Iterator::next*/;
4840 }
4841 break_183: while(0);
4842 variable[5] = variable[10] /*args*/;
4843 goto return_label180;
4844 return_label180: while(false);
4845 tracehead = trace.prev;
4846 return variable[5];
4847 }
4848 val_t typing___AAbsAbsSendExpr___process_closures(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
4849 struct trace_t trace = {NULL, NULL, 1062, LOCATE_typing___AAbsAbsSendExpr___process_closures};
4850 static val_t once_value_189 = NIT_NULL; /* Once value for string variable[10]*/
4851 static val_t once_value_190 = NIT_NULL; /* Once value for string variable[10]*/
4852 static val_t once_value_191 = NIT_NULL; /* Once value for string variable[10]*/
4853 static val_t once_value_192 = NIT_NULL; /* Once value for string variable[10]*/
4854 static val_t once_value_193 = NIT_NULL; /* Once value for string variable[10]*/
4855 static val_t once_value_194 = NIT_NULL; /* Once value for string variable[10]*/
4856 static val_t once_value_198 = NIT_NULL; /* Once value for string variable[10]*/
4857 static val_t once_value_199 = NIT_NULL; /* Once value for string variable[10]*/
4858 static val_t once_value_200 = NIT_NULL; /* Once value for string variable[10]*/
4859 val_t variable[19];
4860 struct WBT_ **closurevariable = NULL;
4861 trace.prev = tracehead; tracehead = &trace;
4862 trace.file = LOCATE_typing;
4863 /* Register variable[0]: Local variable */
4864 variable[0] = self;
4865 /* Register variable[1]: Local variable */
4866 variable[1] = param0;
4867 /* Register variable[2]: Local variable */
4868 variable[2] = param1;
4869 /* Register variable[3]: Local variable */
4870 variable[3] = param2;
4871 /* Register variable[4]: Local variable */
4872 variable[4] = param3;
4873 /* Register variable[5]: Method return value and escape marker */
4874 /* Register variable[6]: Local variable */
4875 /* Register variable[7]: Result */
4876 variable[7] = CALL_static_type___MMSignature___return_type( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::return_type*/;
4877 variable[6] = variable[7];
4878 /* Register variable[7]: Local variable */
4879 /* Register variable[8]: Result */
4880 variable[8] = CALL_static_type___MMSignature___closures( variable[2] /*psig*/)( variable[2] /*psig*/) /*MMSignature::closures*/;
4881 variable[7] = variable[8];
4882 /* Register variable[8]: Local variable */
4883 variable[8] = TAG_Int(0);
4884 /* Register variable[9]: For iterator */
4885 variable[9] = CALL_abstract_collection___Collection___iterator( variable[7] /*cs*/)( variable[7] /*cs*/) /*AbstractArrayRead::iterator*/;
4886 while (true) { /*for*/
4887 /* Register variable[10]: For 'is_ok' result */
4888 variable[10] = CALL_abstract_collection___Iterator___is_ok(variable[9])(variable[9]) /*ArrayIterator::is_ok*/;
4889 if (!UNTAG_Bool(variable[10])) break; /*for*/
4890 variable[10] = CALL_abstract_collection___Iterator___item(variable[9])(variable[9]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
4891 /* Register variable[11]: Local variable */
4892 variable[11] = variable[10];
4893 /* Register variable[12]: Result */
4894 variable[12] = CALL_static_type___MMClosure___is_optional( variable[11] /*c*/)( variable[11] /*c*/) /*MMClosure::is_optional*/;
4895 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[12])))) { /*if*/
4896 variable[8] = TAG_Int(UNTAG_Int(variable[8])+UNTAG_Int( TAG_Int(1))) /*min_arity*/;
4897 }
4898 continue_188: while(0);
4899 CALL_abstract_collection___Iterator___next(variable[9])(variable[9]) /*ArrayIterator::next*/;
4900 }
4901 break_188: while(0);
4902 /* Register variable[9]: Result */
4903 variable[9] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*cd*/ == NIT_NULL /*null*/) || (( variable[4] /*cd*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*cd*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cd*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*cd*/)( variable[4] /*cd*/, NIT_NULL /*null*/) /*Object::==*/)))))));
4904 if (UNTAG_Bool(variable[9])) { /*if*/
4905 /* Register variable[9]: Result */
4906 variable[9] = CALL_abstract_collection___Collection___length( variable[7] /*cs*/)( variable[7] /*cs*/) /*AbstractArrayRead::length*/;
4907 /* Register variable[9]: Result */
4908 variable[9] = TAG_Bool((variable[9])==( TAG_Int(0)));
4909 if (UNTAG_Bool(variable[9])) { /*if*/
4910 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4911 /* Register variable[10]: Once String constant */
4912 if (once_value_189 != NIT_NULL) variable[10] = once_value_189;
4913 else {
4914 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
4915 once_value_189 = variable[10];
4916 }
4917 /* Register variable[10]: Result */
4918 /* Ensure var variable[10]: super-string element*/
4919 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4920 variable[10] = variable[3] /*name*/ /* Ensure var: super-string element*/;
4921 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4922 /* Register variable[10]: Once String constant */
4923 if (once_value_190 != NIT_NULL) variable[10] = once_value_190;
4924 else {
4925 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" does not require blocks."), TAG_Int(25)) /*new String*/;
4926 once_value_190 = variable[10];
4927 }
4928 /* Register variable[10]: Result */
4929 /* Ensure var variable[10]: super-string element*/
4930 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4931 /* Register variable[9]: Result */
4932 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
4933 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
4934 } else { /*if*/
4935 /* Register variable[9]: Result */
4936 variable[9] = CALL_abstract_collection___Collection___length( variable[4] /*cd*/)( variable[4] /*cd*/) /*AbstractArrayRead::length*/;
4937 /* Register variable[10]: Result */
4938 variable[10] = CALL_abstract_collection___Collection___length( variable[7] /*cs*/)( variable[7] /*cs*/) /*AbstractArrayRead::length*/;
4939 /* Register variable[9]: Result */
4940 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int(variable[10]));
4941 /* Ensure var variable[9]: Left 'or' operand*/
4942 if (!UNTAG_Bool(variable[9])) { /* or */
4943 /* Register variable[9]: Result */
4944 variable[9] = CALL_abstract_collection___Collection___length( variable[4] /*cd*/)( variable[4] /*cd*/) /*AbstractArrayRead::length*/;
4945 /* Register variable[9]: Result */
4946 variable[9] = TAG_Bool(UNTAG_Int(variable[9])<UNTAG_Int( variable[8] /*min_arity*/));
4947 }
4948 /* Register variable[9]: Result */
4949 if (UNTAG_Bool(variable[9])) { /*if*/
4950 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
4951 /* Register variable[10]: Once String constant */
4952 if (once_value_191 != NIT_NULL) variable[10] = once_value_191;
4953 else {
4954 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
4955 once_value_191 = variable[10];
4956 }
4957 /* Register variable[10]: Result */
4958 /* Ensure var variable[10]: super-string element*/
4959 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4960 variable[10] = variable[3] /*name*/ /* Ensure var: super-string element*/;
4961 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4962 /* Register variable[10]: Once String constant */
4963 if (once_value_192 != NIT_NULL) variable[10] = once_value_192;
4964 else {
4965 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" requires "), TAG_Int(10)) /*new String*/;
4966 once_value_192 = variable[10];
4967 }
4968 /* Register variable[10]: Result */
4969 /* Ensure var variable[10]: super-string element*/
4970 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4971 /* Register variable[10]: Result */
4972 variable[10] = CALL_abstract_collection___Collection___length( variable[7] /*cs*/)( variable[7] /*cs*/) /*AbstractArrayRead::length*/;
4973 /* Ensure var variable[10]: super-string element*/
4974 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4975 /* Register variable[10]: Once String constant */
4976 if (once_value_193 != NIT_NULL) variable[10] = once_value_193;
4977 else {
4978 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" blocks, "), TAG_Int(9)) /*new String*/;
4979 once_value_193 = variable[10];
4980 }
4981 /* Register variable[10]: Result */
4982 /* Ensure var variable[10]: super-string element*/
4983 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4984 /* Register variable[10]: Result */
4985 variable[10] = CALL_abstract_collection___Collection___length( variable[4] /*cd*/)( variable[4] /*cd*/) /*AbstractArrayRead::length*/;
4986 /* Ensure var variable[10]: super-string element*/
4987 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
4988 /* Register variable[10]: Once String constant */
4989 if (once_value_194 != NIT_NULL) variable[10] = once_value_194;
4990 else {
4991 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" found."), TAG_Int(7)) /*new String*/;
4992 once_value_194 = variable[10];
4993 }
4994 /* Register variable[10]: Result */
4995 /* Ensure var variable[10]: super-string element*/
4996 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
4997 /* Register variable[9]: Result */
4998 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
4999 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
5000 } else { /*if*/
5001 /* Register variable[9]: Local variable */
5002 variable[9] = NIT_NULL /*null*/;
5003 /* Register variable[10]: Result */
5004 variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[6] /*t*/ == NIT_NULL /*null*/) || (( variable[6] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*t*/)( variable[6] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))))));
5005 if (UNTAG_Bool(variable[10])) { /*if*/
5006 /* Register variable[10]: Result */
5007 variable[10] = NEW_Array_array___Array___init() /*new Array[ABreakExpr]*/;
5008 variable[9] = variable[10] /*break_list=*/;
5009 }
5010 /* Register variable[10]: Result */
5011 variable[10] = CALL_abstract_collection___Collection___length( variable[4] /*cd*/)( variable[4] /*cd*/) /*AbstractArrayRead::length*/;
5012 /* Register variable[10]: Result */
5013 variable[10] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[10]) /*new Range[Int]*/;
5014 /* Register variable[10]: For iterator */
5015 variable[10] = CALL_abstract_collection___Collection___iterator(variable[10])(variable[10]) /*Range::iterator*/;
5016 while (true) { /*for*/
5017 /* Register variable[11]: For 'is_ok' result */
5018 variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*Iterator::is_ok*/;
5019 if (!UNTAG_Bool(variable[11])) break; /*for*/
5020 variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*Iterator::item*/ /* Ensure var: For item*/;
5021 /* Register variable[12]: Local variable */
5022 variable[12] = variable[11];
5023 /* Register variable[13]: Local variable */
5024 /* Register variable[14]: Local variable */
5025 variable[14] = variable[7] /*cs*/;
5026 /* Register variable[15]: Local variable */
5027 variable[15] = variable[12] /*i*/;
5028 /* Register variable[16]: Method return value and escape marker */
5029 /* Register variable[17]: Result */
5030 variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)>=UNTAG_Int( TAG_Int(0)));
5031 /* Ensure var variable[17]: Left 'and' operand*/
5032 if (UNTAG_Bool(variable[17])) { /* and */
5033 /* Register variable[17]: Result */
5034 variable[17] = ATTR_array___AbstractArrayRead____length(variable[14]) /*AbstractArrayRead::_length*/;
5035 /* Register variable[17]: Result */
5036 variable[17] = TAG_Bool(UNTAG_Int( variable[15] /*index*/)<UNTAG_Int(variable[17]));
5037 }
5038 /* Register variable[17]: Result */
5039 if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
5040 /* Register variable[17]: Result */
5041 variable[17] = ATTR_array___Array____items(variable[14]) /*Array::_items*/;
5042 /* Register variable[17]: Result */
5043 variable[17] = UNBOX_NativeArray(variable[17])[UNTAG_Int( variable[15] /*index*/)];
5044 variable[16] = variable[17];
5045 goto return_label196;
5046 return_label196: while(false);
5047 /* Register variable[14]: Result */
5048 variable[14] = variable[16];
5049 variable[13] = variable[14];
5050 /* Register variable[14]: Local variable */
5051 /* Register variable[15]: Local variable */
5052 variable[15] = variable[4] /*cd*/;
5053 /* Register variable[16]: Local variable */
5054 variable[16] = variable[12] /*i*/;
5055 /* Register variable[17]: Method return value and escape marker */
5056 /* Register variable[18]: Result */
5057 variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)>=UNTAG_Int( TAG_Int(0)));
5058 /* Ensure var variable[18]: Left 'and' operand*/
5059 if (UNTAG_Bool(variable[18])) { /* and */
5060 /* Register variable[18]: Result */
5061 variable[18] = ATTR_array___AbstractArrayRead____length(variable[15]) /*AbstractArrayRead::_length*/;
5062 /* Register variable[18]: Result */
5063 variable[18] = TAG_Bool(UNTAG_Int( variable[16] /*index*/)<UNTAG_Int(variable[18]));
5064 }
5065 /* Register variable[18]: Result */
5066 if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_typing, 234); nit_exit(1);}
5067 /* Register variable[18]: Result */
5068 variable[18] = ATTR_array___Array____items(variable[15]) /*Array::_items*/;
5069 /* Register variable[18]: Result */
5070 variable[18] = UNBOX_NativeArray(variable[18])[UNTAG_Int( variable[16] /*index*/)];
5071 variable[17] = variable[18];
5072 goto return_label197;
5073 return_label197: while(false);
5074 /* Register variable[15]: Result */
5075 variable[15] = variable[17];
5076 variable[14] = variable[15];
5077 /* Register variable[15]: Local variable */
5078 /* Register variable[16]: Result */
5079 variable[16] = NEW_EscapableClosure_escape___EscapableClosure___init( variable[14] /*cdi*/, variable[13] /*csi*/, variable[9] /*break_list*/) /*new EscapableClosure*/;
5080 variable[15] = variable[16];
5081 /* Register variable[16]: Result */
5082 variable[16] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
5083 CALL_escape___EscapableContext___push(variable[16])(variable[16], variable[15] /*esc*/) /*EscapableContext::push*/;
5084 CALL_typing___PClosureDef___accept_typing2( variable[14] /*cdi*/)( variable[14] /*cdi*/, variable[1] /*v*/, variable[15] /*esc*/) /*PClosureDef::accept_typing2*/;
5085 /* Register variable[16]: Result */
5086 variable[16] = CALL_typing___TypingVisitor___escapable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::escapable_ctx*/;
5087 CALL_escape___EscapableContext___pop(variable[16])(variable[16]) /*EscapableContext::pop*/;
5088 continue_195: while(0);
5089 CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*Iterator::next*/;
5090 }
5091 break_195: while(0);
5092 /* Register variable[10]: Result */
5093 variable[10] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[9] /*break_list*/ == NIT_NULL /*null*/) || (( variable[9] /*break_list*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*break_list*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*break_list*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*break_list*/)( variable[9] /*break_list*/, NIT_NULL /*null*/) /*Object::==*/)))))));
5094 if (UNTAG_Bool(variable[10])) { /*if*/
5095 /* Register variable[10]: Result */
5096 variable[10] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr( variable[1] /*v*/)( variable[1] /*v*/, variable[6] /*t*/, variable[9] /*break_list*/) /*AbsSyntaxVisitor::check_conform_multiexpr*/;
5097 variable[6] = variable[10] /*t=*/;
5098 }
5099 }
5100 }
5101 } else { /*if*/
5102 /* Register variable[9]: Result */
5103 variable[9] = TAG_Bool(( variable[8] /*min_arity*/)!=( TAG_Int(0)));
5104 if (UNTAG_Bool(variable[9])) { /*if*/
5105 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5106 /* Register variable[10]: Once String constant */
5107 if (once_value_198 != NIT_NULL) variable[10] = once_value_198;
5108 else {
5109 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
5110 once_value_198 = variable[10];
5111 }
5112 /* Register variable[10]: Result */
5113 /* Ensure var variable[10]: super-string element*/
5114 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5115 variable[10] = variable[3] /*name*/ /* Ensure var: super-string element*/;
5116 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
5117 /* Register variable[10]: Once String constant */
5118 if (once_value_199 != NIT_NULL) variable[10] = once_value_199;
5119 else {
5120 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" requires "), TAG_Int(10)) /*new String*/;
5121 once_value_199 = variable[10];
5122 }
5123 /* Register variable[10]: Result */
5124 /* Ensure var variable[10]: super-string element*/
5125 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5126 /* Register variable[10]: Result */
5127 variable[10] = CALL_abstract_collection___Collection___length( variable[7] /*cs*/)( variable[7] /*cs*/) /*AbstractArrayRead::length*/;
5128 /* Ensure var variable[10]: super-string element*/
5129 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
5130 /* Register variable[10]: Once String constant */
5131 if (once_value_200 != NIT_NULL) variable[10] = once_value_200;
5132 else {
5133 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(" blocks."), TAG_Int(8)) /*new String*/;
5134 once_value_200 = variable[10];
5135 }
5136 /* Register variable[10]: Result */
5137 /* Ensure var variable[10]: super-string element*/
5138 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5139 /* Register variable[9]: Result */
5140 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
5141 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
5142 }
5143 }
5144 variable[5] = variable[6] /*t*/;
5145 goto return_label187;
5146 return_label187: while(false);
5147 tracehead = trace.prev;
5148 return variable[5];
5149 }
5150 void typing___AAbsSendExpr___do_typing(val_t self, val_t param0, val_t param1, val_t param2, val_t param3, val_t param4, val_t param5, val_t param6) {
5151 struct trace_t trace = {NULL, NULL, 1105, LOCATE_typing___AAbsSendExpr___do_typing};
5152 val_t variable[14];
5153 struct WBT_ **closurevariable = NULL;
5154 trace.prev = tracehead; tracehead = &trace;
5155 trace.file = LOCATE_typing;
5156 /* Register variable[0]: Local variable */
5157 variable[0] = self;
5158 /* Register variable[1]: Local variable */
5159 variable[1] = param0;
5160 /* Register variable[2]: Local variable */
5161 variable[2] = param1;
5162 /* Register variable[3]: Local variable */
5163 variable[3] = param2;
5164 /* Register variable[4]: Local variable */
5165 variable[4] = param3;
5166 /* Register variable[5]: Local variable */
5167 variable[5] = param4;
5168 /* Register variable[6]: Local variable */
5169 variable[6] = param5;
5170 /* Register variable[7]: Local variable */
5171 variable[7] = param6;
5172 /* Register variable[8]: Method return value and escape marker */
5173 /* Register variable[9]: Local variable */
5174 /* Register variable[10]: Result */
5175 variable[10] = CALL_typing___AAbsSendExpr___get_property(variable[0])(variable[0], variable[1] /*v*/, variable[2] /*type_recv*/, variable[3] /*is_implicit_self*/, variable[5] /*name*/) /*AAbsSendExpr::get_property*/;
5176 variable[9] = variable[10];
5177 /* Register variable[10]: Result */
5178 variable[10] = TAG_Bool(( variable[9] /*prop*/ == NIT_NULL /*null*/) || (( variable[9] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*prop*/)( variable[9] /*prop*/, NIT_NULL /*null*/) /*Object::==*/)))));
5179 if (UNTAG_Bool(variable[10])) { /*if*/
5180 goto return_label201;
5181 }
5182 /* Register variable[10]: Local variable */
5183 /* Register variable[11]: Result */
5184 variable[11] = CALL_typing___AAbsSendExpr___get_signature(variable[0])(variable[0], variable[1] /*v*/, variable[2] /*type_recv*/, variable[9] /*prop*/, variable[4] /*recv_is_self*/) /*AAbsSendExpr::get_signature*/;
5185 variable[10] = variable[11];
5186 /* Register variable[11]: Result */
5187 variable[11] = TAG_Bool(( variable[10] /*sig*/ == NIT_NULL /*null*/) || (( variable[10] /*sig*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*sig*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*sig*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*sig*/)( variable[10] /*sig*/, NIT_NULL /*null*/) /*Object::==*/)))));
5188 if (UNTAG_Bool(variable[11])) { /*if*/
5189 goto return_label201;
5190 }
5191 /* Register variable[11]: Local variable */
5192 /* Register variable[12]: Result */
5193 variable[12] = CALL_abstractmetamodel___MMLocalProperty___name( variable[9] /*prop*/)( variable[9] /*prop*/) /*MMLocalProperty::name*/;
5194 /* Register variable[12]: Result */
5195 variable[12] = CALL_typing___AAbsAbsSendExpr___process_signature(variable[0])(variable[0], variable[1] /*v*/, variable[10] /*sig*/, variable[12], variable[6] /*raw_args*/) /*AAbsAbsSendExpr::process_signature*/;
5196 variable[11] = variable[12];
5197 /* Register variable[12]: Result */
5198 variable[12] = TAG_Bool(( variable[11] /*args*/ == NIT_NULL /*null*/) || (( variable[11] /*args*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[11] /*args*/)( variable[11] /*args*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/)));
5199 if (UNTAG_Bool(variable[12])) { /*if*/
5200 goto return_label201;
5201 }
5202 /* Register variable[12]: Local variable */
5203 /* Register variable[13]: Result */
5204 variable[13] = CALL_abstractmetamodel___MMLocalProperty___name( variable[9] /*prop*/)( variable[9] /*prop*/) /*MMLocalProperty::name*/;
5205 /* Register variable[13]: Result */
5206 variable[13] = CALL_typing___AAbsAbsSendExpr___process_closures(variable[0])(variable[0], variable[1] /*v*/, variable[10] /*sig*/, variable[13], variable[7] /*closure_defs*/) /*AAbsAbsSendExpr::process_closures*/;
5207 variable[12] = variable[13];
5208 /* Register variable[13]: Result */
5209 variable[13] = TAG_Bool(( variable[12] /*rtype*/ == NIT_NULL /*null*/) || (( variable[12] /*rtype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[12] /*rtype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[12] /*rtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[12] /*rtype*/)( variable[12] /*rtype*/, NIT_NULL /*null*/) /*Object::==*/)))));
5210 /* Ensure var variable[13]: Left 'and' operand*/
5211 if (UNTAG_Bool(variable[13])) { /* and */
5212 /* Register variable[13]: Result */
5213 variable[13] = CALL_static_type___MMSignature___return_type( variable[10] /*sig*/)( variable[10] /*sig*/) /*MMSignature::return_type*/;
5214 /* Register variable[13]: Result */
5215 variable[13] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[13] == NIT_NULL /*null*/) || ((variable[13] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[13])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[13], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[13])(variable[13], NIT_NULL /*null*/) /*Object::==*/)))))));
5216 }
5217 /* Register variable[13]: Result */
5218 if (UNTAG_Bool(variable[13])) { /*if*/
5219 goto return_label201;
5220 }
5221 ATTR_typing___AAbsSendExpr____prop(variable[0]) /*AAbsSendExpr::_prop*/ = variable[9] /*prop*/;
5222 ATTR_typing___AAbsAbsSendExpr____prop_signature(variable[0]) /*AAbsAbsSendExpr::_prop_signature*/ = variable[10] /*sig*/;
5223 ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[11] /*args*/;
5224 ATTR_typing___AAbsSendExpr____return_type(variable[0]) /*AAbsSendExpr::_return_type*/ = variable[12] /*rtype*/;
5225 return_label201: while(false);
5226 tracehead = trace.prev;
5227 return;
5228 }
5229 val_t typing___AAbsSendExpr___get_property(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
5230 struct trace_t trace = {NULL, NULL, 1122, LOCATE_typing___AAbsSendExpr___get_property};
5231 static val_t once_value_203 = NIT_NULL; /* Once value for string variable[10]*/
5232 static val_t once_value_204 = NIT_NULL; /* Once value for string variable[10]*/
5233 static val_t once_value_205 = NIT_NULL; /* Once value for string variable[10]*/
5234 static val_t once_value_206 = NIT_NULL; /* Once value for string variable[10]*/
5235 static val_t once_value_207 = NIT_NULL; /* Once value for string variable[9]*/
5236 static val_t once_value_208 = NIT_NULL; /* Once value for string variable[9]*/
5237 static val_t once_value_209 = NIT_NULL; /* Once value for string variable[9]*/
5238 static val_t once_value_210 = NIT_NULL; /* Once value for string variable[9]*/
5239 static val_t once_value_211 = NIT_NULL; /* Once value for string variable[9]*/
5240 static val_t once_value_212 = NIT_NULL; /* Once value for string variable[9]*/
5241 val_t variable[12];
5242 struct WBT_ **closurevariable = NULL;
5243 trace.prev = tracehead; tracehead = &trace;
5244 trace.file = LOCATE_typing;
5245 /* Register variable[0]: Local variable */
5246 variable[0] = self;
5247 /* Register variable[1]: Local variable */
5248 variable[1] = param0;
5249 /* Register variable[2]: Local variable */
5250 variable[2] = param1;
5251 /* Register variable[3]: Local variable */
5252 variable[3] = param2;
5253 /* Register variable[4]: Local variable */
5254 variable[4] = param3;
5255 /* Register variable[5]: Method return value and escape marker */
5256 /* Register variable[6]: Result */
5257 variable[6] = TAG_Bool(( variable[2] /*type_recv*/ == NIT_NULL /*null*/) || (( variable[2] /*type_recv*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[2] /*type_recv*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[2] /*type_recv*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[2] /*type_recv*/)( variable[2] /*type_recv*/, NIT_NULL /*null*/) /*Object::==*/)))));
5258 if (UNTAG_Bool(variable[6])) { /*if*/
5259 variable[5] = NIT_NULL /*null*/;
5260 goto return_label202;
5261 }
5262 /* Register variable[6]: Local variable */
5263 /* Register variable[7]: Result */
5264 variable[7] = CALL_static_type___MMType___local_class( variable[2] /*type_recv*/)( variable[2] /*type_recv*/) /*MMType::local_class*/;
5265 variable[6] = variable[7];
5266 /* Register variable[7]: Local variable */
5267 variable[7] = NIT_NULL /*null*/;
5268 /* Register variable[8]: Result */
5269 variable[8] = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name( variable[6] /*lc*/)( variable[6] /*lc*/, variable[4] /*name*/) /*MMLocalClass::has_global_property_by_name*/;
5270 if (UNTAG_Bool(variable[8])) { /*if*/
5271 /* Register variable[8]: Result */
5272 variable[8] = CALL_abstractmetamodel___MMLocalClass___select_method( variable[6] /*lc*/)( variable[6] /*lc*/, variable[4] /*name*/) /*MMLocalClass::select_method*/;
5273 variable[7] = variable[8] /*prop=*/;
5274 }
5275 /* Register variable[8]: Result */
5276 variable[8] = TAG_Bool(( variable[7] /*prop*/ == NIT_NULL /*null*/) || (( variable[7] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*prop*/)( variable[7] /*prop*/, NIT_NULL /*null*/) /*Object::==*/)))));
5277 /* Ensure var variable[8]: Left 'and' operand*/
5278 if (UNTAG_Bool(variable[8])) { /* and */
5279 /* Register variable[8]: Result */
5280 variable[8] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
5281 /* Register variable[8]: Result */
5282 variable[8] = CALL_abstractmetamodel___MMLocalProperty___global(variable[8])(variable[8]) /*MMLocalProperty::global*/;
5283 /* Register variable[8]: Result */
5284 variable[8] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[8])(variable[8]) /*MMGlobalProperty::is_init*/;
5285 }
5286 /* Register variable[8]: Result */
5287 if (UNTAG_Bool(variable[8])) { /*if*/
5288 /* Register variable[8]: Local variable */
5289 /* Register variable[9]: Result */
5290 variable[9] = CALL_static_type___MMType___local_class( variable[2] /*type_recv*/)( variable[2] /*type_recv*/) /*MMType::local_class*/;
5291 /* Register variable[9]: Result */
5292 variable[9] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(variable[9])(variable[9], variable[4] /*name*/) /*MMLocalClass::super_methods_named*/;
5293 variable[8] = variable[9];
5294 /* Register variable[9]: Result */
5295 variable[9] = CALL_abstract_collection___Collection___length( variable[8] /*props*/)( variable[8] /*props*/) /*AbstractArrayRead::length*/;
5296 /* Register variable[9]: Result */
5297 variable[9] = TAG_Bool(UNTAG_Int(variable[9])>UNTAG_Int( TAG_Int(1)));
5298 if (UNTAG_Bool(variable[9])) { /*if*/
5299 variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5300 /* Register variable[10]: Once String constant */
5301 if (once_value_203 != NIT_NULL) variable[10] = once_value_203;
5302 else {
5303 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("Error: Ambigous method name '"), TAG_Int(29)) /*new String*/;
5304 once_value_203 = variable[10];
5305 }
5306 /* Register variable[10]: Result */
5307 /* Ensure var variable[10]: super-string element*/
5308 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5309 variable[10] = variable[4] /*name*/ /* Ensure var: super-string element*/;
5310 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
5311 /* Register variable[10]: Once String constant */
5312 if (once_value_204 != NIT_NULL) variable[10] = once_value_204;
5313 else {
5314 variable[10] = NEW_String_string___String___with_native(BOX_NativeString("' for "), TAG_Int(6)) /*new String*/;
5315 once_value_204 = variable[10];
5316 }
5317 /* Register variable[10]: Result */
5318 /* Ensure var variable[10]: super-string element*/
5319 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5320 /* Register variable[10]: Once String constant */
5321 if (once_value_205 != NIT_NULL) variable[10] = once_value_205;
5322 else {
5323 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
5324 once_value_205 = variable[10];
5325 }
5326 /* Register variable[10]: Result */
5327 /* Register variable[10]: Result */
5328 variable[10] = CALL_string___Collection___join( variable[8] /*props*/)( variable[8] /*props*/, variable[10]) /*Collection::join*/;
5329 /* Ensure var variable[10]: super-string element*/
5330 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5331 /* Register variable[10]: Once String constant */
5332 if (once_value_206 != NIT_NULL) variable[10] = once_value_206;
5333 else {
5334 variable[10] = NEW_String_string___String___with_native(BOX_NativeString(". Use explicit designation."), TAG_Int(27)) /*new String*/;
5335 once_value_206 = variable[10];
5336 }
5337 /* Register variable[10]: Result */
5338 /* Ensure var variable[10]: super-string element*/
5339 CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
5340 /* Register variable[9]: Result */
5341 variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
5342 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[9]) /*AbsSyntaxVisitor::error*/;
5343 variable[5] = NIT_NULL /*null*/;
5344 goto return_label202;
5345 } else { /*if*/
5346 /* Register variable[9]: Result */
5347 variable[9] = CALL_abstract_collection___Collection___length( variable[8] /*props*/)( variable[8] /*props*/) /*AbstractArrayRead::length*/;
5348 /* Register variable[9]: Result */
5349 variable[9] = TAG_Bool((variable[9])==( TAG_Int(1)));
5350 if (UNTAG_Bool(variable[9])) { /*if*/
5351 /* Register variable[9]: Local variable */
5352 /* Register variable[10]: Result */
5353 variable[10] = CALL_static_type___MMType___local_class( variable[2] /*type_recv*/)( variable[2] /*type_recv*/) /*MMType::local_class*/;
5354 /* Register variable[11]: Result */
5355 variable[11] = CALL_abstract_collection___Collection___first( variable[8] /*props*/)( variable[8] /*props*/) /*IndexedCollectionRead::first*/;
5356 /* Register variable[11]: Result */
5357 variable[11] = CALL_abstractmetamodel___MMLocalProperty___global(variable[11])(variable[11]) /*MMLocalProperty::global*/;
5358 /* Register variable[10]: Result */
5359 variable[10] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[10])(variable[10], variable[11]) /*MMLocalClass::[]*/;
5360 variable[9] = variable[10];
5361 /* Register variable[10]: Result */
5362 variable[10] = TAG_Bool(( variable[9] /*p*/==NIT_NULL) || VAL_ISA( variable[9] /*p*/, COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5363 if (!UNTAG_Bool(variable[10])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_typing___AAbsSendExpr___get_property, LOCATE_typing, 1135); nit_exit(1);}
5364 variable[7] = variable[9] /*p*/ /*prop=*/;
5365 }
5366 }
5367 }
5368 /* Register variable[8]: Result */
5369 variable[8] = TAG_Bool(( variable[7] /*prop*/ == NIT_NULL /*null*/) || (( variable[7] /*prop*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*prop*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*prop*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*prop*/)( variable[7] /*prop*/, NIT_NULL /*null*/) /*Object::==*/)))));
5370 if (UNTAG_Bool(variable[8])) { /*if*/
5371 if (UNTAG_Bool( variable[3] /*is_implicit_self*/)) { /*if*/
5372 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5373 /* Register variable[9]: Once String constant */
5374 if (once_value_207 != NIT_NULL) variable[9] = once_value_207;
5375 else {
5376 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Method or variable '"), TAG_Int(27)) /*new String*/;
5377 once_value_207 = variable[9];
5378 }
5379 /* Register variable[9]: Result */
5380 /* Ensure var variable[9]: super-string element*/
5381 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5382 variable[9] = variable[4] /*name*/ /* Ensure var: super-string element*/;
5383 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
5384 /* Register variable[9]: Once String constant */
5385 if (once_value_208 != NIT_NULL) variable[9] = once_value_208;
5386 else {
5387 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("' unknown in "), TAG_Int(13)) /*new String*/;
5388 once_value_208 = variable[9];
5389 }
5390 /* Register variable[9]: Result */
5391 /* Ensure var variable[9]: super-string element*/
5392 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5393 variable[9] = variable[2] /*type_recv*/ /* Ensure var: super-string element*/;
5394 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
5395 /* Register variable[9]: Once String constant */
5396 if (once_value_209 != NIT_NULL) variable[9] = once_value_209;
5397 else {
5398 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
5399 once_value_209 = variable[9];
5400 }
5401 /* Register variable[9]: Result */
5402 /* Ensure var variable[9]: super-string element*/
5403 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5404 /* Register variable[8]: Result */
5405 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
5406 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
5407 } else { /*if*/
5408 variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5409 /* Register variable[9]: Once String constant */
5410 if (once_value_210 != NIT_NULL) variable[9] = once_value_210;
5411 else {
5412 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Error: Method '"), TAG_Int(15)) /*new String*/;
5413 once_value_210 = variable[9];
5414 }
5415 /* Register variable[9]: Result */
5416 /* Ensure var variable[9]: super-string element*/
5417 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5418 variable[9] = variable[4] /*name*/ /* Ensure var: super-string element*/;
5419 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
5420 /* Register variable[9]: Once String constant */
5421 if (once_value_211 != NIT_NULL) variable[9] = once_value_211;
5422 else {
5423 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("' doesn't exists in "), TAG_Int(20)) /*new String*/;
5424 once_value_211 = variable[9];
5425 }
5426 /* Register variable[9]: Result */
5427 /* Ensure var variable[9]: super-string element*/
5428 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5429 variable[9] = variable[2] /*type_recv*/ /* Ensure var: super-string element*/;
5430 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
5431 /* Register variable[9]: Once String constant */
5432 if (once_value_212 != NIT_NULL) variable[9] = once_value_212;
5433 else {
5434 variable[9] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
5435 once_value_212 = variable[9];
5436 }
5437 /* Register variable[9]: Result */
5438 /* Ensure var variable[9]: super-string element*/
5439 CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
5440 /* Register variable[8]: Result */
5441 variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
5442 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[8]) /*AbsSyntaxVisitor::error*/;
5443 }
5444 variable[5] = NIT_NULL /*null*/;
5445 goto return_label202;
5446 }
5447 variable[5] = variable[7] /*prop*/;
5448 goto return_label202;
5449 return_label202: while(false);
5450 tracehead = trace.prev;
5451 return variable[5];
5452 }
5453 val_t typing___AAbsSendExpr___get_signature(val_t self, val_t param0, val_t param1, val_t param2, val_t param3) {
5454 struct trace_t trace = {NULL, NULL, 1151, LOCATE_typing___AAbsSendExpr___get_signature};
5455 val_t variable[8];
5456 struct WBT_ **closurevariable = NULL;
5457 trace.prev = tracehead; tracehead = &trace;
5458 trace.file = LOCATE_typing;
5459 /* Register variable[0]: Local variable */
5460 variable[0] = self;
5461 /* Register variable[1]: Local variable */
5462 variable[1] = param0;
5463 /* Register variable[2]: Local variable */
5464 variable[2] = param1;
5465 /* Register variable[3]: Local variable */
5466 variable[3] = param2;
5467 /* Register variable[4]: Local variable */
5468 variable[4] = param3;
5469 /* Register variable[5]: Method return value and escape marker */
5470 /* Register variable[6]: Result */
5471 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[3] /*prop*/)( variable[3] /*prop*/) /*MMLocalProperty::global*/;
5472 /* Register variable[7]: Result */
5473 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
5474 CALL_syntax_base___MMGlobalProperty___check_visibility(variable[6])(variable[6], variable[1] /*v*/, variable[0], variable[7], variable[4] /*recv_is_self*/) /*MMGlobalProperty::check_visibility*/;
5475 /* Register variable[6]: Local variable */
5476 /* Register variable[7]: Result */
5477 variable[7] = CALL_static_type___MMLocalProperty___signature_for( variable[3] /*prop*/)( variable[3] /*prop*/, variable[2] /*type_recv*/) /*MMLocalProperty::signature_for*/;
5478 variable[6] = variable[7];
5479 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable[4] /*recv_is_self*/)))) { /*if*/
5480 /* Register variable[7]: Result */
5481 variable[7] = CALL_static_type___MMSignature___not_for_self( variable[6] /*psig*/)( variable[6] /*psig*/) /*MMSignature::not_for_self*/;
5482 variable[6] = variable[7] /*psig=*/;
5483 }
5484 variable[5] = variable[6] /*psig*/;
5485 goto return_label213;
5486 return_label213: while(false);
5487 tracehead = trace.prev;
5488 return variable[5];
5489 }
5490 val_t typing___AAbsSendExpr___prop(val_t self) {
5491 struct trace_t trace = {NULL, NULL, 1160, LOCATE_typing___AAbsSendExpr___prop};
5492 val_t *variable = NULL;
5493 struct WBT_ **closurevariable = NULL;
5494 trace.prev = tracehead; tracehead = &trace;
5495 trace.file = LOCATE_typing;
5496 tracehead = trace.prev;
5497 return ATTR_typing___AAbsSendExpr____prop( self) /*AAbsSendExpr::_prop*/;
5498 }
5499 val_t typing___AAbsSendExpr___return_type(val_t self) {
5500 struct trace_t trace = {NULL, NULL, 1163, LOCATE_typing___AAbsSendExpr___return_type};
5501 val_t *variable = NULL;
5502 struct WBT_ **closurevariable = NULL;
5503 trace.prev = tracehead; tracehead = &trace;
5504 trace.file = LOCATE_typing;
5505 tracehead = trace.prev;
5506 return ATTR_typing___AAbsSendExpr____return_type( self) /*AAbsSendExpr::_return_type*/;
5507 }
5508 void typing___ASuperInitCall___register_super_init_call(val_t self, val_t param0, val_t param1) {
5509 struct trace_t trace = {NULL, NULL, 1171, LOCATE_typing___ASuperInitCall___register_super_init_call};
5510 static val_t once_value_215 = NIT_NULL; /* Once value for string variable[5]*/
5511 static val_t once_value_216 = NIT_NULL; /* Once value for string variable[5]*/
5512 static val_t once_value_217 = NIT_NULL; /* Once value for string variable[8]*/
5513 static val_t once_value_218 = NIT_NULL; /* Once value for string variable[8]*/
5514 static val_t once_value_219 = NIT_NULL; /* Once value for string variable[8]*/
5515 static val_t once_value_220 = NIT_NULL; /* Once value for string variable[8]*/
5516 static val_t once_value_221 = NIT_NULL; /* Once value for string variable[8]*/
5517 static val_t once_value_222 = NIT_NULL; /* Once value for string variable[8]*/
5518 static val_t once_value_224 = NIT_NULL; /* Once value for string variable[12]*/
5519 static val_t once_value_225 = NIT_NULL; /* Once value for string variable[12]*/
5520 static val_t once_value_226 = NIT_NULL; /* Once value for string variable[12]*/
5521 val_t variable[13];
5522 struct WBT_ **closurevariable = NULL;
5523 trace.prev = tracehead; tracehead = &trace;
5524 trace.file = LOCATE_typing;
5525 /* Register variable[0]: Local variable */
5526 variable[0] = self;
5527 /* Register variable[1]: Local variable */
5528 variable[1] = param0;
5529 /* Register variable[2]: Local variable */
5530 variable[2] = param1;
5531 /* Register variable[3]: Method return value and escape marker */
5532 /* Register variable[4]: Result */
5533 variable[4] = CALL_parser_prod___PNode___parent(variable[0])(variable[0]) /*PNode::parent*/;
5534 /* Register variable[5]: Result */
5535 variable[5] = CALL_typing___TypingVisitor___top_block( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::top_block*/;
5536 /* Register variable[4]: Result */
5537 variable[4] = TAG_Bool(!UNTAG_Bool(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::==*/)))))));
5538 /* Ensure var variable[4]: Left 'and' operand*/
5539 if (UNTAG_Bool(variable[4])) { /* and */
5540 /* Register variable[4]: Result */
5541 variable[4] = CALL_typing___TypingVisitor___top_block( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::top_block*/;
5542 /* Register variable[4]: Result */
5543 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[0] == variable[4]) || ((variable[0] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[0])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[0],variable[4])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[0])(variable[0], variable[4]) /*Object::==*/)))))));
5544 }
5545 /* Register variable[4]: Result */
5546 if (UNTAG_Bool(variable[4])) { /*if*/
5547 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5548 /* Register variable[5]: Once String constant */
5549 if (once_value_215 != NIT_NULL) variable[5] = once_value_215;
5550 else {
5551 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor invocation "), TAG_Int(30)) /*new String*/;
5552 once_value_215 = variable[5];
5553 }
5554 /* Register variable[5]: Result */
5555 /* Ensure var variable[5]: super-string element*/
5556 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5557 variable[5] = variable[2] /*property*/ /* Ensure var: super-string element*/;
5558 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
5559 /* Register variable[5]: Once String constant */
5560 if (once_value_216 != NIT_NULL) variable[5] = once_value_216;
5561 else {
5562 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" must not be in nested block."), TAG_Int(29)) /*new String*/;
5563 once_value_216 = variable[5];
5564 }
5565 /* Register variable[5]: Result */
5566 /* Ensure var variable[5]: super-string element*/
5567 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5568 /* Register variable[4]: Result */
5569 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
5570 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
5571 }
5572 /* Register variable[4]: Local variable */
5573 /* Register variable[5]: Result */
5574 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___module( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::module*/;
5575 /* Register variable[6]: Result */
5576 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global( variable[2] /*property*/)( variable[2] /*property*/) /*MMLocalProperty::global*/;
5577 /* Register variable[6]: Result */
5578 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[6])(variable[6]) /*MMGlobalProperty::intro*/;
5579 /* Register variable[6]: Result */
5580 variable[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[6])(variable[6]) /*MMLocalProperty::local_class*/;
5581 /* Register variable[6]: Result */
5582 variable[6] = CALL_abstractmetamodel___MMLocalClass___global(variable[6])(variable[6]) /*MMLocalClass::global*/;
5583 /* Register variable[5]: Result */
5584 variable[5] = CALL_abstractmetamodel___MMModule_____bra(variable[5])(variable[5], variable[6]) /*MMModule::[]*/;
5585 variable[4] = variable[5];
5586 /* Register variable[5]: Local variable */
5587 variable[5] = NIT_NULL /*null*/;
5588 /* Register variable[6]: Result */
5589 variable[6] = CALL_typing___TypingVisitor___explicit_super_init_calls( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::explicit_super_init_calls*/;
5590 /* Register variable[6]: Result */
5591 variable[6] = CALL_abstract_collection___Collection___is_empty(variable[6])(variable[6]) /*AbstractArrayRead::is_empty*/;
5592 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
5593 /* Register variable[6]: Result */
5594 variable[6] = CALL_typing___TypingVisitor___explicit_super_init_calls( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::explicit_super_init_calls*/;
5595 /* Register variable[6]: Result */
5596 variable[6] = CALL_abstract_collection___IndexedCollectionRead___last(variable[6])(variable[6]) /*IndexedCollectionRead::last*/;
5597 /* Register variable[6]: Result */
5598 variable[6] = CALL_abstractmetamodel___MMLocalProperty___global(variable[6])(variable[6]) /*MMLocalProperty::global*/;
5599 /* Register variable[6]: Result */
5600 variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[6])(variable[6]) /*MMGlobalProperty::intro*/;
5601 /* Register variable[6]: Result */
5602 variable[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[6])(variable[6]) /*MMLocalProperty::local_class*/;
5603 variable[5] = variable[6] /*prev_class=*/;
5604 }
5605 /* Register variable[6]: Local variable */
5606 /* Register variable[7]: Result */
5607 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5608 /* Register variable[7]: Result */
5609 variable[7] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[7])(variable[7]) /*MMLocalClass::cshe*/;
5610 /* Register variable[7]: Result */
5611 variable[7] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(variable[7])(variable[7]) /*PartialOrderElement::reverse_linear_extension*/;
5612 variable[6] = variable[7];
5613 /* Register variable[7]: Result */
5614 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_class*/;
5615 /* Register variable[7]: Result */
5616 variable[7] = TAG_Bool(( variable[4] /*cla*/ == variable[7]) || (( variable[4] /*cla*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*cla*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cla*/,variable[7])):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*cla*/)( variable[4] /*cla*/, variable[7]) /*Object::==*/)))));
5617 if (UNTAG_Bool(variable[7])) { /*if*/
5618 CALL_typing___TypingVisitor___explicit_other_init_call__eq( variable[1] /*v*/)( variable[1] /*v*/, TAG_Bool(true)) /*TypingVisitor::explicit_other_init_call=*/;
5619 } else { /*if*/
5620 /* Register variable[7]: Result */
5621 variable[7] = CALL_abstract_collection___Collection___has( variable[6] /*order*/)( variable[6] /*order*/, variable[4] /*cla*/) /*AbstractArrayRead::has*/;
5622 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
5623 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5624 /* Register variable[8]: Once String constant */
5625 if (once_value_217 != NIT_NULL) variable[8] = once_value_217;
5626 else {
5627 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor of class "), TAG_Int(28)) /*new String*/;
5628 once_value_217 = variable[8];
5629 }
5630 /* Register variable[8]: Result */
5631 /* Ensure var variable[8]: super-string element*/
5632 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5633 variable[8] = variable[4] /*cla*/ /* Ensure var: super-string element*/;
5634 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
5635 /* Register variable[8]: Once String constant */
5636 if (once_value_218 != NIT_NULL) variable[8] = once_value_218;
5637 else {
5638 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" must be one in "), TAG_Int(16)) /*new String*/;
5639 once_value_218 = variable[8];
5640 }
5641 /* Register variable[8]: Result */
5642 /* Ensure var variable[8]: super-string element*/
5643 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5644 /* Register variable[8]: Once String constant */
5645 if (once_value_219 != NIT_NULL) variable[8] = once_value_219;
5646 else {
5647 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
5648 once_value_219 = variable[8];
5649 }
5650 /* Register variable[8]: Result */
5651 /* Register variable[8]: Result */
5652 variable[8] = CALL_string___Collection___join( variable[6] /*order*/)( variable[6] /*order*/, variable[8]) /*Collection::join*/;
5653 /* Ensure var variable[8]: super-string element*/
5654 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5655 /* Register variable[8]: Once String constant */
5656 if (once_value_220 != NIT_NULL) variable[8] = once_value_220;
5657 else {
5658 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
5659 once_value_220 = variable[8];
5660 }
5661 /* Register variable[8]: Result */
5662 /* Ensure var variable[8]: super-string element*/
5663 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5664 /* Register variable[7]: Result */
5665 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
5666 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
5667 } else { /*if*/
5668 /* Register variable[7]: Result */
5669 variable[7] = TAG_Bool(( variable[4] /*cla*/ == variable[5] /*prev_class*/) || (( variable[4] /*cla*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*cla*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cla*/, variable[5] /*prev_class*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*cla*/)( variable[4] /*cla*/, variable[5] /*prev_class*/) /*Object::==*/)))));
5670 if (UNTAG_Bool(variable[7])) { /*if*/
5671 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5672 /* Register variable[8]: Once String constant */
5673 if (once_value_221 != NIT_NULL) variable[8] = once_value_221;
5674 else {
5675 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: Only one super constructor invocation of class "), TAG_Int(54)) /*new String*/;
5676 once_value_221 = variable[8];
5677 }
5678 /* Register variable[8]: Result */
5679 /* Ensure var variable[8]: super-string element*/
5680 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5681 variable[8] = variable[4] /*cla*/ /* Ensure var: super-string element*/;
5682 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
5683 /* Register variable[8]: Once String constant */
5684 if (once_value_222 != NIT_NULL) variable[8] = once_value_222;
5685 else {
5686 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" is allowed."), TAG_Int(12)) /*new String*/;
5687 once_value_222 = variable[8];
5688 }
5689 /* Register variable[8]: Result */
5690 /* Ensure var variable[8]: super-string element*/
5691 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
5692 /* Register variable[7]: Result */
5693 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
5694 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
5695 } else { /*if*/
5696 /* Register variable[7]: Local variable */
5697 /* Register variable[8]: Result */
5698 variable[8] = TAG_Bool(( variable[5] /*prev_class*/ == NIT_NULL /*null*/) || (( variable[5] /*prev_class*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*prev_class*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*prev_class*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*prev_class*/)( variable[5] /*prev_class*/, NIT_NULL /*null*/) /*Object::==*/)))));
5699 variable[7] = variable[8];
5700 /* Register variable[8]: For iterator */
5701 variable[8] = CALL_abstract_collection___Collection___iterator( variable[6] /*order*/)( variable[6] /*order*/) /*AbstractArrayRead::iterator*/;
5702 while (true) { /*for*/
5703 /* Register variable[9]: For 'is_ok' result */
5704 variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
5705 if (!UNTAG_Bool(variable[9])) break; /*for*/
5706 variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
5707 /* Register variable[10]: Local variable */
5708 variable[10] = variable[9];
5709 /* Register variable[11]: Result */
5710 variable[11] = TAG_Bool(( variable[10] /*c*/ == variable[5] /*prev_class*/) || (( variable[10] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c*/, variable[5] /*prev_class*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*c*/)( variable[10] /*c*/, variable[5] /*prev_class*/) /*Object::==*/)))));
5711 if (UNTAG_Bool(variable[11])) { /*if*/
5712 variable[7] = TAG_Bool(true) /*last_is_found=*/;
5713 } else { /*if*/
5714 /* Register variable[11]: Result */
5715 variable[11] = TAG_Bool(( variable[10] /*c*/ == variable[4] /*cla*/) || (( variable[10] /*c*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*c*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*c*/, variable[4] /*cla*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*c*/)( variable[10] /*c*/, variable[4] /*cla*/) /*Object::==*/)))));
5716 if (UNTAG_Bool(variable[11])) { /*if*/
5717 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool( variable[7] /*last_is_found*/)))) { /*if*/
5718 variable[11] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5719 /* Register variable[12]: Once String constant */
5720 if (once_value_224 != NIT_NULL) variable[12] = once_value_224;
5721 else {
5722 variable[12] = NEW_String_string___String___with_native(BOX_NativeString("Error: Constructor of "), TAG_Int(22)) /*new String*/;
5723 once_value_224 = variable[12];
5724 }
5725 /* Register variable[12]: Result */
5726 /* Ensure var variable[12]: super-string element*/
5727 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[12]) /*AbstractArray::add*/;
5728 variable[12] = variable[10] /*c*/ /* Ensure var: super-string element*/;
5729 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/) /*AbstractArray::add*/;
5730 /* Register variable[12]: Once String constant */
5731 if (once_value_225 != NIT_NULL) variable[12] = once_value_225;
5732 else {
5733 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(" must be invoked before constructor of "), TAG_Int(39)) /*new String*/;
5734 once_value_225 = variable[12];
5735 }
5736 /* Register variable[12]: Result */
5737 /* Ensure var variable[12]: super-string element*/
5738 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[12]) /*AbstractArray::add*/;
5739 variable[12] = variable[5] /*prev_class*/ /* Ensure var: super-string element*/;
5740 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/) /*AbstractArray::add*/;
5741 /* Register variable[12]: Once String constant */
5742 if (once_value_226 != NIT_NULL) variable[12] = once_value_226;
5743 else {
5744 variable[12] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
5745 once_value_226 = variable[12];
5746 }
5747 /* Register variable[12]: Result */
5748 /* Ensure var variable[12]: super-string element*/
5749 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[12]) /*AbstractArray::add*/;
5750 /* Register variable[11]: Result */
5751 variable[11] = CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/;
5752 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[11]) /*AbsSyntaxVisitor::error*/;
5753 }
5754 /* Register variable[11]: Result */
5755 variable[11] = CALL_typing___TypingVisitor___explicit_super_init_calls( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::explicit_super_init_calls*/;
5756 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[2] /*property*/) /*AbstractArray::add*/;
5757 goto break_223;
5758 }
5759 }
5760 continue_223: while(0);
5761 CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
5762 }
5763 break_223: while(0);
5764 }
5765 }
5766 }
5767 return_label214: while(false);
5768 tracehead = trace.prev;
5769 return;
5770 }
5771 void typing___ANewExpr___after_typing(val_t self, val_t param0) {
5772 struct trace_t trace = {NULL, NULL, 1208, LOCATE_typing___ANewExpr___after_typing};
5773 static val_t once_value_228 = NIT_NULL; /* Once value for string variable[5]*/
5774 static val_t once_value_229 = NIT_NULL; /* Once value for string variable[5]*/
5775 static val_t once_value_230; static int once_bool_230; /* Once value for variable[5]*/
5776 static val_t once_value_231 = NIT_NULL; /* Once value for string variable[5]*/
5777 static val_t once_value_232 = NIT_NULL; /* Once value for string variable[6]*/
5778 static val_t once_value_233 = NIT_NULL; /* Once value for string variable[6]*/
5779 val_t variable[7];
5780 struct WBT_ **closurevariable = NULL;
5781 trace.prev = tracehead; tracehead = &trace;
5782 trace.file = LOCATE_typing;
5783 /* Register variable[0]: Local variable */
5784 variable[0] = self;
5785 /* Register variable[1]: Local variable */
5786 variable[1] = param0;
5787 /* Register variable[2]: Method return value and escape marker */
5788 /* Register variable[3]: Local variable */
5789 /* Register variable[4]: Result */
5790 variable[4] = CALL_parser_nodes___ANewExpr___n_type(variable[0])(variable[0]) /*ANewExpr::n_type*/;
5791 /* Register variable[4]: Result */
5792 variable[4] = CALL_typing___PType___stype(variable[4])(variable[4]) /*PType::stype*/;
5793 variable[3] = variable[4];
5794 /* Register variable[4]: Result */
5795 variable[4] = TAG_Bool(( variable[3] /*t*/ == NIT_NULL /*null*/) || (( variable[3] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*t*/)( variable[3] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))));
5796 if (UNTAG_Bool(variable[4])) { /*if*/
5797 goto return_label227;
5798 }
5799 /* Register variable[4]: Result */
5800 variable[4] = CALL_static_type___MMType___local_class( variable[3] /*t*/)( variable[3] /*t*/) /*MMType::local_class*/;
5801 /* Register variable[4]: Result */
5802 variable[4] = CALL_abstractmetamodel___MMLocalClass___global(variable[4])(variable[4]) /*MMLocalClass::global*/;
5803 /* Register variable[4]: Result */
5804 variable[4] = CALL_abstractmetamodel___MMGlobalClass___is_abstract(variable[4])(variable[4]) /*MMGlobalClass::is_abstract*/;
5805 if (UNTAG_Bool(variable[4])) { /*if*/
5806 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5807 /* Register variable[5]: Once String constant */
5808 if (once_value_228 != NIT_NULL) variable[5] = once_value_228;
5809 else {
5810 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: try to instantiate abstract class "), TAG_Int(41)) /*new String*/;
5811 once_value_228 = variable[5];
5812 }
5813 /* Register variable[5]: Result */
5814 /* Ensure var variable[5]: super-string element*/
5815 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5816 /* Register variable[5]: Result */
5817 variable[5] = CALL_static_type___MMType___local_class( variable[3] /*t*/)( variable[3] /*t*/) /*MMType::local_class*/;
5818 /* Ensure var variable[5]: super-string element*/
5819 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
5820 /* Register variable[5]: Once String constant */
5821 if (once_value_229 != NIT_NULL) variable[5] = once_value_229;
5822 else {
5823 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
5824 once_value_229 = variable[5];
5825 }
5826 /* Register variable[5]: Result */
5827 /* Ensure var variable[5]: super-string element*/
5828 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
5829 /* Register variable[4]: Result */
5830 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
5831 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
5832 goto return_label227;
5833 }
5834 /* Register variable[4]: Local variable */
5835 /*variable[4] is variable name*/
5836 /* Register variable[5]: Result */
5837 variable[5] = CALL_parser_nodes___ANewExpr___n_id(variable[0])(variable[0]) /*ANewExpr::n_id*/;
5838 /* Register variable[5]: Result */
5839 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::==*/)))));
5840 if (UNTAG_Bool(variable[5])) { /*if*/
5841 /* Register variable[5]: Once expression result */
5842 if (once_bool_230) variable[5] = once_value_230;
5843 else {
5844 /* Register variable[5]: Once String constant */
5845 if (once_value_231 != NIT_NULL) variable[5] = once_value_231;
5846 else {
5847 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
5848 once_value_231 = variable[5];
5849 }
5850 /* Register variable[5]: Result */
5851 /* Register variable[5]: Result */
5852 variable[5] = CALL_symbol___String___to_symbol(variable[5])(variable[5]) /*String::to_symbol*/;
5853 once_value_230 = variable[5];
5854 once_bool_230 = true;
5855 }
5856 /* Register variable[5]: Result */
5857 variable[4] = variable[5] /*name=*/;
5858 } else { /*if*/
5859 /* Register variable[5]: Result */
5860 variable[5] = CALL_parser_nodes___ANewExpr___n_id(variable[0])(variable[0]) /*ANewExpr::n_id*/;
5861 /* Register variable[5]: Result */
5862 variable[5] = CALL_syntax_base___Token___to_symbol(variable[5])(variable[5]) /*Token::to_symbol*/;
5863 variable[4] = variable[5] /*name=*/;
5864 }
5865 /* Register variable[5]: Result */
5866 variable[5] = CALL_parser_nodes___ANewExpr___n_args(variable[0])(variable[0]) /*ANewExpr::n_args*/;
5867 /* Register variable[5]: Result */
5868 variable[5] = CALL_array___Collection___to_a(variable[5])(variable[5]) /*Collection::to_a*/;
5869 CALL_typing___AAbsSendExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/, variable[3] /*t*/, TAG_Bool(false), TAG_Bool(false), variable[4] /*name*/, variable[5], NIT_NULL /*null*/) /*AAbsSendExpr::do_typing*/;
5870 /* Register variable[5]: Result */
5871 variable[5] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
5872 /* Register variable[5]: Result */
5873 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::==*/)))));
5874 if (UNTAG_Bool(variable[5])) { /*if*/
5875 goto return_label227;
5876 }
5877 /* Register variable[5]: Result */
5878 variable[5] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
5879 /* Register variable[5]: Result */
5880 variable[5] = CALL_abstractmetamodel___MMLocalProperty___global(variable[5])(variable[5]) /*MMLocalProperty::global*/;
5881 /* Register variable[5]: Result */
5882 variable[5] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[5])(variable[5]) /*MMGlobalProperty::is_init*/;
5883 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
5884 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
5885 /* Register variable[6]: Once String constant */
5886 if (once_value_232 != NIT_NULL) variable[6] = once_value_232;
5887 else {
5888 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
5889 once_value_232 = variable[6];
5890 }
5891 /* Register variable[6]: Result */
5892 /* Ensure var variable[6]: super-string element*/
5893 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
5894 /* Register variable[6]: Result */
5895 variable[6] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
5896 /* Ensure var variable[6]: super-string element*/
5897 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
5898 /* Register variable[6]: Once String constant */
5899 if (once_value_233 != NIT_NULL) variable[6] = once_value_233;
5900 else {
5901 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" is not a constructor."), TAG_Int(22)) /*new String*/;
5902 once_value_233 = variable[6];
5903 }
5904 /* Register variable[6]: Result */
5905 /* Ensure var variable[6]: super-string element*/
5906 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
5907 /* Register variable[5]: Result */
5908 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
5909 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
5910 goto return_label227;
5911 }
5912 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3] /*t*/;
5913 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
5914 return_label227: while(false);
5915 tracehead = trace.prev;
5916 return;
5917 }
5918 void typing___ASendExpr___after_typing(val_t self, val_t param0) {
5919 struct trace_t trace = {NULL, NULL, 1247, LOCATE_typing___ASendExpr___after_typing};
5920 val_t variable[3];
5921 struct WBT_ **closurevariable = NULL;
5922 trace.prev = tracehead; tracehead = &trace;
5923 trace.file = LOCATE_typing;
5924 /* Register variable[0]: Local variable */
5925 variable[0] = self;
5926 /* Register variable[1]: Local variable */
5927 variable[1] = param0;
5928 /* Register variable[2]: Method return value and escape marker */
5929 CALL_typing___ASendExpr___do_all_typing(variable[0])(variable[0], variable[1] /*v*/) /*ASendExpr::do_all_typing*/;
5930 return_label234: while(false);
5931 tracehead = trace.prev;
5932 return;
5933 }
5934 val_t typing___ASendExpr___name(val_t self) {
5935 struct trace_t trace = {NULL, NULL, 1238, LOCATE_typing___ASendExpr___name};
5936 val_t *variable = NULL;
5937 struct WBT_ **closurevariable = NULL;
5938 trace.prev = tracehead; tracehead = &trace;
5939 trace.file = LOCATE_typing;
5940 fprintf(stderr, "Deferred method called");
5941 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1238);
5942 nit_exit(1);
5943 tracehead = trace.prev;
5944 return NIT_NULL;
5945 }
5946 val_t typing___ASendExpr___raw_arguments(val_t self) {
5947 struct trace_t trace = {NULL, NULL, 1241, LOCATE_typing___ASendExpr___raw_arguments};
5948 val_t *variable = NULL;
5949 struct WBT_ **closurevariable = NULL;
5950 trace.prev = tracehead; tracehead = &trace;
5951 trace.file = LOCATE_typing;
5952 fprintf(stderr, "Deferred method called");
5953 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1241);
5954 nit_exit(1);
5955 tracehead = trace.prev;
5956 return NIT_NULL;
5957 }
5958 val_t typing___ASendExpr___closure_defs(val_t self) {
5959 struct trace_t trace = {NULL, NULL, 1244, LOCATE_typing___ASendExpr___closure_defs};
5960 val_t variable[2];
5961 struct WBT_ **closurevariable = NULL;
5962 trace.prev = tracehead; tracehead = &trace;
5963 trace.file = LOCATE_typing;
5964 /* Register variable[0]: Local variable */
5965 variable[0] = self;
5966 /* Register variable[1]: Method return value and escape marker */
5967 variable[1] = NIT_NULL /*null*/;
5968 goto return_label235;
5969 return_label235: while(false);
5970 tracehead = trace.prev;
5971 return variable[1];
5972 }
5973 void typing___ASendExpr___do_all_typing(val_t self, val_t param0) {
5974 struct trace_t trace = {NULL, NULL, 1252, LOCATE_typing___ASendExpr___do_all_typing};
5975 static val_t once_value_237 = NIT_NULL; /* Once value for string variable[4]*/
5976 static val_t once_value_238 = NIT_NULL; /* Once value for string variable[4]*/
5977 static val_t once_value_239 = NIT_NULL; /* Once value for string variable[4]*/
5978 static val_t once_value_240 = NIT_NULL; /* Once value for string variable[4]*/
5979 val_t variable[9];
5980 struct WBT_ **closurevariable = NULL;
5981 trace.prev = tracehead; tracehead = &trace;
5982 trace.file = LOCATE_typing;
5983 /* Register variable[0]: Local variable */
5984 variable[0] = self;
5985 /* Register variable[1]: Local variable */
5986 variable[1] = param0;
5987 /* Register variable[2]: Method return value and escape marker */
5988 /* Register variable[3]: Result */
5989 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
5990 /* Register variable[3]: Result */
5991 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
5992 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
5993 goto return_label236;
5994 }
5995 /* Register variable[3]: Result */
5996 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
5997 /* Register variable[3]: Result */
5998 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
5999 /* Register variable[4]: Result */
6000 variable[4] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6001 /* Register variable[4]: Result */
6002 variable[4] = CALL_typing___PExpr___is_implicit_self(variable[4])(variable[4]) /*PExpr::is_implicit_self*/;
6003 /* Register variable[5]: Result */
6004 variable[5] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6005 /* Register variable[5]: Result */
6006 variable[5] = CALL_typing___PExpr___is_self(variable[5])(variable[5]) /*PExpr::is_self*/;
6007 /* Register variable[6]: Result */
6008 variable[6] = CALL_typing___ASendExpr___name(variable[0])(variable[0]) /*ASendExpr::name*/;
6009 /* Register variable[7]: Result */
6010 variable[7] = CALL_typing___ASendExpr___raw_arguments(variable[0])(variable[0]) /*ASendExpr::raw_arguments*/;
6011 /* Register variable[8]: Result */
6012 variable[8] = CALL_typing___ASendExpr___closure_defs(variable[0])(variable[0]) /*ASendExpr::closure_defs*/;
6013 CALL_typing___AAbsSendExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/, variable[3], variable[4], variable[5], variable[6], variable[7], variable[8]) /*AAbsSendExpr::do_typing*/;
6014 /* Register variable[3]: Result */
6015 variable[3] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6016 /* Register variable[3]: Result */
6017 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::==*/)))));
6018 if (UNTAG_Bool(variable[3])) { /*if*/
6019 goto return_label236;
6020 }
6021 /* Register variable[3]: Result */
6022 variable[3] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6023 /* Register variable[3]: Result */
6024 variable[3] = CALL_abstractmetamodel___MMLocalProperty___global(variable[3])(variable[3]) /*MMLocalProperty::global*/;
6025 /* Register variable[3]: Result */
6026 variable[3] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[3])(variable[3]) /*MMGlobalProperty::is_init*/;
6027 if (UNTAG_Bool(variable[3])) { /*if*/
6028 /* Register variable[3]: Result */
6029 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
6030 /* Register variable[3]: Result */
6031 variable[3] = CALL_abstractmetamodel___MMLocalProperty___global(variable[3])(variable[3]) /*MMLocalProperty::global*/;
6032 /* Register variable[3]: Result */
6033 variable[3] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[3])(variable[3]) /*MMGlobalProperty::is_init*/;
6034 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
6035 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6036 /* Register variable[4]: Once String constant */
6037 if (once_value_237 != NIT_NULL) variable[4] = once_value_237;
6038 else {
6039 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Error: try to invoke constructor "), TAG_Int(33)) /*new String*/;
6040 once_value_237 = variable[4];
6041 }
6042 /* Register variable[4]: Result */
6043 /* Ensure var variable[4]: super-string element*/
6044 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
6045 /* Register variable[4]: Result */
6046 variable[4] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6047 /* Ensure var variable[4]: super-string element*/
6048 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
6049 /* Register variable[4]: Once String constant */
6050 if (once_value_238 != NIT_NULL) variable[4] = once_value_238;
6051 else {
6052 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" in a method."), TAG_Int(13)) /*new String*/;
6053 once_value_238 = variable[4];
6054 }
6055 /* Register variable[4]: Result */
6056 /* Ensure var variable[4]: super-string element*/
6057 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
6058 /* Register variable[3]: Result */
6059 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
6060 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
6061 } else { /*if*/
6062 /* Register variable[3]: Result */
6063 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6064 /* Register variable[3]: Result */
6065 variable[3] = CALL_typing___PExpr___is_self(variable[3])(variable[3]) /*PExpr::is_self*/;
6066 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
6067 variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6068 /* Register variable[4]: Once String constant */
6069 if (once_value_239 != NIT_NULL) variable[4] = once_value_239;
6070 else {
6071 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Error: constructor "), TAG_Int(19)) /*new String*/;
6072 once_value_239 = variable[4];
6073 }
6074 /* Register variable[4]: Result */
6075 /* Ensure var variable[4]: super-string element*/
6076 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
6077 /* Register variable[4]: Result */
6078 variable[4] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6079 /* Ensure var variable[4]: super-string element*/
6080 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
6081 /* Register variable[4]: Once String constant */
6082 if (once_value_240 != NIT_NULL) variable[4] = once_value_240;
6083 else {
6084 variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" is not invoken on 'self'."), TAG_Int(26)) /*new String*/;
6085 once_value_240 = variable[4];
6086 }
6087 /* Register variable[4]: Result */
6088 /* Ensure var variable[4]: super-string element*/
6089 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
6090 /* Register variable[3]: Result */
6091 variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
6092 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::error*/;
6093 } else { /*if*/
6094 /* Register variable[3]: Result */
6095 variable[3] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6096 CALL_typing___ASuperInitCall___register_super_init_call(variable[0])(variable[0], variable[1] /*v*/, variable[3]) /*ASuperInitCall::register_super_init_call*/;
6097 }
6098 }
6099 }
6100 /* Register variable[3]: Result */
6101 variable[3] = CALL_typing___AAbsSendExpr___return_type(variable[0])(variable[0]) /*AAbsSendExpr::return_type*/;
6102 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
6103 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
6104 return_label236: while(false);
6105 tracehead = trace.prev;
6106 return;
6107 }
6108 void typing___ASendReassignExpr___do_all_typing(val_t self, val_t param0) {
6109 struct trace_t trace = {NULL, NULL, 1277, LOCATE_typing___ASendReassignExpr___do_all_typing};
6110 static val_t once_value_242 = NIT_NULL; /* Once value for string variable[5]*/
6111 static val_t once_value_243 = NIT_NULL; /* Once value for string variable[5]*/
6112 static val_t once_value_244 = NIT_NULL; /* Once value for string variable[5]*/
6113 static val_t once_value_245 = NIT_NULL; /* Once value for string variable[5]*/
6114 static val_t once_value_246 = NIT_NULL; /* Once value for string variable[11]*/
6115 static val_t once_value_247 = NIT_NULL; /* Once value for string variable[11]*/
6116 static val_t once_value_248 = NIT_NULL; /* Once value for string variable[8]*/
6117 static val_t once_value_249 = NIT_NULL; /* Once value for string variable[8]*/
6118 static val_t once_value_250 = NIT_NULL; /* Once value for string variable[8]*/
6119 static val_t once_value_251 = NIT_NULL; /* Once value for string variable[8]*/
6120 val_t variable[12];
6121 struct WBT_ **closurevariable = NULL;
6122 trace.prev = tracehead; tracehead = &trace;
6123 trace.file = LOCATE_typing;
6124 /* Register variable[0]: Local variable */
6125 variable[0] = self;
6126 /* Register variable[1]: Local variable */
6127 variable[1] = param0;
6128 /* Register variable[2]: Method return value and escape marker */
6129 /* Register variable[3]: Result */
6130 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6131 /* Register variable[3]: Result */
6132 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
6133 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
6134 goto return_label241;
6135 }
6136 /* Register variable[3]: Local variable */
6137 /* Register variable[4]: Result */
6138 variable[4] = CALL_typing___ASendExpr___raw_arguments(variable[0])(variable[0]) /*ASendExpr::raw_arguments*/;
6139 variable[3] = variable[4];
6140 /* Register variable[4]: Result */
6141 variable[4] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6142 /* Register variable[4]: Result */
6143 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
6144 /* Register variable[5]: Result */
6145 variable[5] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6146 /* Register variable[5]: Result */
6147 variable[5] = CALL_typing___PExpr___is_implicit_self(variable[5])(variable[5]) /*PExpr::is_implicit_self*/;
6148 /* Register variable[6]: Result */
6149 variable[6] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6150 /* Register variable[6]: Result */
6151 variable[6] = CALL_typing___PExpr___is_self(variable[6])(variable[6]) /*PExpr::is_self*/;
6152 /* Register variable[7]: Result */
6153 variable[7] = CALL_typing___ASendExpr___name(variable[0])(variable[0]) /*ASendExpr::name*/;
6154 CALL_typing___AAbsSendExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/, variable[4], variable[5], variable[6], variable[7], variable[3] /*raw_args*/, NIT_NULL /*null*/) /*AAbsSendExpr::do_typing*/;
6155 /* Register variable[4]: Result */
6156 variable[4] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6157 /* Register variable[4]: Result */
6158 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::==*/)))));
6159 if (UNTAG_Bool(variable[4])) { /*if*/
6160 goto return_label241;
6161 }
6162 /* Register variable[4]: Result */
6163 variable[4] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6164 /* Register variable[4]: Result */
6165 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global(variable[4])(variable[4]) /*MMLocalProperty::global*/;
6166 /* Register variable[4]: Result */
6167 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[4])(variable[4]) /*MMGlobalProperty::is_init*/;
6168 if (UNTAG_Bool(variable[4])) { /*if*/
6169 /* Register variable[4]: Result */
6170 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
6171 /* Register variable[4]: Result */
6172 variable[4] = CALL_abstractmetamodel___MMLocalProperty___global(variable[4])(variable[4]) /*MMLocalProperty::global*/;
6173 /* Register variable[4]: Result */
6174 variable[4] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[4])(variable[4]) /*MMGlobalProperty::is_init*/;
6175 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
6176 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6177 /* Register variable[5]: Once String constant */
6178 if (once_value_242 != NIT_NULL) variable[5] = once_value_242;
6179 else {
6180 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: try to invoke constructor "), TAG_Int(33)) /*new String*/;
6181 once_value_242 = variable[5];
6182 }
6183 /* Register variable[5]: Result */
6184 /* Ensure var variable[5]: super-string element*/
6185 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
6186 /* Register variable[5]: Result */
6187 variable[5] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6188 /* Ensure var variable[5]: super-string element*/
6189 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
6190 /* Register variable[5]: Once String constant */
6191 if (once_value_243 != NIT_NULL) variable[5] = once_value_243;
6192 else {
6193 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" in a method."), TAG_Int(13)) /*new String*/;
6194 once_value_243 = variable[5];
6195 }
6196 /* Register variable[5]: Result */
6197 /* Ensure var variable[5]: super-string element*/
6198 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
6199 /* Register variable[4]: Result */
6200 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
6201 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
6202 } else { /*if*/
6203 /* Register variable[4]: Result */
6204 variable[4] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6205 /* Register variable[4]: Result */
6206 variable[4] = CALL_typing___PExpr___is_self(variable[4])(variable[4]) /*PExpr::is_self*/;
6207 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
6208 variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6209 /* Register variable[5]: Once String constant */
6210 if (once_value_244 != NIT_NULL) variable[5] = once_value_244;
6211 else {
6212 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Error: constructor "), TAG_Int(19)) /*new String*/;
6213 once_value_244 = variable[5];
6214 }
6215 /* Register variable[5]: Result */
6216 /* Ensure var variable[5]: super-string element*/
6217 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
6218 /* Register variable[5]: Result */
6219 variable[5] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6220 /* Ensure var variable[5]: super-string element*/
6221 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
6222 /* Register variable[5]: Once String constant */
6223 if (once_value_245 != NIT_NULL) variable[5] = once_value_245;
6224 else {
6225 variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" is not invoken on 'self'."), TAG_Int(26)) /*new String*/;
6226 once_value_245 = variable[5];
6227 }
6228 /* Register variable[5]: Result */
6229 /* Ensure var variable[5]: super-string element*/
6230 CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
6231 /* Register variable[4]: Result */
6232 variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
6233 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[4]) /*AbsSyntaxVisitor::error*/;
6234 }
6235 }
6236 }
6237 /* Register variable[4]: Local variable */
6238 /* Register variable[5]: Result */
6239 variable[5] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6240 /* Register variable[6]: Result */
6241 variable[6] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6242 /* Register variable[6]: Result */
6243 variable[6] = CALL_syntax_base___PExpr___stype(variable[6])(variable[6]) /*PExpr::stype*/;
6244 /* Register variable[5]: Result */
6245 variable[5] = CALL_static_type___MMLocalProperty___signature_for(variable[5])(variable[5], variable[6]) /*MMLocalProperty::signature_for*/;
6246 /* Register variable[5]: Result */
6247 variable[5] = CALL_static_type___MMSignature___return_type(variable[5])(variable[5]) /*MMSignature::return_type*/;
6248 variable[4] = variable[5];
6249 /* Register variable[5]: Result */
6250 variable[5] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6251 /* Register variable[5]: Result */
6252 variable[5] = CALL_typing___PExpr___is_self(variable[5])(variable[5]) /*PExpr::is_self*/;
6253 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
6254 /* Register variable[5]: Result */
6255 variable[5] = CALL_static_type___MMType___not_for_self( variable[4] /*t*/)( variable[4] /*t*/) /*MMType::not_for_self*/;
6256 variable[4] = variable[5] /*t=*/;
6257 }
6258 /* Register variable[5]: Local variable */
6259 /* Register variable[6]: Result */
6260 variable[6] = CALL_typing___AReassignFormExpr___do_rvalue_typing(variable[0])(variable[0], variable[1] /*v*/, variable[4] /*t*/) /*AReassignFormExpr::do_rvalue_typing*/;
6261 variable[5] = variable[6];
6262 /* Register variable[6]: Result */
6263 variable[6] = TAG_Bool(( variable[5] /*t2*/ == NIT_NULL /*null*/) || (( variable[5] /*t2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*t2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*t2*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*t2*/)( variable[5] /*t2*/, NIT_NULL /*null*/) /*Object::==*/)))));
6264 if (UNTAG_Bool(variable[6])) { /*if*/
6265 goto return_label241;
6266 }
6267 /* Register variable[6]: Result */
6268 variable[6] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
6269 /* Register variable[6]: Result */
6270 variable[6] = CALL_syntax_base___PExpr___stype(variable[6])(variable[6]) /*PExpr::stype*/;
6271 CALL_syntax_base___AbsSyntaxVisitor___check_conform( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5] /*t2*/, variable[6]) /*AbsSyntaxVisitor::check_conform*/;
6272 /* Register variable[6]: Result */
6273 variable[6] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6274 ATTR_typing___ASendReassignExpr____read_prop(variable[0]) /*ASendReassignExpr::_read_prop*/ = variable[6];
6275 /* Register variable[6]: Local variable */
6276 /* Register variable[7]: Result */
6277 variable[7] = CALL_typing___AAbsAbsSendExpr___arguments(variable[0])(variable[0]) /*AAbsAbsSendExpr::arguments*/;
6278 variable[6] = variable[7];
6279 /* Register variable[7]: Result */
6280 variable[7] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
6281 CALL_abstract_collection___SimpleCollection___add( variable[3] /*raw_args*/)( variable[3] /*raw_args*/, variable[7]) /*AbstractArray::add*/;
6282 /* Register variable[7]: Result */
6283 variable[7] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6284 /* Register variable[7]: Result */
6285 variable[7] = CALL_syntax_base___PExpr___stype(variable[7])(variable[7]) /*PExpr::stype*/;
6286 /* Register variable[8]: Result */
6287 variable[8] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6288 /* Register variable[8]: Result */
6289 variable[8] = CALL_typing___PExpr___is_implicit_self(variable[8])(variable[8]) /*PExpr::is_implicit_self*/;
6290 /* Register variable[9]: Result */
6291 variable[9] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6292 /* Register variable[9]: Result */
6293 variable[9] = CALL_typing___PExpr___is_self(variable[9])(variable[9]) /*PExpr::is_self*/;
6294 variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6295 /* Register variable[11]: Once String constant */
6296 if (once_value_246 != NIT_NULL) variable[11] = once_value_246;
6297 else {
6298 variable[11] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
6299 once_value_246 = variable[11];
6300 }
6301 /* Register variable[11]: Result */
6302 /* Ensure var variable[11]: super-string element*/
6303 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
6304 /* Register variable[11]: Result */
6305 variable[11] = CALL_typing___ASendExpr___name(variable[0])(variable[0]) /*ASendExpr::name*/;
6306 /* Ensure var variable[11]: super-string element*/
6307 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
6308 /* Register variable[11]: Once String constant */
6309 if (once_value_247 != NIT_NULL) variable[11] = once_value_247;
6310 else {
6311 variable[11] = NEW_String_string___String___with_native(BOX_NativeString("="), TAG_Int(1)) /*new String*/;
6312 once_value_247 = variable[11];
6313 }
6314 /* Register variable[11]: Result */
6315 /* Ensure var variable[11]: super-string element*/
6316 CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
6317 /* Register variable[10]: Result */
6318 variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
6319 /* Register variable[10]: Result */
6320 variable[10] = CALL_symbol___String___to_symbol(variable[10])(variable[10]) /*String::to_symbol*/;
6321 CALL_typing___AAbsSendExpr___do_typing(variable[0])(variable[0], variable[1] /*v*/, variable[7], variable[8], variable[9], variable[10], variable[3] /*raw_args*/, NIT_NULL /*null*/) /*AAbsSendExpr::do_typing*/;
6322 /* Register variable[7]: Result */
6323 variable[7] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6324 /* Register variable[7]: Result */
6325 variable[7] = 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::==*/)))));
6326 if (UNTAG_Bool(variable[7])) { /*if*/
6327 goto return_label241;
6328 }
6329 /* Register variable[7]: Result */
6330 variable[7] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6331 /* Register variable[7]: Result */
6332 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global(variable[7])(variable[7]) /*MMLocalProperty::global*/;
6333 /* Register variable[7]: Result */
6334 variable[7] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[7])(variable[7]) /*MMGlobalProperty::is_init*/;
6335 if (UNTAG_Bool(variable[7])) { /*if*/
6336 /* Register variable[7]: Result */
6337 variable[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::local_property*/;
6338 /* Register variable[7]: Result */
6339 variable[7] = CALL_abstractmetamodel___MMLocalProperty___global(variable[7])(variable[7]) /*MMLocalProperty::global*/;
6340 /* Register variable[7]: Result */
6341 variable[7] = CALL_abstractmetamodel___MMGlobalProperty___is_init(variable[7])(variable[7]) /*MMGlobalProperty::is_init*/;
6342 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
6343 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6344 /* Register variable[8]: Once String constant */
6345 if (once_value_248 != NIT_NULL) variable[8] = once_value_248;
6346 else {
6347 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: try to invoke constructor "), TAG_Int(33)) /*new String*/;
6348 once_value_248 = variable[8];
6349 }
6350 /* Register variable[8]: Result */
6351 /* Ensure var variable[8]: super-string element*/
6352 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
6353 /* Register variable[8]: Result */
6354 variable[8] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6355 /* Ensure var variable[8]: super-string element*/
6356 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
6357 /* Register variable[8]: Once String constant */
6358 if (once_value_249 != NIT_NULL) variable[8] = once_value_249;
6359 else {
6360 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" in a method."), TAG_Int(13)) /*new String*/;
6361 once_value_249 = variable[8];
6362 }
6363 /* Register variable[8]: Result */
6364 /* Ensure var variable[8]: super-string element*/
6365 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
6366 /* Register variable[7]: Result */
6367 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
6368 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
6369 } else { /*if*/
6370 /* Register variable[7]: Result */
6371 variable[7] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6372 /* Register variable[7]: Result */
6373 variable[7] = CALL_typing___PExpr___is_self(variable[7])(variable[7]) /*PExpr::is_self*/;
6374 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[7])))) { /*if*/
6375 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
6376 /* Register variable[8]: Once String constant */
6377 if (once_value_250 != NIT_NULL) variable[8] = once_value_250;
6378 else {
6379 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Error: constructor "), TAG_Int(19)) /*new String*/;
6380 once_value_250 = variable[8];
6381 }
6382 /* Register variable[8]: Result */
6383 /* Ensure var variable[8]: super-string element*/
6384 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
6385 /* Register variable[8]: Result */
6386 variable[8] = CALL_typing___AAbsSendExpr___prop(variable[0])(variable[0]) /*AAbsSendExpr::prop*/;
6387 /* Ensure var variable[8]: super-string element*/
6388 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
6389 /* Register variable[8]: Once String constant */
6390 if (once_value_251 != NIT_NULL) variable[8] = once_value_251;
6391 else {
6392 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" is not invoken on 'self'."), TAG_Int(26)) /*new String*/;
6393 once_value_251 = variable[8];
6394 }
6395 /* Register variable[8]: Result */
6396 /* Ensure var variable[8]: super-string element*/
6397 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
6398 /* Register variable[7]: Result */
6399 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
6400 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
6401 }
6402 }
6403 }
6404 ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[6] /*old_args*/;
6405 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
6406 return_label241: while(false);
6407 tracehead = trace.prev;
6408 return;
6409 }
6410 val_t typing___ASendReassignExpr___read_prop(val_t self) {
6411 struct trace_t trace = {NULL, NULL, 1276, LOCATE_typing___ASendReassignExpr___read_prop};
6412 val_t *variable = NULL;
6413 struct WBT_ **closurevariable = NULL;
6414 trace.prev = tracehead; tracehead = &trace;
6415 trace.file = LOCATE_typing;
6416 tracehead = trace.prev;
6417 return ATTR_typing___ASendReassignExpr____read_prop( self) /*ASendReassignExpr::_read_prop*/;
6418 }
6419 val_t typing___ABinopExpr___raw_arguments(val_t self) {
6420 struct trace_t trace = {NULL, NULL, 1317, LOCATE_typing___ABinopExpr___raw_arguments};
6421 val_t variable[4];
6422 struct WBT_ **closurevariable = NULL;
6423 trace.prev = tracehead; tracehead = &trace;
6424 trace.file = LOCATE_typing;
6425 /* Register variable[0]: Local variable */
6426 variable[0] = self;
6427 /* Register variable[1]: Method return value and escape marker */
6428 variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[PExpr]*/ /* Ensure var: Literal array*/;
6429 /* Register variable[3]: Result */
6430 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6431 CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
6432 /* Register variable[2]: Result */
6433 variable[1] = variable[2];
6434 goto return_label252;
6435 return_label252: while(false);
6436 tracehead = trace.prev;
6437 return variable[1];
6438 }
6439 void typing___AEqExpr___after_typing(val_t self, val_t param0) {
6440 struct trace_t trace = {NULL, NULL, 1321, LOCATE_typing___AEqExpr___after_typing};
6441 static val_t once_value_254 = NIT_NULL; /* Once value for string variable[3]*/
6442 val_t variable[4];
6443 struct WBT_ **closurevariable = NULL;
6444 trace.prev = tracehead; tracehead = &trace;
6445 trace.file = LOCATE_typing;
6446 /* Register variable[0]: Local variable */
6447 variable[0] = self;
6448 /* Register variable[1]: Local variable */
6449 variable[1] = param0;
6450 /* Register variable[2]: Method return value and escape marker */
6451 CALL_SUPER_typing___AEqExpr___after_typing(variable[0])(variable[0], variable[1]) /*super AEqExpr::after_typing*/;
6452 /* Register variable[3]: Result */
6453 variable[3] = CALL_syntax_base___PExpr___is_typed(variable[0])(variable[0]) /*PExpr::is_typed*/;
6454 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
6455 goto return_label253;
6456 }
6457 /* Register variable[3]: Result */
6458 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6459 /* Register variable[3]: Result */
6460 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6461 /* Register variable[3]: Result */
6462 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6463 /* Ensure var variable[3]: Left 'and' operand*/
6464 if (UNTAG_Bool(variable[3])) { /* and */
6465 /* Register variable[3]: Result */
6466 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6467 /* Register variable[3]: Result */
6468 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6469 /* Register variable[3]: Result */
6470 variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/;
6471 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
6472 }
6473 /* Register variable[3]: Result */
6474 /* Ensure var variable[3]: Left 'or' operand*/
6475 if (!UNTAG_Bool(variable[3])) { /* or */
6476 /* Register variable[3]: Result */
6477 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6478 /* Register variable[3]: Result */
6479 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6480 /* Register variable[3]: Result */
6481 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6482 }
6483 /* Register variable[3]: Result */
6484 /* Ensure var variable[3]: Left 'and' operand*/
6485 if (UNTAG_Bool(variable[3])) { /* and */
6486 /* Register variable[3]: Result */
6487 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6488 /* Register variable[3]: Result */
6489 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6490 /* Register variable[3]: Result */
6491 variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/;
6492 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
6493 }
6494 /* Register variable[3]: Result */
6495 if (UNTAG_Bool(variable[3])) { /*if*/
6496 /* Register variable[3]: Once String constant */
6497 if (once_value_254 != NIT_NULL) variable[3] = once_value_254;
6498 else {
6499 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Warning: comparaison between null and a non nullable value."), TAG_Int(59)) /*new String*/;
6500 once_value_254 = variable[3];
6501 }
6502 /* Register variable[3]: Result */
6503 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::warning*/;
6504 }
6505 /* Register variable[3]: Result */
6506 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6507 /* Register variable[3]: Result */
6508 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6509 /* Register variable[3]: Result */
6510 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6511 if (UNTAG_Bool(variable[3])) { /*if*/
6512 /* Register variable[3]: Result */
6513 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6514 CALL_typing___AEqExpr___try_to_isa(variable[0])(variable[0], variable[1] /*v*/, variable[3]) /*AEqExpr::try_to_isa*/;
6515 } else { /*if*/
6516 /* Register variable[3]: Result */
6517 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6518 /* Register variable[3]: Result */
6519 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6520 /* Register variable[3]: Result */
6521 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6522 if (UNTAG_Bool(variable[3])) { /*if*/
6523 /* Register variable[3]: Result */
6524 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6525 CALL_typing___AEqExpr___try_to_isa(variable[0])(variable[0], variable[1] /*v*/, variable[3]) /*AEqExpr::try_to_isa*/;
6526 }
6527 }
6528 return_label253: while(false);
6529 tracehead = trace.prev;
6530 return;
6531 }
6532 val_t typing___AEqExpr___name(val_t self) {
6533 struct trace_t trace = {NULL, NULL, 1320, LOCATE_typing___AEqExpr___name};
6534 static val_t once_value_256; static int once_bool_256; /* Once value for variable[2]*/
6535 static val_t once_value_257 = NIT_NULL; /* Once value for string variable[2]*/
6536 val_t variable[3];
6537 struct WBT_ **closurevariable = NULL;
6538 trace.prev = tracehead; tracehead = &trace;
6539 trace.file = LOCATE_typing;
6540 /* Register variable[0]: Local variable */
6541 variable[0] = self;
6542 /* Register variable[1]: Method return value and escape marker */
6543 /* Register variable[2]: Once expression result */
6544 if (once_bool_256) variable[2] = once_value_256;
6545 else {
6546 /* Register variable[2]: Once String constant */
6547 if (once_value_257 != NIT_NULL) variable[2] = once_value_257;
6548 else {
6549 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("=="), TAG_Int(2)) /*new String*/;
6550 once_value_257 = variable[2];
6551 }
6552 /* Register variable[2]: Result */
6553 /* Register variable[2]: Result */
6554 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6555 once_value_256 = variable[2];
6556 once_bool_256 = true;
6557 }
6558 /* Register variable[2]: Result */
6559 variable[1] = variable[2];
6560 goto return_label255;
6561 return_label255: while(false);
6562 tracehead = trace.prev;
6563 return variable[1];
6564 }
6565 void typing___AEqExpr___try_to_isa(val_t self, val_t param0, val_t param1) {
6566 struct trace_t trace = {NULL, NULL, 1337, LOCATE_typing___AEqExpr___try_to_isa};
6567 val_t variable[7];
6568 struct WBT_ **closurevariable = NULL;
6569 trace.prev = tracehead; tracehead = &trace;
6570 trace.file = LOCATE_typing;
6571 /* Register variable[0]: Local variable */
6572 variable[0] = self;
6573 /* Register variable[1]: Local variable */
6574 variable[1] = param0;
6575 /* Register variable[2]: Local variable */
6576 variable[2] = param1;
6577 /* Register variable[3]: Method return value and escape marker */
6578 /* Register variable[4]: Local variable */
6579 /* Register variable[5]: Result */
6580 variable[5] = CALL_typing___PExpr___its_variable( variable[2] /*n*/)( variable[2] /*n*/) /*PExpr::its_variable*/;
6581 variable[4] = variable[5];
6582 /* Register variable[5]: Result */
6583 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*variable*/ == NIT_NULL /*null*/) || (( variable[4] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*variable*/)( variable[4] /*variable*/, NIT_NULL /*null*/) /*Object::==*/)))))));
6584 if (UNTAG_Bool(variable[5])) { /*if*/
6585 /* Register variable[5]: Result */
6586 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
6587 /* Register variable[6]: Result */
6588 variable[6] = CALL_syntax_base___PExpr___stype( variable[2] /*n*/)( variable[2] /*n*/) /*PExpr::stype*/;
6589 /* Register variable[6]: Result */
6590 variable[6] = CALL_static_type___MMType___as_notnull(variable[6])(variable[6]) /*MMType::as_notnull*/;
6591 /* Register variable[5]: Result */
6592 variable[5] = CALL_control_flow___VariableContext___sub_with(variable[5])(variable[5], variable[0], variable[4] /*variable*/, variable[6]) /*VariableContext::sub_with*/;
6593 ATTR_typing___PExpr____if_false_variable_ctx(variable[0]) /*PExpr::_if_false_variable_ctx*/ = variable[5];
6594 }
6595 return_label258: while(false);
6596 tracehead = trace.prev;
6597 return;
6598 }
6599 void typing___ANeExpr___after_typing(val_t self, val_t param0) {
6600 struct trace_t trace = {NULL, NULL, 1347, LOCATE_typing___ANeExpr___after_typing};
6601 static val_t once_value_260 = NIT_NULL; /* Once value for string variable[3]*/
6602 val_t variable[4];
6603 struct WBT_ **closurevariable = NULL;
6604 trace.prev = tracehead; tracehead = &trace;
6605 trace.file = LOCATE_typing;
6606 /* Register variable[0]: Local variable */
6607 variable[0] = self;
6608 /* Register variable[1]: Local variable */
6609 variable[1] = param0;
6610 /* Register variable[2]: Method return value and escape marker */
6611 CALL_SUPER_typing___ANeExpr___after_typing(variable[0])(variable[0], variable[1]) /*super ANeExpr::after_typing*/;
6612 /* Register variable[3]: Result */
6613 variable[3] = CALL_syntax_base___PExpr___is_typed(variable[0])(variable[0]) /*PExpr::is_typed*/;
6614 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
6615 goto return_label259;
6616 }
6617 /* Register variable[3]: Result */
6618 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6619 /* Register variable[3]: Result */
6620 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6621 /* Register variable[3]: Result */
6622 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6623 /* Ensure var variable[3]: Left 'and' operand*/
6624 if (UNTAG_Bool(variable[3])) { /* and */
6625 /* Register variable[3]: Result */
6626 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6627 /* Register variable[3]: Result */
6628 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6629 /* Register variable[3]: Result */
6630 variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/;
6631 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
6632 }
6633 /* Register variable[3]: Result */
6634 /* Ensure var variable[3]: Left 'or' operand*/
6635 if (!UNTAG_Bool(variable[3])) { /* or */
6636 /* Register variable[3]: Result */
6637 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6638 /* Register variable[3]: Result */
6639 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6640 /* Register variable[3]: Result */
6641 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6642 }
6643 /* Register variable[3]: Result */
6644 /* Ensure var variable[3]: Left 'and' operand*/
6645 if (UNTAG_Bool(variable[3])) { /* and */
6646 /* Register variable[3]: Result */
6647 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6648 /* Register variable[3]: Result */
6649 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6650 /* Register variable[3]: Result */
6651 variable[3] = CALL_static_type___MMType___is_nullable(variable[3])(variable[3]) /*MMType::is_nullable*/;
6652 variable[3] = TAG_Bool(!UNTAG_Bool(variable[3]));
6653 }
6654 /* Register variable[3]: Result */
6655 if (UNTAG_Bool(variable[3])) { /*if*/
6656 /* Register variable[3]: Once String constant */
6657 if (once_value_260 != NIT_NULL) variable[3] = once_value_260;
6658 else {
6659 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Warning: comparaison between null and a non nullable value."), TAG_Int(59)) /*new String*/;
6660 once_value_260 = variable[3];
6661 }
6662 /* Register variable[3]: Result */
6663 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::warning*/;
6664 }
6665 /* Register variable[3]: Result */
6666 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6667 /* Register variable[3]: Result */
6668 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6669 /* Register variable[3]: Result */
6670 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6671 if (UNTAG_Bool(variable[3])) { /*if*/
6672 /* Register variable[3]: Result */
6673 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6674 CALL_typing___ANeExpr___try_to_isa(variable[0])(variable[0], variable[1] /*v*/, variable[3]) /*ANeExpr::try_to_isa*/;
6675 } else { /*if*/
6676 /* Register variable[3]: Result */
6677 variable[3] = CALL_parser_nodes___ABinopExpr___n_expr2(variable[0])(variable[0]) /*ABinopExpr::n_expr2*/;
6678 /* Register variable[3]: Result */
6679 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
6680 /* Register variable[3]: Result */
6681 variable[3] = TAG_Bool((variable[3]==NIT_NULL) || VAL_ISA(variable[3], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6682 if (UNTAG_Bool(variable[3])) { /*if*/
6683 /* Register variable[3]: Result */
6684 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
6685 CALL_typing___ANeExpr___try_to_isa(variable[0])(variable[0], variable[1] /*v*/, variable[3]) /*ANeExpr::try_to_isa*/;
6686 }
6687 }
6688 return_label259: while(false);
6689 tracehead = trace.prev;
6690 return;
6691 }
6692 val_t typing___ANeExpr___name(val_t self) {
6693 struct trace_t trace = {NULL, NULL, 1346, LOCATE_typing___ANeExpr___name};
6694 static val_t once_value_262; static int once_bool_262; /* Once value for variable[2]*/
6695 static val_t once_value_263 = NIT_NULL; /* Once value for string variable[2]*/
6696 val_t variable[3];
6697 struct WBT_ **closurevariable = NULL;
6698 trace.prev = tracehead; tracehead = &trace;
6699 trace.file = LOCATE_typing;
6700 /* Register variable[0]: Local variable */
6701 variable[0] = self;
6702 /* Register variable[1]: Method return value and escape marker */
6703 /* Register variable[2]: Once expression result */
6704 if (once_bool_262) variable[2] = once_value_262;
6705 else {
6706 /* Register variable[2]: Once String constant */
6707 if (once_value_263 != NIT_NULL) variable[2] = once_value_263;
6708 else {
6709 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("!="), TAG_Int(2)) /*new String*/;
6710 once_value_263 = variable[2];
6711 }
6712 /* Register variable[2]: Result */
6713 /* Register variable[2]: Result */
6714 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6715 once_value_262 = variable[2];
6716 once_bool_262 = true;
6717 }
6718 /* Register variable[2]: Result */
6719 variable[1] = variable[2];
6720 goto return_label261;
6721 return_label261: while(false);
6722 tracehead = trace.prev;
6723 return variable[1];
6724 }
6725 void typing___ANeExpr___try_to_isa(val_t self, val_t param0, val_t param1) {
6726 struct trace_t trace = {NULL, NULL, 1363, LOCATE_typing___ANeExpr___try_to_isa};
6727 val_t variable[7];
6728 struct WBT_ **closurevariable = NULL;
6729 trace.prev = tracehead; tracehead = &trace;
6730 trace.file = LOCATE_typing;
6731 /* Register variable[0]: Local variable */
6732 variable[0] = self;
6733 /* Register variable[1]: Local variable */
6734 variable[1] = param0;
6735 /* Register variable[2]: Local variable */
6736 variable[2] = param1;
6737 /* Register variable[3]: Method return value and escape marker */
6738 /* Register variable[4]: Local variable */
6739 /* Register variable[5]: Result */
6740 variable[5] = CALL_typing___PExpr___its_variable( variable[2] /*n*/)( variable[2] /*n*/) /*PExpr::its_variable*/;
6741 variable[4] = variable[5];
6742 /* Register variable[5]: Result */
6743 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*variable*/ == NIT_NULL /*null*/) || (( variable[4] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*variable*/)( variable[4] /*variable*/, NIT_NULL /*null*/) /*Object::==*/)))))));
6744 if (UNTAG_Bool(variable[5])) { /*if*/
6745 /* Register variable[5]: Result */
6746 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
6747 /* Register variable[6]: Result */
6748 variable[6] = CALL_syntax_base___PExpr___stype( variable[2] /*n*/)( variable[2] /*n*/) /*PExpr::stype*/;
6749 /* Register variable[6]: Result */
6750 variable[6] = CALL_static_type___MMType___as_notnull(variable[6])(variable[6]) /*MMType::as_notnull*/;
6751 /* Register variable[5]: Result */
6752 variable[5] = CALL_control_flow___VariableContext___sub_with(variable[5])(variable[5], variable[0], variable[4] /*variable*/, variable[6]) /*VariableContext::sub_with*/;
6753 ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[5];
6754 }
6755 return_label264: while(false);
6756 tracehead = trace.prev;
6757 return;
6758 }
6759 val_t typing___ALtExpr___name(val_t self) {
6760 struct trace_t trace = {NULL, NULL, 1372, LOCATE_typing___ALtExpr___name};
6761 static val_t once_value_266; static int once_bool_266; /* Once value for variable[2]*/
6762 static val_t once_value_267 = NIT_NULL; /* Once value for string variable[2]*/
6763 val_t variable[3];
6764 struct WBT_ **closurevariable = NULL;
6765 trace.prev = tracehead; tracehead = &trace;
6766 trace.file = LOCATE_typing;
6767 /* Register variable[0]: Local variable */
6768 variable[0] = self;
6769 /* Register variable[1]: Method return value and escape marker */
6770 /* Register variable[2]: Once expression result */
6771 if (once_bool_266) variable[2] = once_value_266;
6772 else {
6773 /* Register variable[2]: Once String constant */
6774 if (once_value_267 != NIT_NULL) variable[2] = once_value_267;
6775 else {
6776 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("<"), TAG_Int(1)) /*new String*/;
6777 once_value_267 = variable[2];
6778 }
6779 /* Register variable[2]: Result */
6780 /* Register variable[2]: Result */
6781 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6782 once_value_266 = variable[2];
6783 once_bool_266 = true;
6784 }
6785 /* Register variable[2]: Result */
6786 variable[1] = variable[2];
6787 goto return_label265;
6788 return_label265: while(false);
6789 tracehead = trace.prev;
6790 return variable[1];
6791 }
6792 val_t typing___ALeExpr___name(val_t self) {
6793 struct trace_t trace = {NULL, NULL, 1375, LOCATE_typing___ALeExpr___name};
6794 static val_t once_value_269; static int once_bool_269; /* Once value for variable[2]*/
6795 static val_t once_value_270 = NIT_NULL; /* Once value for string variable[2]*/
6796 val_t variable[3];
6797 struct WBT_ **closurevariable = NULL;
6798 trace.prev = tracehead; tracehead = &trace;
6799 trace.file = LOCATE_typing;
6800 /* Register variable[0]: Local variable */
6801 variable[0] = self;
6802 /* Register variable[1]: Method return value and escape marker */
6803 /* Register variable[2]: Once expression result */
6804 if (once_bool_269) variable[2] = once_value_269;
6805 else {
6806 /* Register variable[2]: Once String constant */
6807 if (once_value_270 != NIT_NULL) variable[2] = once_value_270;
6808 else {
6809 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("<="), TAG_Int(2)) /*new String*/;
6810 once_value_270 = variable[2];
6811 }
6812 /* Register variable[2]: Result */
6813 /* Register variable[2]: Result */
6814 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6815 once_value_269 = variable[2];
6816 once_bool_269 = true;
6817 }
6818 /* Register variable[2]: Result */
6819 variable[1] = variable[2];
6820 goto return_label268;
6821 return_label268: while(false);
6822 tracehead = trace.prev;
6823 return variable[1];
6824 }
6825 val_t typing___AGtExpr___name(val_t self) {
6826 struct trace_t trace = {NULL, NULL, 1378, LOCATE_typing___AGtExpr___name};
6827 static val_t once_value_272; static int once_bool_272; /* Once value for variable[2]*/
6828 static val_t once_value_273 = NIT_NULL; /* Once value for string variable[2]*/
6829 val_t variable[3];
6830 struct WBT_ **closurevariable = NULL;
6831 trace.prev = tracehead; tracehead = &trace;
6832 trace.file = LOCATE_typing;
6833 /* Register variable[0]: Local variable */
6834 variable[0] = self;
6835 /* Register variable[1]: Method return value and escape marker */
6836 /* Register variable[2]: Once expression result */
6837 if (once_bool_272) variable[2] = once_value_272;
6838 else {
6839 /* Register variable[2]: Once String constant */
6840 if (once_value_273 != NIT_NULL) variable[2] = once_value_273;
6841 else {
6842 variable[2] = NEW_String_string___String___with_native(BOX_NativeString(">"), TAG_Int(1)) /*new String*/;
6843 once_value_273 = variable[2];
6844 }
6845 /* Register variable[2]: Result */
6846 /* Register variable[2]: Result */
6847 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6848 once_value_272 = variable[2];
6849 once_bool_272 = true;
6850 }
6851 /* Register variable[2]: Result */
6852 variable[1] = variable[2];
6853 goto return_label271;
6854 return_label271: while(false);
6855 tracehead = trace.prev;
6856 return variable[1];
6857 }
6858 val_t typing___AGeExpr___name(val_t self) {
6859 struct trace_t trace = {NULL, NULL, 1381, LOCATE_typing___AGeExpr___name};
6860 static val_t once_value_275; static int once_bool_275; /* Once value for variable[2]*/
6861 static val_t once_value_276 = NIT_NULL; /* Once value for string variable[2]*/
6862 val_t variable[3];
6863 struct WBT_ **closurevariable = NULL;
6864 trace.prev = tracehead; tracehead = &trace;
6865 trace.file = LOCATE_typing;
6866 /* Register variable[0]: Local variable */
6867 variable[0] = self;
6868 /* Register variable[1]: Method return value and escape marker */
6869 /* Register variable[2]: Once expression result */
6870 if (once_bool_275) variable[2] = once_value_275;
6871 else {
6872 /* Register variable[2]: Once String constant */
6873 if (once_value_276 != NIT_NULL) variable[2] = once_value_276;
6874 else {
6875 variable[2] = NEW_String_string___String___with_native(BOX_NativeString(">="), TAG_Int(2)) /*new String*/;
6876 once_value_276 = variable[2];
6877 }
6878 /* Register variable[2]: Result */
6879 /* Register variable[2]: Result */
6880 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6881 once_value_275 = variable[2];
6882 once_bool_275 = true;
6883 }
6884 /* Register variable[2]: Result */
6885 variable[1] = variable[2];
6886 goto return_label274;
6887 return_label274: while(false);
6888 tracehead = trace.prev;
6889 return variable[1];
6890 }
6891 val_t typing___APlusExpr___name(val_t self) {
6892 struct trace_t trace = {NULL, NULL, 1384, LOCATE_typing___APlusExpr___name};
6893 static val_t once_value_278; static int once_bool_278; /* Once value for variable[2]*/
6894 static val_t once_value_279 = NIT_NULL; /* Once value for string variable[2]*/
6895 val_t variable[3];
6896 struct WBT_ **closurevariable = NULL;
6897 trace.prev = tracehead; tracehead = &trace;
6898 trace.file = LOCATE_typing;
6899 /* Register variable[0]: Local variable */
6900 variable[0] = self;
6901 /* Register variable[1]: Method return value and escape marker */
6902 /* Register variable[2]: Once expression result */
6903 if (once_bool_278) variable[2] = once_value_278;
6904 else {
6905 /* Register variable[2]: Once String constant */
6906 if (once_value_279 != NIT_NULL) variable[2] = once_value_279;
6907 else {
6908 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("+"), TAG_Int(1)) /*new String*/;
6909 once_value_279 = variable[2];
6910 }
6911 /* Register variable[2]: Result */
6912 /* Register variable[2]: Result */
6913 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6914 once_value_278 = variable[2];
6915 once_bool_278 = true;
6916 }
6917 /* Register variable[2]: Result */
6918 variable[1] = variable[2];
6919 goto return_label277;
6920 return_label277: while(false);
6921 tracehead = trace.prev;
6922 return variable[1];
6923 }
6924 val_t typing___AMinusExpr___name(val_t self) {
6925 struct trace_t trace = {NULL, NULL, 1387, LOCATE_typing___AMinusExpr___name};
6926 static val_t once_value_281; static int once_bool_281; /* Once value for variable[2]*/
6927 static val_t once_value_282 = NIT_NULL; /* Once value for string variable[2]*/
6928 val_t variable[3];
6929 struct WBT_ **closurevariable = NULL;
6930 trace.prev = tracehead; tracehead = &trace;
6931 trace.file = LOCATE_typing;
6932 /* Register variable[0]: Local variable */
6933 variable[0] = self;
6934 /* Register variable[1]: Method return value and escape marker */
6935 /* Register variable[2]: Once expression result */
6936 if (once_bool_281) variable[2] = once_value_281;
6937 else {
6938 /* Register variable[2]: Once String constant */
6939 if (once_value_282 != NIT_NULL) variable[2] = once_value_282;
6940 else {
6941 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("-"), TAG_Int(1)) /*new String*/;
6942 once_value_282 = variable[2];
6943 }
6944 /* Register variable[2]: Result */
6945 /* Register variable[2]: Result */
6946 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6947 once_value_281 = variable[2];
6948 once_bool_281 = true;
6949 }
6950 /* Register variable[2]: Result */
6951 variable[1] = variable[2];
6952 goto return_label280;
6953 return_label280: while(false);
6954 tracehead = trace.prev;
6955 return variable[1];
6956 }
6957 val_t typing___AStarshipExpr___name(val_t self) {
6958 struct trace_t trace = {NULL, NULL, 1390, LOCATE_typing___AStarshipExpr___name};
6959 static val_t once_value_284; static int once_bool_284; /* Once value for variable[2]*/
6960 static val_t once_value_285 = NIT_NULL; /* Once value for string variable[2]*/
6961 val_t variable[3];
6962 struct WBT_ **closurevariable = NULL;
6963 trace.prev = tracehead; tracehead = &trace;
6964 trace.file = LOCATE_typing;
6965 /* Register variable[0]: Local variable */
6966 variable[0] = self;
6967 /* Register variable[1]: Method return value and escape marker */
6968 /* Register variable[2]: Once expression result */
6969 if (once_bool_284) variable[2] = once_value_284;
6970 else {
6971 /* Register variable[2]: Once String constant */
6972 if (once_value_285 != NIT_NULL) variable[2] = once_value_285;
6973 else {
6974 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("<=>"), TAG_Int(3)) /*new String*/;
6975 once_value_285 = variable[2];
6976 }
6977 /* Register variable[2]: Result */
6978 /* Register variable[2]: Result */
6979 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
6980 once_value_284 = variable[2];
6981 once_bool_284 = true;
6982 }
6983 /* Register variable[2]: Result */
6984 variable[1] = variable[2];
6985 goto return_label283;
6986 return_label283: while(false);
6987 tracehead = trace.prev;
6988 return variable[1];
6989 }
6990 val_t typing___AStarExpr___name(val_t self) {
6991 struct trace_t trace = {NULL, NULL, 1393, LOCATE_typing___AStarExpr___name};
6992 static val_t once_value_287; static int once_bool_287; /* Once value for variable[2]*/
6993 static val_t once_value_288 = NIT_NULL; /* Once value for string variable[2]*/
6994 val_t variable[3];
6995 struct WBT_ **closurevariable = NULL;
6996 trace.prev = tracehead; tracehead = &trace;
6997 trace.file = LOCATE_typing;
6998 /* Register variable[0]: Local variable */
6999 variable[0] = self;
7000 /* Register variable[1]: Method return value and escape marker */
7001 /* Register variable[2]: Once expression result */
7002 if (once_bool_287) variable[2] = once_value_287;
7003 else {
7004 /* Register variable[2]: Once String constant */
7005 if (once_value_288 != NIT_NULL) variable[2] = once_value_288;
7006 else {
7007 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("*"), TAG_Int(1)) /*new String*/;
7008 once_value_288 = variable[2];
7009 }
7010 /* Register variable[2]: Result */
7011 /* Register variable[2]: Result */
7012 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7013 once_value_287 = variable[2];
7014 once_bool_287 = true;
7015 }
7016 /* Register variable[2]: Result */
7017 variable[1] = variable[2];
7018 goto return_label286;
7019 return_label286: while(false);
7020 tracehead = trace.prev;
7021 return variable[1];
7022 }
7023 val_t typing___ASlashExpr___name(val_t self) {
7024 struct trace_t trace = {NULL, NULL, 1396, LOCATE_typing___ASlashExpr___name};
7025 static val_t once_value_290; static int once_bool_290; /* Once value for variable[2]*/
7026 static val_t once_value_291 = NIT_NULL; /* Once value for string variable[2]*/
7027 val_t variable[3];
7028 struct WBT_ **closurevariable = NULL;
7029 trace.prev = tracehead; tracehead = &trace;
7030 trace.file = LOCATE_typing;
7031 /* Register variable[0]: Local variable */
7032 variable[0] = self;
7033 /* Register variable[1]: Method return value and escape marker */
7034 /* Register variable[2]: Once expression result */
7035 if (once_bool_290) variable[2] = once_value_290;
7036 else {
7037 /* Register variable[2]: Once String constant */
7038 if (once_value_291 != NIT_NULL) variable[2] = once_value_291;
7039 else {
7040 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("/"), TAG_Int(1)) /*new String*/;
7041 once_value_291 = variable[2];
7042 }
7043 /* Register variable[2]: Result */
7044 /* Register variable[2]: Result */
7045 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7046 once_value_290 = variable[2];
7047 once_bool_290 = true;
7048 }
7049 /* Register variable[2]: Result */
7050 variable[1] = variable[2];
7051 goto return_label289;
7052 return_label289: while(false);
7053 tracehead = trace.prev;
7054 return variable[1];
7055 }
7056 val_t typing___APercentExpr___name(val_t self) {
7057 struct trace_t trace = {NULL, NULL, 1399, LOCATE_typing___APercentExpr___name};
7058 static val_t once_value_293; static int once_bool_293; /* Once value for variable[2]*/
7059 static val_t once_value_294 = NIT_NULL; /* Once value for string variable[2]*/
7060 val_t variable[3];
7061 struct WBT_ **closurevariable = NULL;
7062 trace.prev = tracehead; tracehead = &trace;
7063 trace.file = LOCATE_typing;
7064 /* Register variable[0]: Local variable */
7065 variable[0] = self;
7066 /* Register variable[1]: Method return value and escape marker */
7067 /* Register variable[2]: Once expression result */
7068 if (once_bool_293) variable[2] = once_value_293;
7069 else {
7070 /* Register variable[2]: Once String constant */
7071 if (once_value_294 != NIT_NULL) variable[2] = once_value_294;
7072 else {
7073 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("%"), TAG_Int(1)) /*new String*/;
7074 once_value_294 = variable[2];
7075 }
7076 /* Register variable[2]: Result */
7077 /* Register variable[2]: Result */
7078 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7079 once_value_293 = variable[2];
7080 once_bool_293 = true;
7081 }
7082 /* Register variable[2]: Result */
7083 variable[1] = variable[2];
7084 goto return_label292;
7085 return_label292: while(false);
7086 tracehead = trace.prev;
7087 return variable[1];
7088 }
7089 val_t typing___AUminusExpr___name(val_t self) {
7090 struct trace_t trace = {NULL, NULL, 1403, LOCATE_typing___AUminusExpr___name};
7091 static val_t once_value_296; static int once_bool_296; /* Once value for variable[2]*/
7092 static val_t once_value_297 = NIT_NULL; /* Once value for string variable[2]*/
7093 val_t variable[3];
7094 struct WBT_ **closurevariable = NULL;
7095 trace.prev = tracehead; tracehead = &trace;
7096 trace.file = LOCATE_typing;
7097 /* Register variable[0]: Local variable */
7098 variable[0] = self;
7099 /* Register variable[1]: Method return value and escape marker */
7100 /* Register variable[2]: Once expression result */
7101 if (once_bool_296) variable[2] = once_value_296;
7102 else {
7103 /* Register variable[2]: Once String constant */
7104 if (once_value_297 != NIT_NULL) variable[2] = once_value_297;
7105 else {
7106 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("unary -"), TAG_Int(7)) /*new String*/;
7107 once_value_297 = variable[2];
7108 }
7109 /* Register variable[2]: Result */
7110 /* Register variable[2]: Result */
7111 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7112 once_value_296 = variable[2];
7113 once_bool_296 = true;
7114 }
7115 /* Register variable[2]: Result */
7116 variable[1] = variable[2];
7117 goto return_label295;
7118 return_label295: while(false);
7119 tracehead = trace.prev;
7120 return variable[1];
7121 }
7122 val_t typing___AUminusExpr___raw_arguments(val_t self) {
7123 struct trace_t trace = {NULL, NULL, 1404, LOCATE_typing___AUminusExpr___raw_arguments};
7124 val_t variable[2];
7125 struct WBT_ **closurevariable = NULL;
7126 trace.prev = tracehead; tracehead = &trace;
7127 trace.file = LOCATE_typing;
7128 /* Register variable[0]: Local variable */
7129 variable[0] = self;
7130 /* Register variable[1]: Method return value and escape marker */
7131 variable[1] = NIT_NULL /*null*/;
7132 goto return_label298;
7133 return_label298: while(false);
7134 tracehead = trace.prev;
7135 return variable[1];
7136 }
7137 void typing___ACallFormExpr___after_typing(val_t self, val_t param0) {
7138 struct trace_t trace = {NULL, NULL, 1408, LOCATE_typing___ACallFormExpr___after_typing};
7139 static val_t once_value_300 = NIT_NULL; /* Once value for string variable[6]*/
7140 static val_t once_value_301 = NIT_NULL; /* Once value for string variable[6]*/
7141 val_t variable[9];
7142 struct WBT_ **closurevariable = NULL;
7143 trace.prev = tracehead; tracehead = &trace;
7144 trace.file = LOCATE_typing;
7145 /* Register variable[0]: Local variable */
7146 variable[0] = self;
7147 /* Register variable[1]: Local variable */
7148 variable[1] = param0;
7149 /* Register variable[2]: Method return value and escape marker */
7150 /* Register variable[3]: Result */
7151 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
7152 /* Register variable[3]: Result */
7153 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::==*/)))))));
7154 /* Ensure var variable[3]: Left 'and' operand*/
7155 if (UNTAG_Bool(variable[3])) { /* and */
7156 /* Register variable[3]: Result */
7157 variable[3] = CALL_parser_nodes___ASendExpr___n_expr(variable[0])(variable[0]) /*ASendExpr::n_expr*/;
7158 /* Register variable[3]: Result */
7159 variable[3] = CALL_typing___PExpr___is_implicit_self(variable[3])(variable[3]) /*PExpr::is_implicit_self*/;
7160 }
7161 /* Register variable[3]: Result */
7162 if (UNTAG_Bool(variable[3])) { /*if*/
7163 /* Register variable[3]: Local variable */
7164 /* Register variable[4]: Result */
7165 variable[4] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7166 /* Register variable[4]: Result */
7167 variable[4] = CALL_syntax_base___Token___to_symbol(variable[4])(variable[4]) /*Token::to_symbol*/;
7168 variable[3] = variable[4];
7169 /* Register variable[4]: Local variable */
7170 /* Register variable[5]: Result */
7171 variable[5] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7172 /* Register variable[5]: Result */
7173 variable[5] = CALL_control_flow___VariableContext_____bra(variable[5])(variable[5], variable[3] /*name*/) /*VariableContext::[]*/;
7174 variable[4] = variable[5];
7175 /* Register variable[5]: Result */
7176 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*variable*/ == NIT_NULL /*null*/) || (( variable[4] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[4] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[4] /*variable*/)( variable[4] /*variable*/, NIT_NULL /*null*/) /*Object::==*/)))))));
7177 if (UNTAG_Bool(variable[5])) { /*if*/
7178 /* Register variable[5]: Result */
7179 variable[5] = TAG_Bool(( variable[4] /*variable*/==NIT_NULL) || VAL_ISA( variable[4] /*variable*/, COLOR_ClosureVariable, ID_ClosureVariable)) /*cast ClosureVariable*/;
7180 if (UNTAG_Bool(variable[5])) { /*if*/
7181 /* Register variable[5]: Local variable */
7182 /* Register variable[6]: Result */
7183 variable[6] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7184 /* Register variable[7]: Result */
7185 variable[7] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/;
7186 /* Register variable[8]: Result */
7187 variable[8] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/;
7188 /* Register variable[6]: Result */
7189 variable[6] = NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(variable[6], variable[7], variable[8]) /*new AClosureCallExpr*/;
7190 variable[5] = variable[6];
7191 CALL_parser_prod___PNode___replace_with(variable[0])(variable[0], variable[5] /*n*/) /*Prod::replace_with*/;
7192 CALL_syntax_base___AClosureCallExpr___variable__eq( variable[5] /*n*/)( variable[5] /*n*/, variable[4] /*variable*/) /*AClosureCallExpr::variable=*/;
7193 CALL_typing___PNode___after_typing( variable[5] /*n*/)( variable[5] /*n*/, variable[1] /*v*/) /*AClosureCallExpr::after_typing*/;
7194 goto return_label299;
7195 } else { /*if*/
7196 /* Register variable[5]: Result */
7197 variable[5] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/;
7198 /* Register variable[5]: Result */
7199 variable[5] = CALL_abstract_collection___Collection___is_empty(variable[5])(variable[5]) /*List::is_empty*/;
7200 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
7201 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
7202 /* Register variable[6]: Once String constant */
7203 if (once_value_300 != NIT_NULL) variable[6] = once_value_300;
7204 else {
7205 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
7206 once_value_300 = variable[6];
7207 }
7208 /* Register variable[6]: Result */
7209 /* Ensure var variable[6]: super-string element*/
7210 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
7211 variable[6] = variable[3] /*name*/ /* Ensure var: super-string element*/;
7212 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
7213 /* Register variable[6]: Once String constant */
7214 if (once_value_301 != NIT_NULL) variable[6] = once_value_301;
7215 else {
7216 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" is variable, not a function."), TAG_Int(29)) /*new String*/;
7217 once_value_301 = variable[6];
7218 }
7219 /* Register variable[6]: Result */
7220 /* Ensure var variable[6]: super-string element*/
7221 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
7222 /* Register variable[5]: Result */
7223 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
7224 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
7225 goto return_label299;
7226 }
7227 /* Register variable[5]: Local variable */
7228 /* Register variable[6]: Result */
7229 variable[6] = CALL_typing___ACallFormExpr___variable_create(variable[0])(variable[0], variable[4] /*variable*/) /*ACallFormExpr::variable_create*/;
7230 variable[5] = variable[6];
7231 CALL_syntax_base___AVarFormExpr___variable__eq( variable[5] /*vform*/)( variable[5] /*vform*/, variable[4] /*variable*/) /*AVarFormExpr::variable=*/;
7232 CALL_parser_prod___PNode___replace_with(variable[0])(variable[0], variable[5] /*vform*/) /*Prod::replace_with*/;
7233 CALL_typing___PNode___after_typing( variable[5] /*vform*/)( variable[5] /*vform*/, variable[1] /*v*/) /*PNode::after_typing*/;
7234 goto return_label299;
7235 }
7236 }
7237 }
7238 CALL_SUPER_typing___ACallFormExpr___after_typing(variable[0])(variable[0], variable[1]) /*super ACallFormExpr::after_typing*/;
7239 return_label299: while(false);
7240 tracehead = trace.prev;
7241 return;
7242 }
7243 val_t typing___ACallFormExpr___closure_defs(val_t self) {
7244 struct trace_t trace = {NULL, NULL, 1437, LOCATE_typing___ACallFormExpr___closure_defs};
7245 val_t variable[3];
7246 struct WBT_ **closurevariable = NULL;
7247 trace.prev = tracehead; tracehead = &trace;
7248 trace.file = LOCATE_typing;
7249 /* Register variable[0]: Local variable */
7250 variable[0] = self;
7251 /* Register variable[1]: Method return value and escape marker */
7252 /* Register variable[2]: Result */
7253 variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/;
7254 /* Register variable[2]: Result */
7255 variable[2] = TAG_Bool((variable[2] == NIT_NULL /*null*/) || ((variable[2] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[2])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[2], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[2])(variable[2], NIT_NULL /*null*/) /*Object::==*/)))));
7256 /* Ensure var variable[2]: Left 'or' operand*/
7257 if (!UNTAG_Bool(variable[2])) { /* or */
7258 /* Register variable[2]: Result */
7259 variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/;
7260 /* Register variable[2]: Result */
7261 variable[2] = CALL_abstract_collection___Collection___is_empty(variable[2])(variable[2]) /*List::is_empty*/;
7262 }
7263 /* Register variable[2]: Result */
7264 if (UNTAG_Bool(variable[2])) { /*if*/
7265 variable[1] = NIT_NULL /*null*/;
7266 goto return_label302;
7267 } else { /*if*/
7268 /* Register variable[2]: Result */
7269 variable[2] = CALL_parser_nodes___ASendExpr___n_closure_defs(variable[0])(variable[0]) /*ASendExpr::n_closure_defs*/;
7270 /* Register variable[2]: Result */
7271 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7272 variable[1] = variable[2];
7273 goto return_label302;
7274 }
7275 return_label302: while(false);
7276 tracehead = trace.prev;
7277 return variable[1];
7278 }
7279 val_t typing___ACallFormExpr___variable_create(val_t self, val_t param0) {
7280 struct trace_t trace = {NULL, NULL, 1446, LOCATE_typing___ACallFormExpr___variable_create};
7281 val_t *variable = NULL;
7282 struct WBT_ **closurevariable = NULL;
7283 trace.prev = tracehead; tracehead = &trace;
7284 trace.file = LOCATE_typing;
7285 fprintf(stderr, "Deferred method called");
7286 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1446);
7287 nit_exit(1);
7288 tracehead = trace.prev;
7289 return NIT_NULL;
7290 }
7291 val_t typing___ACallExpr___name(val_t self) {
7292 struct trace_t trace = {NULL, NULL, 1456, LOCATE_typing___ACallExpr___name};
7293 val_t variable[3];
7294 struct WBT_ **closurevariable = NULL;
7295 trace.prev = tracehead; tracehead = &trace;
7296 trace.file = LOCATE_typing;
7297 /* Register variable[0]: Local variable */
7298 variable[0] = self;
7299 /* Register variable[1]: Method return value and escape marker */
7300 /* Register variable[2]: Result */
7301 variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7302 /* Register variable[2]: Result */
7303 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
7304 variable[1] = variable[2];
7305 goto return_label303;
7306 return_label303: while(false);
7307 tracehead = trace.prev;
7308 return variable[1];
7309 }
7310 val_t typing___ACallExpr___raw_arguments(val_t self) {
7311 struct trace_t trace = {NULL, NULL, 1457, LOCATE_typing___ACallExpr___raw_arguments};
7312 val_t variable[3];
7313 struct WBT_ **closurevariable = NULL;
7314 trace.prev = tracehead; tracehead = &trace;
7315 trace.file = LOCATE_typing;
7316 /* Register variable[0]: Local variable */
7317 variable[0] = self;
7318 /* Register variable[1]: Method return value and escape marker */
7319 /* Register variable[2]: Result */
7320 variable[2] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/;
7321 /* Register variable[2]: Result */
7322 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7323 variable[1] = variable[2];
7324 goto return_label304;
7325 return_label304: while(false);
7326 tracehead = trace.prev;
7327 return variable[1];
7328 }
7329 val_t typing___ACallExpr___variable_create(val_t self, val_t param0) {
7330 struct trace_t trace = {NULL, NULL, 1451, LOCATE_typing___ACallExpr___variable_create};
7331 val_t variable[4];
7332 struct WBT_ **closurevariable = NULL;
7333 trace.prev = tracehead; tracehead = &trace;
7334 trace.file = LOCATE_typing;
7335 /* Register variable[0]: Local variable */
7336 variable[0] = self;
7337 /* Register variable[1]: Local variable */
7338 variable[1] = param0;
7339 /* Register variable[2]: Method return value and escape marker */
7340 /* Register variable[3]: Result */
7341 variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7342 /* Register variable[3]: Result */
7343 variable[3] = NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(variable[3]) /*new AVarExpr*/;
7344 variable[2] = variable[3];
7345 goto return_label305;
7346 return_label305: while(false);
7347 tracehead = trace.prev;
7348 return variable[2];
7349 }
7350 val_t typing___ACallAssignExpr___name(val_t self) {
7351 struct trace_t trace = {NULL, NULL, 1466, LOCATE_typing___ACallAssignExpr___name};
7352 static val_t once_value_307 = NIT_NULL; /* Once value for string variable[3]*/
7353 val_t variable[4];
7354 struct WBT_ **closurevariable = NULL;
7355 trace.prev = tracehead; tracehead = &trace;
7356 trace.file = LOCATE_typing;
7357 /* Register variable[0]: Local variable */
7358 variable[0] = self;
7359 /* Register variable[1]: Method return value and escape marker */
7360 /* Register variable[2]: Result */
7361 variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7362 /* Register variable[2]: Result */
7363 variable[2] = CALL_lexer___Token___text(variable[2])(variable[2]) /*Token::text*/;
7364 /* Register variable[3]: Once String constant */
7365 if (once_value_307 != NIT_NULL) variable[3] = once_value_307;
7366 else {
7367 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("="), TAG_Int(1)) /*new String*/;
7368 once_value_307 = variable[3];
7369 }
7370 /* Register variable[3]: Result */
7371 /* Register variable[2]: Result */
7372 variable[2] = CALL_string___String_____plus(variable[2])(variable[2], variable[3]) /*String::+*/;
7373 /* Register variable[2]: Result */
7374 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7375 variable[1] = variable[2];
7376 goto return_label306;
7377 return_label306: while(false);
7378 tracehead = trace.prev;
7379 return variable[1];
7380 }
7381 val_t typing___ACallAssignExpr___raw_arguments(val_t self) {
7382 struct trace_t trace = {NULL, NULL, 1467, LOCATE_typing___ACallAssignExpr___raw_arguments};
7383 val_t variable[4];
7384 struct WBT_ **closurevariable = NULL;
7385 trace.prev = tracehead; tracehead = &trace;
7386 trace.file = LOCATE_typing;
7387 /* Register variable[0]: Local variable */
7388 variable[0] = self;
7389 /* Register variable[1]: Method return value and escape marker */
7390 /* Register variable[2]: Local variable */
7391 /* Register variable[3]: Result */
7392 variable[3] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/;
7393 /* Register variable[3]: Result */
7394 variable[3] = CALL_array___Collection___to_a(variable[3])(variable[3]) /*Collection::to_a*/;
7395 variable[2] = variable[3];
7396 /* Register variable[3]: Result */
7397 variable[3] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
7398 CALL_abstract_collection___SimpleCollection___add( variable[2] /*res*/)( variable[2] /*res*/, variable[3]) /*AbstractArray::add*/;
7399 variable[1] = variable[2] /*res*/;
7400 goto return_label308;
7401 return_label308: while(false);
7402 tracehead = trace.prev;
7403 return variable[1];
7404 }
7405 val_t typing___ACallAssignExpr___variable_create(val_t self, val_t param0) {
7406 struct trace_t trace = {NULL, NULL, 1461, LOCATE_typing___ACallAssignExpr___variable_create};
7407 val_t variable[6];
7408 struct WBT_ **closurevariable = NULL;
7409 trace.prev = tracehead; tracehead = &trace;
7410 trace.file = LOCATE_typing;
7411 /* Register variable[0]: Local variable */
7412 variable[0] = self;
7413 /* Register variable[1]: Local variable */
7414 variable[1] = param0;
7415 /* Register variable[2]: Method return value and escape marker */
7416 /* Register variable[3]: Result */
7417 variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7418 /* Register variable[4]: Result */
7419 variable[4] = CALL_parser_nodes___AAssignFormExpr___n_assign(variable[0])(variable[0]) /*AAssignFormExpr::n_assign*/;
7420 /* Register variable[5]: Result */
7421 variable[5] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
7422 /* Register variable[3]: Result */
7423 variable[3] = NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(variable[3], variable[4], variable[5]) /*new AVarAssignExpr*/;
7424 variable[2] = variable[3];
7425 goto return_label309;
7426 return_label309: while(false);
7427 tracehead = trace.prev;
7428 return variable[2];
7429 }
7430 val_t typing___ACallReassignExpr___name(val_t self) {
7431 struct trace_t trace = {NULL, NULL, 1481, LOCATE_typing___ACallReassignExpr___name};
7432 val_t variable[3];
7433 struct WBT_ **closurevariable = NULL;
7434 trace.prev = tracehead; tracehead = &trace;
7435 trace.file = LOCATE_typing;
7436 /* Register variable[0]: Local variable */
7437 variable[0] = self;
7438 /* Register variable[1]: Method return value and escape marker */
7439 /* Register variable[2]: Result */
7440 variable[2] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7441 /* Register variable[2]: Result */
7442 variable[2] = CALL_syntax_base___Token___to_symbol(variable[2])(variable[2]) /*Token::to_symbol*/;
7443 variable[1] = variable[2];
7444 goto return_label310;
7445 return_label310: while(false);
7446 tracehead = trace.prev;
7447 return variable[1];
7448 }
7449 val_t typing___ACallReassignExpr___raw_arguments(val_t self) {
7450 struct trace_t trace = {NULL, NULL, 1482, LOCATE_typing___ACallReassignExpr___raw_arguments};
7451 val_t variable[3];
7452 struct WBT_ **closurevariable = NULL;
7453 trace.prev = tracehead; tracehead = &trace;
7454 trace.file = LOCATE_typing;
7455 /* Register variable[0]: Local variable */
7456 variable[0] = self;
7457 /* Register variable[1]: Method return value and escape marker */
7458 /* Register variable[2]: Result */
7459 variable[2] = CALL_parser_nodes___ACallFormExpr___n_args(variable[0])(variable[0]) /*ACallFormExpr::n_args*/;
7460 /* Register variable[2]: Result */
7461 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7462 variable[1] = variable[2];
7463 goto return_label311;
7464 return_label311: while(false);
7465 tracehead = trace.prev;
7466 return variable[1];
7467 }
7468 val_t typing___ACallReassignExpr___variable_create(val_t self, val_t param0) {
7469 struct trace_t trace = {NULL, NULL, 1476, LOCATE_typing___ACallReassignExpr___variable_create};
7470 val_t variable[6];
7471 struct WBT_ **closurevariable = NULL;
7472 trace.prev = tracehead; tracehead = &trace;
7473 trace.file = LOCATE_typing;
7474 /* Register variable[0]: Local variable */
7475 variable[0] = self;
7476 /* Register variable[1]: Local variable */
7477 variable[1] = param0;
7478 /* Register variable[2]: Method return value and escape marker */
7479 /* Register variable[3]: Result */
7480 variable[3] = CALL_parser_nodes___ACallFormExpr___n_id(variable[0])(variable[0]) /*ACallFormExpr::n_id*/;
7481 /* Register variable[4]: Result */
7482 variable[4] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(variable[0])(variable[0]) /*AReassignFormExpr::n_assign_op*/;
7483 /* Register variable[5]: Result */
7484 variable[5] = CALL_parser_nodes___AReassignFormExpr___n_value(variable[0])(variable[0]) /*AReassignFormExpr::n_value*/;
7485 /* Register variable[3]: Result */
7486 variable[3] = NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(variable[3], variable[4], variable[5]) /*new AVarReassignExpr*/;
7487 variable[2] = variable[3];
7488 goto return_label312;
7489 return_label312: while(false);
7490 tracehead = trace.prev;
7491 return variable[2];
7492 }
7493 val_t typing___ABraExpr___name(val_t self) {
7494 struct trace_t trace = {NULL, NULL, 1486, LOCATE_typing___ABraExpr___name};
7495 static val_t once_value_314; static int once_bool_314; /* Once value for variable[2]*/
7496 static val_t once_value_315 = NIT_NULL; /* Once value for string variable[2]*/
7497 val_t variable[3];
7498 struct WBT_ **closurevariable = NULL;
7499 trace.prev = tracehead; tracehead = &trace;
7500 trace.file = LOCATE_typing;
7501 /* Register variable[0]: Local variable */
7502 variable[0] = self;
7503 /* Register variable[1]: Method return value and escape marker */
7504 /* Register variable[2]: Once expression result */
7505 if (once_bool_314) variable[2] = once_value_314;
7506 else {
7507 /* Register variable[2]: Once String constant */
7508 if (once_value_315 != NIT_NULL) variable[2] = once_value_315;
7509 else {
7510 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)) /*new String*/;
7511 once_value_315 = variable[2];
7512 }
7513 /* Register variable[2]: Result */
7514 /* Register variable[2]: Result */
7515 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7516 once_value_314 = variable[2];
7517 once_bool_314 = true;
7518 }
7519 /* Register variable[2]: Result */
7520 variable[1] = variable[2];
7521 goto return_label313;
7522 return_label313: while(false);
7523 tracehead = trace.prev;
7524 return variable[1];
7525 }
7526 val_t typing___ABraExpr___raw_arguments(val_t self) {
7527 struct trace_t trace = {NULL, NULL, 1487, LOCATE_typing___ABraExpr___raw_arguments};
7528 val_t variable[3];
7529 struct WBT_ **closurevariable = NULL;
7530 trace.prev = tracehead; tracehead = &trace;
7531 trace.file = LOCATE_typing;
7532 /* Register variable[0]: Local variable */
7533 variable[0] = self;
7534 /* Register variable[1]: Method return value and escape marker */
7535 /* Register variable[2]: Result */
7536 variable[2] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/;
7537 /* Register variable[2]: Result */
7538 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7539 variable[1] = variable[2];
7540 goto return_label316;
7541 return_label316: while(false);
7542 tracehead = trace.prev;
7543 return variable[1];
7544 }
7545 val_t typing___ABraAssignExpr___name(val_t self) {
7546 struct trace_t trace = {NULL, NULL, 1491, LOCATE_typing___ABraAssignExpr___name};
7547 static val_t once_value_318; static int once_bool_318; /* Once value for variable[2]*/
7548 static val_t once_value_319 = NIT_NULL; /* Once value for string variable[2]*/
7549 val_t variable[3];
7550 struct WBT_ **closurevariable = NULL;
7551 trace.prev = tracehead; tracehead = &trace;
7552 trace.file = LOCATE_typing;
7553 /* Register variable[0]: Local variable */
7554 variable[0] = self;
7555 /* Register variable[1]: Method return value and escape marker */
7556 /* Register variable[2]: Once expression result */
7557 if (once_bool_318) variable[2] = once_value_318;
7558 else {
7559 /* Register variable[2]: Once String constant */
7560 if (once_value_319 != NIT_NULL) variable[2] = once_value_319;
7561 else {
7562 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]="), TAG_Int(3)) /*new String*/;
7563 once_value_319 = variable[2];
7564 }
7565 /* Register variable[2]: Result */
7566 /* Register variable[2]: Result */
7567 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7568 once_value_318 = variable[2];
7569 once_bool_318 = true;
7570 }
7571 /* Register variable[2]: Result */
7572 variable[1] = variable[2];
7573 goto return_label317;
7574 return_label317: while(false);
7575 tracehead = trace.prev;
7576 return variable[1];
7577 }
7578 val_t typing___ABraAssignExpr___raw_arguments(val_t self) {
7579 struct trace_t trace = {NULL, NULL, 1492, LOCATE_typing___ABraAssignExpr___raw_arguments};
7580 val_t variable[4];
7581 struct WBT_ **closurevariable = NULL;
7582 trace.prev = tracehead; tracehead = &trace;
7583 trace.file = LOCATE_typing;
7584 /* Register variable[0]: Local variable */
7585 variable[0] = self;
7586 /* Register variable[1]: Method return value and escape marker */
7587 /* Register variable[2]: Local variable */
7588 /* Register variable[3]: Result */
7589 variable[3] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/;
7590 /* Register variable[3]: Result */
7591 variable[3] = CALL_array___Collection___to_a(variable[3])(variable[3]) /*Collection::to_a*/;
7592 variable[2] = variable[3];
7593 /* Register variable[3]: Result */
7594 variable[3] = CALL_parser_nodes___AAssignFormExpr___n_value(variable[0])(variable[0]) /*AAssignFormExpr::n_value*/;
7595 CALL_abstract_collection___SimpleCollection___add( variable[2] /*res*/)( variable[2] /*res*/, variable[3]) /*AbstractArray::add*/;
7596 variable[1] = variable[2] /*res*/;
7597 goto return_label320;
7598 return_label320: while(false);
7599 tracehead = trace.prev;
7600 return variable[1];
7601 }
7602 val_t typing___ABraReassignExpr___name(val_t self) {
7603 struct trace_t trace = {NULL, NULL, 1501, LOCATE_typing___ABraReassignExpr___name};
7604 static val_t once_value_322; static int once_bool_322; /* Once value for variable[2]*/
7605 static val_t once_value_323 = NIT_NULL; /* Once value for string variable[2]*/
7606 val_t variable[3];
7607 struct WBT_ **closurevariable = NULL;
7608 trace.prev = tracehead; tracehead = &trace;
7609 trace.file = LOCATE_typing;
7610 /* Register variable[0]: Local variable */
7611 variable[0] = self;
7612 /* Register variable[1]: Method return value and escape marker */
7613 /* Register variable[2]: Once expression result */
7614 if (once_bool_322) variable[2] = once_value_322;
7615 else {
7616 /* Register variable[2]: Once String constant */
7617 if (once_value_323 != NIT_NULL) variable[2] = once_value_323;
7618 else {
7619 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("[]"), TAG_Int(2)) /*new String*/;
7620 once_value_323 = variable[2];
7621 }
7622 /* Register variable[2]: Result */
7623 /* Register variable[2]: Result */
7624 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7625 once_value_322 = variable[2];
7626 once_bool_322 = true;
7627 }
7628 /* Register variable[2]: Result */
7629 variable[1] = variable[2];
7630 goto return_label321;
7631 return_label321: while(false);
7632 tracehead = trace.prev;
7633 return variable[1];
7634 }
7635 val_t typing___ABraReassignExpr___raw_arguments(val_t self) {
7636 struct trace_t trace = {NULL, NULL, 1502, LOCATE_typing___ABraReassignExpr___raw_arguments};
7637 val_t variable[3];
7638 struct WBT_ **closurevariable = NULL;
7639 trace.prev = tracehead; tracehead = &trace;
7640 trace.file = LOCATE_typing;
7641 /* Register variable[0]: Local variable */
7642 variable[0] = self;
7643 /* Register variable[1]: Method return value and escape marker */
7644 /* Register variable[2]: Result */
7645 variable[2] = CALL_parser_nodes___ABraFormExpr___n_args(variable[0])(variable[0]) /*ABraFormExpr::n_args*/;
7646 /* Register variable[2]: Result */
7647 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7648 variable[1] = variable[2];
7649 goto return_label324;
7650 return_label324: while(false);
7651 tracehead = trace.prev;
7652 return variable[1];
7653 }
7654 val_t typing___AInitExpr___name(val_t self) {
7655 struct trace_t trace = {NULL, NULL, 1506, LOCATE_typing___AInitExpr___name};
7656 static val_t once_value_326; static int once_bool_326; /* Once value for variable[2]*/
7657 static val_t once_value_327 = NIT_NULL; /* Once value for string variable[2]*/
7658 val_t variable[3];
7659 struct WBT_ **closurevariable = NULL;
7660 trace.prev = tracehead; tracehead = &trace;
7661 trace.file = LOCATE_typing;
7662 /* Register variable[0]: Local variable */
7663 variable[0] = self;
7664 /* Register variable[1]: Method return value and escape marker */
7665 /* Register variable[2]: Once expression result */
7666 if (once_bool_326) variable[2] = once_value_326;
7667 else {
7668 /* Register variable[2]: Once String constant */
7669 if (once_value_327 != NIT_NULL) variable[2] = once_value_327;
7670 else {
7671 variable[2] = NEW_String_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)) /*new String*/;
7672 once_value_327 = variable[2];
7673 }
7674 /* Register variable[2]: Result */
7675 /* Register variable[2]: Result */
7676 variable[2] = CALL_symbol___String___to_symbol(variable[2])(variable[2]) /*String::to_symbol*/;
7677 once_value_326 = variable[2];
7678 once_bool_326 = true;
7679 }
7680 /* Register variable[2]: Result */
7681 variable[1] = variable[2];
7682 goto return_label325;
7683 return_label325: while(false);
7684 tracehead = trace.prev;
7685 return variable[1];
7686 }
7687 val_t typing___AInitExpr___raw_arguments(val_t self) {
7688 struct trace_t trace = {NULL, NULL, 1507, LOCATE_typing___AInitExpr___raw_arguments};
7689 val_t variable[3];
7690 struct WBT_ **closurevariable = NULL;
7691 trace.prev = tracehead; tracehead = &trace;
7692 trace.file = LOCATE_typing;
7693 /* Register variable[0]: Local variable */
7694 variable[0] = self;
7695 /* Register variable[1]: Method return value and escape marker */
7696 /* Register variable[2]: Result */
7697 variable[2] = CALL_parser_nodes___AInitExpr___n_args(variable[0])(variable[0]) /*AInitExpr::n_args*/;
7698 /* Register variable[2]: Result */
7699 variable[2] = CALL_array___Collection___to_a(variable[2])(variable[2]) /*Collection::to_a*/;
7700 variable[1] = variable[2];
7701 goto return_label328;
7702 return_label328: while(false);
7703 tracehead = trace.prev;
7704 return variable[1];
7705 }
7706 void typing___AClosureCallExpr___after_typing(val_t self, val_t param0) {
7707 struct trace_t trace = {NULL, NULL, 1512, LOCATE_typing___AClosureCallExpr___after_typing};
7708 val_t variable[8];
7709 struct WBT_ **closurevariable = NULL;
7710 trace.prev = tracehead; tracehead = &trace;
7711 trace.file = LOCATE_typing;
7712 /* Register variable[0]: Local variable */
7713 variable[0] = self;
7714 /* Register variable[1]: Local variable */
7715 variable[1] = param0;
7716 /* Register variable[2]: Method return value and escape marker */
7717 /* Register variable[3]: Local variable */
7718 /* Register variable[4]: Result */
7719 variable[4] = CALL_syntax_base___AClosureCallExpr___variable(variable[0])(variable[0]) /*AClosureCallExpr::variable*/;
7720 variable[3] = variable[4];
7721 /* Register variable[4]: Result */
7722 variable[4] = CALL_syntax_base___ClosureVariable___closure( variable[3] /*va*/)( variable[3] /*va*/) /*ClosureVariable::closure*/;
7723 /* Register variable[4]: Result */
7724 variable[4] = CALL_static_type___MMClosure___is_break(variable[4])(variable[4]) /*MMClosure::is_break*/;
7725 if (UNTAG_Bool(variable[4])) { /*if*/
7726 /* Register variable[4]: Result */
7727 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7728 CALL_control_flow___VariableContext___unreash__eq(variable[4])(variable[4], TAG_Bool(true)) /*VariableContext::unreash=*/;
7729 }
7730 /* Register variable[4]: Local variable */
7731 /* Register variable[5]: Result */
7732 variable[5] = CALL_syntax_base___ClosureVariable___closure( variable[3] /*va*/)( variable[3] /*va*/) /*ClosureVariable::closure*/;
7733 /* Register variable[5]: Result */
7734 variable[5] = CALL_static_type___MMClosure___signature(variable[5])(variable[5]) /*MMClosure::signature*/;
7735 variable[4] = variable[5];
7736 /* Register variable[5]: Local variable */
7737 /* Register variable[6]: Result */
7738 variable[6] = CALL_parser_nodes___AClosureCallExpr___n_id(variable[0])(variable[0]) /*AClosureCallExpr::n_id*/;
7739 /* Register variable[6]: Result */
7740 variable[6] = CALL_syntax_base___Token___to_symbol(variable[6])(variable[6]) /*Token::to_symbol*/;
7741 /* Register variable[7]: Result */
7742 variable[7] = CALL_parser_nodes___AClosureCallExpr___n_args(variable[0])(variable[0]) /*AClosureCallExpr::n_args*/;
7743 /* Register variable[7]: Result */
7744 variable[7] = CALL_array___Collection___to_a(variable[7])(variable[7]) /*Collection::to_a*/;
7745 /* Register variable[6]: Result */
7746 variable[6] = CALL_typing___AAbsAbsSendExpr___process_signature(variable[0])(variable[0], variable[1] /*v*/, variable[4] /*sig*/, variable[6], variable[7]) /*AAbsAbsSendExpr::process_signature*/;
7747 variable[5] = variable[6];
7748 /* Register variable[6]: Result */
7749 variable[6] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(variable[0])(variable[0]) /*AClosureCallExpr::n_closure_defs*/;
7750 /* Register variable[6]: Result */
7751 variable[6] = CALL_abstract_collection___Collection___is_empty(variable[6])(variable[6]) /*List::is_empty*/;
7752 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
7753 /* Register variable[6]: Result */
7754 variable[6] = CALL_parser_nodes___AClosureCallExpr___n_id(variable[0])(variable[0]) /*AClosureCallExpr::n_id*/;
7755 /* Register variable[6]: Result */
7756 variable[6] = CALL_syntax_base___Token___to_symbol(variable[6])(variable[6]) /*Token::to_symbol*/;
7757 /* Register variable[7]: Result */
7758 variable[7] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(variable[0])(variable[0]) /*AClosureCallExpr::n_closure_defs*/;
7759 /* Register variable[7]: Result */
7760 variable[7] = CALL_array___Collection___to_a(variable[7])(variable[7]) /*Collection::to_a*/;
7761 CALL_typing___AAbsAbsSendExpr___process_closures(variable[0])(variable[0], variable[1] /*v*/, variable[4] /*sig*/, variable[6], variable[7]) /*AAbsAbsSendExpr::process_closures*/;
7762 }
7763 /* Register variable[6]: Result */
7764 variable[6] = TAG_Bool(( variable[5] /*args*/ == NIT_NULL /*null*/) || (( variable[5] /*args*/ != NIT_NULL) && UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*args*/)( variable[5] /*args*/, NIT_NULL /*null*/) /*AbstractArrayRead::==*/)));
7765 if (UNTAG_Bool(variable[6])) { /*if*/
7766 goto return_label329;
7767 }
7768 ATTR_typing___AAbsAbsSendExpr____prop_signature(variable[0]) /*AAbsAbsSendExpr::_prop_signature*/ = variable[4] /*sig*/;
7769 ATTR_typing___AAbsAbsSendExpr____arguments(variable[0]) /*AAbsAbsSendExpr::_arguments*/ = variable[5] /*args*/;
7770 /* Register variable[6]: Result */
7771 variable[6] = CALL_static_type___MMSignature___return_type( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::return_type*/;
7772 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[6];
7773 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
7774 return_label329: while(false);
7775 tracehead = trace.prev;
7776 return;
7777 }
7778 void typing___PClosureDef___accept_typing(val_t self, val_t param0) {
7779 struct trace_t trace = {NULL, NULL, 1534, LOCATE_typing___PClosureDef___accept_typing};
7780 val_t variable[4];
7781 struct WBT_ **closurevariable = NULL;
7782 trace.prev = tracehead; tracehead = &trace;
7783 trace.file = LOCATE_typing;
7784 /* Register variable[0]: Local variable */
7785 variable[0] = self;
7786 /* Register variable[1]: Local variable */
7787 variable[1] = param0;
7788 /* Register variable[2]: Method return value and escape marker */
7789 /* Register variable[3]: Result */
7790 variable[3] = ATTR_typing___PClosureDef____accept_typing2(variable[0]) /*PClosureDef::_accept_typing2*/;
7791 if (UNTAG_Bool(variable[3])) { /*if*/
7792 CALL_SUPER_typing___PClosureDef___accept_typing(variable[0])(variable[0], variable[1]) /*super PClosureDef::accept_typing*/;
7793 }
7794 return_label330: while(false);
7795 tracehead = trace.prev;
7796 return;
7797 }
7798 val_t typing___PClosureDef___escapable(val_t self) {
7799 struct trace_t trace = {NULL, NULL, 1530, LOCATE_typing___PClosureDef___escapable};
7800 val_t *variable = NULL;
7801 struct WBT_ **closurevariable = NULL;
7802 trace.prev = tracehead; tracehead = &trace;
7803 trace.file = LOCATE_typing;
7804 tracehead = trace.prev;
7805 return ATTR_typing___PClosureDef____escapable( self) /*PClosureDef::_escapable*/;
7806 }
7807 void typing___PClosureDef___accept_typing2(val_t self, val_t param0, val_t param1) {
7808 struct trace_t trace = {NULL, NULL, 1540, LOCATE_typing___PClosureDef___accept_typing2};
7809 val_t *variable = NULL;
7810 struct WBT_ **closurevariable = NULL;
7811 trace.prev = tracehead; tracehead = &trace;
7812 trace.file = LOCATE_typing;
7813 fprintf(stderr, "Deferred method called");
7814 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1540);
7815 nit_exit(1);
7816 tracehead = trace.prev;
7817 return;
7818 }
7819 void typing___AClosureDef___accept_typing2(val_t self, val_t param0, val_t param1) {
7820 struct trace_t trace = {NULL, NULL, 1544, LOCATE_typing___AClosureDef___accept_typing2};
7821 static val_t once_value_332 = NIT_NULL; /* Once value for string variable[6]*/
7822 static val_t once_value_333 = NIT_NULL; /* Once value for string variable[6]*/
7823 static val_t once_value_334 = NIT_NULL; /* Once value for string variable[6]*/
7824 static val_t once_value_336 = NIT_NULL; /* Once value for string variable[7]*/
7825 static val_t once_value_337 = NIT_NULL; /* Once value for string variable[7]*/
7826 val_t variable[12];
7827 struct WBT_ **closurevariable = NULL;
7828 trace.prev = tracehead; tracehead = &trace;
7829 trace.file = LOCATE_typing;
7830 /* Register variable[0]: Local variable */
7831 variable[0] = self;
7832 /* Register variable[1]: Local variable */
7833 variable[1] = param0;
7834 /* Register variable[2]: Local variable */
7835 variable[2] = param1;
7836 /* Register variable[3]: Method return value and escape marker */
7837 ATTR_typing___PClosureDef____escapable(variable[0]) /*PClosureDef::_escapable*/ = variable[2] /*esc*/;
7838 /* Register variable[4]: Local variable */
7839 /* Register variable[5]: Result */
7840 variable[5] = CALL_escape___EscapableClosure___closure( variable[2] /*esc*/)( variable[2] /*esc*/) /*EscapableClosure::closure*/;
7841 /* Register variable[5]: Result */
7842 variable[5] = CALL_static_type___MMClosure___signature(variable[5])(variable[5]) /*MMClosure::signature*/;
7843 variable[4] = variable[5];
7844 /* Register variable[5]: Result */
7845 variable[5] = CALL_static_type___MMSignature___arity( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::arity*/;
7846 /* Register variable[6]: Result */
7847 variable[6] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/;
7848 /* Register variable[6]: Result */
7849 variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/;
7850 /* Register variable[5]: Result */
7851 variable[5] = TAG_Bool((variable[5])!=(variable[6]));
7852 if (UNTAG_Bool(variable[5])) { /*if*/
7853 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
7854 /* Register variable[6]: Once String constant */
7855 if (once_value_332 != NIT_NULL) variable[6] = once_value_332;
7856 else {
7857 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: "), TAG_Int(7)) /*new String*/;
7858 once_value_332 = variable[6];
7859 }
7860 /* Register variable[6]: Result */
7861 /* Ensure var variable[6]: super-string element*/
7862 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
7863 /* Register variable[6]: Result */
7864 variable[6] = CALL_static_type___MMSignature___arity( variable[4] /*sig*/)( variable[4] /*sig*/) /*MMSignature::arity*/;
7865 /* Ensure var variable[6]: super-string element*/
7866 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
7867 /* Register variable[6]: Once String constant */
7868 if (once_value_333 != NIT_NULL) variable[6] = once_value_333;
7869 else {
7870 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" automatic variable names expected, "), TAG_Int(36)) /*new String*/;
7871 once_value_333 = variable[6];
7872 }
7873 /* Register variable[6]: Result */
7874 /* Ensure var variable[6]: super-string element*/
7875 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
7876 /* Register variable[6]: Result */
7877 variable[6] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/;
7878 /* Register variable[6]: Result */
7879 variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*List::length*/;
7880 /* Ensure var variable[6]: super-string element*/
7881 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
7882 /* Register variable[6]: Once String constant */
7883 if (once_value_334 != NIT_NULL) variable[6] = once_value_334;
7884 else {
7885 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" found."), TAG_Int(7)) /*new String*/;
7886 once_value_334 = variable[6];
7887 }
7888 /* Register variable[6]: Result */
7889 /* Ensure var variable[6]: super-string element*/
7890 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
7891 /* Register variable[5]: Result */
7892 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
7893 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[5]) /*AbsSyntaxVisitor::error*/;
7894 goto return_label331;
7895 }
7896 /* Register variable[5]: Result */
7897 variable[5] = CALL_escape___EscapableClosure___closure( variable[2] /*esc*/)( variable[2] /*esc*/) /*EscapableClosure::closure*/;
7898 CALL_syntax_base___PClosureDef___closure__eq(variable[0])(variable[0], variable[5]) /*PClosureDef::closure=*/;
7899 /* Register variable[5]: Local variable */
7900 /* Register variable[6]: Result */
7901 variable[6] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7902 variable[5] = variable[6];
7903 /* Register variable[6]: Local variable */
7904 /* Register variable[7]: Result */
7905 variable[7] = CALL_typing___TypingVisitor___base_variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::base_variable_ctx*/;
7906 variable[6] = variable[7];
7907 /* Register variable[7]: Result */
7908 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7909 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[7]) /*TypingVisitor::base_variable_ctx=*/;
7910 /* Register variable[7]: Result */
7911 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7912 /* Register variable[7]: Result */
7913 variable[7] = CALL_control_flow___VariableContext___sub(variable[7])(variable[7], variable[0]) /*VariableContext::sub*/;
7914 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[7]) /*TypingVisitor::variable_ctx=*/;
7915 /* Register variable[7]: Result */
7916 variable[7] = NEW_Array_array___Array___init() /*new Array[AutoVariable]*/;
7917 CALL_syntax_base___PClosureDef___variables__eq(variable[0])(variable[0], variable[7]) /*PClosureDef::variables=*/;
7918 /* Register variable[7]: Result */
7919 variable[7] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/;
7920 /* Register variable[7]: Result */
7921 variable[7] = CALL_abstract_collection___Collection___length(variable[7])(variable[7]) /*List::length*/;
7922 /* Register variable[7]: Result */
7923 variable[7] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[7]) /*new Range[Int]*/;
7924 /* Register variable[7]: For iterator */
7925 variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*Range::iterator*/;
7926 while (true) { /*for*/
7927 /* Register variable[8]: For 'is_ok' result */
7928 variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
7929 if (!UNTAG_Bool(variable[8])) break; /*for*/
7930 variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/;
7931 /* Register variable[9]: Local variable */
7932 variable[9] = variable[8];
7933 /* Register variable[10]: Local variable */
7934 /* Register variable[11]: Result */
7935 variable[11] = CALL_parser_nodes___AClosureDef___n_id(variable[0])(variable[0]) /*AClosureDef::n_id*/;
7936 /* Register variable[11]: Result */
7937 variable[11] = CALL_abstract_collection___MapRead_____bra(variable[11])(variable[11], variable[9] /*i*/) /*List::[]*/;
7938 /* Register variable[11]: Result */
7939 variable[11] = CALL_syntax_base___Token___to_symbol(variable[11])(variable[11]) /*Token::to_symbol*/;
7940 /* Register variable[11]: Result */
7941 variable[11] = NEW_AutoVariable_syntax_base___AutoVariable___init(variable[11], variable[0]) /*new AutoVariable*/;
7942 variable[10] = variable[11];
7943 /* Register variable[11]: Result */
7944 variable[11] = CALL_syntax_base___PClosureDef___variables(variable[0])(variable[0]) /*PClosureDef::variables*/;
7945 CALL_abstract_collection___SimpleCollection___add(variable[11])(variable[11], variable[10] /*va*/) /*AbstractArray::add*/;
7946 /* Register variable[11]: Result */
7947 variable[11] = CALL_static_type___MMSignature_____bra( variable[4] /*sig*/)( variable[4] /*sig*/, variable[9] /*i*/) /*MMSignature::[]*/;
7948 CALL_syntax_base___Variable___stype__eq( variable[10] /*va*/)( variable[10] /*va*/, variable[11]) /*Variable::stype=*/;
7949 /* Register variable[11]: Result */
7950 variable[11] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7951 CALL_control_flow___VariableContext___add(variable[11])(variable[11], variable[10] /*va*/) /*VariableContext::add*/;
7952 continue_335: while(0);
7953 CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
7954 }
7955 break_335: while(0);
7956 ATTR_typing___PClosureDef____accept_typing2(variable[0]) /*PClosureDef::_accept_typing2*/ = TAG_Bool(true);
7957 CALL_typing___PNode___accept_typing(variable[0])(variable[0], variable[1] /*v*/) /*PClosureDef::accept_typing*/;
7958 /* Register variable[7]: Result */
7959 variable[7] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
7960 /* Register variable[7]: Result */
7961 variable[7] = CALL_control_flow___VariableContext___unreash(variable[7])(variable[7]) /*VariableContext::unreash*/;
7962 /* Register variable[7]: Result */
7963 variable[7] = TAG_Bool((variable[7])==( TAG_Bool(false)));
7964 if (UNTAG_Bool(variable[7])) { /*if*/
7965 /* Register variable[7]: Result */
7966 variable[7] = CALL_syntax_base___PClosureDef___closure(variable[0])(variable[0]) /*PClosureDef::closure*/;
7967 /* Register variable[7]: Result */
7968 variable[7] = CALL_static_type___MMClosure___signature(variable[7])(variable[7]) /*MMClosure::signature*/;
7969 /* Register variable[7]: Result */
7970 variable[7] = CALL_static_type___MMSignature___return_type(variable[7])(variable[7]) /*MMSignature::return_type*/;
7971 /* Register variable[7]: Result */
7972 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::==*/)))))));
7973 if (UNTAG_Bool(variable[7])) { /*if*/
7974 /* Register variable[7]: Once String constant */
7975 if (once_value_336 != NIT_NULL) variable[7] = once_value_336;
7976 else {
7977 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected)."), TAG_Int(77)) /*new String*/;
7978 once_value_336 = variable[7];
7979 }
7980 /* Register variable[7]: Result */
7981 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
7982 } else { /*if*/
7983 /* Register variable[7]: Result */
7984 variable[7] = CALL_syntax_base___PClosureDef___closure(variable[0])(variable[0]) /*PClosureDef::closure*/;
7985 /* Register variable[7]: Result */
7986 variable[7] = CALL_static_type___MMClosure___is_break(variable[7])(variable[7]) /*MMClosure::is_break*/;
7987 if (UNTAG_Bool(variable[7])) { /*if*/
7988 /* Register variable[7]: Once String constant */
7989 if (once_value_337 != NIT_NULL) variable[7] = once_value_337;
7990 else {
7991 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of break block (a 'break' was expected)."), TAG_Int(67)) /*new String*/;
7992 once_value_337 = variable[7];
7993 }
7994 /* Register variable[7]: Result */
7995 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::error*/;
7996 }
7997 }
7998 }
7999 CALL_typing___TypingVisitor___variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[5] /*old_var_ctx*/) /*TypingVisitor::variable_ctx=*/;
8000 CALL_typing___TypingVisitor___base_variable_ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[6] /*old_base_var_ctx*/) /*TypingVisitor::base_variable_ctx=*/;
8001 return_label331: while(false);
8002 tracehead = trace.prev;
8003 return;
8004 }
8005 void typing___ATypeCheckExpr___check_expr_cast(val_t self, val_t param0, val_t param1, val_t param2) {
8006 struct trace_t trace = {NULL, NULL, 1585, LOCATE_typing___ATypeCheckExpr___check_expr_cast};
8007 static val_t once_value_339 = NIT_NULL; /* Once value for string variable[8]*/
8008 static val_t once_value_340 = NIT_NULL; /* Once value for string variable[8]*/
8009 static val_t once_value_341 = NIT_NULL; /* Once value for string variable[8]*/
8010 static val_t once_value_342 = NIT_NULL; /* Once value for string variable[8]*/
8011 static val_t once_value_343 = NIT_NULL; /* Once value for string variable[8]*/
8012 static val_t once_value_344 = NIT_NULL; /* Once value for string variable[7]*/
8013 static val_t once_value_345 = NIT_NULL; /* Once value for string variable[7]*/
8014 val_t variable[9];
8015 struct WBT_ **closurevariable = NULL;
8016 trace.prev = tracehead; tracehead = &trace;
8017 trace.file = LOCATE_typing;
8018 /* Register variable[0]: Local variable */
8019 variable[0] = self;
8020 /* Register variable[1]: Local variable */
8021 variable[1] = param0;
8022 /* Register variable[2]: Local variable */
8023 variable[2] = param1;
8024 /* Register variable[3]: Local variable */
8025 variable[3] = param2;
8026 /* Register variable[4]: Method return value and escape marker */
8027 /* Register variable[5]: Result */
8028 variable[5] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[2] /*n_expr*/) /*AbsSyntaxVisitor::check_expr*/;
8029 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[5])))) { /*if*/
8030 goto return_label338;
8031 }
8032 /* Register variable[5]: Local variable */
8033 /* Register variable[6]: Result */
8034 variable[6] = CALL_syntax_base___PExpr___stype( variable[2] /*n_expr*/)( variable[2] /*n_expr*/) /*PExpr::stype*/;
8035 variable[5] = variable[6];
8036 /* Register variable[6]: Local variable */
8037 /* Register variable[7]: Result */
8038 variable[7] = CALL_typing___PType___stype( variable[3] /*n_type*/)( variable[3] /*n_type*/) /*PType::stype*/;
8039 variable[6] = variable[7];
8040 /* Register variable[7]: Result */
8041 variable[7] = TAG_Bool(( variable[5] /*etype*/ == variable[6] /*ttype*/) || (( variable[5] /*etype*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*etype*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*etype*/, variable[6] /*ttype*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*etype*/)( variable[5] /*etype*/, variable[6] /*ttype*/) /*Object::==*/)))));
8042 if (UNTAG_Bool(variable[7])) { /*if*/
8043 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
8044 /* Register variable[8]: Once String constant */
8045 if (once_value_339 != NIT_NULL) variable[8] = once_value_339;
8046 else {
8047 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Expression is already a "), TAG_Int(33)) /*new String*/;
8048 once_value_339 = variable[8];
8049 }
8050 /* Register variable[8]: Result */
8051 /* Ensure var variable[8]: super-string element*/
8052 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
8053 variable[8] = variable[6] /*ttype*/ /* Ensure var: super-string element*/;
8054 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
8055 /* Register variable[8]: Once String constant */
8056 if (once_value_340 != NIT_NULL) variable[8] = once_value_340;
8057 else {
8058 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
8059 once_value_340 = variable[8];
8060 }
8061 /* Register variable[8]: Result */
8062 /* Ensure var variable[8]: super-string element*/
8063 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
8064 /* Register variable[7]: Result */
8065 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
8066 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/;
8067 } else { /*if*/
8068 /* Register variable[7]: Result */
8069 variable[7] = CALL_static_type___MMType_____l( variable[5] /*etype*/)( variable[5] /*etype*/, variable[6] /*ttype*/) /*MMType::<*/;
8070 if (UNTAG_Bool(variable[7])) { /*if*/
8071 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
8072 /* Register variable[8]: Once String constant */
8073 if (once_value_341 != NIT_NULL) variable[8] = once_value_341;
8074 else {
8075 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Expression is already a "), TAG_Int(33)) /*new String*/;
8076 once_value_341 = variable[8];
8077 }
8078 /* Register variable[8]: Result */
8079 /* Ensure var variable[8]: super-string element*/
8080 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
8081 variable[8] = variable[6] /*ttype*/ /* Ensure var: super-string element*/;
8082 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
8083 /* Register variable[8]: Once String constant */
8084 if (once_value_342 != NIT_NULL) variable[8] = once_value_342;
8085 else {
8086 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" since it is a "), TAG_Int(15)) /*new String*/;
8087 once_value_342 = variable[8];
8088 }
8089 /* Register variable[8]: Result */
8090 /* Ensure var variable[8]: super-string element*/
8091 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
8092 variable[8] = variable[5] /*etype*/ /* Ensure var: super-string element*/;
8093 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
8094 /* Register variable[8]: Once String constant */
8095 if (once_value_343 != NIT_NULL) variable[8] = once_value_343;
8096 else {
8097 variable[8] = NEW_String_string___String___with_native(BOX_NativeString("."), TAG_Int(1)) /*new String*/;
8098 once_value_343 = variable[8];
8099 }
8100 /* Register variable[8]: Result */
8101 /* Ensure var variable[8]: super-string element*/
8102 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
8103 /* Register variable[7]: Result */
8104 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
8105 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/;
8106 } else { /*if*/
8107 /* Register variable[7]: Result */
8108 variable[7] = CALL_static_type___MMType___is_nullable( variable[5] /*etype*/)( variable[5] /*etype*/) /*MMType::is_nullable*/;
8109 /* Ensure var variable[7]: Left 'and' operand*/
8110 if (UNTAG_Bool(variable[7])) { /* and */
8111 /* Register variable[7]: Result */
8112 variable[7] = CALL_static_type___MMType___as_notnull( variable[5] /*etype*/)( variable[5] /*etype*/) /*MMType::as_notnull*/;
8113 /* Register variable[7]: Result */
8114 variable[7] = TAG_Bool((variable[7] == variable[6] /*ttype*/) || ((variable[7] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[7])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[7], variable[6] /*ttype*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[7])(variable[7], variable[6] /*ttype*/) /*Object::==*/)))));
8115 }
8116 /* Register variable[7]: Result */
8117 if (UNTAG_Bool(variable[7])) { /*if*/
8118 /* Register variable[7]: Result */
8119 variable[7] = TAG_Bool(( variable[6] /*ttype*/==NIT_NULL) || VAL_ISA( variable[6] /*ttype*/, COLOR_MMTypeFormal, ID_MMTypeFormal)) /*cast MMTypeFormal*/;
8120 /* Ensure var variable[7]: Left 'and' operand*/
8121 if (UNTAG_Bool(variable[7])) { /* and */
8122 /* Register variable[7]: Result */
8123 variable[7] = CALL_type_formal___MMTypeFormal___bound( variable[6] /*ttype*/)( variable[6] /*ttype*/) /*MMTypeFormal::bound*/;
8124 /* Register variable[7]: Result */
8125 variable[7] = CALL_static_type___MMType___is_nullable(variable[7])(variable[7]) /*MMType::is_nullable*/;
8126 }
8127 /* Register variable[7]: Result */
8128 if (UNTAG_Bool(variable[7])) { /*if*/
8129 } else { /*if*/
8130 /* Register variable[7]: Result */
8131 variable[7] = TAG_Bool((variable[0]==NIT_NULL) || VAL_ISA(variable[0], COLOR_AIsaExpr, ID_AIsaExpr)) /*cast AIsaExpr*/;
8132 if (UNTAG_Bool(variable[7])) { /*if*/
8133 /* Register variable[7]: Once String constant */
8134 if (once_value_344 != NIT_NULL) variable[7] = once_value_344;
8135 else {
8136 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Prefer '!= null'."), TAG_Int(26)) /*new String*/;
8137 once_value_344 = variable[7];
8138 }
8139 /* Register variable[7]: Result */
8140 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/;
8141 } else { /*if*/
8142 /* Register variable[7]: Once String constant */
8143 if (once_value_345 != NIT_NULL) variable[7] = once_value_345;
8144 else {
8145 variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Warning: Prefer '.as(not null)'."), TAG_Int(32)) /*new String*/;
8146 once_value_345 = variable[7];
8147 }
8148 /* Register variable[7]: Result */
8149 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[7]) /*AbsSyntaxVisitor::warning*/;
8150 }
8151 }
8152 }
8153 }
8154 }
8155 return_label338: while(false);
8156 tracehead = trace.prev;
8157 return;
8158 }
8159 void typing___AIsaExpr___after_typing(val_t self, val_t param0) {
8160 struct trace_t trace = {NULL, NULL, 1612, LOCATE_typing___AIsaExpr___after_typing};
8161 val_t variable[6];
8162 struct WBT_ **closurevariable = NULL;
8163 trace.prev = tracehead; tracehead = &trace;
8164 trace.file = LOCATE_typing;
8165 /* Register variable[0]: Local variable */
8166 variable[0] = self;
8167 /* Register variable[1]: Local variable */
8168 variable[1] = param0;
8169 /* Register variable[2]: Method return value and escape marker */
8170 /* Register variable[3]: Result */
8171 variable[3] = CALL_parser_nodes___AIsaExpr___n_expr(variable[0])(variable[0]) /*AIsaExpr::n_expr*/;
8172 /* Register variable[4]: Result */
8173 variable[4] = CALL_parser_nodes___AIsaExpr___n_type(variable[0])(variable[0]) /*AIsaExpr::n_type*/;
8174 CALL_typing___ATypeCheckExpr___check_expr_cast(variable[0])(variable[0], variable[1] /*v*/, variable[3], variable[4]) /*ATypeCheckExpr::check_expr_cast*/;
8175 /* Register variable[3]: Local variable */
8176 /* Register variable[4]: Result */
8177 variable[4] = CALL_parser_nodes___AIsaExpr___n_expr(variable[0])(variable[0]) /*AIsaExpr::n_expr*/;
8178 /* Register variable[4]: Result */
8179 variable[4] = CALL_typing___PExpr___its_variable(variable[4])(variable[4]) /*PExpr::its_variable*/;
8180 variable[3] = variable[4];
8181 /* Register variable[4]: Result */
8182 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[3] /*variable*/ == NIT_NULL /*null*/) || (( variable[3] /*variable*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*variable*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*variable*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*variable*/)( variable[3] /*variable*/, NIT_NULL /*null*/) /*Object::==*/)))))));
8183 if (UNTAG_Bool(variable[4])) { /*if*/
8184 /* Register variable[4]: Result */
8185 variable[4] = CALL_typing___TypingVisitor___variable_ctx( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::variable_ctx*/;
8186 /* Register variable[5]: Result */
8187 variable[5] = CALL_parser_nodes___AIsaExpr___n_type(variable[0])(variable[0]) /*AIsaExpr::n_type*/;
8188 /* Register variable[5]: Result */
8189 variable[5] = CALL_typing___PType___stype(variable[5])(variable[5]) /*PType::stype*/;
8190 /* Register variable[4]: Result */
8191 variable[4] = CALL_control_flow___VariableContext___sub_with(variable[4])(variable[4], variable[0], variable[3] /*variable*/, variable[5]) /*VariableContext::sub_with*/;
8192 ATTR_typing___PExpr____if_true_variable_ctx(variable[0]) /*PExpr::_if_true_variable_ctx*/ = variable[4];
8193 }
8194 /* Register variable[4]: Result */
8195 variable[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool( variable[1] /*v*/)( variable[1] /*v*/) /*AbsSyntaxVisitor::type_bool*/;
8196 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
8197 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
8198 return_label346: while(false);
8199 tracehead = trace.prev;
8200 return;
8201 }
8202 void typing___AAsCastExpr___after_typing(val_t self, val_t param0) {
8203 struct trace_t trace = {NULL, NULL, 1626, LOCATE_typing___AAsCastExpr___after_typing};
8204 val_t variable[5];
8205 struct WBT_ **closurevariable = NULL;
8206 trace.prev = tracehead; tracehead = &trace;
8207 trace.file = LOCATE_typing;
8208 /* Register variable[0]: Local variable */
8209 variable[0] = self;
8210 /* Register variable[1]: Local variable */
8211 variable[1] = param0;
8212 /* Register variable[2]: Method return value and escape marker */
8213 /* Register variable[3]: Result */
8214 variable[3] = CALL_parser_nodes___AAsCastExpr___n_expr(variable[0])(variable[0]) /*AAsCastExpr::n_expr*/;
8215 /* Register variable[4]: Result */
8216 variable[4] = CALL_parser_nodes___AAsCastExpr___n_type(variable[0])(variable[0]) /*AAsCastExpr::n_type*/;
8217 CALL_typing___ATypeCheckExpr___check_expr_cast(variable[0])(variable[0], variable[1] /*v*/, variable[3], variable[4]) /*ATypeCheckExpr::check_expr_cast*/;
8218 /* Register variable[3]: Result */
8219 variable[3] = CALL_parser_nodes___AAsCastExpr___n_type(variable[0])(variable[0]) /*AAsCastExpr::n_type*/;
8220 /* Register variable[3]: Result */
8221 variable[3] = CALL_typing___PType___stype(variable[3])(variable[3]) /*PType::stype*/;
8222 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
8223 /* Register variable[3]: Result */
8224 variable[3] = ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/;
8225 /* Register variable[3]: Result */
8226 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::==*/)))))));
8227 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = variable[3];
8228 return_label347: while(false);
8229 tracehead = trace.prev;
8230 return;
8231 }
8232 void typing___AAsNotnullExpr___after_typing(val_t self, val_t param0) {
8233 struct trace_t trace = {NULL, NULL, 1635, LOCATE_typing___AAsNotnullExpr___after_typing};
8234 static val_t once_value_349 = NIT_NULL; /* Once value for string variable[5]*/
8235 static val_t once_value_350 = NIT_NULL; /* Once value for string variable[5]*/
8236 val_t variable[6];
8237 struct WBT_ **closurevariable = NULL;
8238 trace.prev = tracehead; tracehead = &trace;
8239 trace.file = LOCATE_typing;
8240 /* Register variable[0]: Local variable */
8241 variable[0] = self;
8242 /* Register variable[1]: Local variable */
8243 variable[1] = param0;
8244 /* Register variable[2]: Method return value and escape marker */
8245 /* Register variable[3]: Result */
8246 variable[3] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/;
8247 /* Register variable[3]: Result */
8248 variable[3] = CALL_syntax_base___AbsSyntaxVisitor___check_expr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*AbsSyntaxVisitor::check_expr*/;
8249 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
8250 goto return_label348;
8251 }
8252 /* Register variable[3]: Local variable */
8253 /* Register variable[4]: Result */
8254 variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/;
8255 /* Register variable[4]: Result */
8256 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
8257 variable[3] = variable[4];
8258 /* Register variable[4]: Result */
8259 variable[4] = TAG_Bool(( variable[3] /*t*/==NIT_NULL) || VAL_ISA( variable[3] /*t*/, COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8260 if (UNTAG_Bool(variable[4])) { /*if*/
8261 /* Register variable[4]: Result */
8262 variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/;
8263 /* Register variable[5]: Once String constant */
8264 if (once_value_349 != NIT_NULL) variable[5] = once_value_349;
8265 else {
8266 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Type error: 'as(not null)' on 'null' value."), TAG_Int(43)) /*new String*/;
8267 once_value_349 = variable[5];
8268 }
8269 /* Register variable[5]: Result */
8270 CALL_syntax_base___AbsSyntaxVisitor___error( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
8271 goto return_label348;
8272 } else { /*if*/
8273 /* Register variable[4]: Result */
8274 variable[4] = CALL_static_type___MMType___is_nullable( variable[3] /*t*/)( variable[3] /*t*/) /*MMType::is_nullable*/;
8275 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
8276 /* Register variable[4]: Result */
8277 variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/;
8278 /* Register variable[5]: Once String constant */
8279 if (once_value_350 != NIT_NULL) variable[5] = once_value_350;
8280 else {
8281 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Warning: 'as(not null)' on non nullable type."), TAG_Int(45)) /*new String*/;
8282 once_value_350 = variable[5];
8283 }
8284 /* Register variable[5]: Result */
8285 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::warning*/;
8286 }
8287 }
8288 /* Register variable[4]: Result */
8289 variable[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(variable[0])(variable[0]) /*AAsNotnullExpr::n_expr*/;
8290 /* Register variable[4]: Result */
8291 variable[4] = CALL_syntax_base___PExpr___stype(variable[4])(variable[4]) /*PExpr::stype*/;
8292 /* Register variable[4]: Result */
8293 variable[4] = CALL_static_type___MMType___as_notnull(variable[4])(variable[4]) /*MMType::as_notnull*/;
8294 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[4];
8295 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
8296 return_label348: while(false);
8297 tracehead = trace.prev;
8298 return;
8299 }
8300 void typing___AProxyExpr___after_typing(val_t self, val_t param0) {
8301 struct trace_t trace = {NULL, NULL, 1651, LOCATE_typing___AProxyExpr___after_typing};
8302 val_t variable[4];
8303 struct WBT_ **closurevariable = NULL;
8304 trace.prev = tracehead; tracehead = &trace;
8305 trace.file = LOCATE_typing;
8306 /* Register variable[0]: Local variable */
8307 variable[0] = self;
8308 /* Register variable[1]: Local variable */
8309 variable[1] = param0;
8310 /* Register variable[2]: Method return value and escape marker */
8311 /* Register variable[3]: Result */
8312 variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/;
8313 /* Register variable[3]: Result */
8314 variable[3] = CALL_syntax_base___PExpr___is_typed(variable[3])(variable[3]) /*PExpr::is_typed*/;
8315 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
8316 goto return_label351;
8317 }
8318 ATTR_typing___PExpr____is_typed(variable[0]) /*PExpr::_is_typed*/ = TAG_Bool(true);
8319 /* Register variable[3]: Result */
8320 variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/;
8321 /* Register variable[3]: Result */
8322 variable[3] = CALL_syntax_base___PExpr___is_statement(variable[3])(variable[3]) /*PExpr::is_statement*/;
8323 if (UNTAG_Bool(variable[3])) { /*if*/
8324 goto return_label351;
8325 }
8326 /* Register variable[3]: Result */
8327 variable[3] = CALL_parser_nodes___AProxyExpr___n_expr(variable[0])(variable[0]) /*AProxyExpr::n_expr*/;
8328 /* Register variable[3]: Result */
8329 variable[3] = CALL_syntax_base___PExpr___stype(variable[3])(variable[3]) /*PExpr::stype*/;
8330 ATTR_typing___PExpr____stype(variable[0]) /*PExpr::_stype*/ = variable[3];
8331 return_label351: while(false);
8332 tracehead = trace.prev;
8333 return;
8334 }
8335 void typing___AOnceExpr___accept_typing(val_t self, val_t param0) {
8336 struct trace_t trace = {NULL, NULL, 1661, LOCATE_typing___AOnceExpr___accept_typing};
8337 static val_t once_value_353 = NIT_NULL; /* Once value for string variable[3]*/
8338 val_t variable[4];
8339 struct WBT_ **closurevariable = NULL;
8340 trace.prev = tracehead; tracehead = &trace;
8341 trace.file = LOCATE_typing;
8342 /* Register variable[0]: Local variable */
8343 variable[0] = self;
8344 /* Register variable[1]: Local variable */
8345 variable[1] = param0;
8346 /* Register variable[2]: Method return value and escape marker */
8347 /* Register variable[3]: Result */
8348 variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/;
8349 /* Register variable[3]: Result */
8350 variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( TAG_Int(0)));
8351 if (UNTAG_Bool(variable[3])) { /*if*/
8352 /* Register variable[3]: Once String constant */
8353 if (once_value_353 != NIT_NULL) variable[3] = once_value_353;
8354 else {
8355 variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)) /*new String*/;
8356 once_value_353 = variable[3];
8357 }
8358 /* Register variable[3]: Result */
8359 CALL_syntax_base___AbsSyntaxVisitor___warning( variable[1] /*v*/)( variable[1] /*v*/, variable[0], variable[3]) /*AbsSyntaxVisitor::warning*/;
8360 }
8361 /* Register variable[3]: Result */
8362 variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/;
8363 /* Register variable[3]: Result */
8364 variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1)));
8365 CALL_typing___TypingVisitor___once_count__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::once_count=*/;
8366 CALL_SUPER_typing___AOnceExpr___accept_typing(variable[0])(variable[0], variable[1]) /*super AOnceExpr::accept_typing*/;
8367 /* Register variable[3]: Result */
8368 variable[3] = CALL_typing___TypingVisitor___once_count( variable[1] /*v*/)( variable[1] /*v*/) /*TypingVisitor::once_count*/;
8369 /* Register variable[3]: Result */
8370 variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1)));
8371 CALL_typing___TypingVisitor___once_count__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*TypingVisitor::once_count=*/;
8372 return_label352: while(false);
8373 tracehead = trace.prev;
8374 return;
8375 }