lib: move the `times` method to Int
[nit.git] / c_src / syntax___typing._sep.c
1 /* This C file is generated by NIT to compile module syntax___typing. */
2 #include "syntax___typing._sep.h"
3 static const char LOCATE_syntax___typing___MMSrcModule___do_typing[] = "typing::MMSrcModule::do_typing";
4 void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
5 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_syntax___typing;
9 fra.me.line = 25;
10 fra.me.meth = LOCATE_syntax___typing___MMSrcModule___do_typing;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 2;
13 fra.me.nitni_local_ref_head = NULL;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[1] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 fra.me.REG[1] = p1;
18 /* syntax/typing.nit:29 */
19 fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
20 /* syntax/typing.nit:30 */
21 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
22 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
23 stack_frame_head = fra.me.prev;
24 return;
25 }
26 static const char LOCATE_syntax___typing___TypingVisitor___visit[] = "typing::TypingVisitor::(parser_nodes::Visitor::visit)";
27 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
28 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
29 val_t tmp;
30 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
31 fra.me.file = LOCATE_syntax___typing;
32 fra.me.line = 41;
33 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___visit;
34 fra.me.has_broke = 0;
35 fra.me.REG_size = 2;
36 fra.me.nitni_local_ref_head = NULL;
37 fra.me.REG[0] = NIT_NULL;
38 fra.me.REG[1] = NIT_NULL;
39 fra.me.REG[0] = p0;
40 fra.me.REG[1] = p1;
41 /* syntax/typing.nit:43 */
42 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
43 stack_frame_head = fra.me.prev;
44 return;
45 }
46 static const char LOCATE_syntax___typing___TypingVisitor___scope_ctx[] = "typing::TypingVisitor::scope_ctx";
47 val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
48 struct {struct stack_frame_t me;} fra;
49 val_t REGB0;
50 val_t tmp;
51 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
52 fra.me.file = LOCATE_syntax___typing;
53 fra.me.line = 46;
54 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___scope_ctx;
55 fra.me.has_broke = 0;
56 fra.me.REG_size = 1;
57 fra.me.nitni_local_ref_head = NULL;
58 fra.me.REG[0] = NIT_NULL;
59 fra.me.REG[0] = p0;
60 /* syntax/typing.nit:46 */
61 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
62 if (UNTAG_Bool(REGB0)) {
63 } else {
64 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_syntax___typing, 46);
65 }
66 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
67 stack_frame_head = fra.me.prev;
68 return fra.me.REG[0];
69 }
70 static const char LOCATE_syntax___typing___TypingVisitor___flow_ctx[] = "typing::TypingVisitor::flow_ctx";
71 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
72 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
73 val_t REGB0;
74 val_t tmp;
75 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
76 fra.me.file = LOCATE_syntax___typing;
77 fra.me.line = 49;
78 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
79 fra.me.has_broke = 0;
80 fra.me.REG_size = 2;
81 fra.me.nitni_local_ref_head = NULL;
82 fra.me.REG[0] = NIT_NULL;
83 fra.me.REG[1] = NIT_NULL;
84 fra.me.REG[0] = p0;
85 /* syntax/typing.nit:49 */
86 fra.me.REG[1] = fra.me.REG[0];
87 /* syntax/typing.nit:50 */
88 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
89 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
90 if (UNTAG_Bool(REGB0)) {
91 } else {
92 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
93 }
94 goto label1;
95 label1: while(0);
96 stack_frame_head = fra.me.prev;
97 return fra.me.REG[1];
98 }
99 static const char LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq[] = "typing::TypingVisitor::flow_ctx=";
100 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
101 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
102 val_t tmp;
103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
104 fra.me.file = LOCATE_syntax___typing;
105 fra.me.line = 51;
106 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
107 fra.me.has_broke = 0;
108 fra.me.REG_size = 2;
109 fra.me.nitni_local_ref_head = NULL;
110 fra.me.REG[0] = NIT_NULL;
111 fra.me.REG[1] = NIT_NULL;
112 fra.me.REG[0] = p0;
113 fra.me.REG[1] = p1;
114 /* syntax/typing.nit:51 */
115 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
116 stack_frame_head = fra.me.prev;
117 return;
118 }
119 static const char LOCATE_syntax___typing___TypingVisitor___mark_is_set[] = "typing::TypingVisitor::mark_is_set";
120 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
121 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
122 val_t REGB0;
123 val_t tmp;
124 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
125 fra.me.file = LOCATE_syntax___typing;
126 fra.me.line = 53;
127 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
128 fra.me.has_broke = 0;
129 fra.me.REG_size = 3;
130 fra.me.nitni_local_ref_head = NULL;
131 fra.me.REG[0] = NIT_NULL;
132 fra.me.REG[1] = NIT_NULL;
133 fra.me.REG[2] = NIT_NULL;
134 fra.me.REG[0] = p0;
135 fra.me.REG[1] = p1;
136 /* syntax/typing.nit:56 */
137 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
138 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
139 if (UNTAG_Bool(REGB0)) {
140 goto label1;
141 }
142 /* syntax/typing.nit:57 */
143 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
144 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
145 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
146 label1: while(0);
147 stack_frame_head = fra.me.prev;
148 return;
149 }
150 static const char LOCATE_syntax___typing___TypingVisitor___mark_unreash[] = "typing::TypingVisitor::mark_unreash";
151 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
152 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
153 val_t tmp;
154 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
155 fra.me.file = LOCATE_syntax___typing;
156 fra.me.line = 60;
157 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
158 fra.me.has_broke = 0;
159 fra.me.REG_size = 3;
160 fra.me.nitni_local_ref_head = NULL;
161 fra.me.REG[0] = NIT_NULL;
162 fra.me.REG[1] = NIT_NULL;
163 fra.me.REG[2] = NIT_NULL;
164 fra.me.REG[0] = p0;
165 fra.me.REG[1] = p1;
166 /* syntax/typing.nit:63 */
167 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
168 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
169 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
170 stack_frame_head = fra.me.prev;
171 return;
172 }
173 static const char LOCATE_syntax___typing___TypingVisitor___enter_visit_block[] = "typing::TypingVisitor::enter_visit_block";
174 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
175 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
176 val_t REGB0;
177 val_t REGB1;
178 val_t tmp;
179 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
180 fra.me.file = LOCATE_syntax___typing;
181 fra.me.line = 66;
182 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
183 fra.me.has_broke = 0;
184 fra.me.REG_size = 3;
185 fra.me.nitni_local_ref_head = NULL;
186 fra.me.REG[0] = NIT_NULL;
187 fra.me.REG[1] = NIT_NULL;
188 fra.me.REG[2] = NIT_NULL;
189 fra.me.REG[0] = p0;
190 fra.me.REG[1] = p1;
191 /* syntax/typing.nit:69 */
192 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
193 if (UNTAG_Bool(REGB0)) {
194 } else {
195 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
196 if (UNTAG_Bool(REGB1)) {
197 REGB1 = TAG_Bool(0);
198 REGB0 = REGB1;
199 } else {
200 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
201 REGB0 = REGB1;
202 }
203 }
204 if (UNTAG_Bool(REGB0)) {
205 goto label1;
206 }
207 /* syntax/typing.nit:70 */
208 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
209 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
210 /* syntax/typing.nit:71 */
211 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
212 /* syntax/typing.nit:72 */
213 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
214 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
215 label1: while(0);
216 stack_frame_head = fra.me.prev;
217 return;
218 }
219 static const char LOCATE_syntax___typing___TypingVisitor___base_flow_ctx[] = "typing::TypingVisitor::base_flow_ctx";
220 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
221 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
222 val_t REGB0;
223 val_t tmp;
224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
225 fra.me.file = LOCATE_syntax___typing;
226 fra.me.line = 75;
227 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
228 fra.me.has_broke = 0;
229 fra.me.REG_size = 2;
230 fra.me.nitni_local_ref_head = NULL;
231 fra.me.REG[0] = NIT_NULL;
232 fra.me.REG[1] = NIT_NULL;
233 fra.me.REG[0] = p0;
234 /* syntax/typing.nit:75 */
235 fra.me.REG[1] = fra.me.REG[0];
236 /* syntax/typing.nit:76 */
237 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
238 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
239 if (UNTAG_Bool(REGB0)) {
240 } else {
241 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
242 }
243 goto label1;
244 label1: while(0);
245 stack_frame_head = fra.me.prev;
246 return fra.me.REG[1];
247 }
248 static const char LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq[] = "typing::TypingVisitor::base_flow_ctx=";
249 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
250 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
251 val_t tmp;
252 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
253 fra.me.file = LOCATE_syntax___typing;
254 fra.me.line = 77;
255 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
256 fra.me.has_broke = 0;
257 fra.me.REG_size = 2;
258 fra.me.nitni_local_ref_head = NULL;
259 fra.me.REG[0] = NIT_NULL;
260 fra.me.REG[1] = NIT_NULL;
261 fra.me.REG[0] = p0;
262 fra.me.REG[1] = p1;
263 /* syntax/typing.nit:77 */
264 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
265 stack_frame_head = fra.me.prev;
266 return;
267 }
268 static const char LOCATE_syntax___typing___TypingVisitor___self_var[] = "typing::TypingVisitor::self_var";
269 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
270 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
271 val_t REGB0;
272 val_t tmp;
273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
274 fra.me.file = LOCATE_syntax___typing;
275 fra.me.line = 79;
276 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
277 fra.me.has_broke = 0;
278 fra.me.REG_size = 2;
279 fra.me.nitni_local_ref_head = NULL;
280 fra.me.REG[0] = NIT_NULL;
281 fra.me.REG[1] = NIT_NULL;
282 fra.me.REG[0] = p0;
283 /* syntax/typing.nit:79 */
284 fra.me.REG[1] = fra.me.REG[0];
285 /* syntax/typing.nit:80 */
286 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
287 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
288 if (UNTAG_Bool(REGB0)) {
289 } else {
290 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
291 }
292 goto label1;
293 label1: while(0);
294 stack_frame_head = fra.me.prev;
295 return fra.me.REG[1];
296 }
297 static const char LOCATE_syntax___typing___TypingVisitor___self_var__eq[] = "typing::TypingVisitor::self_var=";
298 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
299 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
300 val_t tmp;
301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
302 fra.me.file = LOCATE_syntax___typing;
303 fra.me.line = 81;
304 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
305 fra.me.has_broke = 0;
306 fra.me.REG_size = 2;
307 fra.me.nitni_local_ref_head = NULL;
308 fra.me.REG[0] = NIT_NULL;
309 fra.me.REG[1] = NIT_NULL;
310 fra.me.REG[0] = p0;
311 fra.me.REG[1] = p1;
312 /* syntax/typing.nit:81 */
313 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
314 stack_frame_head = fra.me.prev;
315 return;
316 }
317 static const char LOCATE_syntax___typing___TypingVisitor___top_block[] = "typing::TypingVisitor::top_block";
318 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
319 struct {struct stack_frame_t me;} fra;
320 val_t tmp;
321 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
322 fra.me.file = LOCATE_syntax___typing;
323 fra.me.line = 83;
324 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
325 fra.me.has_broke = 0;
326 fra.me.REG_size = 1;
327 fra.me.nitni_local_ref_head = NULL;
328 fra.me.REG[0] = NIT_NULL;
329 fra.me.REG[0] = p0;
330 /* syntax/typing.nit:83 */
331 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
332 stack_frame_head = fra.me.prev;
333 return fra.me.REG[0];
334 }
335 static const char LOCATE_syntax___typing___TypingVisitor___top_block__eq[] = "typing::TypingVisitor::top_block=";
336 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
337 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
338 val_t tmp;
339 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
340 fra.me.file = LOCATE_syntax___typing;
341 fra.me.line = 83;
342 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
343 fra.me.has_broke = 0;
344 fra.me.REG_size = 2;
345 fra.me.nitni_local_ref_head = NULL;
346 fra.me.REG[0] = NIT_NULL;
347 fra.me.REG[1] = NIT_NULL;
348 fra.me.REG[0] = p0;
349 fra.me.REG[1] = p1;
350 /* syntax/typing.nit:83 */
351 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
352 stack_frame_head = fra.me.prev;
353 return;
354 }
355 static const char LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls[] = "typing::TypingVisitor::explicit_super_init_calls";
356 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
357 struct {struct stack_frame_t me;} fra;
358 val_t tmp;
359 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
360 fra.me.file = LOCATE_syntax___typing;
361 fra.me.line = 86;
362 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
363 fra.me.has_broke = 0;
364 fra.me.REG_size = 1;
365 fra.me.nitni_local_ref_head = NULL;
366 fra.me.REG[0] = NIT_NULL;
367 fra.me.REG[0] = p0;
368 /* syntax/typing.nit:86 */
369 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
370 stack_frame_head = fra.me.prev;
371 return fra.me.REG[0];
372 }
373 static const char LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq[] = "typing::TypingVisitor::explicit_super_init_calls=";
374 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
375 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
376 val_t tmp;
377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
378 fra.me.file = LOCATE_syntax___typing;
379 fra.me.line = 86;
380 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
381 fra.me.has_broke = 0;
382 fra.me.REG_size = 2;
383 fra.me.nitni_local_ref_head = NULL;
384 fra.me.REG[0] = NIT_NULL;
385 fra.me.REG[1] = NIT_NULL;
386 fra.me.REG[0] = p0;
387 fra.me.REG[1] = p1;
388 /* syntax/typing.nit:86 */
389 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
390 stack_frame_head = fra.me.prev;
391 return;
392 }
393 static const char LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call[] = "typing::TypingVisitor::explicit_other_init_call";
394 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
395 struct {struct stack_frame_t me;} fra;
396 val_t REGB0;
397 val_t tmp;
398 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
399 fra.me.file = LOCATE_syntax___typing;
400 fra.me.line = 89;
401 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
402 fra.me.has_broke = 0;
403 fra.me.REG_size = 1;
404 fra.me.nitni_local_ref_head = NULL;
405 fra.me.REG[0] = NIT_NULL;
406 fra.me.REG[0] = p0;
407 /* syntax/typing.nit:89 */
408 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
409 if (UNTAG_Bool(REGB0)) {
410 } else {
411 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
412 }
413 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
414 stack_frame_head = fra.me.prev;
415 return REGB0;
416 }
417 static const char LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq[] = "typing::TypingVisitor::explicit_other_init_call=";
418 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
419 struct {struct stack_frame_t me;} fra;
420 val_t REGB0;
421 val_t tmp;
422 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
423 fra.me.file = LOCATE_syntax___typing;
424 fra.me.line = 89;
425 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
426 fra.me.has_broke = 0;
427 fra.me.REG_size = 1;
428 fra.me.nitni_local_ref_head = NULL;
429 fra.me.REG[0] = NIT_NULL;
430 fra.me.REG[0] = p0;
431 REGB0 = p1;
432 /* syntax/typing.nit:89 */
433 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
434 stack_frame_head = fra.me.prev;
435 return;
436 }
437 static const char LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx[] = "typing::TypingVisitor::use_if_true_flow_ctx";
438 void syntax___typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
439 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
440 val_t REGB0;
441 val_t REGB1;
442 val_t tmp;
443 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
444 fra.me.file = LOCATE_syntax___typing;
445 fra.me.line = 92;
446 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
447 fra.me.has_broke = 0;
448 fra.me.REG_size = 2;
449 fra.me.nitni_local_ref_head = NULL;
450 fra.me.REG[0] = NIT_NULL;
451 fra.me.REG[1] = NIT_NULL;
452 fra.me.REG[0] = p0;
453 fra.me.REG[1] = p1;
454 /* syntax/typing.nit:95 */
455 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
456 /* syntax/typing.nit:96 */
457 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
458 if (UNTAG_Bool(REGB0)) {
459 } else {
460 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
461 if (UNTAG_Bool(REGB1)) {
462 REGB1 = TAG_Bool(0);
463 REGB0 = REGB1;
464 } else {
465 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
466 REGB0 = REGB1;
467 }
468 }
469 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
470 if (UNTAG_Bool(REGB0)) {
471 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
472 }
473 stack_frame_head = fra.me.prev;
474 return;
475 }
476 static const char LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx[] = "typing::TypingVisitor::use_if_false_flow_ctx";
477 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
478 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
479 val_t REGB0;
480 val_t REGB1;
481 val_t tmp;
482 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
483 fra.me.file = LOCATE_syntax___typing;
484 fra.me.line = 99;
485 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
486 fra.me.has_broke = 0;
487 fra.me.REG_size = 2;
488 fra.me.nitni_local_ref_head = NULL;
489 fra.me.REG[0] = NIT_NULL;
490 fra.me.REG[1] = NIT_NULL;
491 fra.me.REG[0] = p0;
492 fra.me.REG[1] = p1;
493 /* syntax/typing.nit:102 */
494 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
495 /* syntax/typing.nit:103 */
496 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
497 if (UNTAG_Bool(REGB0)) {
498 } else {
499 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
500 if (UNTAG_Bool(REGB1)) {
501 REGB1 = TAG_Bool(0);
502 REGB0 = REGB1;
503 } else {
504 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
505 REGB0 = REGB1;
506 }
507 }
508 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
509 if (UNTAG_Bool(REGB0)) {
510 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
511 }
512 stack_frame_head = fra.me.prev;
513 return;
514 }
515 static const char LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition[] = "typing::TypingVisitor::is_default_closure_definition";
516 val_t syntax___typing___TypingVisitor___is_default_closure_definition(val_t p0){
517 struct {struct stack_frame_t me;} fra;
518 val_t REGB0;
519 val_t tmp;
520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
521 fra.me.file = LOCATE_syntax___typing;
522 fra.me.line = 106;
523 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition;
524 fra.me.has_broke = 0;
525 fra.me.REG_size = 1;
526 fra.me.nitni_local_ref_head = NULL;
527 fra.me.REG[0] = NIT_NULL;
528 fra.me.REG[0] = p0;
529 /* syntax/typing.nit:106 */
530 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
531 if (UNTAG_Bool(REGB0)) {
532 } else {
533 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_syntax___typing, 106);
534 }
535 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
536 stack_frame_head = fra.me.prev;
537 return REGB0;
538 }
539 static const char LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq[] = "typing::TypingVisitor::is_default_closure_definition=";
540 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
541 struct {struct stack_frame_t me;} fra;
542 val_t REGB0;
543 val_t tmp;
544 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
545 fra.me.file = LOCATE_syntax___typing;
546 fra.me.line = 106;
547 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
548 fra.me.has_broke = 0;
549 fra.me.REG_size = 1;
550 fra.me.nitni_local_ref_head = NULL;
551 fra.me.REG[0] = NIT_NULL;
552 fra.me.REG[0] = p0;
553 REGB0 = p1;
554 /* syntax/typing.nit:106 */
555 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
556 stack_frame_head = fra.me.prev;
557 return;
558 }
559 static const char LOCATE_syntax___typing___TypingVisitor___once_count[] = "typing::TypingVisitor::once_count";
560 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
561 struct {struct stack_frame_t me;} fra;
562 val_t REGB0;
563 val_t tmp;
564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
565 fra.me.file = LOCATE_syntax___typing;
566 fra.me.line = 109;
567 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count;
568 fra.me.has_broke = 0;
569 fra.me.REG_size = 1;
570 fra.me.nitni_local_ref_head = NULL;
571 fra.me.REG[0] = NIT_NULL;
572 fra.me.REG[0] = p0;
573 /* syntax/typing.nit:109 */
574 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
575 if (UNTAG_Bool(REGB0)) {
576 } else {
577 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
578 }
579 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
580 stack_frame_head = fra.me.prev;
581 return REGB0;
582 }
583 static const char LOCATE_syntax___typing___TypingVisitor___once_count__eq[] = "typing::TypingVisitor::once_count=";
584 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
585 struct {struct stack_frame_t me;} fra;
586 val_t REGB0;
587 val_t tmp;
588 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
589 fra.me.file = LOCATE_syntax___typing;
590 fra.me.line = 109;
591 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
592 fra.me.has_broke = 0;
593 fra.me.REG_size = 1;
594 fra.me.nitni_local_ref_head = NULL;
595 fra.me.REG[0] = NIT_NULL;
596 fra.me.REG[0] = p0;
597 REGB0 = p1;
598 /* syntax/typing.nit:109 */
599 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
600 stack_frame_head = fra.me.prev;
601 return;
602 }
603 static const char LOCATE_syntax___typing___TypingVisitor___init[] = "typing::TypingVisitor::init";
604 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
605 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
606 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
607 val_t tmp;
608 if (init_table[itpos0]) return;
609 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
610 fra.me.file = LOCATE_syntax___typing;
611 fra.me.line = 112;
612 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
613 fra.me.has_broke = 0;
614 fra.me.REG_size = 3;
615 fra.me.nitni_local_ref_head = NULL;
616 fra.me.REG[0] = NIT_NULL;
617 fra.me.REG[1] = NIT_NULL;
618 fra.me.REG[2] = NIT_NULL;
619 fra.me.REG[0] = p0;
620 fra.me.REG[1] = p1;
621 fra.me.REG[2] = p2;
622 /* syntax/typing.nit:112 */
623 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
624 stack_frame_head = fra.me.prev;
625 init_table[itpos0] = 1;
626 return;
627 }
628 static const char LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for[] = "typing::TypingVisitor::get_default_constructor_for";
629 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
630 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
631 val_t REGB0;
632 val_t REGB1;
633 val_t REGB2;
634 val_t tmp;
635 static val_t once_value_6; /* Once value */
636 static val_t once_value_7; /* Once value */
637 static val_t once_value_8; /* Once value */
638 static val_t once_value_10; /* Once value */
639 static val_t once_value_11; /* Once value */
640 static val_t once_value_12; /* Once value */
641 static val_t once_value_13; /* Once value */
642 static val_t once_value_14; /* Once value */
643 static val_t once_value_15; /* Once value */
644 static val_t once_value_16; /* Once value */
645 static val_t once_value_18; /* Once value */
646 static val_t once_value_19; /* Once value */
647 static val_t once_value_20; /* Once value */
648 static val_t once_value_21; /* Once value */
649 static val_t once_value_22; /* Once value */
650 static val_t once_value_23; /* Once value */
651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
652 fra.me.file = LOCATE_syntax___typing;
653 fra.me.line = 114;
654 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
655 fra.me.has_broke = 0;
656 fra.me.REG_size = 12;
657 fra.me.nitni_local_ref_head = NULL;
658 fra.me.REG[0] = NIT_NULL;
659 fra.me.REG[1] = NIT_NULL;
660 fra.me.REG[2] = NIT_NULL;
661 fra.me.REG[3] = NIT_NULL;
662 fra.me.REG[4] = NIT_NULL;
663 fra.me.REG[5] = NIT_NULL;
664 fra.me.REG[6] = NIT_NULL;
665 fra.me.REG[7] = NIT_NULL;
666 fra.me.REG[8] = NIT_NULL;
667 fra.me.REG[9] = NIT_NULL;
668 fra.me.REG[10] = NIT_NULL;
669 fra.me.REG[11] = NIT_NULL;
670 fra.me.REG[0] = p0;
671 fra.me.REG[1] = p1;
672 fra.me.REG[2] = p2;
673 fra.me.REG[3] = p3;
674 /* syntax/typing.nit:114 */
675 fra.me.REG[4] = fra.me.REG[0];
676 /* syntax/typing.nit:116 */
677 fra.me.REG[5] = fra.me.REG[4];
678 /* syntax/typing.nit:119 */
679 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
680 /* syntax/typing.nit:120 */
681 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
682 /* syntax/typing.nit:121 */
683 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
684 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
685 if (UNTAG_Bool(REGB0)) {
686 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
687 }
688 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
689 fra.me.REG[8] = REGB0;
690 /* syntax/typing.nit:122 */
691 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
692 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[9])(fra.me.REG[9], (&(fra.me)), ((fun_t)OC_syntax___typing___TypingVisitor___get_default_constructor_for_1));
693 switch ((&(fra.me))->has_broke) {
694 case 0: break;
695 case 1: (&(fra.me))->has_broke = 0; goto label5;
696 }
697 /* ../lib/standard/collection/array.nit:24 */
698 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
699 if (UNTAG_Bool(REGB0)) {
700 } else {
701 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
702 }
703 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
704 /* syntax/typing.nit:141 */
705 REGB1 = TAG_Int(1);
706 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
707 if (UNTAG_Bool(REGB2)) {
708 } else {
709 /* ../lib/standard/kernel.nit:237 */
710 REGB1 = TAG_Bool((REGB0)==(REGB1));
711 /* syntax/typing.nit:141 */
712 REGB2 = REGB1;
713 }
714 if (UNTAG_Bool(REGB2)) {
715 /* syntax/typing.nit:142 */
716 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
717 fra.me.REG[9] = fra.me.REG[3];
718 goto label5;
719 } else {
720 /* ../lib/standard/collection/array.nit:24 */
721 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
722 if (UNTAG_Bool(REGB2)) {
723 } else {
724 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
725 }
726 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
727 /* syntax/typing.nit:143 */
728 REGB1 = TAG_Int(0);
729 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
730 if (UNTAG_Bool(REGB0)) {
731 } else {
732 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
733 }
734 /* ../lib/standard/kernel.nit:244 */
735 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
736 /* syntax/typing.nit:143 */
737 if (UNTAG_Bool(REGB1)) {
738 /* syntax/typing.nit:144 */
739 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
740 /* ../lib/standard/collection/array.nit:270 */
741 REGB1 = TAG_Int(0);
742 /* ../lib/standard/collection/array.nit:271 */
743 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
744 if (UNTAG_Bool(REGB2)) {
745 } else {
746 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
747 }
748 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
749 /* ../lib/standard/collection/array.nit:272 */
750 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
751 /* ../lib/standard/collection/array.nit:273 */
752 while(1) {
753 /* ../lib/standard/collection/array.nit:24 */
754 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
755 if (UNTAG_Bool(REGB2)) {
756 } else {
757 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
758 }
759 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
760 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
761 if (UNTAG_Bool(REGB0)) {
762 } else {
763 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
764 }
765 /* ../lib/standard/kernel.nit:242 */
766 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
767 /* ../lib/standard/collection/array.nit:273 */
768 if (UNTAG_Bool(REGB2)) {
769 /* ../lib/standard/collection/array.nit:274 */
770 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
771 if (UNTAG_Bool(REGB2)) {
772 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
773 }
774 /* ../lib/standard/collection/array.nit:725 */
775 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
776 /* syntax/typing.nit:146 */
777 REGB2 = TAG_Int(5);
778 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
779 if (!once_value_6) {
780 fra.me.REG[11] = BOX_NativeString("");
781 REGB2 = TAG_Int(0);
782 fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB2);
783 once_value_6 = fra.me.REG[11];
784 register_static_object(&once_value_6);
785 } else fra.me.REG[11] = once_value_6;
786 fra.me.REG[11] = fra.me.REG[11];
787 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
788 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
789 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
790 if (!once_value_7) {
791 fra.me.REG[11] = BOX_NativeString("");
792 REGB2 = TAG_Int(0);
793 fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB2);
794 once_value_7 = fra.me.REG[11];
795 register_static_object(&once_value_7);
796 } else fra.me.REG[11] = once_value_7;
797 fra.me.REG[11] = fra.me.REG[11];
798 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
799 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
800 REGB2 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
801 if (UNTAG_Bool(REGB2)) {
802 } else {
803 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
804 }
805 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
806 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
807 if (!once_value_8) {
808 fra.me.REG[4] = BOX_NativeString("");
809 REGB2 = TAG_Int(0);
810 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
811 once_value_8 = fra.me.REG[4];
812 register_static_object(&once_value_8);
813 } else fra.me.REG[4] = once_value_8;
814 fra.me.REG[4] = fra.me.REG[4];
815 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
816 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
817 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
818 /* ../lib/standard/collection/array.nit:275 */
819 REGB2 = TAG_Int(1);
820 /* ../lib/standard/kernel.nit:245 */
821 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
822 /* ../lib/standard/collection/array.nit:275 */
823 REGB1 = REGB2;
824 } else {
825 /* ../lib/standard/collection/array.nit:273 */
826 goto label9;
827 }
828 }
829 label9: while(0);
830 /* syntax/typing.nit:148 */
831 REGB1 = TAG_Int(5);
832 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
833 if (!once_value_10) {
834 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
835 REGB1 = TAG_Int(51);
836 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
837 once_value_10 = fra.me.REG[6];
838 register_static_object(&once_value_10);
839 } else fra.me.REG[6] = once_value_10;
840 fra.me.REG[6] = fra.me.REG[6];
841 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
842 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
843 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
844 if (!once_value_11) {
845 fra.me.REG[6] = BOX_NativeString(": ");
846 REGB1 = TAG_Int(2);
847 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
848 once_value_11 = fra.me.REG[6];
849 register_static_object(&once_value_11);
850 } else fra.me.REG[6] = once_value_11;
851 fra.me.REG[6] = fra.me.REG[6];
852 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
853 if (!once_value_12) {
854 fra.me.REG[6] = BOX_NativeString(", ");
855 REGB1 = TAG_Int(2);
856 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
857 once_value_12 = fra.me.REG[6];
858 register_static_object(&once_value_12);
859 } else fra.me.REG[6] = once_value_12;
860 fra.me.REG[6] = fra.me.REG[6];
861 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
863 if (!once_value_13) {
864 fra.me.REG[6] = BOX_NativeString(".");
865 REGB1 = TAG_Int(1);
866 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
867 once_value_13 = fra.me.REG[6];
868 register_static_object(&once_value_13);
869 } else fra.me.REG[6] = once_value_13;
870 fra.me.REG[6] = fra.me.REG[6];
871 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
872 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
873 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
874 /* syntax/typing.nit:149 */
875 fra.me.REG[9] = NIT_NULL;
876 goto label5;
877 } else {
878 /* ../lib/standard/collection/array.nit:24 */
879 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
880 if (UNTAG_Bool(REGB1)) {
881 } else {
882 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
883 }
884 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
885 /* syntax/typing.nit:150 */
886 REGB2 = TAG_Int(0);
887 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
888 if (UNTAG_Bool(REGB0)) {
889 } else {
890 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
891 }
892 /* ../lib/standard/kernel.nit:244 */
893 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
894 /* syntax/typing.nit:150 */
895 if (UNTAG_Bool(REGB2)) {
896 /* syntax/typing.nit:151 */
897 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
898 /* ../lib/standard/collection/array.nit:270 */
899 REGB2 = TAG_Int(0);
900 /* ../lib/standard/collection/array.nit:271 */
901 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
902 if (UNTAG_Bool(REGB1)) {
903 } else {
904 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
905 }
906 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
907 /* ../lib/standard/collection/array.nit:272 */
908 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
909 /* ../lib/standard/collection/array.nit:273 */
910 while(1) {
911 /* ../lib/standard/collection/array.nit:24 */
912 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
913 if (UNTAG_Bool(REGB1)) {
914 } else {
915 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
916 }
917 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
918 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
919 if (UNTAG_Bool(REGB0)) {
920 } else {
921 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
922 }
923 /* ../lib/standard/kernel.nit:242 */
924 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
925 /* ../lib/standard/collection/array.nit:273 */
926 if (UNTAG_Bool(REGB1)) {
927 /* ../lib/standard/collection/array.nit:274 */
928 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
929 if (UNTAG_Bool(REGB1)) {
930 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
931 }
932 /* ../lib/standard/collection/array.nit:725 */
933 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
934 /* syntax/typing.nit:153 */
935 REGB1 = TAG_Int(5);
936 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
937 if (!once_value_14) {
938 fra.me.REG[4] = BOX_NativeString("");
939 REGB1 = TAG_Int(0);
940 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
941 once_value_14 = fra.me.REG[4];
942 register_static_object(&once_value_14);
943 } else fra.me.REG[4] = once_value_14;
944 fra.me.REG[4] = fra.me.REG[4];
945 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
946 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
947 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
948 if (!once_value_15) {
949 fra.me.REG[4] = BOX_NativeString("");
950 REGB1 = TAG_Int(0);
951 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
952 once_value_15 = fra.me.REG[4];
953 register_static_object(&once_value_15);
954 } else fra.me.REG[4] = once_value_15;
955 fra.me.REG[4] = fra.me.REG[4];
956 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
957 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
958 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
959 if (UNTAG_Bool(REGB1)) {
960 } else {
961 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
962 }
963 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
964 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
965 if (!once_value_16) {
966 fra.me.REG[3] = BOX_NativeString("");
967 REGB1 = TAG_Int(0);
968 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
969 once_value_16 = fra.me.REG[3];
970 register_static_object(&once_value_16);
971 } else fra.me.REG[3] = once_value_16;
972 fra.me.REG[3] = fra.me.REG[3];
973 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
974 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
975 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
976 /* ../lib/standard/collection/array.nit:275 */
977 REGB1 = TAG_Int(1);
978 /* ../lib/standard/kernel.nit:245 */
979 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
980 /* ../lib/standard/collection/array.nit:275 */
981 REGB2 = REGB1;
982 } else {
983 /* ../lib/standard/collection/array.nit:273 */
984 goto label17;
985 }
986 }
987 label17: while(0);
988 /* syntax/typing.nit:155 */
989 REGB2 = TAG_Int(5);
990 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
991 if (!once_value_18) {
992 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
993 REGB2 = TAG_Int(55);
994 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
995 once_value_18 = fra.me.REG[6];
996 register_static_object(&once_value_18);
997 } else fra.me.REG[6] = once_value_18;
998 fra.me.REG[6] = fra.me.REG[6];
999 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1000 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1001 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1002 if (!once_value_19) {
1003 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
1004 REGB2 = TAG_Int(27);
1005 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
1006 once_value_19 = fra.me.REG[6];
1007 register_static_object(&once_value_19);
1008 } else fra.me.REG[6] = once_value_19;
1009 fra.me.REG[6] = fra.me.REG[6];
1010 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1011 if (!once_value_20) {
1012 fra.me.REG[6] = BOX_NativeString(", ");
1013 REGB2 = TAG_Int(2);
1014 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
1015 once_value_20 = fra.me.REG[6];
1016 register_static_object(&once_value_20);
1017 } else fra.me.REG[6] = once_value_20;
1018 fra.me.REG[6] = fra.me.REG[6];
1019 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
1020 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1021 if (!once_value_21) {
1022 fra.me.REG[6] = BOX_NativeString(".");
1023 REGB2 = TAG_Int(1);
1024 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
1025 once_value_21 = fra.me.REG[6];
1026 register_static_object(&once_value_21);
1027 } else fra.me.REG[6] = once_value_21;
1028 fra.me.REG[6] = fra.me.REG[6];
1029 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1030 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1031 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1032 /* syntax/typing.nit:156 */
1033 fra.me.REG[9] = NIT_NULL;
1034 goto label5;
1035 } else {
1036 /* syntax/typing.nit:158 */
1037 REGB2 = TAG_Int(3);
1038 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1039 if (!once_value_22) {
1040 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1041 REGB2 = TAG_Int(55);
1042 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
1043 once_value_22 = fra.me.REG[6];
1044 register_static_object(&once_value_22);
1045 } else fra.me.REG[6] = once_value_22;
1046 fra.me.REG[6] = fra.me.REG[6];
1047 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1048 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1049 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1050 if (!once_value_23) {
1051 fra.me.REG[2] = BOX_NativeString(".");
1052 REGB2 = TAG_Int(1);
1053 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB2);
1054 once_value_23 = fra.me.REG[2];
1055 register_static_object(&once_value_23);
1056 } else fra.me.REG[2] = once_value_23;
1057 fra.me.REG[2] = fra.me.REG[2];
1058 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1059 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1060 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1061 /* syntax/typing.nit:159 */
1062 fra.me.REG[9] = NIT_NULL;
1063 goto label5;
1064 }
1065 }
1066 }
1067 label5: while(0);
1068 stack_frame_head = fra.me.prev;
1069 return fra.me.REG[9];
1070 }
1071 void OC_syntax___typing___TypingVisitor___get_default_constructor_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1072 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1073 val_t REGB0;
1074 val_t REGB1;
1075 val_t REGB2;
1076 val_t REGB3;
1077 fun_t CREG[1];
1078 val_t tmp;
1079 static val_t once_value_3; /* Once value */
1080 static val_t once_value_4; /* Once value */
1081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1082 fra.me.file = LOCATE_syntax___typing;
1083 fra.me.line = 0;
1084 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1085 fra.me.has_broke = 0;
1086 fra.me.REG_size = 4;
1087 fra.me.nitni_local_ref_head = NULL;
1088 fra.me.REG[0] = NIT_NULL;
1089 fra.me.REG[1] = NIT_NULL;
1090 fra.me.REG[2] = NIT_NULL;
1091 fra.me.REG[3] = NIT_NULL;
1092 fra.me.closure_ctx = closctx_param;
1093 fra.me.closure_funs = CREG;
1094 fra.me.REG[0] = p0;
1095 CREG[0] = clos_fun0;
1096 /* syntax/typing.nit:123 */
1097 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1098 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1099 if (UNTAG_Bool(REGB0)) {
1100 goto label2;
1101 }
1102 /* syntax/typing.nit:124 */
1103 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1104 /* syntax/typing.nit:125 */
1105 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1106 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1107 /* syntax/typing.nit:126 */
1108 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1109 if (UNTAG_Bool(REGB0)) {
1110 } else {
1111 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1112 }
1113 /* syntax/typing.nit:127 */
1114 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1115 /* syntax/typing.nit:128 */
1116 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1117 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1118 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1119 if (UNTAG_Bool(REGB1)) {
1120 } else {
1121 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1122 REGB1 = REGB2;
1123 }
1124 if (UNTAG_Bool(REGB1)) {
1125 /* syntax/typing.nit:129 */
1126 REGB1 = TAG_Int(0);
1127 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1128 if (UNTAG_Bool(REGB2)) {
1129 } else {
1130 /* ../lib/standard/kernel.nit:237 */
1131 REGB1 = TAG_Bool((REGB0)==(REGB1));
1132 /* syntax/typing.nit:129 */
1133 REGB2 = REGB1;
1134 }
1135 if (UNTAG_Bool(REGB2)) {
1136 REGB2 = TAG_Bool(1);
1137 } else {
1138 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1139 if (UNTAG_Bool(REGB1)) {
1140 } else {
1141 /* ../lib/standard/kernel.nit:237 */
1142 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1143 /* syntax/typing.nit:129 */
1144 REGB1 = REGB3;
1145 }
1146 if (UNTAG_Bool(REGB1)) {
1147 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1148 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1149 if (UNTAG_Bool(REGB1)) {
1150 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1151 }
1152 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1153 } else {
1154 REGB3 = TAG_Bool(0);
1155 REGB1 = REGB3;
1156 }
1157 REGB2 = REGB1;
1158 }
1159 if (UNTAG_Bool(REGB2)) {
1160 /* syntax/typing.nit:130 */
1161 closctx->REG[9] = fra.me.REG[0];
1162 closctx->has_broke = 1;
1163 goto label2;
1164 } else {
1165 /* syntax/typing.nit:132 */
1166 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1167 }
1168 } else {
1169 /* syntax/typing.nit:134 */
1170 REGB2 = TAG_Int(0);
1171 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1172 if (UNTAG_Bool(REGB1)) {
1173 } else {
1174 /* ../lib/standard/kernel.nit:237 */
1175 REGB2 = TAG_Bool((REGB0)==(REGB2));
1176 /* syntax/typing.nit:134 */
1177 REGB1 = REGB2;
1178 }
1179 if (UNTAG_Bool(REGB1)) {
1180 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1181 if (!once_value_3) {
1182 if (!once_value_4) {
1183 fra.me.REG[3] = BOX_NativeString("init");
1184 REGB1 = TAG_Int(4);
1185 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
1186 once_value_4 = fra.me.REG[3];
1187 register_static_object(&once_value_4);
1188 } else fra.me.REG[3] = once_value_4;
1189 fra.me.REG[3] = fra.me.REG[3];
1190 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1191 once_value_3 = fra.me.REG[3];
1192 register_static_object(&once_value_3);
1193 } else fra.me.REG[3] = once_value_3;
1194 fra.me.REG[3] = fra.me.REG[3];
1195 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1196 if (UNTAG_Bool(REGB1)) {
1197 } else {
1198 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1199 REGB1 = REGB2;
1200 }
1201 } else {
1202 REGB2 = TAG_Bool(0);
1203 REGB1 = REGB2;
1204 }
1205 if (UNTAG_Bool(REGB1)) {
1206 /* syntax/typing.nit:135 */
1207 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1208 /* syntax/typing.nit:136 */
1209 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1210 } else {
1211 /* syntax/typing.nit:138 */
1212 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1213 }
1214 }
1215 label2: while(0);
1216 stack_frame_head = fra.me.prev;
1217 return;
1218 }
1219 static const char LOCATE_syntax___typing___ANode___accept_typing[] = "typing::ANode::accept_typing";
1220 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1221 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1222 val_t tmp;
1223 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1224 fra.me.file = LOCATE_syntax___typing;
1225 fra.me.line = 168;
1226 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1227 fra.me.has_broke = 0;
1228 fra.me.REG_size = 2;
1229 fra.me.nitni_local_ref_head = NULL;
1230 fra.me.REG[0] = NIT_NULL;
1231 fra.me.REG[1] = NIT_NULL;
1232 fra.me.REG[0] = p0;
1233 fra.me.REG[1] = p1;
1234 /* syntax/typing.nit:170 */
1235 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1236 /* syntax/typing.nit:171 */
1237 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1238 stack_frame_head = fra.me.prev;
1239 return;
1240 }
1241 static const char LOCATE_syntax___typing___ANode___after_typing[] = "typing::ANode::after_typing";
1242 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1243 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1244 val_t tmp;
1245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1246 fra.me.file = LOCATE_syntax___typing;
1247 fra.me.line = 173;
1248 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1249 fra.me.has_broke = 0;
1250 fra.me.REG_size = 2;
1251 fra.me.nitni_local_ref_head = NULL;
1252 fra.me.REG[0] = NIT_NULL;
1253 fra.me.REG[1] = NIT_NULL;
1254 fra.me.REG[0] = p0;
1255 fra.me.REG[1] = p1;
1256 stack_frame_head = fra.me.prev;
1257 return;
1258 }
1259 static const char LOCATE_syntax___typing___AClassdef___accept_typing[] = "typing::AClassdef::(typing::ANode::accept_typing)";
1260 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1261 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1262 val_t REGB0;
1263 val_t tmp;
1264 static val_t once_value_1; /* Once value */
1265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1266 fra.me.file = LOCATE_syntax___typing;
1267 fra.me.line = 177;
1268 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1269 fra.me.has_broke = 0;
1270 fra.me.REG_size = 5;
1271 fra.me.nitni_local_ref_head = NULL;
1272 fra.me.REG[0] = NIT_NULL;
1273 fra.me.REG[1] = NIT_NULL;
1274 fra.me.REG[2] = NIT_NULL;
1275 fra.me.REG[3] = NIT_NULL;
1276 fra.me.REG[4] = NIT_NULL;
1277 fra.me.REG[0] = p0;
1278 fra.me.REG[1] = p1;
1279 /* syntax/typing.nit:177 */
1280 fra.me.REG[2] = fra.me.REG[0];
1281 fra.me.REG[3] = fra.me.REG[1];
1282 /* syntax/typing.nit:179 */
1283 if (!once_value_1) {
1284 fra.me.REG[4] = BOX_NativeString("self");
1285 REGB0 = TAG_Int(4);
1286 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
1287 once_value_1 = fra.me.REG[4];
1288 register_static_object(&once_value_1);
1289 } else fra.me.REG[4] = once_value_1;
1290 fra.me.REG[4] = fra.me.REG[4];
1291 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1292 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1293 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1294 /* syntax/typing.nit:180 */
1295 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1296 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1297 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1298 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1299 /* syntax/typing.nit:181 */
1300 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1301 stack_frame_head = fra.me.prev;
1302 return;
1303 }
1304 static const char LOCATE_syntax___typing___APropdef___self_var[] = "typing::APropdef::(syntax_base::APropdef::self_var)";
1305 val_t syntax___typing___APropdef___self_var(val_t p0){
1306 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1307 val_t REGB0;
1308 val_t tmp;
1309 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1310 fra.me.file = LOCATE_syntax___typing;
1311 fra.me.line = 186;
1312 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1313 fra.me.has_broke = 0;
1314 fra.me.REG_size = 2;
1315 fra.me.nitni_local_ref_head = NULL;
1316 fra.me.REG[0] = NIT_NULL;
1317 fra.me.REG[1] = NIT_NULL;
1318 fra.me.REG[0] = p0;
1319 /* syntax/typing.nit:186 */
1320 fra.me.REG[1] = fra.me.REG[0];
1321 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1322 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1323 if (UNTAG_Bool(REGB0)) {
1324 } else {
1325 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1326 }
1327 goto label1;
1328 label1: while(0);
1329 stack_frame_head = fra.me.prev;
1330 return fra.me.REG[1];
1331 }
1332 static const char LOCATE_syntax___typing___AAttrPropdef___accept_typing[] = "typing::AAttrPropdef::(typing::ANode::accept_typing)";
1333 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1334 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1335 val_t REGB0;
1336 val_t REGB1;
1337 val_t tmp;
1338 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1339 fra.me.file = LOCATE_syntax___typing;
1340 fra.me.line = 191;
1341 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1342 fra.me.has_broke = 0;
1343 fra.me.REG_size = 5;
1344 fra.me.nitni_local_ref_head = NULL;
1345 fra.me.REG[0] = NIT_NULL;
1346 fra.me.REG[1] = NIT_NULL;
1347 fra.me.REG[2] = NIT_NULL;
1348 fra.me.REG[3] = NIT_NULL;
1349 fra.me.REG[4] = NIT_NULL;
1350 fra.me.REG[0] = p0;
1351 fra.me.REG[1] = p1;
1352 /* syntax/typing.nit:191 */
1353 fra.me.REG[2] = fra.me.REG[0];
1354 fra.me.REG[3] = fra.me.REG[1];
1355 /* syntax/typing.nit:193 */
1356 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1357 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1358 /* syntax/typing.nit:194 */
1359 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1360 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1361 /* syntax/typing.nit:196 */
1362 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1363 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1364 /* syntax/typing.nit:197 */
1365 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1366 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1367 /* syntax/typing.nit:198 */
1368 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1369 /* syntax/typing.nit:199 */
1370 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1371 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1372 if (UNTAG_Bool(REGB0)) {
1373 } else {
1374 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1375 if (UNTAG_Bool(REGB1)) {
1376 REGB1 = TAG_Bool(0);
1377 REGB0 = REGB1;
1378 } else {
1379 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1380 REGB0 = REGB1;
1381 }
1382 }
1383 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1384 if (UNTAG_Bool(REGB0)) {
1385 /* syntax/typing.nit:200 */
1386 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1387 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
1388 if (UNTAG_Bool(REGB0)) {
1389 } else {
1390 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1391 }
1392 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1393 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1394 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1395 if (UNTAG_Bool(REGB0)) {
1396 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1397 }
1398 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1399 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
1400 if (UNTAG_Bool(REGB0)) {
1401 } else {
1402 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1403 }
1404 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1405 }
1406 /* syntax/typing.nit:202 */
1407 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1408 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1409 stack_frame_head = fra.me.prev;
1410 return;
1411 }
1412 static const char LOCATE_syntax___typing___AMethPropdef___accept_typing[] = "typing::AMethPropdef::(typing::ANode::accept_typing)";
1413 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1414 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1415 val_t tmp;
1416 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1417 fra.me.file = LOCATE_syntax___typing;
1418 fra.me.line = 207;
1419 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1420 fra.me.has_broke = 0;
1421 fra.me.REG_size = 5;
1422 fra.me.nitni_local_ref_head = NULL;
1423 fra.me.REG[0] = NIT_NULL;
1424 fra.me.REG[1] = NIT_NULL;
1425 fra.me.REG[2] = NIT_NULL;
1426 fra.me.REG[3] = NIT_NULL;
1427 fra.me.REG[4] = NIT_NULL;
1428 fra.me.REG[0] = p0;
1429 fra.me.REG[1] = p1;
1430 /* syntax/typing.nit:207 */
1431 fra.me.REG[2] = fra.me.REG[0];
1432 fra.me.REG[3] = fra.me.REG[1];
1433 /* syntax/typing.nit:209 */
1434 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1435 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1436 /* syntax/typing.nit:210 */
1437 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1438 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1439 /* syntax/typing.nit:212 */
1440 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1441 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1442 /* syntax/typing.nit:213 */
1443 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1444 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1445 /* syntax/typing.nit:214 */
1446 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1447 /* syntax/typing.nit:215 */
1448 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1449 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1450 stack_frame_head = fra.me.prev;
1451 return;
1452 }
1453 static const char LOCATE_syntax___typing___AConcreteMethPropdef___after_typing[] = "typing::AConcreteMethPropdef::(typing::ANode::after_typing)";
1454 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1455 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1456 val_t REGB0;
1457 val_t REGB1;
1458 val_t tmp;
1459 static val_t once_value_1; /* Once value */
1460 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1461 fra.me.file = LOCATE_syntax___typing;
1462 fra.me.line = 220;
1463 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1464 fra.me.has_broke = 0;
1465 fra.me.REG_size = 4;
1466 fra.me.nitni_local_ref_head = NULL;
1467 fra.me.REG[0] = NIT_NULL;
1468 fra.me.REG[1] = NIT_NULL;
1469 fra.me.REG[2] = NIT_NULL;
1470 fra.me.REG[3] = NIT_NULL;
1471 fra.me.REG[0] = p0;
1472 fra.me.REG[1] = p1;
1473 /* syntax/typing.nit:220 */
1474 fra.me.REG[2] = fra.me.REG[0];
1475 fra.me.REG[3] = fra.me.REG[1];
1476 /* syntax/typing.nit:222 */
1477 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1478 /* syntax/typing.nit:223 */
1479 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1480 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1481 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1482 if (UNTAG_Bool(REGB0)) {
1483 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1484 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1485 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1486 if (UNTAG_Bool(REGB0)) {
1487 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1488 }
1489 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1490 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1491 if (UNTAG_Bool(REGB0)) {
1492 } else {
1493 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1494 if (UNTAG_Bool(REGB1)) {
1495 REGB1 = TAG_Bool(0);
1496 REGB0 = REGB1;
1497 } else {
1498 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1499 REGB0 = REGB1;
1500 }
1501 }
1502 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1503 } else {
1504 REGB1 = TAG_Bool(0);
1505 REGB0 = REGB1;
1506 }
1507 if (UNTAG_Bool(REGB0)) {
1508 /* syntax/typing.nit:224 */
1509 if (!once_value_1) {
1510 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1511 REGB0 = TAG_Int(78);
1512 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
1513 once_value_1 = fra.me.REG[1];
1514 register_static_object(&once_value_1);
1515 } else fra.me.REG[1] = once_value_1;
1516 fra.me.REG[1] = fra.me.REG[1];
1517 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1518 }
1519 stack_frame_head = fra.me.prev;
1520 return;
1521 }
1522 static const char LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing[] = "typing::AConcreteInitPropdef::(typing::ANode::accept_typing)";
1523 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1524 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1525 val_t REGB0;
1526 val_t tmp;
1527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1528 fra.me.file = LOCATE_syntax___typing;
1529 fra.me.line = 230;
1530 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1531 fra.me.has_broke = 0;
1532 fra.me.REG_size = 5;
1533 fra.me.nitni_local_ref_head = NULL;
1534 fra.me.REG[0] = NIT_NULL;
1535 fra.me.REG[1] = NIT_NULL;
1536 fra.me.REG[2] = NIT_NULL;
1537 fra.me.REG[3] = NIT_NULL;
1538 fra.me.REG[4] = NIT_NULL;
1539 fra.me.REG[0] = p0;
1540 fra.me.REG[1] = p1;
1541 /* syntax/typing.nit:230 */
1542 fra.me.REG[2] = fra.me.REG[0];
1543 fra.me.REG[3] = fra.me.REG[1];
1544 /* syntax/typing.nit:232 */
1545 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1546 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1547 /* syntax/typing.nit:233 */
1548 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1549 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1550 /* syntax/typing.nit:234 */
1551 REGB0 = TAG_Bool(0);
1552 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1553 /* syntax/typing.nit:235 */
1554 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1555 stack_frame_head = fra.me.prev;
1556 return;
1557 }
1558 static const char LOCATE_syntax___typing___AConcreteInitPropdef___after_typing[] = "typing::AConcreteInitPropdef::(typing::ANode::after_typing)";
1559 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1560 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1561 val_t REGB0;
1562 val_t REGB1;
1563 val_t REGB2;
1564 val_t REGB3;
1565 val_t REGB4;
1566 val_t REGB5;
1567 val_t tmp;
1568 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1569 fra.me.file = LOCATE_syntax___typing;
1570 fra.me.line = 238;
1571 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1572 fra.me.has_broke = 0;
1573 fra.me.REG_size = 8;
1574 fra.me.nitni_local_ref_head = NULL;
1575 fra.me.REG[0] = NIT_NULL;
1576 fra.me.REG[1] = NIT_NULL;
1577 fra.me.REG[2] = NIT_NULL;
1578 fra.me.REG[3] = NIT_NULL;
1579 fra.me.REG[4] = NIT_NULL;
1580 fra.me.REG[5] = NIT_NULL;
1581 fra.me.REG[6] = NIT_NULL;
1582 fra.me.REG[7] = NIT_NULL;
1583 fra.me.REG[0] = p0;
1584 fra.me.REG[1] = p1;
1585 /* syntax/typing.nit:238 */
1586 fra.me.REG[2] = fra.me.REG[0];
1587 fra.me.REG[3] = fra.me.REG[1];
1588 /* syntax/typing.nit:240 */
1589 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1590 /* syntax/typing.nit:241 */
1591 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1592 if (UNTAG_Bool(REGB0)) {
1593 REGB0 = TAG_Bool(1);
1594 } else {
1595 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1596 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1597 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1598 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1599 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1600 if (UNTAG_Bool(REGB1)) {
1601 } else {
1602 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1603 REGB1 = REGB2;
1604 }
1605 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1606 REGB0 = REGB1;
1607 }
1608 if (UNTAG_Bool(REGB0)) {
1609 } else {
1610 /* syntax/typing.nit:244 */
1611 REGB0 = TAG_Int(0);
1612 /* syntax/typing.nit:245 */
1613 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1614 /* ../lib/standard/collection/array.nit:24 */
1615 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1616 if (UNTAG_Bool(REGB1)) {
1617 } else {
1618 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1619 }
1620 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1621 /* syntax/typing.nit:246 */
1622 fra.me.REG[4] = NIT_NULL;
1623 /* syntax/typing.nit:247 */
1624 fra.me.REG[1] = NIT_NULL;
1625 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1626 if (UNTAG_Bool(REGB2)) {
1627 } else {
1628 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1629 }
1630 /* ../lib/standard/kernel.nit:242 */
1631 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1632 /* syntax/typing.nit:248 */
1633 if (UNTAG_Bool(REGB2)) {
1634 /* syntax/typing.nit:249 */
1635 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1636 /* ../lib/standard/collection/array.nit:279 */
1637 REGB2 = REGB0;
1638 /* ../lib/standard/collection/array.nit:281 */
1639 REGB3 = TAG_Int(0);
1640 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1641 if (UNTAG_Bool(REGB4)) {
1642 } else {
1643 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1644 }
1645 /* ../lib/standard/kernel.nit:243 */
1646 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1647 /* ../lib/standard/collection/array.nit:281 */
1648 if (UNTAG_Bool(REGB3)) {
1649 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1650 if (UNTAG_Bool(REGB3)) {
1651 } else {
1652 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
1653 }
1654 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1655 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1656 if (UNTAG_Bool(REGB4)) {
1657 } else {
1658 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1659 }
1660 /* ../lib/standard/kernel.nit:242 */
1661 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1662 } else {
1663 /* ../lib/standard/collection/array.nit:281 */
1664 REGB4 = TAG_Bool(0);
1665 REGB3 = REGB4;
1666 }
1667 if (UNTAG_Bool(REGB3)) {
1668 } else {
1669 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
1670 }
1671 /* ../lib/standard/collection/array.nit:282 */
1672 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1673 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1674 if (UNTAG_Bool(REGB3)) {
1675 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
1676 }
1677 /* ../lib/standard/collection/array.nit:725 */
1678 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1679 /* ../lib/standard/collection/array.nit:282 */
1680 goto label1;
1681 label1: while(0);
1682 /* syntax/typing.nit:249 */
1683 fra.me.REG[4] = fra.me.REG[5];
1684 /* syntax/typing.nit:250 */
1685 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1686 if (UNTAG_Bool(REGB2)) {
1687 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1688 }
1689 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1690 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1691 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1692 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1693 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1694 fra.me.REG[1] = fra.me.REG[6];
1695 }
1696 /* syntax/typing.nit:252 */
1697 REGB2 = TAG_Int(0);
1698 /* syntax/typing.nit:253 */
1699 while(1) {
1700 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1701 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1702 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1703 /* ../lib/standard/collection/array.nit:24 */
1704 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1705 if (UNTAG_Bool(REGB3)) {
1706 } else {
1707 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1708 }
1709 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1710 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1711 if (UNTAG_Bool(REGB4)) {
1712 } else {
1713 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1714 }
1715 /* ../lib/standard/kernel.nit:242 */
1716 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1717 /* syntax/typing.nit:253 */
1718 if (UNTAG_Bool(REGB3)) {
1719 /* syntax/typing.nit:254 */
1720 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1721 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1722 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1723 /* ../lib/standard/collection/array.nit:279 */
1724 REGB3 = REGB2;
1725 /* ../lib/standard/collection/array.nit:281 */
1726 REGB4 = TAG_Int(0);
1727 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1728 if (UNTAG_Bool(REGB5)) {
1729 } else {
1730 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1731 }
1732 /* ../lib/standard/kernel.nit:243 */
1733 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1734 /* ../lib/standard/collection/array.nit:281 */
1735 if (UNTAG_Bool(REGB4)) {
1736 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1737 if (UNTAG_Bool(REGB4)) {
1738 } else {
1739 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
1740 }
1741 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1742 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1743 if (UNTAG_Bool(REGB5)) {
1744 } else {
1745 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1746 }
1747 /* ../lib/standard/kernel.nit:242 */
1748 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1749 } else {
1750 /* ../lib/standard/collection/array.nit:281 */
1751 REGB5 = TAG_Bool(0);
1752 REGB4 = REGB5;
1753 }
1754 if (UNTAG_Bool(REGB4)) {
1755 } else {
1756 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
1757 }
1758 /* ../lib/standard/collection/array.nit:282 */
1759 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1760 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1761 if (UNTAG_Bool(REGB4)) {
1762 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
1763 }
1764 /* ../lib/standard/collection/array.nit:725 */
1765 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1766 /* ../lib/standard/collection/array.nit:282 */
1767 goto label2;
1768 label2: while(0);
1769 /* syntax/typing.nit:255 */
1770 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1771 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1772 if (UNTAG_Bool(REGB3)) {
1773 REGB3 = TAG_Bool(1);
1774 } else {
1775 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1776 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1777 REGB3 = REGB4;
1778 }
1779 if (UNTAG_Bool(REGB3)) {
1780 REGB3 = TAG_Bool(1);
1781 } else {
1782 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1783 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1784 REGB3 = REGB4;
1785 }
1786 if (UNTAG_Bool(REGB3)) {
1787 REGB3 = TAG_Bool(1);
1788 } else {
1789 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1790 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1791 REGB3 = REGB4;
1792 }
1793 if (UNTAG_Bool(REGB3)) {
1794 /* syntax/typing.nit:256 */
1795 REGB3 = TAG_Int(1);
1796 /* ../lib/standard/kernel.nit:245 */
1797 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1798 /* syntax/typing.nit:256 */
1799 REGB2 = REGB3;
1800 } else {
1801 /* syntax/typing.nit:257 */
1802 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1803 if (UNTAG_Bool(REGB3)) {
1804 } else {
1805 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1806 if (UNTAG_Bool(REGB4)) {
1807 REGB4 = TAG_Bool(0);
1808 REGB3 = REGB4;
1809 } else {
1810 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1811 REGB3 = REGB4;
1812 }
1813 }
1814 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1815 if (UNTAG_Bool(REGB3)) {
1816 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1817 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1818 if (UNTAG_Bool(REGB3)) {
1819 REGB3 = TAG_Bool(1);
1820 } else {
1821 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1822 if (UNTAG_Bool(REGB4)) {
1823 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1824 }
1825 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1826 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1827 REGB3 = REGB4;
1828 }
1829 } else {
1830 REGB4 = TAG_Bool(0);
1831 REGB3 = REGB4;
1832 }
1833 if (UNTAG_Bool(REGB3)) {
1834 /* syntax/typing.nit:258 */
1835 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1836 if (UNTAG_Bool(REGB3)) {
1837 } else {
1838 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1839 REGB3 = REGB4;
1840 }
1841 if (UNTAG_Bool(REGB3)) {
1842 REGB3 = TAG_Int(1);
1843 /* ../lib/standard/kernel.nit:245 */
1844 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1845 /* syntax/typing.nit:258 */
1846 REGB2 = REGB3;
1847 }
1848 /* syntax/typing.nit:259 */
1849 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1850 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1851 if (UNTAG_Bool(REGB3)) {
1852 } else {
1853 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1854 }
1855 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1856 /* syntax/typing.nit:260 */
1857 REGB3 = TAG_Int(1);
1858 /* ../lib/standard/kernel.nit:245 */
1859 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1860 /* syntax/typing.nit:260 */
1861 REGB0 = REGB3;
1862 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1863 if (UNTAG_Bool(REGB3)) {
1864 } else {
1865 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1866 }
1867 /* ../lib/standard/kernel.nit:242 */
1868 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1869 /* syntax/typing.nit:261 */
1870 if (UNTAG_Bool(REGB3)) {
1871 /* syntax/typing.nit:262 */
1872 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1873 /* ../lib/standard/collection/array.nit:279 */
1874 REGB3 = REGB0;
1875 /* ../lib/standard/collection/array.nit:281 */
1876 REGB4 = TAG_Int(0);
1877 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1878 if (UNTAG_Bool(REGB5)) {
1879 } else {
1880 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1881 }
1882 /* ../lib/standard/kernel.nit:243 */
1883 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1884 /* ../lib/standard/collection/array.nit:281 */
1885 if (UNTAG_Bool(REGB4)) {
1886 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1887 if (UNTAG_Bool(REGB4)) {
1888 } else {
1889 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
1890 }
1891 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1892 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1893 if (UNTAG_Bool(REGB5)) {
1894 } else {
1895 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1896 }
1897 /* ../lib/standard/kernel.nit:242 */
1898 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1899 } else {
1900 /* ../lib/standard/collection/array.nit:281 */
1901 REGB5 = TAG_Bool(0);
1902 REGB4 = REGB5;
1903 }
1904 if (UNTAG_Bool(REGB4)) {
1905 } else {
1906 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
1907 }
1908 /* ../lib/standard/collection/array.nit:282 */
1909 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1910 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1911 if (UNTAG_Bool(REGB4)) {
1912 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
1913 }
1914 /* ../lib/standard/collection/array.nit:725 */
1915 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1916 /* ../lib/standard/collection/array.nit:282 */
1917 goto label3;
1918 label3: while(0);
1919 /* syntax/typing.nit:262 */
1920 fra.me.REG[4] = fra.me.REG[5];
1921 /* syntax/typing.nit:263 */
1922 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1923 if (UNTAG_Bool(REGB3)) {
1924 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1925 }
1926 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1927 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1928 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1929 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1930 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1931 fra.me.REG[1] = fra.me.REG[7];
1932 } else {
1933 /* syntax/typing.nit:265 */
1934 fra.me.REG[4] = NIT_NULL;
1935 /* syntax/typing.nit:266 */
1936 fra.me.REG[1] = NIT_NULL;
1937 }
1938 } else {
1939 /* syntax/typing.nit:269 */
1940 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1941 fra.me.REG[7] = CALL_syntax___typing___TypingVisitor___get_default_constructor_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6], fra.me.REG[7]);
1942 /* syntax/typing.nit:270 */
1943 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1944 if (UNTAG_Bool(REGB3)) {
1945 } else {
1946 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1947 if (UNTAG_Bool(REGB4)) {
1948 REGB4 = TAG_Bool(0);
1949 REGB3 = REGB4;
1950 } else {
1951 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1952 REGB3 = REGB4;
1953 }
1954 }
1955 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1956 if (UNTAG_Bool(REGB3)) {
1957 /* syntax/typing.nit:271 */
1958 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1960 }
1961 /* syntax/typing.nit:273 */
1962 REGB3 = TAG_Int(1);
1963 /* ../lib/standard/kernel.nit:245 */
1964 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1965 /* syntax/typing.nit:273 */
1966 REGB2 = REGB3;
1967 }
1968 }
1969 } else {
1970 /* syntax/typing.nit:253 */
1971 goto label4;
1972 }
1973 }
1974 label4: while(0);
1975 }
1976 stack_frame_head = fra.me.prev;
1977 return;
1978 }
1979 static const char LOCATE_syntax___typing___AExternInitPropdef___accept_typing[] = "typing::AExternInitPropdef::(typing::ANode::accept_typing)";
1980 void syntax___typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
1981 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1982 val_t REGB0;
1983 val_t tmp;
1984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1985 fra.me.file = LOCATE_syntax___typing;
1986 fra.me.line = 281;
1987 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___accept_typing;
1988 fra.me.has_broke = 0;
1989 fra.me.REG_size = 3;
1990 fra.me.nitni_local_ref_head = NULL;
1991 fra.me.REG[0] = NIT_NULL;
1992 fra.me.REG[1] = NIT_NULL;
1993 fra.me.REG[2] = NIT_NULL;
1994 fra.me.REG[0] = p0;
1995 fra.me.REG[1] = p1;
1996 /* syntax/typing.nit:281 */
1997 fra.me.REG[2] = fra.me.REG[1];
1998 /* syntax/typing.nit:283 */
1999 REGB0 = TAG_Bool(0);
2000 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2001 /* syntax/typing.nit:284 */
2002 CALL_SUPER_syntax___typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2003 stack_frame_head = fra.me.prev;
2004 return;
2005 }
2006 static const char LOCATE_syntax___typing___AExternInitPropdef___after_typing[] = "typing::AExternInitPropdef::(typing::ANode::after_typing)";
2007 void syntax___typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
2008 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2009 val_t tmp;
2010 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2011 fra.me.file = LOCATE_syntax___typing;
2012 fra.me.line = 286;
2013 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___after_typing;
2014 fra.me.has_broke = 0;
2015 fra.me.REG_size = 2;
2016 fra.me.nitni_local_ref_head = NULL;
2017 fra.me.REG[0] = NIT_NULL;
2018 fra.me.REG[1] = NIT_NULL;
2019 fra.me.REG[0] = p0;
2020 fra.me.REG[1] = p1;
2021 /* syntax/typing.nit:288 */
2022 CALL_SUPER_syntax___typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2023 stack_frame_head = fra.me.prev;
2024 return;
2025 }
2026 static const char LOCATE_syntax___typing___ASignature___after_typing[] = "typing::ASignature::(typing::ANode::after_typing)";
2027 void syntax___typing___ASignature___after_typing(val_t p0, val_t p1){
2028 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2029 val_t REGB0;
2030 val_t REGB1;
2031 val_t tmp;
2032 static val_t once_value_1; /* Once value */
2033 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2034 fra.me.file = LOCATE_syntax___typing;
2035 fra.me.line = 293;
2036 fra.me.meth = LOCATE_syntax___typing___ASignature___after_typing;
2037 fra.me.has_broke = 0;
2038 fra.me.REG_size = 3;
2039 fra.me.nitni_local_ref_head = NULL;
2040 fra.me.REG[0] = NIT_NULL;
2041 fra.me.REG[1] = NIT_NULL;
2042 fra.me.REG[2] = NIT_NULL;
2043 fra.me.REG[0] = p0;
2044 fra.me.REG[1] = p1;
2045 /* syntax/typing.nit:295 */
2046 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_opar(fra.me.REG[0])(fra.me.REG[0]);
2047 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2048 if (UNTAG_Bool(REGB0)) {
2049 } else {
2050 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2051 if (UNTAG_Bool(REGB1)) {
2052 REGB1 = TAG_Bool(0);
2053 REGB0 = REGB1;
2054 } else {
2055 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2056 REGB0 = REGB1;
2057 }
2058 }
2059 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2060 if (UNTAG_Bool(REGB0)) {
2061 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
2062 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2063 } else {
2064 REGB1 = TAG_Bool(0);
2065 REGB0 = REGB1;
2066 }
2067 if (UNTAG_Bool(REGB0)) {
2068 /* syntax/typing.nit:296 */
2069 if (!once_value_1) {
2070 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2071 REGB0 = TAG_Int(33);
2072 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
2073 once_value_1 = fra.me.REG[2];
2074 register_static_object(&once_value_1);
2075 } else fra.me.REG[2] = once_value_1;
2076 fra.me.REG[2] = fra.me.REG[2];
2077 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2078 }
2079 stack_frame_head = fra.me.prev;
2080 return;
2081 }
2082 static const char LOCATE_syntax___typing___AParam___after_typing[] = "typing::AParam::(typing::ANode::after_typing)";
2083 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
2084 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2085 val_t tmp;
2086 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2087 fra.me.file = LOCATE_syntax___typing;
2088 fra.me.line = 302;
2089 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
2090 fra.me.has_broke = 0;
2091 fra.me.REG_size = 2;
2092 fra.me.nitni_local_ref_head = NULL;
2093 fra.me.REG[0] = NIT_NULL;
2094 fra.me.REG[1] = NIT_NULL;
2095 fra.me.REG[0] = p0;
2096 fra.me.REG[1] = p1;
2097 /* syntax/typing.nit:304 */
2098 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2099 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2100 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2101 stack_frame_head = fra.me.prev;
2102 return;
2103 }
2104 static const char LOCATE_syntax___typing___AClosureDecl___escapable[] = "typing::AClosureDecl::escapable";
2105 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
2106 struct {struct stack_frame_t me;} fra;
2107 val_t tmp;
2108 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2109 fra.me.file = LOCATE_syntax___typing;
2110 fra.me.line = 309;
2111 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
2112 fra.me.has_broke = 0;
2113 fra.me.REG_size = 1;
2114 fra.me.nitni_local_ref_head = NULL;
2115 fra.me.REG[0] = NIT_NULL;
2116 fra.me.REG[0] = p0;
2117 /* syntax/typing.nit:309 */
2118 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
2119 stack_frame_head = fra.me.prev;
2120 return fra.me.REG[0];
2121 }
2122 static const char LOCATE_syntax___typing___AClosureDecl___accept_typing[] = "typing::AClosureDecl::(typing::ANode::accept_typing)";
2123 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
2124 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
2125 val_t REGB0;
2126 val_t REGB1;
2127 val_t REGB2;
2128 val_t tmp;
2129 static val_t once_value_1; /* Once value */
2130 static val_t once_value_2; /* Once value */
2131 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2132 fra.me.file = LOCATE_syntax___typing;
2133 fra.me.line = 312;
2134 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
2135 fra.me.has_broke = 0;
2136 fra.me.REG_size = 10;
2137 fra.me.nitni_local_ref_head = NULL;
2138 fra.me.REG[0] = NIT_NULL;
2139 fra.me.REG[1] = NIT_NULL;
2140 fra.me.REG[2] = NIT_NULL;
2141 fra.me.REG[3] = NIT_NULL;
2142 fra.me.REG[4] = NIT_NULL;
2143 fra.me.REG[5] = NIT_NULL;
2144 fra.me.REG[6] = NIT_NULL;
2145 fra.me.REG[7] = NIT_NULL;
2146 fra.me.REG[8] = NIT_NULL;
2147 fra.me.REG[9] = NIT_NULL;
2148 fra.me.REG[0] = p0;
2149 fra.me.REG[1] = p1;
2150 /* syntax/typing.nit:312 */
2151 fra.me.REG[2] = fra.me.REG[0];
2152 fra.me.REG[3] = fra.me.REG[1];
2153 /* syntax/typing.nit:315 */
2154 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2155 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2156 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2157 /* syntax/typing.nit:317 */
2158 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2159 /* syntax/typing.nit:318 */
2160 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2161 /* syntax/typing.nit:319 */
2162 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2163 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2164 /* syntax/typing.nit:321 */
2165 fra.me.REG[6] = NIT_NULL;
2166 /* syntax/typing.nit:322 */
2167 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2168 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2169 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2170 if (UNTAG_Bool(REGB0)) {
2171 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 322);
2172 }
2173 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2174 /* syntax/typing.nit:323 */
2175 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2176 if (UNTAG_Bool(REGB0)) {
2177 } else {
2178 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2179 if (UNTAG_Bool(REGB1)) {
2180 REGB1 = TAG_Bool(0);
2181 REGB0 = REGB1;
2182 } else {
2183 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2184 REGB0 = REGB1;
2185 }
2186 }
2187 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2188 if (UNTAG_Bool(REGB0)) {
2189 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2190 fra.me.REG[6] = fra.me.REG[8];
2191 }
2192 /* syntax/typing.nit:324 */
2193 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2194 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2195 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2196 /* syntax/typing.nit:325 */
2197 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2198 /* syntax/typing.nit:326 */
2199 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2200 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2201 /* syntax/typing.nit:328 */
2202 REGB0 = TAG_Bool(1);
2203 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2204 /* syntax/typing.nit:330 */
2205 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2206 /* syntax/typing.nit:332 */
2207 REGB0 = TAG_Bool(0);
2208 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2209 /* syntax/typing.nit:334 */
2210 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2211 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2212 if (UNTAG_Bool(REGB0)) {
2213 } else {
2214 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2215 if (UNTAG_Bool(REGB1)) {
2216 REGB1 = TAG_Bool(0);
2217 REGB0 = REGB1;
2218 } else {
2219 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2220 REGB0 = REGB1;
2221 }
2222 }
2223 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2224 if (UNTAG_Bool(REGB0)) {
2225 /* syntax/typing.nit:335 */
2226 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2227 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2228 REGB1 = TAG_Bool(0);
2229 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2230 if (UNTAG_Bool(REGB2)) {
2231 } else {
2232 /* ../lib/standard/kernel.nit:199 */
2233 REGB1 = TAG_Bool((REGB0)==(REGB1));
2234 /* syntax/typing.nit:335 */
2235 REGB2 = REGB1;
2236 }
2237 if (UNTAG_Bool(REGB2)) {
2238 /* syntax/typing.nit:336 */
2239 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2240 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2241 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2242 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2243 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2244 if (UNTAG_Bool(REGB2)) {
2245 } else {
2246 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2247 if (UNTAG_Bool(REGB1)) {
2248 REGB1 = TAG_Bool(0);
2249 REGB2 = REGB1;
2250 } else {
2251 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2252 REGB2 = REGB1;
2253 }
2254 }
2255 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2256 if (UNTAG_Bool(REGB2)) {
2257 /* syntax/typing.nit:337 */
2258 if (!once_value_1) {
2259 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2260 REGB2 = TAG_Int(77);
2261 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB2);
2262 once_value_1 = fra.me.REG[1];
2263 register_static_object(&once_value_1);
2264 } else fra.me.REG[1] = once_value_1;
2265 fra.me.REG[1] = fra.me.REG[1];
2266 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2267 } else {
2268 /* syntax/typing.nit:338 */
2269 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2270 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2271 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2272 if (UNTAG_Bool(REGB2)) {
2273 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2274 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2275 if (UNTAG_Bool(REGB2)) {
2276 } else {
2277 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2278 if (UNTAG_Bool(REGB1)) {
2279 REGB1 = TAG_Bool(0);
2280 REGB2 = REGB1;
2281 } else {
2282 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2283 REGB2 = REGB1;
2284 }
2285 }
2286 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2287 } else {
2288 REGB1 = TAG_Bool(0);
2289 REGB2 = REGB1;
2290 }
2291 if (UNTAG_Bool(REGB2)) {
2292 /* syntax/typing.nit:339 */
2293 if (!once_value_2) {
2294 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2295 REGB2 = TAG_Int(80);
2296 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB2);
2297 once_value_2 = fra.me.REG[8];
2298 register_static_object(&once_value_2);
2299 } else fra.me.REG[8] = once_value_2;
2300 fra.me.REG[8] = fra.me.REG[8];
2301 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2302 }
2303 }
2304 }
2305 }
2306 /* syntax/typing.nit:343 */
2307 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2308 if (UNTAG_Bool(REGB2)) {
2309 } else {
2310 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2311 if (UNTAG_Bool(REGB1)) {
2312 REGB1 = TAG_Bool(0);
2313 REGB2 = REGB1;
2314 } else {
2315 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2316 REGB2 = REGB1;
2317 }
2318 }
2319 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2320 if (UNTAG_Bool(REGB2)) {
2321 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2322 if (UNTAG_Bool(REGB2)) {
2323 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 343);
2324 }
2325 /* ../lib/standard/collection/array.nit:270 */
2326 REGB2 = TAG_Int(0);
2327 /* ../lib/standard/collection/array.nit:271 */
2328 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2329 if (UNTAG_Bool(REGB1)) {
2330 } else {
2331 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
2332 }
2333 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2334 /* ../lib/standard/collection/array.nit:272 */
2335 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2336 /* ../lib/standard/collection/array.nit:273 */
2337 while(1) {
2338 /* ../lib/standard/collection/array.nit:24 */
2339 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2340 if (UNTAG_Bool(REGB1)) {
2341 } else {
2342 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2343 }
2344 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2345 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2346 if (UNTAG_Bool(REGB0)) {
2347 } else {
2348 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2349 }
2350 /* ../lib/standard/kernel.nit:242 */
2351 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2352 /* ../lib/standard/collection/array.nit:273 */
2353 if (UNTAG_Bool(REGB1)) {
2354 /* ../lib/standard/collection/array.nit:274 */
2355 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2356 if (UNTAG_Bool(REGB1)) {
2357 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
2358 }
2359 /* ../lib/standard/collection/array.nit:725 */
2360 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2361 /* syntax/typing.nit:344 */
2362 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2363 /* ../lib/standard/collection/array.nit:275 */
2364 REGB1 = TAG_Int(1);
2365 /* ../lib/standard/kernel.nit:245 */
2366 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2367 /* ../lib/standard/collection/array.nit:275 */
2368 REGB2 = REGB1;
2369 } else {
2370 /* ../lib/standard/collection/array.nit:273 */
2371 goto label3;
2372 }
2373 }
2374 label3: while(0);
2375 }
2376 /* syntax/typing.nit:347 */
2377 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2378 /* syntax/typing.nit:348 */
2379 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2380 /* syntax/typing.nit:349 */
2381 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2382 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2383 stack_frame_head = fra.me.prev;
2384 return;
2385 }
2386 static const char LOCATE_syntax___typing___AType___stype[] = "typing::AType::(syntax_base::AType::stype)";
2387 val_t syntax___typing___AType___stype(val_t p0){
2388 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2389 val_t REGB0;
2390 val_t tmp;
2391 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2392 fra.me.file = LOCATE_syntax___typing;
2393 fra.me.line = 354;
2394 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2395 fra.me.has_broke = 0;
2396 fra.me.REG_size = 2;
2397 fra.me.nitni_local_ref_head = NULL;
2398 fra.me.REG[0] = NIT_NULL;
2399 fra.me.REG[1] = NIT_NULL;
2400 fra.me.REG[0] = p0;
2401 /* syntax/typing.nit:354 */
2402 fra.me.REG[1] = fra.me.REG[0];
2403 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2404 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2405 if (UNTAG_Bool(REGB0)) {
2406 } else {
2407 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 354);
2408 }
2409 goto label1;
2410 label1: while(0);
2411 stack_frame_head = fra.me.prev;
2412 return fra.me.REG[1];
2413 }
2414 static const char LOCATE_syntax___typing___AType___is_typed[] = "typing::AType::(syntax_base::AType::is_typed)";
2415 val_t syntax___typing___AType___is_typed(val_t p0){
2416 struct {struct stack_frame_t me;} fra;
2417 val_t REGB0;
2418 val_t REGB1;
2419 val_t tmp;
2420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2421 fra.me.file = LOCATE_syntax___typing;
2422 fra.me.line = 355;
2423 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2424 fra.me.has_broke = 0;
2425 fra.me.REG_size = 1;
2426 fra.me.nitni_local_ref_head = NULL;
2427 fra.me.REG[0] = NIT_NULL;
2428 fra.me.REG[0] = p0;
2429 /* syntax/typing.nit:355 */
2430 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2431 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2432 if (UNTAG_Bool(REGB0)) {
2433 } else {
2434 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2435 if (UNTAG_Bool(REGB1)) {
2436 REGB1 = TAG_Bool(0);
2437 REGB0 = REGB1;
2438 } else {
2439 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2440 REGB0 = REGB1;
2441 }
2442 }
2443 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2444 goto label1;
2445 label1: while(0);
2446 stack_frame_head = fra.me.prev;
2447 return REGB0;
2448 }
2449 static const char LOCATE_syntax___typing___AType___after_typing[] = "typing::AType::(typing::ANode::after_typing)";
2450 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2451 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2452 val_t tmp;
2453 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2454 fra.me.file = LOCATE_syntax___typing;
2455 fra.me.line = 358;
2456 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2457 fra.me.has_broke = 0;
2458 fra.me.REG_size = 2;
2459 fra.me.nitni_local_ref_head = NULL;
2460 fra.me.REG[0] = NIT_NULL;
2461 fra.me.REG[1] = NIT_NULL;
2462 fra.me.REG[0] = p0;
2463 fra.me.REG[1] = p1;
2464 /* syntax/typing.nit:360 */
2465 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2466 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2467 stack_frame_head = fra.me.prev;
2468 return;
2469 }
2470 static const char LOCATE_syntax___typing___AExpr___is_typed[] = "typing::AExpr::(syntax_base::AExpr::is_typed)";
2471 val_t syntax___typing___AExpr___is_typed(val_t p0){
2472 struct {struct stack_frame_t me;} fra;
2473 val_t REGB0;
2474 val_t tmp;
2475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2476 fra.me.file = LOCATE_syntax___typing;
2477 fra.me.line = 365;
2478 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2479 fra.me.has_broke = 0;
2480 fra.me.REG_size = 1;
2481 fra.me.nitni_local_ref_head = NULL;
2482 fra.me.REG[0] = NIT_NULL;
2483 fra.me.REG[0] = p0;
2484 /* syntax/typing.nit:365 */
2485 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2486 if (UNTAG_Bool(REGB0)) {
2487 } else {
2488 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 365);
2489 }
2490 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2491 stack_frame_head = fra.me.prev;
2492 return REGB0;
2493 }
2494 static const char LOCATE_syntax___typing___AExpr___is_statement[] = "typing::AExpr::(syntax_base::AExpr::is_statement)";
2495 val_t syntax___typing___AExpr___is_statement(val_t p0){
2496 struct {struct stack_frame_t me;} fra;
2497 val_t REGB0;
2498 val_t REGB1;
2499 val_t tmp;
2500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2501 fra.me.file = LOCATE_syntax___typing;
2502 fra.me.line = 366;
2503 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
2504 fra.me.has_broke = 0;
2505 fra.me.REG_size = 1;
2506 fra.me.nitni_local_ref_head = NULL;
2507 fra.me.REG[0] = NIT_NULL;
2508 fra.me.REG[0] = p0;
2509 /* syntax/typing.nit:366 */
2510 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2511 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2512 if (UNTAG_Bool(REGB0)) {
2513 } else {
2514 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2515 if (UNTAG_Bool(REGB1)) {
2516 REGB1 = TAG_Bool(0);
2517 REGB0 = REGB1;
2518 } else {
2519 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2520 REGB0 = REGB1;
2521 }
2522 }
2523 goto label1;
2524 label1: while(0);
2525 stack_frame_head = fra.me.prev;
2526 return REGB0;
2527 }
2528 static const char LOCATE_syntax___typing___AExpr___stype[] = "typing::AExpr::(syntax_base::AExpr::stype)";
2529 val_t syntax___typing___AExpr___stype(val_t p0){
2530 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2531 val_t REGB0;
2532 val_t tmp;
2533 static val_t once_value_1; /* Once value */
2534 static val_t once_value_2; /* Once value */
2535 static val_t once_value_3; /* Once value */
2536 static val_t once_value_4; /* Once value */
2537 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2538 fra.me.file = LOCATE_syntax___typing;
2539 fra.me.line = 367;
2540 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2541 fra.me.has_broke = 0;
2542 fra.me.REG_size = 4;
2543 fra.me.nitni_local_ref_head = NULL;
2544 fra.me.REG[0] = NIT_NULL;
2545 fra.me.REG[1] = NIT_NULL;
2546 fra.me.REG[2] = NIT_NULL;
2547 fra.me.REG[3] = NIT_NULL;
2548 fra.me.REG[0] = p0;
2549 /* syntax/typing.nit:367 */
2550 fra.me.REG[1] = fra.me.REG[0];
2551 /* syntax/typing.nit:369 */
2552 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2553 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2554 if (UNTAG_Bool(REGB0)) {
2555 /* syntax/typing.nit:370 */
2556 REGB0 = TAG_Int(3);
2557 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2558 if (!once_value_1) {
2559 fra.me.REG[3] = BOX_NativeString("");
2560 REGB0 = TAG_Int(0);
2561 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
2562 once_value_1 = fra.me.REG[3];
2563 register_static_object(&once_value_1);
2564 } else fra.me.REG[3] = once_value_1;
2565 fra.me.REG[3] = fra.me.REG[3];
2566 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2567 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2568 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2569 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2570 if (!once_value_2) {
2571 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2572 REGB0 = TAG_Int(14);
2573 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
2574 once_value_2 = fra.me.REG[3];
2575 register_static_object(&once_value_2);
2576 } else fra.me.REG[3] = once_value_2;
2577 fra.me.REG[3] = fra.me.REG[3];
2578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2579 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2580 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2581 /* syntax/typing.nit:371 */
2582 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 371);
2583 }
2584 /* syntax/typing.nit:373 */
2585 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2586 if (UNTAG_Bool(REGB0)) {
2587 /* syntax/typing.nit:374 */
2588 REGB0 = TAG_Int(3);
2589 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2590 if (!once_value_3) {
2591 fra.me.REG[3] = BOX_NativeString("");
2592 REGB0 = TAG_Int(0);
2593 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
2594 once_value_3 = fra.me.REG[3];
2595 register_static_object(&once_value_3);
2596 } else fra.me.REG[3] = once_value_3;
2597 fra.me.REG[3] = fra.me.REG[3];
2598 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2599 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2600 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2601 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2602 if (!once_value_4) {
2603 fra.me.REG[3] = BOX_NativeString(": is_statement");
2604 REGB0 = TAG_Int(14);
2605 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
2606 once_value_4 = fra.me.REG[3];
2607 register_static_object(&once_value_4);
2608 } else fra.me.REG[3] = once_value_4;
2609 fra.me.REG[3] = fra.me.REG[3];
2610 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2611 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2612 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2613 /* syntax/typing.nit:375 */
2614 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 375);
2615 }
2616 /* syntax/typing.nit:377 */
2617 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2618 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2619 if (UNTAG_Bool(REGB0)) {
2620 } else {
2621 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 377);
2622 }
2623 goto label5;
2624 label5: while(0);
2625 stack_frame_head = fra.me.prev;
2626 return fra.me.REG[1];
2627 }
2628 static const char LOCATE_syntax___typing___AExpr___after_typing[] = "typing::AExpr::(typing::ANode::after_typing)";
2629 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2630 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2631 val_t REGB0;
2632 val_t tmp;
2633 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2634 fra.me.file = LOCATE_syntax___typing;
2635 fra.me.line = 381;
2636 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2637 fra.me.has_broke = 0;
2638 fra.me.REG_size = 2;
2639 fra.me.nitni_local_ref_head = NULL;
2640 fra.me.REG[0] = NIT_NULL;
2641 fra.me.REG[1] = NIT_NULL;
2642 fra.me.REG[0] = p0;
2643 fra.me.REG[1] = p1;
2644 /* syntax/typing.nit:384 */
2645 REGB0 = TAG_Bool(1);
2646 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2647 stack_frame_head = fra.me.prev;
2648 return;
2649 }
2650 static const char LOCATE_syntax___typing___AExpr___is_implicit_self[] = "typing::AExpr::is_implicit_self";
2651 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2652 struct {struct stack_frame_t me;} fra;
2653 val_t REGB0;
2654 val_t tmp;
2655 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2656 fra.me.file = LOCATE_syntax___typing;
2657 fra.me.line = 387;
2658 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2659 fra.me.has_broke = 0;
2660 fra.me.REG_size = 1;
2661 fra.me.nitni_local_ref_head = NULL;
2662 fra.me.REG[0] = NIT_NULL;
2663 fra.me.REG[0] = p0;
2664 /* syntax/typing.nit:388 */
2665 REGB0 = TAG_Bool(0);
2666 goto label1;
2667 label1: while(0);
2668 stack_frame_head = fra.me.prev;
2669 return REGB0;
2670 }
2671 static const char LOCATE_syntax___typing___AExpr___is_self[] = "typing::AExpr::is_self";
2672 val_t syntax___typing___AExpr___is_self(val_t p0){
2673 struct {struct stack_frame_t me;} fra;
2674 val_t REGB0;
2675 val_t tmp;
2676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2677 fra.me.file = LOCATE_syntax___typing;
2678 fra.me.line = 390;
2679 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2680 fra.me.has_broke = 0;
2681 fra.me.REG_size = 1;
2682 fra.me.nitni_local_ref_head = NULL;
2683 fra.me.REG[0] = NIT_NULL;
2684 fra.me.REG[0] = p0;
2685 /* syntax/typing.nit:391 */
2686 REGB0 = TAG_Bool(0);
2687 goto label1;
2688 label1: while(0);
2689 stack_frame_head = fra.me.prev;
2690 return REGB0;
2691 }
2692 static const char LOCATE_syntax___typing___AExpr___its_variable[] = "typing::AExpr::its_variable";
2693 val_t syntax___typing___AExpr___its_variable(val_t p0){
2694 struct {struct stack_frame_t me;} fra;
2695 val_t tmp;
2696 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2697 fra.me.file = LOCATE_syntax___typing;
2698 fra.me.line = 393;
2699 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2700 fra.me.has_broke = 0;
2701 fra.me.REG_size = 1;
2702 fra.me.nitni_local_ref_head = NULL;
2703 fra.me.REG[0] = NIT_NULL;
2704 fra.me.REG[0] = p0;
2705 /* syntax/typing.nit:394 */
2706 fra.me.REG[0] = NIT_NULL;
2707 goto label1;
2708 label1: while(0);
2709 stack_frame_head = fra.me.prev;
2710 return fra.me.REG[0];
2711 }
2712 static const char LOCATE_syntax___typing___AExpr___if_true_flow_ctx[] = "typing::AExpr::if_true_flow_ctx";
2713 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2714 struct {struct stack_frame_t me;} fra;
2715 val_t tmp;
2716 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2717 fra.me.file = LOCATE_syntax___typing;
2718 fra.me.line = 396;
2719 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2720 fra.me.has_broke = 0;
2721 fra.me.REG_size = 1;
2722 fra.me.nitni_local_ref_head = NULL;
2723 fra.me.REG[0] = NIT_NULL;
2724 fra.me.REG[0] = p0;
2725 /* syntax/typing.nit:396 */
2726 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2727 stack_frame_head = fra.me.prev;
2728 return fra.me.REG[0];
2729 }
2730 static const char LOCATE_syntax___typing___AExpr___if_false_flow_ctx[] = "typing::AExpr::if_false_flow_ctx";
2731 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2732 struct {struct stack_frame_t me;} fra;
2733 val_t tmp;
2734 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2735 fra.me.file = LOCATE_syntax___typing;
2736 fra.me.line = 399;
2737 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2738 fra.me.has_broke = 0;
2739 fra.me.REG_size = 1;
2740 fra.me.nitni_local_ref_head = NULL;
2741 fra.me.REG[0] = NIT_NULL;
2742 fra.me.REG[0] = p0;
2743 /* syntax/typing.nit:399 */
2744 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2745 stack_frame_head = fra.me.prev;
2746 return fra.me.REG[0];
2747 }
2748 static const char LOCATE_syntax___typing___AExpr___warn_parentheses[] = "typing::AExpr::warn_parentheses";
2749 void syntax___typing___AExpr___warn_parentheses(val_t p0, val_t p1){
2750 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2751 val_t tmp;
2752 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2753 fra.me.file = LOCATE_syntax___typing;
2754 fra.me.line = 402;
2755 fra.me.meth = LOCATE_syntax___typing___AExpr___warn_parentheses;
2756 fra.me.has_broke = 0;
2757 fra.me.REG_size = 2;
2758 fra.me.nitni_local_ref_head = NULL;
2759 fra.me.REG[0] = NIT_NULL;
2760 fra.me.REG[1] = NIT_NULL;
2761 fra.me.REG[0] = p0;
2762 fra.me.REG[1] = p1;
2763 stack_frame_head = fra.me.prev;
2764 return;
2765 }
2766 static const char LOCATE_syntax___typing___AParExpr___warn_parentheses[] = "typing::AParExpr::(typing::AExpr::warn_parentheses)";
2767 void syntax___typing___AParExpr___warn_parentheses(val_t p0, val_t p1){
2768 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2769 val_t REGB0;
2770 val_t tmp;
2771 static val_t once_value_1; /* Once value */
2772 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2773 fra.me.file = LOCATE_syntax___typing;
2774 fra.me.line = 409;
2775 fra.me.meth = LOCATE_syntax___typing___AParExpr___warn_parentheses;
2776 fra.me.has_broke = 0;
2777 fra.me.REG_size = 3;
2778 fra.me.nitni_local_ref_head = NULL;
2779 fra.me.REG[0] = NIT_NULL;
2780 fra.me.REG[1] = NIT_NULL;
2781 fra.me.REG[2] = NIT_NULL;
2782 fra.me.REG[0] = p0;
2783 fra.me.REG[1] = p1;
2784 /* syntax/typing.nit:411 */
2785 if (!once_value_1) {
2786 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2787 REGB0 = TAG_Int(33);
2788 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
2789 once_value_1 = fra.me.REG[2];
2790 register_static_object(&once_value_1);
2791 } else fra.me.REG[2] = once_value_1;
2792 fra.me.REG[2] = fra.me.REG[2];
2793 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2794 stack_frame_head = fra.me.prev;
2795 return;
2796 }
2797 static const char LOCATE_syntax___typing___AParExprs___after_typing[] = "typing::AParExprs::(typing::ANode::after_typing)";
2798 void syntax___typing___AParExprs___after_typing(val_t p0, val_t p1){
2799 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2800 val_t REGB0;
2801 val_t tmp;
2802 static val_t once_value_1; /* Once value */
2803 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2804 fra.me.file = LOCATE_syntax___typing;
2805 fra.me.line = 416;
2806 fra.me.meth = LOCATE_syntax___typing___AParExprs___after_typing;
2807 fra.me.has_broke = 0;
2808 fra.me.REG_size = 3;
2809 fra.me.nitni_local_ref_head = NULL;
2810 fra.me.REG[0] = NIT_NULL;
2811 fra.me.REG[1] = NIT_NULL;
2812 fra.me.REG[2] = NIT_NULL;
2813 fra.me.REG[0] = p0;
2814 fra.me.REG[1] = p1;
2815 /* syntax/typing.nit:418 */
2816 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
2817 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2818 if (UNTAG_Bool(REGB0)) {
2819 /* syntax/typing.nit:419 */
2820 if (!once_value_1) {
2821 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2822 REGB0 = TAG_Int(33);
2823 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
2824 once_value_1 = fra.me.REG[2];
2825 register_static_object(&once_value_1);
2826 } else fra.me.REG[2] = once_value_1;
2827 fra.me.REG[2] = fra.me.REG[2];
2828 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2829 }
2830 stack_frame_head = fra.me.prev;
2831 return;
2832 }
2833 static const char LOCATE_syntax___typing___AVardeclExpr___variable[] = "typing::AVardeclExpr::(syntax_base::AVardeclExpr::variable)";
2834 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2835 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2836 val_t REGB0;
2837 val_t tmp;
2838 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2839 fra.me.file = LOCATE_syntax___typing;
2840 fra.me.line = 426;
2841 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2842 fra.me.has_broke = 0;
2843 fra.me.REG_size = 2;
2844 fra.me.nitni_local_ref_head = NULL;
2845 fra.me.REG[0] = NIT_NULL;
2846 fra.me.REG[1] = NIT_NULL;
2847 fra.me.REG[0] = p0;
2848 /* syntax/typing.nit:426 */
2849 fra.me.REG[1] = fra.me.REG[0];
2850 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2851 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2852 if (UNTAG_Bool(REGB0)) {
2853 } else {
2854 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 426);
2855 }
2856 goto label1;
2857 label1: while(0);
2858 stack_frame_head = fra.me.prev;
2859 return fra.me.REG[1];
2860 }
2861 static const char LOCATE_syntax___typing___AVardeclExpr___after_typing[] = "typing::AVardeclExpr::(typing::ANode::after_typing)";
2862 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2863 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2864 val_t REGB0;
2865 val_t REGB1;
2866 val_t tmp;
2867 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2868 fra.me.file = LOCATE_syntax___typing;
2869 fra.me.line = 428;
2870 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2871 fra.me.has_broke = 0;
2872 fra.me.REG_size = 5;
2873 fra.me.nitni_local_ref_head = NULL;
2874 fra.me.REG[0] = NIT_NULL;
2875 fra.me.REG[1] = NIT_NULL;
2876 fra.me.REG[2] = NIT_NULL;
2877 fra.me.REG[3] = NIT_NULL;
2878 fra.me.REG[4] = NIT_NULL;
2879 fra.me.REG[0] = p0;
2880 fra.me.REG[1] = p1;
2881 /* syntax/typing.nit:430 */
2882 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2883 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2884 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2885 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2886 /* syntax/typing.nit:431 */
2887 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2888 /* syntax/typing.nit:432 */
2889 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2890 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2891 /* syntax/typing.nit:433 */
2892 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2893 /* syntax/typing.nit:434 */
2894 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2895 if (UNTAG_Bool(REGB0)) {
2896 } else {
2897 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2898 if (UNTAG_Bool(REGB1)) {
2899 REGB1 = TAG_Bool(0);
2900 REGB0 = REGB1;
2901 } else {
2902 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2903 REGB0 = REGB1;
2904 }
2905 }
2906 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2907 if (UNTAG_Bool(REGB0)) {
2908 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2909 }
2910 /* syntax/typing.nit:436 */
2911 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2912 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2913 if (UNTAG_Bool(REGB0)) {
2914 } else {
2915 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2916 if (UNTAG_Bool(REGB1)) {
2917 REGB1 = TAG_Bool(0);
2918 REGB0 = REGB1;
2919 } else {
2920 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2921 REGB0 = REGB1;
2922 }
2923 }
2924 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2925 if (UNTAG_Bool(REGB0)) {
2926 /* syntax/typing.nit:437 */
2927 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2928 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2929 if (UNTAG_Bool(REGB0)) {
2930 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 437);
2931 }
2932 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2933 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2934 if (UNTAG_Bool(REGB0)) {
2935 goto label1;
2936 }
2937 /* syntax/typing.nit:438 */
2938 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2939 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2940 if (UNTAG_Bool(REGB0)) {
2941 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 438);
2942 }
2943 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2944 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2945 /* syntax/typing.nit:439 */
2946 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2947 if (UNTAG_Bool(REGB0)) {
2948 } else {
2949 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2950 if (UNTAG_Bool(REGB1)) {
2951 REGB1 = TAG_Bool(0);
2952 REGB0 = REGB1;
2953 } else {
2954 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2955 REGB0 = REGB1;
2956 }
2957 }
2958 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2959 if (UNTAG_Bool(REGB0)) {
2960 /* syntax/typing.nit:440 */
2961 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2962 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2963 }
2964 } else {
2965 /* syntax/typing.nit:442 */
2966 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2967 if (UNTAG_Bool(REGB0)) {
2968 } else {
2969 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2970 if (UNTAG_Bool(REGB1)) {
2971 REGB1 = TAG_Bool(0);
2972 REGB0 = REGB1;
2973 } else {
2974 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2975 REGB0 = REGB1;
2976 }
2977 }
2978 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2979 if (UNTAG_Bool(REGB0)) {
2980 /* syntax/typing.nit:443 */
2981 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2982 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2983 if (UNTAG_Bool(REGB0)) {
2984 goto label1;
2985 }
2986 /* syntax/typing.nit:444 */
2987 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2988 if (UNTAG_Bool(REGB0)) {
2989 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 444);
2990 }
2991 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2992 /* syntax/typing.nit:445 */
2993 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
2994 if (UNTAG_Bool(REGB0)) {
2995 /* syntax/typing.nit:446 */
2996 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2997 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
2998 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2999 /* syntax/typing.nit:447 */
3000 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3001 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
3002 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3003 } else {
3004 /* syntax/typing.nit:449 */
3005 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3006 }
3007 } else {
3008 /* syntax/typing.nit:452 */
3009 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
3010 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
3011 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3012 }
3013 }
3014 /* syntax/typing.nit:454 */
3015 REGB0 = TAG_Bool(1);
3016 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3017 label1: while(0);
3018 stack_frame_head = fra.me.prev;
3019 return;
3020 }
3021 static const char LOCATE_syntax___typing___ABlockExpr___accept_typing[] = "typing::ABlockExpr::(typing::ANode::accept_typing)";
3022 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
3023 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3024 val_t REGB0;
3025 val_t tmp;
3026 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3027 fra.me.file = LOCATE_syntax___typing;
3028 fra.me.line = 459;
3029 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3030 fra.me.has_broke = 0;
3031 fra.me.REG_size = 3;
3032 fra.me.nitni_local_ref_head = NULL;
3033 fra.me.REG[0] = NIT_NULL;
3034 fra.me.REG[1] = NIT_NULL;
3035 fra.me.REG[2] = NIT_NULL;
3036 fra.me.REG[0] = p0;
3037 fra.me.REG[1] = p1;
3038 /* syntax/typing.nit:461 */
3039 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3040 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___typing___ABlockExpr___accept_typing_1));
3041 /* syntax/typing.nit:470 */
3042 REGB0 = TAG_Bool(1);
3043 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3044 stack_frame_head = fra.me.prev;
3045 return;
3046 }
3047 void OC_syntax___typing___ABlockExpr___accept_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
3048 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3049 val_t REGB0;
3050 fun_t CREG[1];
3051 val_t tmp;
3052 static val_t once_value_2; /* Once value */
3053 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3054 fra.me.file = LOCATE_syntax___typing;
3055 fra.me.line = 0;
3056 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3057 fra.me.has_broke = 0;
3058 fra.me.REG_size = 2;
3059 fra.me.nitni_local_ref_head = NULL;
3060 fra.me.REG[0] = NIT_NULL;
3061 fra.me.REG[1] = NIT_NULL;
3062 fra.me.closure_ctx = closctx_param;
3063 fra.me.closure_funs = CREG;
3064 fra.me.REG[0] = p0;
3065 CREG[0] = clos_fun0;
3066 /* syntax/typing.nit:462 */
3067 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3068 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
3069 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3070 if (UNTAG_Bool(REGB0)) {
3071 /* syntax/typing.nit:463 */
3072 CALL_parser___parser_nodes___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
3073 } else {
3074 /* syntax/typing.nit:464 */
3075 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3076 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
3077 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3078 if (UNTAG_Bool(REGB0)) {
3079 /* syntax/typing.nit:465 */
3080 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3081 REGB0 = TAG_Bool(1);
3082 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
3083 /* syntax/typing.nit:466 */
3084 if (!once_value_2) {
3085 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
3086 REGB0 = TAG_Int(29);
3087 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
3088 once_value_2 = fra.me.REG[1];
3089 register_static_object(&once_value_2);
3090 } else fra.me.REG[1] = once_value_2;
3091 fra.me.REG[1] = fra.me.REG[1];
3092 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
3093 }
3094 }
3095 stack_frame_head = fra.me.prev;
3096 return;
3097 }
3098 static const char LOCATE_syntax___typing___AReturnExpr___after_typing[] = "typing::AReturnExpr::(typing::ANode::after_typing)";
3099 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
3100 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3101 val_t REGB0;
3102 val_t REGB1;
3103 val_t tmp;
3104 static val_t once_value_1; /* Once value */
3105 static val_t once_value_3; /* Once value */
3106 static val_t once_value_4; /* Once value */
3107 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3108 fra.me.file = LOCATE_syntax___typing;
3109 fra.me.line = 475;
3110 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
3111 fra.me.has_broke = 0;
3112 fra.me.REG_size = 5;
3113 fra.me.nitni_local_ref_head = NULL;
3114 fra.me.REG[0] = NIT_NULL;
3115 fra.me.REG[1] = NIT_NULL;
3116 fra.me.REG[2] = NIT_NULL;
3117 fra.me.REG[3] = NIT_NULL;
3118 fra.me.REG[4] = NIT_NULL;
3119 fra.me.REG[0] = p0;
3120 fra.me.REG[1] = p1;
3121 /* syntax/typing.nit:477 */
3122 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3123 /* syntax/typing.nit:478 */
3124 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
3125 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
3126 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3127 if (UNTAG_Bool(REGB0)) {
3128 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 478);
3129 }
3130 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
3131 /* syntax/typing.nit:480 */
3132 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
3133 if (UNTAG_Bool(REGB0)) {
3134 /* syntax/typing.nit:481 */
3135 if (!once_value_1) {
3136 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
3137 REGB0 = TAG_Int(82);
3138 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
3139 once_value_1 = fra.me.REG[3];
3140 register_static_object(&once_value_1);
3141 } else fra.me.REG[3] = once_value_1;
3142 fra.me.REG[3] = fra.me.REG[3];
3143 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3144 /* syntax/typing.nit:482 */
3145 goto label2;
3146 }
3147 /* syntax/typing.nit:485 */
3148 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3149 /* syntax/typing.nit:486 */
3150 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3151 if (UNTAG_Bool(REGB0)) {
3152 } else {
3153 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3154 if (UNTAG_Bool(REGB1)) {
3155 REGB1 = TAG_Bool(0);
3156 REGB0 = REGB1;
3157 } else {
3158 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3159 REGB0 = REGB1;
3160 }
3161 }
3162 if (UNTAG_Bool(REGB0)) {
3163 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3164 if (UNTAG_Bool(REGB0)) {
3165 } else {
3166 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3167 if (UNTAG_Bool(REGB1)) {
3168 REGB1 = TAG_Bool(0);
3169 REGB0 = REGB1;
3170 } else {
3171 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3172 REGB0 = REGB1;
3173 }
3174 }
3175 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3176 } else {
3177 REGB1 = TAG_Bool(0);
3178 REGB0 = REGB1;
3179 }
3180 if (UNTAG_Bool(REGB0)) {
3181 /* syntax/typing.nit:487 */
3182 if (!once_value_3) {
3183 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
3184 REGB0 = TAG_Int(42);
3185 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3186 once_value_3 = fra.me.REG[4];
3187 register_static_object(&once_value_3);
3188 } else fra.me.REG[4] = once_value_3;
3189 fra.me.REG[4] = fra.me.REG[4];
3190 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3191 } else {
3192 /* syntax/typing.nit:488 */
3193 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3194 if (UNTAG_Bool(REGB0)) {
3195 } else {
3196 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3197 if (UNTAG_Bool(REGB1)) {
3198 REGB1 = TAG_Bool(0);
3199 REGB0 = REGB1;
3200 } else {
3201 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3202 REGB0 = REGB1;
3203 }
3204 }
3205 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3206 if (UNTAG_Bool(REGB0)) {
3207 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3208 if (UNTAG_Bool(REGB0)) {
3209 } else {
3210 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3211 if (UNTAG_Bool(REGB1)) {
3212 REGB1 = TAG_Bool(0);
3213 REGB0 = REGB1;
3214 } else {
3215 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3216 REGB0 = REGB1;
3217 }
3218 }
3219 } else {
3220 REGB1 = TAG_Bool(0);
3221 REGB0 = REGB1;
3222 }
3223 if (UNTAG_Bool(REGB0)) {
3224 /* syntax/typing.nit:489 */
3225 if (!once_value_4) {
3226 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
3227 REGB0 = TAG_Int(40);
3228 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3229 once_value_4 = fra.me.REG[4];
3230 register_static_object(&once_value_4);
3231 } else fra.me.REG[4] = once_value_4;
3232 fra.me.REG[4] = fra.me.REG[4];
3233 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3234 } else {
3235 /* syntax/typing.nit:490 */
3236 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3237 if (UNTAG_Bool(REGB0)) {
3238 } else {
3239 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3240 if (UNTAG_Bool(REGB1)) {
3241 REGB1 = TAG_Bool(0);
3242 REGB0 = REGB1;
3243 } else {
3244 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3245 REGB0 = REGB1;
3246 }
3247 }
3248 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3249 if (UNTAG_Bool(REGB0)) {
3250 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3251 if (UNTAG_Bool(REGB0)) {
3252 } else {
3253 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3254 if (UNTAG_Bool(REGB1)) {
3255 REGB1 = TAG_Bool(0);
3256 REGB0 = REGB1;
3257 } else {
3258 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3259 REGB0 = REGB1;
3260 }
3261 }
3262 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3263 } else {
3264 REGB1 = TAG_Bool(0);
3265 REGB0 = REGB1;
3266 }
3267 if (UNTAG_Bool(REGB0)) {
3268 /* syntax/typing.nit:491 */
3269 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3270 }
3271 }
3272 }
3273 /* syntax/typing.nit:493 */
3274 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3275 if (UNTAG_Bool(REGB0)) {
3276 } else {
3277 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3278 if (UNTAG_Bool(REGB1)) {
3279 REGB1 = TAG_Bool(0);
3280 REGB0 = REGB1;
3281 } else {
3282 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3283 REGB0 = REGB1;
3284 }
3285 }
3286 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3287 if (UNTAG_Bool(REGB0)) {
3288 /* syntax/typing.nit:494 */
3289 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3290 if (UNTAG_Bool(REGB0)) {
3291 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 494);
3292 }
3293 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3294 }
3295 /* syntax/typing.nit:496 */
3296 REGB0 = TAG_Bool(1);
3297 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3298 label2: while(0);
3299 stack_frame_head = fra.me.prev;
3300 return;
3301 }
3302 static const char LOCATE_syntax___typing___AContinueExpr___after_typing[] = "typing::AContinueExpr::(typing::ANode::after_typing)";
3303 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3304 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3305 val_t REGB0;
3306 val_t REGB1;
3307 val_t tmp;
3308 static val_t once_value_2; /* Once value */
3309 static val_t once_value_3; /* Once value */
3310 static val_t once_value_4; /* Once value */
3311 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3312 fra.me.file = LOCATE_syntax___typing;
3313 fra.me.line = 501;
3314 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3315 fra.me.has_broke = 0;
3316 fra.me.REG_size = 5;
3317 fra.me.nitni_local_ref_head = NULL;
3318 fra.me.REG[0] = NIT_NULL;
3319 fra.me.REG[1] = NIT_NULL;
3320 fra.me.REG[2] = NIT_NULL;
3321 fra.me.REG[3] = NIT_NULL;
3322 fra.me.REG[4] = NIT_NULL;
3323 fra.me.REG[0] = p0;
3324 fra.me.REG[1] = p1;
3325 /* syntax/typing.nit:503 */
3326 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3327 /* syntax/typing.nit:504 */
3328 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3329 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3330 /* syntax/typing.nit:505 */
3331 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3332 if (UNTAG_Bool(REGB0)) {
3333 } else {
3334 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3335 if (UNTAG_Bool(REGB1)) {
3336 REGB1 = TAG_Bool(0);
3337 REGB0 = REGB1;
3338 } else {
3339 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3340 REGB0 = REGB1;
3341 }
3342 }
3343 if (UNTAG_Bool(REGB0)) {
3344 goto label1;
3345 }
3346 /* syntax/typing.nit:507 */
3347 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3348 if (UNTAG_Bool(REGB0)) {
3349 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 507);
3350 }
3351 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
3352 if (UNTAG_Bool(REGB0)) {
3353 /* syntax/typing.nit:508 */
3354 if (!once_value_2) {
3355 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3356 REGB0 = TAG_Int(39);
3357 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
3358 once_value_2 = fra.me.REG[3];
3359 register_static_object(&once_value_2);
3360 } else fra.me.REG[3] = once_value_2;
3361 fra.me.REG[3] = fra.me.REG[3];
3362 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3363 /* syntax/typing.nit:509 */
3364 goto label1;
3365 }
3366 /* syntax/typing.nit:512 */
3367 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3368 if (UNTAG_Bool(REGB0)) {
3369 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 512);
3370 }
3371 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3372 /* syntax/typing.nit:513 */
3373 fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3374 /* syntax/typing.nit:514 */
3375 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3376 if (UNTAG_Bool(REGB0)) {
3377 } else {
3378 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3379 if (UNTAG_Bool(REGB1)) {
3380 REGB1 = TAG_Bool(0);
3381 REGB0 = REGB1;
3382 } else {
3383 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3384 REGB0 = REGB1;
3385 }
3386 }
3387 if (UNTAG_Bool(REGB0)) {
3388 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3389 if (UNTAG_Bool(REGB0)) {
3390 } else {
3391 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3392 if (UNTAG_Bool(REGB1)) {
3393 REGB1 = TAG_Bool(0);
3394 REGB0 = REGB1;
3395 } else {
3396 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3397 REGB0 = REGB1;
3398 }
3399 }
3400 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3401 } else {
3402 REGB1 = TAG_Bool(0);
3403 REGB0 = REGB1;
3404 }
3405 if (UNTAG_Bool(REGB0)) {
3406 /* syntax/typing.nit:515 */
3407 if (!once_value_3) {
3408 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3409 REGB0 = TAG_Int(52);
3410 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3411 once_value_3 = fra.me.REG[4];
3412 register_static_object(&once_value_3);
3413 } else fra.me.REG[4] = once_value_3;
3414 fra.me.REG[4] = fra.me.REG[4];
3415 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3416 } else {
3417 /* syntax/typing.nit:516 */
3418 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3419 if (UNTAG_Bool(REGB0)) {
3420 } else {
3421 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3422 if (UNTAG_Bool(REGB1)) {
3423 REGB1 = TAG_Bool(0);
3424 REGB0 = REGB1;
3425 } else {
3426 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3427 REGB0 = REGB1;
3428 }
3429 }
3430 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3431 if (UNTAG_Bool(REGB0)) {
3432 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3433 if (UNTAG_Bool(REGB0)) {
3434 } else {
3435 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3436 if (UNTAG_Bool(REGB1)) {
3437 REGB1 = TAG_Bool(0);
3438 REGB0 = REGB1;
3439 } else {
3440 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3441 REGB0 = REGB1;
3442 }
3443 }
3444 } else {
3445 REGB1 = TAG_Bool(0);
3446 REGB0 = REGB1;
3447 }
3448 if (UNTAG_Bool(REGB0)) {
3449 /* syntax/typing.nit:517 */
3450 if (!once_value_4) {
3451 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3452 REGB0 = TAG_Int(53);
3453 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3454 once_value_4 = fra.me.REG[4];
3455 register_static_object(&once_value_4);
3456 } else fra.me.REG[4] = once_value_4;
3457 fra.me.REG[4] = fra.me.REG[4];
3458 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3459 } else {
3460 /* syntax/typing.nit:518 */
3461 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3462 if (UNTAG_Bool(REGB0)) {
3463 } else {
3464 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3465 if (UNTAG_Bool(REGB1)) {
3466 REGB1 = TAG_Bool(0);
3467 REGB0 = REGB1;
3468 } else {
3469 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3470 REGB0 = REGB1;
3471 }
3472 }
3473 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3474 if (UNTAG_Bool(REGB0)) {
3475 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3476 if (UNTAG_Bool(REGB0)) {
3477 } else {
3478 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3479 if (UNTAG_Bool(REGB1)) {
3480 REGB1 = TAG_Bool(0);
3481 REGB0 = REGB1;
3482 } else {
3483 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3484 REGB0 = REGB1;
3485 }
3486 }
3487 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3488 } else {
3489 REGB1 = TAG_Bool(0);
3490 REGB0 = REGB1;
3491 }
3492 if (UNTAG_Bool(REGB0)) {
3493 /* syntax/typing.nit:519 */
3494 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3495 }
3496 }
3497 }
3498 /* syntax/typing.nit:521 */
3499 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3500 if (UNTAG_Bool(REGB0)) {
3501 } else {
3502 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3503 if (UNTAG_Bool(REGB1)) {
3504 REGB1 = TAG_Bool(0);
3505 REGB0 = REGB1;
3506 } else {
3507 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3508 REGB0 = REGB1;
3509 }
3510 }
3511 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3512 if (UNTAG_Bool(REGB0)) {
3513 /* syntax/typing.nit:522 */
3514 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3515 if (UNTAG_Bool(REGB0)) {
3516 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 522);
3517 }
3518 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3519 }
3520 /* syntax/typing.nit:524 */
3521 REGB0 = TAG_Bool(1);
3522 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3523 label1: while(0);
3524 stack_frame_head = fra.me.prev;
3525 return;
3526 }
3527 static const char LOCATE_syntax___typing___ABreakExpr___after_typing[] = "typing::ABreakExpr::(typing::ANode::after_typing)";
3528 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3529 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3530 val_t REGB0;
3531 val_t REGB1;
3532 val_t tmp;
3533 static val_t once_value_2; /* Once value */
3534 static val_t once_value_3; /* Once value */
3535 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3536 fra.me.file = LOCATE_syntax___typing;
3537 fra.me.line = 529;
3538 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3539 fra.me.has_broke = 0;
3540 fra.me.REG_size = 5;
3541 fra.me.nitni_local_ref_head = NULL;
3542 fra.me.REG[0] = NIT_NULL;
3543 fra.me.REG[1] = NIT_NULL;
3544 fra.me.REG[2] = NIT_NULL;
3545 fra.me.REG[3] = NIT_NULL;
3546 fra.me.REG[4] = NIT_NULL;
3547 fra.me.REG[0] = p0;
3548 fra.me.REG[1] = p1;
3549 /* syntax/typing.nit:531 */
3550 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3551 /* syntax/typing.nit:532 */
3552 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3553 /* syntax/typing.nit:533 */
3554 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3555 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3556 /* syntax/typing.nit:534 */
3557 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3558 if (UNTAG_Bool(REGB0)) {
3559 } else {
3560 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3561 if (UNTAG_Bool(REGB1)) {
3562 REGB1 = TAG_Bool(0);
3563 REGB0 = REGB1;
3564 } else {
3565 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3566 REGB0 = REGB1;
3567 }
3568 }
3569 if (UNTAG_Bool(REGB0)) {
3570 goto label1;
3571 }
3572 /* syntax/typing.nit:536 */
3573 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3574 if (UNTAG_Bool(REGB0)) {
3575 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 536);
3576 }
3577 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3579 /* syntax/typing.nit:538 */
3580 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3581 if (UNTAG_Bool(REGB0)) {
3582 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 538);
3583 }
3584 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3585 /* syntax/typing.nit:539 */
3586 fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3587 /* syntax/typing.nit:540 */
3588 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3589 if (UNTAG_Bool(REGB0)) {
3590 } else {
3591 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3592 if (UNTAG_Bool(REGB1)) {
3593 REGB1 = TAG_Bool(0);
3594 REGB0 = REGB1;
3595 } else {
3596 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3597 REGB0 = REGB1;
3598 }
3599 }
3600 if (UNTAG_Bool(REGB0)) {
3601 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3602 if (UNTAG_Bool(REGB0)) {
3603 } else {
3604 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3605 if (UNTAG_Bool(REGB1)) {
3606 REGB1 = TAG_Bool(0);
3607 REGB0 = REGB1;
3608 } else {
3609 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3610 REGB0 = REGB1;
3611 }
3612 }
3613 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3614 } else {
3615 REGB1 = TAG_Bool(0);
3616 REGB0 = REGB1;
3617 }
3618 if (UNTAG_Bool(REGB0)) {
3619 /* syntax/typing.nit:541 */
3620 if (!once_value_2) {
3621 fra.me.REG[4] = BOX_NativeString("Error: break with a value required in this block.");
3622 REGB0 = TAG_Int(49);
3623 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3624 once_value_2 = fra.me.REG[4];
3625 register_static_object(&once_value_2);
3626 } else fra.me.REG[4] = once_value_2;
3627 fra.me.REG[4] = fra.me.REG[4];
3628 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3629 } else {
3630 /* syntax/typing.nit:542 */
3631 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3632 if (UNTAG_Bool(REGB0)) {
3633 } else {
3634 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3635 if (UNTAG_Bool(REGB1)) {
3636 REGB1 = TAG_Bool(0);
3637 REGB0 = REGB1;
3638 } else {
3639 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3640 REGB0 = REGB1;
3641 }
3642 }
3643 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3644 if (UNTAG_Bool(REGB0)) {
3645 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3646 if (UNTAG_Bool(REGB0)) {
3647 } else {
3648 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3649 if (UNTAG_Bool(REGB1)) {
3650 REGB1 = TAG_Bool(0);
3651 REGB0 = REGB1;
3652 } else {
3653 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3654 REGB0 = REGB1;
3655 }
3656 }
3657 } else {
3658 REGB1 = TAG_Bool(0);
3659 REGB0 = REGB1;
3660 }
3661 if (UNTAG_Bool(REGB0)) {
3662 /* syntax/typing.nit:543 */
3663 if (!once_value_3) {
3664 fra.me.REG[4] = BOX_NativeString("Error: break without value required in this block.");
3665 REGB0 = TAG_Int(50);
3666 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
3667 once_value_3 = fra.me.REG[4];
3668 register_static_object(&once_value_3);
3669 } else fra.me.REG[4] = once_value_3;
3670 fra.me.REG[4] = fra.me.REG[4];
3671 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3672 } else {
3673 /* syntax/typing.nit:544 */
3674 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3675 if (UNTAG_Bool(REGB0)) {
3676 } else {
3677 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3678 if (UNTAG_Bool(REGB1)) {
3679 REGB1 = TAG_Bool(0);
3680 REGB0 = REGB1;
3681 } else {
3682 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3683 REGB0 = REGB1;
3684 }
3685 }
3686 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3687 if (UNTAG_Bool(REGB0)) {
3688 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3689 if (UNTAG_Bool(REGB0)) {
3690 } else {
3691 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3692 if (UNTAG_Bool(REGB1)) {
3693 REGB1 = TAG_Bool(0);
3694 REGB0 = REGB1;
3695 } else {
3696 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3697 REGB0 = REGB1;
3698 }
3699 }
3700 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3701 } else {
3702 REGB1 = TAG_Bool(0);
3703 REGB0 = REGB1;
3704 }
3705 if (UNTAG_Bool(REGB0)) {
3706 /* syntax/typing.nit:546 */
3707 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3708 if (UNTAG_Bool(REGB0)) {
3709 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 546);
3710 }
3711 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3712 }
3713 }
3714 }
3715 /* syntax/typing.nit:548 */
3716 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3717 if (UNTAG_Bool(REGB0)) {
3718 } else {
3719 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3720 if (UNTAG_Bool(REGB1)) {
3721 REGB1 = TAG_Bool(0);
3722 REGB0 = REGB1;
3723 } else {
3724 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3725 REGB0 = REGB1;
3726 }
3727 }
3728 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3729 if (UNTAG_Bool(REGB0)) {
3730 /* syntax/typing.nit:549 */
3731 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3732 if (UNTAG_Bool(REGB0)) {
3733 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 549);
3734 }
3735 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3736 }
3737 /* syntax/typing.nit:551 */
3738 REGB0 = TAG_Bool(1);
3739 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3740 label1: while(0);
3741 stack_frame_head = fra.me.prev;
3742 return;
3743 }
3744 static const char LOCATE_syntax___typing___AAbortExpr___after_typing[] = "typing::AAbortExpr::(typing::ANode::after_typing)";
3745 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3746 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3747 val_t REGB0;
3748 val_t tmp;
3749 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3750 fra.me.file = LOCATE_syntax___typing;
3751 fra.me.line = 556;
3752 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3753 fra.me.has_broke = 0;
3754 fra.me.REG_size = 2;
3755 fra.me.nitni_local_ref_head = NULL;
3756 fra.me.REG[0] = NIT_NULL;
3757 fra.me.REG[1] = NIT_NULL;
3758 fra.me.REG[0] = p0;
3759 fra.me.REG[1] = p1;
3760 /* syntax/typing.nit:558 */
3761 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3762 /* syntax/typing.nit:559 */
3763 REGB0 = TAG_Bool(1);
3764 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3765 stack_frame_head = fra.me.prev;
3766 return;
3767 }
3768 static const char LOCATE_syntax___typing___AAbsControl___escapable[] = "typing::AAbsControl::escapable";
3769 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3770 struct {struct stack_frame_t me;} fra;
3771 val_t tmp;
3772 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3773 fra.me.file = LOCATE_syntax___typing;
3774 fra.me.line = 566;
3775 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3776 fra.me.has_broke = 0;
3777 fra.me.REG_size = 1;
3778 fra.me.nitni_local_ref_head = NULL;
3779 fra.me.REG[0] = NIT_NULL;
3780 fra.me.REG[0] = p0;
3781 /* syntax/typing.nit:566 */
3782 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3783 stack_frame_head = fra.me.prev;
3784 return fra.me.REG[0];
3785 }
3786 static const char LOCATE_syntax___typing___AAbsControl___process_control[] = "typing::AAbsControl::process_control";
3787 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3788 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3789 val_t REGB0;
3790 val_t REGB1;
3791 val_t tmp;
3792 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3793 fra.me.file = LOCATE_syntax___typing;
3794 fra.me.line = 569;
3795 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3796 fra.me.has_broke = 0;
3797 fra.me.REG_size = 7;
3798 fra.me.nitni_local_ref_head = NULL;
3799 fra.me.REG[0] = NIT_NULL;
3800 fra.me.REG[1] = NIT_NULL;
3801 fra.me.REG[2] = NIT_NULL;
3802 fra.me.REG[3] = NIT_NULL;
3803 fra.me.REG[4] = NIT_NULL;
3804 fra.me.REG[5] = NIT_NULL;
3805 fra.me.REG[6] = NIT_NULL;
3806 fra.me.REG[0] = p0;
3807 fra.me.REG[1] = p1;
3808 fra.me.REG[2] = p2;
3809 fra.me.REG[3] = p3;
3810 REGB0 = p4;
3811 /* syntax/typing.nit:573 */
3812 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3813 /* syntax/typing.nit:574 */
3814 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3815 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3816 /* syntax/typing.nit:577 */
3817 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3818 /* syntax/typing.nit:578 */
3819 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3820 /* syntax/typing.nit:579 */
3821 if (UNTAG_Bool(REGB0)) {
3822 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3823 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3824 }
3825 /* syntax/typing.nit:582 */
3826 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3827 /* syntax/typing.nit:585 */
3828 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3829 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3830 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3831 if (UNTAG_Bool(REGB1)) {
3832 /* syntax/typing.nit:586 */
3833 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3834 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3835 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3836 }
3837 /* syntax/typing.nit:590 */
3838 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3839 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3840 if (UNTAG_Bool(REGB1)) {
3841 /* syntax/typing.nit:591 */
3842 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3843 /* syntax/typing.nit:592 */
3844 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3845 } else {
3846 /* syntax/typing.nit:594 */
3847 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3848 fra.me.REG[2] = CALL_syntax___flow___FlowContext___merge(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[2]);
3849 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3850 }
3851 /* syntax/typing.nit:597 */
3852 if (UNTAG_Bool(REGB0)) {
3853 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3854 }
3855 /* syntax/typing.nit:598 */
3856 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3857 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3858 /* syntax/typing.nit:599 */
3859 REGB0 = TAG_Bool(1);
3860 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3861 stack_frame_head = fra.me.prev;
3862 return;
3863 }
3864 static const char LOCATE_syntax___typing___AAbsControl___process_control_inside[] = "typing::AAbsControl::process_control_inside";
3865 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3866 struct {struct stack_frame_t me;} fra;
3867 val_t tmp;
3868 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3869 fra.me.file = LOCATE_syntax___typing;
3870 fra.me.line = 602;
3871 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3872 fra.me.has_broke = 0;
3873 fra.me.REG_size = 0;
3874 fra.me.nitni_local_ref_head = NULL;
3875 /* syntax/typing.nit:602 */
3876 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 602);
3877 stack_frame_head = fra.me.prev;
3878 return;
3879 }
3880 static const char LOCATE_syntax___typing___ADoExpr___accept_typing[] = "typing::ADoExpr::(typing::ANode::accept_typing)";
3881 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3882 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3883 val_t REGB0;
3884 val_t tmp;
3885 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3886 fra.me.file = LOCATE_syntax___typing;
3887 fra.me.line = 608;
3888 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3889 fra.me.has_broke = 0;
3890 fra.me.REG_size = 4;
3891 fra.me.nitni_local_ref_head = NULL;
3892 fra.me.REG[0] = NIT_NULL;
3893 fra.me.REG[1] = NIT_NULL;
3894 fra.me.REG[2] = NIT_NULL;
3895 fra.me.REG[3] = NIT_NULL;
3896 fra.me.REG[0] = p0;
3897 fra.me.REG[1] = p1;
3898 /* syntax/typing.nit:610 */
3899 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3900 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3901 REGB0 = TAG_Bool(0);
3902 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3903 stack_frame_head = fra.me.prev;
3904 return;
3905 }
3906 static const char LOCATE_syntax___typing___ADoExpr___process_control_inside[] = "typing::ADoExpr::(typing::AAbsControl::process_control_inside)";
3907 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3908 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3909 val_t tmp;
3910 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3911 fra.me.file = LOCATE_syntax___typing;
3912 fra.me.line = 613;
3913 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3914 fra.me.has_broke = 0;
3915 fra.me.REG_size = 2;
3916 fra.me.nitni_local_ref_head = NULL;
3917 fra.me.REG[0] = NIT_NULL;
3918 fra.me.REG[1] = NIT_NULL;
3919 fra.me.REG[0] = p0;
3920 fra.me.REG[1] = p1;
3921 /* syntax/typing.nit:615 */
3922 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3923 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3924 stack_frame_head = fra.me.prev;
3925 return;
3926 }
3927 static const char LOCATE_syntax___typing___AIfExpr___accept_typing[] = "typing::AIfExpr::(typing::ANode::accept_typing)";
3928 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3929 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3930 val_t REGB0;
3931 val_t tmp;
3932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3933 fra.me.file = LOCATE_syntax___typing;
3934 fra.me.line = 620;
3935 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3936 fra.me.has_broke = 0;
3937 fra.me.REG_size = 5;
3938 fra.me.nitni_local_ref_head = NULL;
3939 fra.me.REG[0] = NIT_NULL;
3940 fra.me.REG[1] = NIT_NULL;
3941 fra.me.REG[2] = NIT_NULL;
3942 fra.me.REG[3] = NIT_NULL;
3943 fra.me.REG[4] = NIT_NULL;
3944 fra.me.REG[0] = p0;
3945 fra.me.REG[1] = p1;
3946 /* syntax/typing.nit:622 */
3947 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3948 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3949 /* syntax/typing.nit:623 */
3950 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3951 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3952 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3953 /* syntax/typing.nit:625 */
3954 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3955 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3956 /* syntax/typing.nit:628 */
3957 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3958 /* syntax/typing.nit:629 */
3959 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3960 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3961 /* syntax/typing.nit:632 */
3962 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3963 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3964 /* syntax/typing.nit:635 */
3965 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3966 /* syntax/typing.nit:638 */
3967 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3968 /* syntax/typing.nit:639 */
3969 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3970 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3971 /* syntax/typing.nit:642 */
3972 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3973 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3974 /* syntax/typing.nit:645 */
3975 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3976 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3977 fra.me.REG[4] = CALL_syntax___flow___FlowContext___merge_reash(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
3978 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3979 /* syntax/typing.nit:646 */
3980 REGB0 = TAG_Bool(1);
3981 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3982 stack_frame_head = fra.me.prev;
3983 return;
3984 }
3985 static const char LOCATE_syntax___typing___AWhileExpr___accept_typing[] = "typing::AWhileExpr::(typing::ANode::accept_typing)";
3986 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3987 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3988 val_t REGB0;
3989 val_t tmp;
3990 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3991 fra.me.file = LOCATE_syntax___typing;
3992 fra.me.line = 652;
3993 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
3994 fra.me.has_broke = 0;
3995 fra.me.REG_size = 4;
3996 fra.me.nitni_local_ref_head = NULL;
3997 fra.me.REG[0] = NIT_NULL;
3998 fra.me.REG[1] = NIT_NULL;
3999 fra.me.REG[2] = NIT_NULL;
4000 fra.me.REG[3] = NIT_NULL;
4001 fra.me.REG[0] = p0;
4002 fra.me.REG[1] = p1;
4003 /* syntax/typing.nit:654 */
4004 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4005 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4006 REGB0 = TAG_Bool(1);
4007 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
4008 stack_frame_head = fra.me.prev;
4009 return;
4010 }
4011 static const char LOCATE_syntax___typing___AWhileExpr___process_control_inside[] = "typing::AWhileExpr::(typing::AAbsControl::process_control_inside)";
4012 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
4013 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4014 val_t REGB0;
4015 val_t tmp;
4016 static val_t once_value_1; /* Once value */
4017 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4018 fra.me.file = LOCATE_syntax___typing;
4019 fra.me.line = 657;
4020 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
4021 fra.me.has_broke = 0;
4022 fra.me.REG_size = 5;
4023 fra.me.nitni_local_ref_head = NULL;
4024 fra.me.REG[0] = NIT_NULL;
4025 fra.me.REG[1] = NIT_NULL;
4026 fra.me.REG[2] = NIT_NULL;
4027 fra.me.REG[3] = NIT_NULL;
4028 fra.me.REG[4] = NIT_NULL;
4029 fra.me.REG[0] = p0;
4030 fra.me.REG[1] = p1;
4031 /* syntax/typing.nit:659 */
4032 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4033 /* syntax/typing.nit:662 */
4034 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4035 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4036 /* syntax/typing.nit:663 */
4037 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4038 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4039 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4040 /* syntax/typing.nit:665 */
4041 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4042 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
4043 if (UNTAG_Bool(REGB0)) {
4044 /* syntax/typing.nit:666 */
4045 if (!once_value_1) {
4046 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
4047 REGB0 = TAG_Int(47);
4048 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4049 once_value_1 = fra.me.REG[4];
4050 register_static_object(&once_value_1);
4051 } else fra.me.REG[4] = once_value_1;
4052 fra.me.REG[4] = fra.me.REG[4];
4053 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4054 } else {
4055 /* syntax/typing.nit:668 */
4056 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4057 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
4058 }
4059 /* syntax/typing.nit:672 */
4060 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4061 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4062 /* syntax/typing.nit:675 */
4063 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4064 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4065 /* syntax/typing.nit:678 */
4066 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4067 /* syntax/typing.nit:679 */
4068 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4069 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4070 /* syntax/typing.nit:680 */
4071 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
4072 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4073 if (UNTAG_Bool(REGB0)) {
4074 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 680);
4075 }
4076 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
4077 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4079 stack_frame_head = fra.me.prev;
4080 return;
4081 }
4082 static const char LOCATE_syntax___typing___ALoopExpr___accept_typing[] = "typing::ALoopExpr::(typing::ANode::accept_typing)";
4083 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
4084 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4085 val_t REGB0;
4086 val_t tmp;
4087 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4088 fra.me.file = LOCATE_syntax___typing;
4089 fra.me.line = 686;
4090 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
4091 fra.me.has_broke = 0;
4092 fra.me.REG_size = 4;
4093 fra.me.nitni_local_ref_head = NULL;
4094 fra.me.REG[0] = NIT_NULL;
4095 fra.me.REG[1] = NIT_NULL;
4096 fra.me.REG[2] = NIT_NULL;
4097 fra.me.REG[3] = NIT_NULL;
4098 fra.me.REG[0] = p0;
4099 fra.me.REG[1] = p1;
4100 /* syntax/typing.nit:688 */
4101 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4102 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4103 REGB0 = TAG_Bool(1);
4104 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
4105 stack_frame_head = fra.me.prev;
4106 return;
4107 }
4108 static const char LOCATE_syntax___typing___ALoopExpr___process_control_inside[] = "typing::ALoopExpr::(typing::AAbsControl::process_control_inside)";
4109 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
4110 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4111 val_t tmp;
4112 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4113 fra.me.file = LOCATE_syntax___typing;
4114 fra.me.line = 691;
4115 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
4116 fra.me.has_broke = 0;
4117 fra.me.REG_size = 3;
4118 fra.me.nitni_local_ref_head = NULL;
4119 fra.me.REG[0] = NIT_NULL;
4120 fra.me.REG[1] = NIT_NULL;
4121 fra.me.REG[2] = NIT_NULL;
4122 fra.me.REG[0] = p0;
4123 fra.me.REG[1] = p1;
4124 /* syntax/typing.nit:694 */
4125 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4126 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4127 /* syntax/typing.nit:697 */
4128 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4129 stack_frame_head = fra.me.prev;
4130 return;
4131 }
4132 static const char LOCATE_syntax___typing___AForExpr___variables[] = "typing::AForExpr::(syntax_base::AForExpr::variables)";
4133 val_t syntax___typing___AForExpr___variables(val_t p0){
4134 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4135 val_t REGB0;
4136 val_t tmp;
4137 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4138 fra.me.file = LOCATE_syntax___typing;
4139 fra.me.line = 704;
4140 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
4141 fra.me.has_broke = 0;
4142 fra.me.REG_size = 2;
4143 fra.me.nitni_local_ref_head = NULL;
4144 fra.me.REG[0] = NIT_NULL;
4145 fra.me.REG[1] = NIT_NULL;
4146 fra.me.REG[0] = p0;
4147 /* syntax/typing.nit:704 */
4148 fra.me.REG[1] = fra.me.REG[0];
4149 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
4150 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4151 if (UNTAG_Bool(REGB0)) {
4152 } else {
4153 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 704);
4154 }
4155 goto label1;
4156 label1: while(0);
4157 stack_frame_head = fra.me.prev;
4158 return fra.me.REG[1];
4159 }
4160 static const char LOCATE_syntax___typing___AForExpr___accept_typing[] = "typing::AForExpr::(typing::ANode::accept_typing)";
4161 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
4162 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4163 val_t REGB0;
4164 val_t tmp;
4165 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4166 fra.me.file = LOCATE_syntax___typing;
4167 fra.me.line = 706;
4168 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
4169 fra.me.has_broke = 0;
4170 fra.me.REG_size = 4;
4171 fra.me.nitni_local_ref_head = NULL;
4172 fra.me.REG[0] = NIT_NULL;
4173 fra.me.REG[1] = NIT_NULL;
4174 fra.me.REG[2] = NIT_NULL;
4175 fra.me.REG[3] = NIT_NULL;
4176 fra.me.REG[0] = p0;
4177 fra.me.REG[1] = p1;
4178 /* syntax/typing.nit:708 */
4179 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4180 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4181 REGB0 = TAG_Bool(1);
4182 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
4183 stack_frame_head = fra.me.prev;
4184 return;
4185 }
4186 static const char LOCATE_syntax___typing___AForExpr___process_control_inside[] = "typing::AForExpr::(typing::AAbsControl::process_control_inside)";
4187 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
4188 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4189 val_t tmp;
4190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4191 fra.me.file = LOCATE_syntax___typing;
4192 fra.me.line = 711;
4193 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
4194 fra.me.has_broke = 0;
4195 fra.me.REG_size = 3;
4196 fra.me.nitni_local_ref_head = NULL;
4197 fra.me.REG[0] = NIT_NULL;
4198 fra.me.REG[1] = NIT_NULL;
4199 fra.me.REG[2] = NIT_NULL;
4200 fra.me.REG[0] = p0;
4201 fra.me.REG[1] = p1;
4202 /* syntax/typing.nit:713 */
4203 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4204 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4205 /* syntax/typing.nit:714 */
4206 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4207 /* syntax/typing.nit:716 */
4208 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4209 /* syntax/typing.nit:719 */
4210 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4211 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4212 /* syntax/typing.nit:722 */
4213 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4214 /* syntax/typing.nit:723 */
4215 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4216 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
4217 stack_frame_head = fra.me.prev;
4218 return;
4219 }
4220 static const char LOCATE_syntax___typing___AForExpr___do_typing[] = "typing::AForExpr::do_typing";
4221 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
4222 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4223 val_t REGB0;
4224 val_t REGB1;
4225 val_t REGB2;
4226 val_t REGB3;
4227 val_t REGB4;
4228 val_t REGB5;
4229 val_t tmp;
4230 static val_t once_value_3; /* Once value */
4231 static val_t once_value_4; /* Once value */
4232 static val_t once_value_5; /* Once value */
4233 static val_t once_value_6; /* Once value */
4234 static val_t once_value_7; /* Once value */
4235 static val_t once_value_8; /* Once value */
4236 static val_t once_value_9; /* Once value */
4237 static val_t once_value_10; /* Once value */
4238 static val_t once_value_11; /* Once value */
4239 static val_t once_value_12; /* Once value */
4240 static val_t once_value_13; /* Once value */
4241 static val_t once_value_14; /* Once value */
4242 static val_t once_value_15; /* Once value */
4243 static val_t once_value_16; /* Once value */
4244 static val_t once_value_17; /* Once value */
4245 static val_t once_value_18; /* Once value */
4246 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4247 fra.me.file = LOCATE_syntax___typing;
4248 fra.me.line = 726;
4249 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4250 fra.me.has_broke = 0;
4251 fra.me.REG_size = 8;
4252 fra.me.nitni_local_ref_head = NULL;
4253 fra.me.REG[0] = NIT_NULL;
4254 fra.me.REG[1] = NIT_NULL;
4255 fra.me.REG[2] = NIT_NULL;
4256 fra.me.REG[3] = NIT_NULL;
4257 fra.me.REG[4] = NIT_NULL;
4258 fra.me.REG[5] = NIT_NULL;
4259 fra.me.REG[6] = NIT_NULL;
4260 fra.me.REG[7] = NIT_NULL;
4261 fra.me.REG[0] = p0;
4262 fra.me.REG[1] = p1;
4263 /* syntax/typing.nit:729 */
4264 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
4265 /* syntax/typing.nit:730 */
4266 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
4267 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___typing___AForExpr___do_typing_1));
4268 /* syntax/typing.nit:735 */
4269 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
4270 /* syntax/typing.nit:738 */
4271 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4272 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4273 /* syntax/typing.nit:739 */
4274 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4275 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4276 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4277 if (UNTAG_Bool(REGB0)) {
4278 goto label2;
4279 }
4280 /* syntax/typing.nit:740 */
4281 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4282 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4283 /* syntax/typing.nit:742 */
4284 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4285 if (UNTAG_Bool(REGB0)) {
4286 /* syntax/typing.nit:743 */
4287 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4288 if (!once_value_3) {
4289 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
4290 REGB0 = TAG_Int(43);
4291 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
4292 once_value_3 = fra.me.REG[5];
4293 register_static_object(&once_value_3);
4294 } else fra.me.REG[5] = once_value_3;
4295 fra.me.REG[5] = fra.me.REG[5];
4296 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4297 /* syntax/typing.nit:744 */
4298 goto label2;
4299 }
4300 /* syntax/typing.nit:746 */
4301 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4302 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
4303 /* syntax/typing.nit:749 */
4304 if (!once_value_4) {
4305 if (!once_value_5) {
4306 fra.me.REG[5] = BOX_NativeString("iterate");
4307 REGB0 = TAG_Int(7);
4308 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
4309 once_value_5 = fra.me.REG[5];
4310 register_static_object(&once_value_5);
4311 } else fra.me.REG[5] = once_value_5;
4312 fra.me.REG[5] = fra.me.REG[5];
4313 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4314 once_value_4 = fra.me.REG[5];
4315 register_static_object(&once_value_4);
4316 } else fra.me.REG[5] = once_value_4;
4317 fra.me.REG[5] = fra.me.REG[5];
4318 /* syntax/typing.nit:750 */
4319 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4320 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4321 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4322 if (UNTAG_Bool(REGB0)) {
4323 /* syntax/typing.nit:751 */
4324 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4325 REGB0 = TAG_Int(3);
4326 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4327 if (!once_value_6) {
4328 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
4329 REGB0 = TAG_Int(60);
4330 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
4331 once_value_6 = fra.me.REG[7];
4332 register_static_object(&once_value_6);
4333 } else fra.me.REG[7] = once_value_6;
4334 fra.me.REG[7] = fra.me.REG[7];
4335 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4336 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4337 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4338 if (!once_value_7) {
4339 fra.me.REG[7] = BOX_NativeString(".");
4340 REGB0 = TAG_Int(1);
4341 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
4342 once_value_7 = fra.me.REG[7];
4343 register_static_object(&once_value_7);
4344 } else fra.me.REG[7] = once_value_7;
4345 fra.me.REG[7] = fra.me.REG[7];
4346 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4347 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4348 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4349 /* syntax/typing.nit:752 */
4350 goto label2;
4351 }
4352 /* syntax/typing.nit:754 */
4353 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4354 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4355 /* syntax/typing.nit:755 */
4356 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4357 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4358 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4359 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4360 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[0], fra.me.REG[4], REGB0);
4361 /* syntax/typing.nit:756 */
4362 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4363 /* syntax/typing.nit:757 */
4364 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4365 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4366 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4367 if (UNTAG_Bool(REGB0)) {
4368 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4369 fra.me.REG[3] = fra.me.REG[5];
4370 }
4371 /* syntax/typing.nit:758 */
4372 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4373 REGB1 = TAG_Int(0);
4374 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4375 if (UNTAG_Bool(REGB2)) {
4376 } else {
4377 /* ../lib/standard/kernel.nit:237 */
4378 REGB1 = TAG_Bool((REGB0)==(REGB1));
4379 /* syntax/typing.nit:758 */
4380 REGB2 = REGB1;
4381 }
4382 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4383 if (UNTAG_Bool(REGB2)) {
4384 /* syntax/typing.nit:759 */
4385 if (!once_value_8) {
4386 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4387 REGB2 = TAG_Int(63);
4388 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
4389 once_value_8 = fra.me.REG[5];
4390 register_static_object(&once_value_8);
4391 } else fra.me.REG[5] = once_value_8;
4392 fra.me.REG[5] = fra.me.REG[5];
4393 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4394 /* syntax/typing.nit:760 */
4395 goto label2;
4396 } else {
4397 /* syntax/typing.nit:761 */
4398 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4399 /* ../lib/standard/collection/array.nit:24 */
4400 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4401 if (UNTAG_Bool(REGB2)) {
4402 } else {
4403 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4404 }
4405 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4406 /* syntax/typing.nit:761 */
4407 REGB1 = TAG_Int(1);
4408 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4409 if (UNTAG_Bool(REGB0)) {
4410 } else {
4411 /* ../lib/standard/kernel.nit:237 */
4412 REGB1 = TAG_Bool((REGB2)==(REGB1));
4413 /* syntax/typing.nit:761 */
4414 REGB0 = REGB1;
4415 }
4416 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4417 if (UNTAG_Bool(REGB0)) {
4418 /* syntax/typing.nit:762 */
4419 if (!once_value_9) {
4420 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4421 REGB0 = TAG_Int(62);
4422 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
4423 once_value_9 = fra.me.REG[5];
4424 register_static_object(&once_value_9);
4425 } else fra.me.REG[5] = once_value_9;
4426 fra.me.REG[5] = fra.me.REG[5];
4427 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4428 /* syntax/typing.nit:763 */
4429 goto label2;
4430 }
4431 }
4432 /* syntax/typing.nit:765 */
4433 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4434 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4435 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4436 if (UNTAG_Bool(REGB0)) {
4437 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 765);
4438 }
4439 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4440 fra.me.REG[3] = fra.me.REG[5];
4441 /* syntax/typing.nit:766 */
4442 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4443 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4444 if (UNTAG_Bool(REGB0)) {
4445 } else {
4446 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4447 if (UNTAG_Bool(REGB1)) {
4448 REGB1 = TAG_Bool(0);
4449 REGB0 = REGB1;
4450 } else {
4451 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4452 REGB0 = REGB1;
4453 }
4454 }
4455 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4456 if (UNTAG_Bool(REGB0)) {
4457 /* syntax/typing.nit:767 */
4458 if (!once_value_10) {
4459 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4460 REGB0 = TAG_Int(73);
4461 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
4462 once_value_10 = fra.me.REG[5];
4463 register_static_object(&once_value_10);
4464 } else fra.me.REG[5] = once_value_10;
4465 fra.me.REG[5] = fra.me.REG[5];
4466 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4467 /* syntax/typing.nit:768 */
4468 goto label2;
4469 }
4470 /* ../lib/standard/collection/array.nit:24 */
4471 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4472 if (UNTAG_Bool(REGB0)) {
4473 } else {
4474 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4475 }
4476 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4477 /* syntax/typing.nit:770 */
4478 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4479 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4480 if (UNTAG_Bool(REGB2)) {
4481 } else {
4482 /* ../lib/standard/kernel.nit:237 */
4483 REGB1 = TAG_Bool((REGB0)==(REGB1));
4484 /* syntax/typing.nit:770 */
4485 REGB2 = REGB1;
4486 }
4487 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4488 if (UNTAG_Bool(REGB2)) {
4489 /* syntax/typing.nit:771 */
4490 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4491 REGB1 = TAG_Int(1);
4492 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4493 if (UNTAG_Bool(REGB0)) {
4494 } else {
4495 /* ../lib/standard/kernel.nit:237 */
4496 REGB1 = TAG_Bool((REGB2)==(REGB1));
4497 /* syntax/typing.nit:771 */
4498 REGB0 = REGB1;
4499 }
4500 if (UNTAG_Bool(REGB0)) {
4501 /* syntax/typing.nit:772 */
4502 REGB0 = TAG_Int(7);
4503 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4504 if (!once_value_11) {
4505 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4506 REGB0 = TAG_Int(16);
4507 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4508 once_value_11 = fra.me.REG[4];
4509 register_static_object(&once_value_11);
4510 } else fra.me.REG[4] = once_value_11;
4511 fra.me.REG[4] = fra.me.REG[4];
4512 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4513 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4514 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4515 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4516 if (!once_value_12) {
4517 fra.me.REG[4] = BOX_NativeString(" variable ");
4518 REGB0 = TAG_Int(10);
4519 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4520 once_value_12 = fra.me.REG[4];
4521 register_static_object(&once_value_12);
4522 } else fra.me.REG[4] = once_value_12;
4523 fra.me.REG[4] = fra.me.REG[4];
4524 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4525 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4526 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4527 if (!once_value_13) {
4528 fra.me.REG[4] = BOX_NativeString(", found ");
4529 REGB0 = TAG_Int(8);
4530 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4531 once_value_13 = fra.me.REG[4];
4532 register_static_object(&once_value_13);
4533 } else fra.me.REG[4] = once_value_13;
4534 fra.me.REG[4] = fra.me.REG[4];
4535 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4536 /* ../lib/standard/collection/array.nit:24 */
4537 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4538 if (UNTAG_Bool(REGB0)) {
4539 } else {
4540 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4541 }
4542 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4543 /* syntax/typing.nit:772 */
4544 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4545 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4546 if (!once_value_14) {
4547 fra.me.REG[4] = BOX_NativeString(".");
4548 REGB0 = TAG_Int(1);
4549 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4550 once_value_14 = fra.me.REG[4];
4551 register_static_object(&once_value_14);
4552 } else fra.me.REG[4] = once_value_14;
4553 fra.me.REG[4] = fra.me.REG[4];
4554 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4555 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4556 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4557 } else {
4558 /* syntax/typing.nit:774 */
4559 REGB0 = TAG_Int(7);
4560 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4561 if (!once_value_15) {
4562 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4563 REGB0 = TAG_Int(16);
4564 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4565 once_value_15 = fra.me.REG[4];
4566 register_static_object(&once_value_15);
4567 } else fra.me.REG[4] = once_value_15;
4568 fra.me.REG[4] = fra.me.REG[4];
4569 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4570 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4571 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4573 if (!once_value_16) {
4574 fra.me.REG[4] = BOX_NativeString(" variables ");
4575 REGB0 = TAG_Int(11);
4576 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4577 once_value_16 = fra.me.REG[4];
4578 register_static_object(&once_value_16);
4579 } else fra.me.REG[4] = once_value_16;
4580 fra.me.REG[4] = fra.me.REG[4];
4581 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4582 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4583 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4584 if (!once_value_17) {
4585 fra.me.REG[4] = BOX_NativeString(", found ");
4586 REGB0 = TAG_Int(8);
4587 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4588 once_value_17 = fra.me.REG[4];
4589 register_static_object(&once_value_17);
4590 } else fra.me.REG[4] = once_value_17;
4591 fra.me.REG[4] = fra.me.REG[4];
4592 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4593 /* ../lib/standard/collection/array.nit:24 */
4594 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4595 if (UNTAG_Bool(REGB0)) {
4596 } else {
4597 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4598 }
4599 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4600 /* syntax/typing.nit:774 */
4601 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4603 if (!once_value_18) {
4604 fra.me.REG[4] = BOX_NativeString(".");
4605 REGB0 = TAG_Int(1);
4606 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
4607 once_value_18 = fra.me.REG[4];
4608 register_static_object(&once_value_18);
4609 } else fra.me.REG[4] = once_value_18;
4610 fra.me.REG[4] = fra.me.REG[4];
4611 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4612 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4613 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4614 }
4615 /* syntax/typing.nit:776 */
4616 goto label2;
4617 }
4618 /* syntax/typing.nit:780 */
4619 REGB0 = TAG_Int(0);
4620 /* ../lib/standard/collection/array.nit:24 */
4621 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4622 if (UNTAG_Bool(REGB1)) {
4623 } else {
4624 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4625 }
4626 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4627 /* ../lib/standard/kernel.nit:404 */
4628 while(1) {
4629 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4630 if (UNTAG_Bool(REGB2)) {
4631 } else {
4632 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4633 }
4634 /* ../lib/standard/kernel.nit:242 */
4635 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4636 /* ../lib/standard/kernel.nit:404 */
4637 if (UNTAG_Bool(REGB2)) {
4638 /* syntax/typing.nit:780 */
4639 REGB2 = REGB0;
4640 /* ../lib/standard/collection/array.nit:279 */
4641 fra.me.REG[5] = fra.me.REG[2];
4642 REGB3 = REGB2;
4643 /* ../lib/standard/collection/array.nit:281 */
4644 REGB4 = TAG_Int(0);
4645 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4646 if (UNTAG_Bool(REGB5)) {
4647 } else {
4648 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4649 }
4650 /* ../lib/standard/kernel.nit:243 */
4651 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4652 /* ../lib/standard/collection/array.nit:281 */
4653 if (UNTAG_Bool(REGB4)) {
4654 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4655 if (UNTAG_Bool(REGB4)) {
4656 } else {
4657 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
4658 }
4659 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4660 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4661 if (UNTAG_Bool(REGB5)) {
4662 } else {
4663 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4664 }
4665 /* ../lib/standard/kernel.nit:242 */
4666 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4667 } else {
4668 /* ../lib/standard/collection/array.nit:281 */
4669 REGB5 = TAG_Bool(0);
4670 REGB4 = REGB5;
4671 }
4672 if (UNTAG_Bool(REGB4)) {
4673 } else {
4674 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
4675 }
4676 /* ../lib/standard/collection/array.nit:282 */
4677 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4678 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4679 if (UNTAG_Bool(REGB4)) {
4680 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
4681 }
4682 /* ../lib/standard/collection/array.nit:725 */
4683 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4684 /* ../lib/standard/collection/array.nit:282 */
4685 goto label19;
4686 label19: while(0);
4687 /* syntax/typing.nit:781 */
4688 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4689 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4690 if (UNTAG_Bool(REGB2)) {
4691 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 781);
4692 }
4693 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4694 /* ../lib/standard/kernel.nit:406 */
4695 REGB2 = TAG_Int(1);
4696 /* ../lib/standard/kernel.nit:245 */
4697 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4698 /* ../lib/standard/kernel.nit:406 */
4699 REGB0 = REGB2;
4700 } else {
4701 /* ../lib/standard/kernel.nit:404 */
4702 goto label20;
4703 }
4704 }
4705 label20: while(0);
4706 label2: while(0);
4707 stack_frame_head = fra.me.prev;
4708 return;
4709 }
4710 void OC_syntax___typing___AForExpr___do_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4711 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4712 fun_t CREG[1];
4713 val_t tmp;
4714 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4715 fra.me.file = LOCATE_syntax___typing;
4716 fra.me.line = 0;
4717 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4718 fra.me.has_broke = 0;
4719 fra.me.REG_size = 2;
4720 fra.me.nitni_local_ref_head = NULL;
4721 fra.me.REG[0] = NIT_NULL;
4722 fra.me.REG[1] = NIT_NULL;
4723 fra.me.closure_ctx = closctx_param;
4724 fra.me.closure_funs = CREG;
4725 fra.me.REG[0] = p0;
4726 CREG[0] = clos_fun0;
4727 /* syntax/typing.nit:731 */
4728 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4729 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4730 /* syntax/typing.nit:732 */
4731 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4732 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4733 /* syntax/typing.nit:733 */
4734 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4735 stack_frame_head = fra.me.prev;
4736 return;
4737 }
4738 static const char LOCATE_syntax___typing___AAssertExpr___accept_typing[] = "typing::AAssertExpr::(typing::ANode::accept_typing)";
4739 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4740 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4741 val_t REGB0;
4742 val_t REGB1;
4743 val_t tmp;
4744 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4745 fra.me.file = LOCATE_syntax___typing;
4746 fra.me.line = 787;
4747 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4748 fra.me.has_broke = 0;
4749 fra.me.REG_size = 4;
4750 fra.me.nitni_local_ref_head = NULL;
4751 fra.me.REG[0] = NIT_NULL;
4752 fra.me.REG[1] = NIT_NULL;
4753 fra.me.REG[2] = NIT_NULL;
4754 fra.me.REG[3] = NIT_NULL;
4755 fra.me.REG[0] = p0;
4756 fra.me.REG[1] = p1;
4757 /* syntax/typing.nit:790 */
4758 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4759 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4760 /* syntax/typing.nit:791 */
4761 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4762 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4763 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4764 /* syntax/typing.nit:792 */
4765 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4766 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
4767 /* syntax/typing.nit:795 */
4768 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4769 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4770 if (UNTAG_Bool(REGB0)) {
4771 } else {
4772 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4773 if (UNTAG_Bool(REGB1)) {
4774 REGB1 = TAG_Bool(0);
4775 REGB0 = REGB1;
4776 } else {
4777 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4778 REGB0 = REGB1;
4779 }
4780 }
4781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4782 if (UNTAG_Bool(REGB0)) {
4783 /* syntax/typing.nit:796 */
4784 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4785 /* syntax/typing.nit:797 */
4786 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4787 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4788 /* syntax/typing.nit:798 */
4789 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4790 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4791 /* syntax/typing.nit:799 */
4792 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4793 }
4794 /* syntax/typing.nit:803 */
4795 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4796 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4797 /* syntax/typing.nit:804 */
4798 REGB0 = TAG_Bool(1);
4799 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4800 stack_frame_head = fra.me.prev;
4801 return;
4802 }
4803 static const char LOCATE_syntax___typing___AVarFormExpr___variable[] = "typing::AVarFormExpr::(syntax_base::AVarFormExpr::variable)";
4804 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4805 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4806 val_t REGB0;
4807 val_t tmp;
4808 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4809 fra.me.file = LOCATE_syntax___typing;
4810 fra.me.line = 810;
4811 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4812 fra.me.has_broke = 0;
4813 fra.me.REG_size = 2;
4814 fra.me.nitni_local_ref_head = NULL;
4815 fra.me.REG[0] = NIT_NULL;
4816 fra.me.REG[1] = NIT_NULL;
4817 fra.me.REG[0] = p0;
4818 /* syntax/typing.nit:810 */
4819 fra.me.REG[1] = fra.me.REG[0];
4820 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4821 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4822 if (UNTAG_Bool(REGB0)) {
4823 } else {
4824 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 810);
4825 }
4826 goto label1;
4827 label1: while(0);
4828 stack_frame_head = fra.me.prev;
4829 return fra.me.REG[1];
4830 }
4831 static const char LOCATE_syntax___typing___AVarExpr___its_variable[] = "typing::AVarExpr::(typing::AExpr::its_variable)";
4832 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4833 struct {struct stack_frame_t me;} fra;
4834 val_t tmp;
4835 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4836 fra.me.file = LOCATE_syntax___typing;
4837 fra.me.line = 814;
4838 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4839 fra.me.has_broke = 0;
4840 fra.me.REG_size = 1;
4841 fra.me.nitni_local_ref_head = NULL;
4842 fra.me.REG[0] = NIT_NULL;
4843 fra.me.REG[0] = p0;
4844 /* syntax/typing.nit:814 */
4845 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4846 goto label1;
4847 label1: while(0);
4848 stack_frame_head = fra.me.prev;
4849 return fra.me.REG[0];
4850 }
4851 static const char LOCATE_syntax___typing___AVarExpr___after_typing[] = "typing::AVarExpr::(typing::ANode::after_typing)";
4852 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4853 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4854 val_t REGB0;
4855 val_t REGB1;
4856 val_t tmp;
4857 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4858 fra.me.file = LOCATE_syntax___typing;
4859 fra.me.line = 816;
4860 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4861 fra.me.has_broke = 0;
4862 fra.me.REG_size = 4;
4863 fra.me.nitni_local_ref_head = NULL;
4864 fra.me.REG[0] = NIT_NULL;
4865 fra.me.REG[1] = NIT_NULL;
4866 fra.me.REG[2] = NIT_NULL;
4867 fra.me.REG[3] = NIT_NULL;
4868 fra.me.REG[0] = p0;
4869 fra.me.REG[1] = p1;
4870 /* syntax/typing.nit:818 */
4871 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4872 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4873 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4874 /* syntax/typing.nit:819 */
4875 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4876 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4877 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4878 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4879 /* syntax/typing.nit:820 */
4880 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4881 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4882 if (UNTAG_Bool(REGB0)) {
4883 } else {
4884 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4885 if (UNTAG_Bool(REGB1)) {
4886 REGB1 = TAG_Bool(0);
4887 REGB0 = REGB1;
4888 } else {
4889 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4890 REGB0 = REGB1;
4891 }
4892 }
4893 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4894 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4895 stack_frame_head = fra.me.prev;
4896 return;
4897 }
4898 static const char LOCATE_syntax___typing___AVarAssignExpr___after_typing[] = "typing::AVarAssignExpr::(typing::ANode::after_typing)";
4899 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4900 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4901 val_t REGB0;
4902 val_t REGB1;
4903 val_t tmp;
4904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4905 fra.me.file = LOCATE_syntax___typing;
4906 fra.me.line = 825;
4907 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4908 fra.me.has_broke = 0;
4909 fra.me.REG_size = 5;
4910 fra.me.nitni_local_ref_head = NULL;
4911 fra.me.REG[0] = NIT_NULL;
4912 fra.me.REG[1] = NIT_NULL;
4913 fra.me.REG[2] = NIT_NULL;
4914 fra.me.REG[3] = NIT_NULL;
4915 fra.me.REG[4] = NIT_NULL;
4916 fra.me.REG[0] = p0;
4917 fra.me.REG[1] = p1;
4918 /* syntax/typing.nit:827 */
4919 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4920 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4921 /* syntax/typing.nit:830 */
4922 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4923 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4924 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4925 /* syntax/typing.nit:831 */
4926 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4927 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4928 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4929 if (UNTAG_Bool(REGB0)) {
4930 goto label1;
4931 }
4932 /* syntax/typing.nit:832 */
4933 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4934 if (UNTAG_Bool(REGB0)) {
4935 } else {
4936 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4937 if (UNTAG_Bool(REGB1)) {
4938 REGB1 = TAG_Bool(0);
4939 REGB0 = REGB1;
4940 } else {
4941 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4942 REGB0 = REGB1;
4943 }
4944 }
4945 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4946 if (UNTAG_Bool(REGB0)) {
4947 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4948 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4949 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4950 } else {
4951 REGB1 = TAG_Bool(0);
4952 REGB0 = REGB1;
4953 }
4954 if (UNTAG_Bool(REGB0)) {
4955 goto label1;
4956 }
4957 /* syntax/typing.nit:835 */
4958 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4959 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4960 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4961 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4962 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
4963 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4964 /* syntax/typing.nit:837 */
4965 REGB0 = TAG_Bool(1);
4966 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4967 label1: while(0);
4968 stack_frame_head = fra.me.prev;
4969 return;
4970 }
4971 static const char LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing[] = "typing::AReassignFormExpr::do_rvalue_typing";
4972 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4973 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4974 val_t REGB0;
4975 val_t REGB1;
4976 val_t tmp;
4977 static val_t once_value_2; /* Once value */
4978 static val_t once_value_3; /* Once value */
4979 static val_t once_value_4; /* Once value */
4980 static val_t once_value_5; /* Once value */
4981 static val_t once_value_6; /* Once value */
4982 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4983 fra.me.file = LOCATE_syntax___typing;
4984 fra.me.line = 842;
4985 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4986 fra.me.has_broke = 0;
4987 fra.me.REG_size = 8;
4988 fra.me.nitni_local_ref_head = NULL;
4989 fra.me.REG[0] = NIT_NULL;
4990 fra.me.REG[1] = NIT_NULL;
4991 fra.me.REG[2] = NIT_NULL;
4992 fra.me.REG[3] = NIT_NULL;
4993 fra.me.REG[4] = NIT_NULL;
4994 fra.me.REG[5] = NIT_NULL;
4995 fra.me.REG[6] = NIT_NULL;
4996 fra.me.REG[7] = NIT_NULL;
4997 fra.me.REG[0] = p0;
4998 fra.me.REG[1] = p1;
4999 fra.me.REG[2] = p2;
5000 /* syntax/typing.nit:847 */
5001 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5002 if (UNTAG_Bool(REGB0)) {
5003 } else {
5004 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5005 if (UNTAG_Bool(REGB1)) {
5006 REGB1 = TAG_Bool(0);
5007 REGB0 = REGB1;
5008 } else {
5009 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5010 REGB0 = REGB1;
5011 }
5012 }
5013 if (UNTAG_Bool(REGB0)) {
5014 /* syntax/typing.nit:848 */
5015 fra.me.REG[3] = NIT_NULL;
5016 goto label1;
5017 }
5018 /* syntax/typing.nit:850 */
5019 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
5020 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
5021 /* syntax/typing.nit:851 */
5022 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
5023 if (UNTAG_Bool(REGB0)) {
5024 /* syntax/typing.nit:852 */
5025 REGB0 = TAG_Int(3);
5026 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5027 if (!once_value_2) {
5028 fra.me.REG[6] = BOX_NativeString("Error: Method '");
5029 REGB0 = TAG_Int(15);
5030 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
5031 once_value_2 = fra.me.REG[6];
5032 register_static_object(&once_value_2);
5033 } else fra.me.REG[6] = once_value_2;
5034 fra.me.REG[6] = fra.me.REG[6];
5035 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5036 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5037 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5038 if (!once_value_3) {
5039 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
5040 REGB0 = TAG_Int(17);
5041 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
5042 once_value_3 = fra.me.REG[6];
5043 register_static_object(&once_value_3);
5044 } else fra.me.REG[6] = once_value_3;
5045 fra.me.REG[6] = fra.me.REG[6];
5046 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5047 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5048 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5049 /* syntax/typing.nit:853 */
5050 fra.me.REG[3] = NIT_NULL;
5051 goto label1;
5052 }
5053 /* syntax/typing.nit:855 */
5054 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5055 if (UNTAG_Bool(REGB0)) {
5056 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 855);
5057 }
5058 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
5059 /* syntax/typing.nit:856 */
5060 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5061 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5062 if (UNTAG_Bool(REGB0)) {
5063 /* syntax/typing.nit:857 */
5064 REGB0 = TAG_Int(5);
5065 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5066 if (!once_value_4) {
5067 fra.me.REG[7] = BOX_NativeString("Error: Method '");
5068 REGB0 = TAG_Int(15);
5069 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
5070 once_value_4 = fra.me.REG[7];
5071 register_static_object(&once_value_4);
5072 } else fra.me.REG[7] = once_value_4;
5073 fra.me.REG[7] = fra.me.REG[7];
5074 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5075 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5076 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5077 if (!once_value_5) {
5078 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
5079 REGB0 = TAG_Int(20);
5080 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
5081 once_value_5 = fra.me.REG[7];
5082 register_static_object(&once_value_5);
5083 } else fra.me.REG[7] = once_value_5;
5084 fra.me.REG[7] = fra.me.REG[7];
5085 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5086 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5088 if (!once_value_6) {
5089 fra.me.REG[7] = BOX_NativeString(".");
5090 REGB0 = TAG_Int(1);
5091 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
5092 once_value_6 = fra.me.REG[7];
5093 register_static_object(&once_value_6);
5094 } else fra.me.REG[7] = once_value_6;
5095 fra.me.REG[7] = fra.me.REG[7];
5096 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5097 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5098 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5099 /* syntax/typing.nit:858 */
5100 fra.me.REG[3] = NIT_NULL;
5101 goto label1;
5102 }
5103 /* syntax/typing.nit:860 */
5104 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5105 /* syntax/typing.nit:861 */
5106 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5107 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5108 REGB0 = TAG_Bool(0);
5109 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0], fra.me.REG[6], REGB0);
5110 /* syntax/typing.nit:862 */
5111 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5112 /* syntax/typing.nit:863 */
5113 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
5114 /* syntax/typing.nit:864 */
5115 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5116 REGB0 = TAG_Int(0);
5117 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
5118 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
5119 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5120 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5121 if (UNTAG_Bool(REGB0)) {
5122 fra.me.REG[3] = NIT_NULL;
5123 goto label1;
5124 }
5125 /* syntax/typing.nit:865 */
5126 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
5127 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5128 if (UNTAG_Bool(REGB0)) {
5129 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 865);
5130 }
5131 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
5132 fra.me.REG[3] = fra.me.REG[2];
5133 goto label1;
5134 label1: while(0);
5135 stack_frame_head = fra.me.prev;
5136 return fra.me.REG[3];
5137 }
5138 static const char LOCATE_syntax___typing___AReassignFormExpr___assign_method[] = "typing::AReassignFormExpr::(syntax_base::AReassignFormExpr::assign_method)";
5139 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
5140 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5141 val_t REGB0;
5142 val_t tmp;
5143 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5144 fra.me.file = LOCATE_syntax___typing;
5145 fra.me.line = 868;
5146 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
5147 fra.me.has_broke = 0;
5148 fra.me.REG_size = 2;
5149 fra.me.nitni_local_ref_head = NULL;
5150 fra.me.REG[0] = NIT_NULL;
5151 fra.me.REG[1] = NIT_NULL;
5152 fra.me.REG[0] = p0;
5153 /* syntax/typing.nit:868 */
5154 fra.me.REG[1] = fra.me.REG[0];
5155 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
5156 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5157 if (UNTAG_Bool(REGB0)) {
5158 } else {
5159 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 868);
5160 }
5161 goto label1;
5162 label1: while(0);
5163 stack_frame_head = fra.me.prev;
5164 return fra.me.REG[1];
5165 }
5166 static const char LOCATE_syntax___typing___AVarReassignExpr___after_typing[] = "typing::AVarReassignExpr::(typing::ANode::after_typing)";
5167 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
5168 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5169 val_t REGB0;
5170 val_t REGB1;
5171 val_t tmp;
5172 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5173 fra.me.file = LOCATE_syntax___typing;
5174 fra.me.line = 873;
5175 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
5176 fra.me.has_broke = 0;
5177 fra.me.REG_size = 5;
5178 fra.me.nitni_local_ref_head = NULL;
5179 fra.me.REG[0] = NIT_NULL;
5180 fra.me.REG[1] = NIT_NULL;
5181 fra.me.REG[2] = NIT_NULL;
5182 fra.me.REG[3] = NIT_NULL;
5183 fra.me.REG[4] = NIT_NULL;
5184 fra.me.REG[0] = p0;
5185 fra.me.REG[1] = p1;
5186 /* syntax/typing.nit:875 */
5187 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5188 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5189 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
5190 /* syntax/typing.nit:876 */
5191 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5192 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5193 /* syntax/typing.nit:877 */
5194 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5195 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5196 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5197 /* syntax/typing.nit:878 */
5198 fra.me.REG[2] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5199 /* syntax/typing.nit:879 */
5200 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5201 if (UNTAG_Bool(REGB0)) {
5202 } else {
5203 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5204 if (UNTAG_Bool(REGB1)) {
5205 REGB1 = TAG_Bool(0);
5206 REGB0 = REGB1;
5207 } else {
5208 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5209 REGB0 = REGB1;
5210 }
5211 }
5212 if (UNTAG_Bool(REGB0)) {
5213 goto label1;
5214 }
5215 /* syntax/typing.nit:882 */
5216 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5217 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5218 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5219 /* syntax/typing.nit:883 */
5220 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5221 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5222 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5223 if (UNTAG_Bool(REGB0)) {
5224 goto label1;
5225 }
5226 /* syntax/typing.nit:884 */
5227 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5228 if (UNTAG_Bool(REGB0)) {
5229 } else {
5230 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5231 if (UNTAG_Bool(REGB1)) {
5232 REGB1 = TAG_Bool(0);
5233 REGB0 = REGB1;
5234 } else {
5235 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5236 REGB0 = REGB1;
5237 }
5238 }
5239 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5240 if (UNTAG_Bool(REGB0)) {
5241 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5242 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
5243 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5244 } else {
5245 REGB1 = TAG_Bool(0);
5246 REGB0 = REGB1;
5247 }
5248 if (UNTAG_Bool(REGB0)) {
5249 goto label1;
5250 }
5251 /* syntax/typing.nit:887 */
5252 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5253 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5254 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
5255 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5256 /* syntax/typing.nit:889 */
5257 REGB0 = TAG_Bool(1);
5258 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5259 label1: while(0);
5260 stack_frame_head = fra.me.prev;
5261 return;
5262 }
5263 static const char LOCATE_syntax___typing___AAssignOp___method_name[] = "typing::AAssignOp::method_name";
5264 val_t syntax___typing___AAssignOp___method_name(val_t p0){
5265 struct {struct stack_frame_t me;} fra;
5266 val_t tmp;
5267 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5268 fra.me.file = LOCATE_syntax___typing;
5269 fra.me.line = 894;
5270 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
5271 fra.me.has_broke = 0;
5272 fra.me.REG_size = 0;
5273 fra.me.nitni_local_ref_head = NULL;
5274 /* syntax/typing.nit:894 */
5275 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 894);
5276 stack_frame_head = fra.me.prev;
5277 return NIT_NULL;
5278 }
5279 static const char LOCATE_syntax___typing___APlusAssignOp___method_name[] = "typing::APlusAssignOp::(typing::AAssignOp::method_name)";
5280 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
5281 struct {struct stack_frame_t me;} fra;
5282 val_t REGB0;
5283 val_t tmp;
5284 static val_t once_value_1; /* Once value */
5285 static val_t once_value_2; /* Once value */
5286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5287 fra.me.file = LOCATE_syntax___typing;
5288 fra.me.line = 897;
5289 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
5290 fra.me.has_broke = 0;
5291 fra.me.REG_size = 1;
5292 fra.me.nitni_local_ref_head = NULL;
5293 fra.me.REG[0] = NIT_NULL;
5294 fra.me.REG[0] = p0;
5295 /* syntax/typing.nit:897 */
5296 if (!once_value_1) {
5297 if (!once_value_2) {
5298 fra.me.REG[0] = BOX_NativeString("+");
5299 REGB0 = TAG_Int(1);
5300 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
5301 once_value_2 = fra.me.REG[0];
5302 register_static_object(&once_value_2);
5303 } else fra.me.REG[0] = once_value_2;
5304 fra.me.REG[0] = fra.me.REG[0];
5305 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5306 once_value_1 = fra.me.REG[0];
5307 register_static_object(&once_value_1);
5308 } else fra.me.REG[0] = once_value_1;
5309 fra.me.REG[0] = fra.me.REG[0];
5310 goto label3;
5311 label3: while(0);
5312 stack_frame_head = fra.me.prev;
5313 return fra.me.REG[0];
5314 }
5315 static const char LOCATE_syntax___typing___AMinusAssignOp___method_name[] = "typing::AMinusAssignOp::(typing::AAssignOp::method_name)";
5316 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
5317 struct {struct stack_frame_t me;} fra;
5318 val_t REGB0;
5319 val_t tmp;
5320 static val_t once_value_1; /* Once value */
5321 static val_t once_value_2; /* Once value */
5322 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5323 fra.me.file = LOCATE_syntax___typing;
5324 fra.me.line = 900;
5325 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
5326 fra.me.has_broke = 0;
5327 fra.me.REG_size = 1;
5328 fra.me.nitni_local_ref_head = NULL;
5329 fra.me.REG[0] = NIT_NULL;
5330 fra.me.REG[0] = p0;
5331 /* syntax/typing.nit:900 */
5332 if (!once_value_1) {
5333 if (!once_value_2) {
5334 fra.me.REG[0] = BOX_NativeString("-");
5335 REGB0 = TAG_Int(1);
5336 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
5337 once_value_2 = fra.me.REG[0];
5338 register_static_object(&once_value_2);
5339 } else fra.me.REG[0] = once_value_2;
5340 fra.me.REG[0] = fra.me.REG[0];
5341 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5342 once_value_1 = fra.me.REG[0];
5343 register_static_object(&once_value_1);
5344 } else fra.me.REG[0] = once_value_1;
5345 fra.me.REG[0] = fra.me.REG[0];
5346 goto label3;
5347 label3: while(0);
5348 stack_frame_head = fra.me.prev;
5349 return fra.me.REG[0];
5350 }
5351 static const char LOCATE_syntax___typing___ASelfExpr___variable[] = "typing::ASelfExpr::(syntax_base::ASelfExpr::variable)";
5352 val_t syntax___typing___ASelfExpr___variable(val_t p0){
5353 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5354 val_t REGB0;
5355 val_t tmp;
5356 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5357 fra.me.file = LOCATE_syntax___typing;
5358 fra.me.line = 905;
5359 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
5360 fra.me.has_broke = 0;
5361 fra.me.REG_size = 2;
5362 fra.me.nitni_local_ref_head = NULL;
5363 fra.me.REG[0] = NIT_NULL;
5364 fra.me.REG[1] = NIT_NULL;
5365 fra.me.REG[0] = p0;
5366 /* syntax/typing.nit:905 */
5367 fra.me.REG[1] = fra.me.REG[0];
5368 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5369 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5370 if (UNTAG_Bool(REGB0)) {
5371 } else {
5372 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 905);
5373 }
5374 goto label1;
5375 label1: while(0);
5376 stack_frame_head = fra.me.prev;
5377 return fra.me.REG[1];
5378 }
5379 static const char LOCATE_syntax___typing___ASelfExpr___its_variable[] = "typing::ASelfExpr::(typing::AExpr::its_variable)";
5380 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5381 struct {struct stack_frame_t me;} fra;
5382 val_t tmp;
5383 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5384 fra.me.file = LOCATE_syntax___typing;
5385 fra.me.line = 907;
5386 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5387 fra.me.has_broke = 0;
5388 fra.me.REG_size = 1;
5389 fra.me.nitni_local_ref_head = NULL;
5390 fra.me.REG[0] = NIT_NULL;
5391 fra.me.REG[0] = p0;
5392 /* syntax/typing.nit:907 */
5393 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5394 goto label1;
5395 label1: while(0);
5396 stack_frame_head = fra.me.prev;
5397 return fra.me.REG[0];
5398 }
5399 static const char LOCATE_syntax___typing___ASelfExpr___after_typing[] = "typing::ASelfExpr::(typing::ANode::after_typing)";
5400 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5401 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5402 val_t REGB0;
5403 val_t tmp;
5404 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5405 fra.me.file = LOCATE_syntax___typing;
5406 fra.me.line = 909;
5407 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5408 fra.me.has_broke = 0;
5409 fra.me.REG_size = 3;
5410 fra.me.nitni_local_ref_head = NULL;
5411 fra.me.REG[0] = NIT_NULL;
5412 fra.me.REG[1] = NIT_NULL;
5413 fra.me.REG[2] = NIT_NULL;
5414 fra.me.REG[0] = p0;
5415 fra.me.REG[1] = p1;
5416 /* syntax/typing.nit:911 */
5417 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5418 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5419 /* syntax/typing.nit:912 */
5420 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5421 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5422 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5423 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5424 /* syntax/typing.nit:913 */
5425 REGB0 = TAG_Bool(1);
5426 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5427 stack_frame_head = fra.me.prev;
5428 return;
5429 }
5430 static const char LOCATE_syntax___typing___ASelfExpr___is_self[] = "typing::ASelfExpr::(typing::AExpr::is_self)";
5431 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5432 struct {struct stack_frame_t me;} fra;
5433 val_t REGB0;
5434 val_t tmp;
5435 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5436 fra.me.file = LOCATE_syntax___typing;
5437 fra.me.line = 916;
5438 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5439 fra.me.has_broke = 0;
5440 fra.me.REG_size = 1;
5441 fra.me.nitni_local_ref_head = NULL;
5442 fra.me.REG[0] = NIT_NULL;
5443 fra.me.REG[0] = p0;
5444 /* syntax/typing.nit:916 */
5445 REGB0 = TAG_Bool(1);
5446 goto label1;
5447 label1: while(0);
5448 stack_frame_head = fra.me.prev;
5449 return REGB0;
5450 }
5451 static const char LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self[] = "typing::AImplicitSelfExpr::(typing::AExpr::is_implicit_self)";
5452 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5453 struct {struct stack_frame_t me;} fra;
5454 val_t REGB0;
5455 val_t tmp;
5456 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5457 fra.me.file = LOCATE_syntax___typing;
5458 fra.me.line = 920;
5459 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5460 fra.me.has_broke = 0;
5461 fra.me.REG_size = 1;
5462 fra.me.nitni_local_ref_head = NULL;
5463 fra.me.REG[0] = NIT_NULL;
5464 fra.me.REG[0] = p0;
5465 /* syntax/typing.nit:920 */
5466 REGB0 = TAG_Bool(1);
5467 goto label1;
5468 label1: while(0);
5469 stack_frame_head = fra.me.prev;
5470 return REGB0;
5471 }
5472 static const char LOCATE_syntax___typing___AIfexprExpr___accept_typing[] = "typing::AIfexprExpr::(typing::ANode::accept_typing)";
5473 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5474 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5475 val_t REGB0;
5476 val_t REGB1;
5477 val_t tmp;
5478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5479 fra.me.file = LOCATE_syntax___typing;
5480 fra.me.line = 924;
5481 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5482 fra.me.has_broke = 0;
5483 fra.me.REG_size = 5;
5484 fra.me.nitni_local_ref_head = NULL;
5485 fra.me.REG[0] = NIT_NULL;
5486 fra.me.REG[1] = NIT_NULL;
5487 fra.me.REG[2] = NIT_NULL;
5488 fra.me.REG[3] = NIT_NULL;
5489 fra.me.REG[4] = NIT_NULL;
5490 fra.me.REG[0] = p0;
5491 fra.me.REG[1] = p1;
5492 /* syntax/typing.nit:926 */
5493 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5494 /* syntax/typing.nit:929 */
5495 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5496 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5497 /* syntax/typing.nit:930 */
5498 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5499 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5500 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5501 /* syntax/typing.nit:933 */
5502 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5503 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5504 /* syntax/typing.nit:936 */
5505 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5506 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5507 /* syntax/typing.nit:939 */
5508 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5509 /* syntax/typing.nit:942 */
5510 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5511 /* syntax/typing.nit:943 */
5512 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5513 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5514 /* syntax/typing.nit:946 */
5515 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5516 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5517 /* syntax/typing.nit:949 */
5518 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5519 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5520 fra.me.REG[3] = CALL_syntax___flow___FlowContext___merge_reash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
5521 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5522 /* syntax/typing.nit:951 */
5523 REGB0 = TAG_Int(2);
5524 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5525 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5526 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5527 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5528 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5529 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[3]);
5530 /* syntax/typing.nit:952 */
5531 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5532 if (UNTAG_Bool(REGB0)) {
5533 } else {
5534 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5535 if (UNTAG_Bool(REGB1)) {
5536 REGB1 = TAG_Bool(0);
5537 REGB0 = REGB1;
5538 } else {
5539 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5540 REGB0 = REGB1;
5541 }
5542 }
5543 if (UNTAG_Bool(REGB0)) {
5544 goto label1;
5545 }
5546 /* syntax/typing.nit:954 */
5547 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5548 /* syntax/typing.nit:955 */
5549 REGB0 = TAG_Bool(1);
5550 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5551 label1: while(0);
5552 stack_frame_head = fra.me.prev;
5553 return;
5554 }
5555 static const char LOCATE_syntax___typing___ABoolExpr___after_typing[] = "typing::ABoolExpr::(typing::ANode::after_typing)";
5556 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5557 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5558 val_t REGB0;
5559 val_t tmp;
5560 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5561 fra.me.file = LOCATE_syntax___typing;
5562 fra.me.line = 960;
5563 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5564 fra.me.has_broke = 0;
5565 fra.me.REG_size = 2;
5566 fra.me.nitni_local_ref_head = NULL;
5567 fra.me.REG[0] = NIT_NULL;
5568 fra.me.REG[1] = NIT_NULL;
5569 fra.me.REG[0] = p0;
5570 fra.me.REG[1] = p1;
5571 /* syntax/typing.nit:962 */
5572 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5573 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5574 /* syntax/typing.nit:963 */
5575 REGB0 = TAG_Bool(1);
5576 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5577 stack_frame_head = fra.me.prev;
5578 return;
5579 }
5580 static const char LOCATE_syntax___typing___AOrExpr___accept_typing[] = "typing::AOrExpr::(typing::ANode::accept_typing)";
5581 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5582 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5583 val_t REGB0;
5584 val_t REGB1;
5585 val_t tmp;
5586 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5587 fra.me.file = LOCATE_syntax___typing;
5588 fra.me.line = 968;
5589 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5590 fra.me.has_broke = 0;
5591 fra.me.REG_size = 5;
5592 fra.me.nitni_local_ref_head = NULL;
5593 fra.me.REG[0] = NIT_NULL;
5594 fra.me.REG[1] = NIT_NULL;
5595 fra.me.REG[2] = NIT_NULL;
5596 fra.me.REG[3] = NIT_NULL;
5597 fra.me.REG[4] = NIT_NULL;
5598 fra.me.REG[0] = p0;
5599 fra.me.REG[1] = p1;
5600 /* syntax/typing.nit:970 */
5601 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5602 /* syntax/typing.nit:971 */
5603 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5604 /* syntax/typing.nit:972 */
5605 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5606 /* syntax/typing.nit:975 */
5607 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5608 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5609 /* syntax/typing.nit:978 */
5610 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5611 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5612 /* syntax/typing.nit:981 */
5613 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5614 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5615 /* syntax/typing.nit:982 */
5616 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5617 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5618 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5619 if (UNTAG_Bool(REGB0)) {
5620 } else {
5621 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5622 if (UNTAG_Bool(REGB1)) {
5623 REGB1 = TAG_Bool(0);
5624 REGB0 = REGB1;
5625 } else {
5626 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5627 REGB0 = REGB1;
5628 }
5629 }
5630 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5631 if (UNTAG_Bool(REGB0)) {
5632 /* syntax/typing.nit:983 */
5633 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5634 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5635 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5636 } else {
5637 /* syntax/typing.nit:985 */
5638 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5639 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5640 }
5641 /* syntax/typing.nit:988 */
5642 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5643 /* syntax/typing.nit:990 */
5644 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5645 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5646 /* syntax/typing.nit:991 */
5647 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5648 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5649 /* syntax/typing.nit:992 */
5650 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5651 /* syntax/typing.nit:993 */
5652 REGB0 = TAG_Bool(1);
5653 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5654 stack_frame_head = fra.me.prev;
5655 return;
5656 }
5657 static const char LOCATE_syntax___typing___AAndExpr___accept_typing[] = "typing::AAndExpr::(typing::ANode::accept_typing)";
5658 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5659 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5660 val_t REGB0;
5661 val_t REGB1;
5662 val_t tmp;
5663 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5664 fra.me.file = LOCATE_syntax___typing;
5665 fra.me.line = 998;
5666 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5667 fra.me.has_broke = 0;
5668 fra.me.REG_size = 5;
5669 fra.me.nitni_local_ref_head = NULL;
5670 fra.me.REG[0] = NIT_NULL;
5671 fra.me.REG[1] = NIT_NULL;
5672 fra.me.REG[2] = NIT_NULL;
5673 fra.me.REG[3] = NIT_NULL;
5674 fra.me.REG[4] = NIT_NULL;
5675 fra.me.REG[0] = p0;
5676 fra.me.REG[1] = p1;
5677 /* syntax/typing.nit:1000 */
5678 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5679 /* syntax/typing.nit:1001 */
5680 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5681 /* syntax/typing.nit:1004 */
5682 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5683 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5684 /* syntax/typing.nit:1007 */
5685 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5686 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5687 /* syntax/typing.nit:1010 */
5688 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5689 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5690 /* syntax/typing.nit:1011 */
5691 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5692 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5693 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5694 if (UNTAG_Bool(REGB0)) {
5695 } else {
5696 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5697 if (UNTAG_Bool(REGB1)) {
5698 REGB1 = TAG_Bool(0);
5699 REGB0 = REGB1;
5700 } else {
5701 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5702 REGB0 = REGB1;
5703 }
5704 }
5705 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5706 if (UNTAG_Bool(REGB0)) {
5707 /* syntax/typing.nit:1012 */
5708 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5709 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5710 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5711 } else {
5712 /* syntax/typing.nit:1014 */
5713 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5714 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5715 }
5716 /* syntax/typing.nit:1017 */
5717 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5718 /* syntax/typing.nit:1019 */
5719 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5720 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5721 /* syntax/typing.nit:1020 */
5722 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5723 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5724 /* syntax/typing.nit:1021 */
5725 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5726 /* syntax/typing.nit:1022 */
5727 REGB0 = TAG_Bool(1);
5728 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5729 stack_frame_head = fra.me.prev;
5730 return;
5731 }
5732 static const char LOCATE_syntax___typing___ANotExpr___after_typing[] = "typing::ANotExpr::(typing::ANode::after_typing)";
5733 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5734 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5735 val_t REGB0;
5736 val_t tmp;
5737 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5738 fra.me.file = LOCATE_syntax___typing;
5739 fra.me.line = 1027;
5740 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5741 fra.me.has_broke = 0;
5742 fra.me.REG_size = 4;
5743 fra.me.nitni_local_ref_head = NULL;
5744 fra.me.REG[0] = NIT_NULL;
5745 fra.me.REG[1] = NIT_NULL;
5746 fra.me.REG[2] = NIT_NULL;
5747 fra.me.REG[3] = NIT_NULL;
5748 fra.me.REG[0] = p0;
5749 fra.me.REG[1] = p1;
5750 /* syntax/typing.nit:1029 */
5751 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5752 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5753 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5754 /* syntax/typing.nit:1032 */
5755 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5756 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5757 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5758 /* syntax/typing.nit:1033 */
5759 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5760 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5761 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5762 /* syntax/typing.nit:1035 */
5763 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5764 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5765 /* syntax/typing.nit:1036 */
5766 REGB0 = TAG_Bool(1);
5767 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5768 stack_frame_head = fra.me.prev;
5769 return;
5770 }
5771 static const char LOCATE_syntax___typing___AOrElseExpr___after_typing[] = "typing::AOrElseExpr::(typing::ANode::after_typing)";
5772 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5773 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5774 val_t REGB0;
5775 val_t REGB1;
5776 val_t tmp;
5777 static val_t once_value_1; /* Once value */
5778 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5779 fra.me.file = LOCATE_syntax___typing;
5780 fra.me.line = 1041;
5781 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5782 fra.me.has_broke = 0;
5783 fra.me.REG_size = 7;
5784 fra.me.nitni_local_ref_head = NULL;
5785 fra.me.REG[0] = NIT_NULL;
5786 fra.me.REG[1] = NIT_NULL;
5787 fra.me.REG[2] = NIT_NULL;
5788 fra.me.REG[3] = NIT_NULL;
5789 fra.me.REG[4] = NIT_NULL;
5790 fra.me.REG[5] = NIT_NULL;
5791 fra.me.REG[6] = NIT_NULL;
5792 fra.me.REG[0] = p0;
5793 fra.me.REG[1] = p1;
5794 /* syntax/typing.nit:1043 */
5795 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5796 /* syntax/typing.nit:1046 */
5797 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5798 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5799 /* syntax/typing.nit:1047 */
5800 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5801 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5802 /* syntax/typing.nit:1050 */
5803 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5804 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5805 /* syntax/typing.nit:1051 */
5806 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5807 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5808 if (UNTAG_Bool(REGB0)) {
5809 /* syntax/typing.nit:1052 */
5810 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5811 if (!once_value_1) {
5812 fra.me.REG[5] = BOX_NativeString("Warning: left operand of a 'or else' is not a nullable type.");
5813 REGB0 = TAG_Int(60);
5814 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
5815 once_value_1 = fra.me.REG[5];
5816 register_static_object(&once_value_1);
5817 } else fra.me.REG[5] = once_value_1;
5818 fra.me.REG[5] = fra.me.REG[5];
5819 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5820 } else {
5821 /* syntax/typing.nit:1054 */
5822 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5823 fra.me.REG[3] = fra.me.REG[5];
5824 }
5825 /* syntax/typing.nit:1058 */
5826 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5827 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5828 /* syntax/typing.nit:1059 */
5829 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5830 if (UNTAG_Bool(REGB0)) {
5831 } else {
5832 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5833 if (UNTAG_Bool(REGB1)) {
5834 REGB1 = TAG_Bool(0);
5835 REGB0 = REGB1;
5836 } else {
5837 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5838 REGB0 = REGB1;
5839 }
5840 }
5841 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5842 if (UNTAG_Bool(REGB0)) {
5843 /* syntax/typing.nit:1060 */
5844 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5845 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5846 CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[5], fra.me.REG[6]);
5847 }
5848 /* syntax/typing.nit:1064 */
5849 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5850 CALL_parser___parser_nodes___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5851 /* syntax/typing.nit:1065 */
5852 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5853 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5854 /* syntax/typing.nit:1068 */
5855 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5856 /* syntax/typing.nit:1071 */
5857 REGB0 = TAG_Int(1);
5858 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5859 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5860 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5861 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
5862 /* syntax/typing.nit:1072 */
5863 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5864 if (UNTAG_Bool(REGB0)) {
5865 } else {
5866 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5867 if (UNTAG_Bool(REGB1)) {
5868 REGB1 = TAG_Bool(0);
5869 REGB0 = REGB1;
5870 } else {
5871 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5872 REGB0 = REGB1;
5873 }
5874 }
5875 if (UNTAG_Bool(REGB0)) {
5876 goto label2;
5877 }
5878 /* syntax/typing.nit:1074 */
5879 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5880 /* syntax/typing.nit:1075 */
5881 REGB0 = TAG_Bool(1);
5882 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5883 label2: while(0);
5884 stack_frame_head = fra.me.prev;
5885 return;
5886 }
5887 static const char LOCATE_syntax___typing___AIntExpr___after_typing[] = "typing::AIntExpr::(typing::ANode::after_typing)";
5888 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5889 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5890 val_t REGB0;
5891 val_t tmp;
5892 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5893 fra.me.file = LOCATE_syntax___typing;
5894 fra.me.line = 1080;
5895 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5896 fra.me.has_broke = 0;
5897 fra.me.REG_size = 2;
5898 fra.me.nitni_local_ref_head = NULL;
5899 fra.me.REG[0] = NIT_NULL;
5900 fra.me.REG[1] = NIT_NULL;
5901 fra.me.REG[0] = p0;
5902 fra.me.REG[1] = p1;
5903 /* syntax/typing.nit:1082 */
5904 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5905 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5906 /* syntax/typing.nit:1083 */
5907 REGB0 = TAG_Bool(1);
5908 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5909 stack_frame_head = fra.me.prev;
5910 return;
5911 }
5912 static const char LOCATE_syntax___typing___AFloatExpr___after_typing[] = "typing::AFloatExpr::(typing::ANode::after_typing)";
5913 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5914 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5915 val_t REGB0;
5916 val_t tmp;
5917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5918 fra.me.file = LOCATE_syntax___typing;
5919 fra.me.line = 1088;
5920 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5921 fra.me.has_broke = 0;
5922 fra.me.REG_size = 2;
5923 fra.me.nitni_local_ref_head = NULL;
5924 fra.me.REG[0] = NIT_NULL;
5925 fra.me.REG[1] = NIT_NULL;
5926 fra.me.REG[0] = p0;
5927 fra.me.REG[1] = p1;
5928 /* syntax/typing.nit:1090 */
5929 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5930 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5931 /* syntax/typing.nit:1091 */
5932 REGB0 = TAG_Bool(1);
5933 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5934 stack_frame_head = fra.me.prev;
5935 return;
5936 }
5937 static const char LOCATE_syntax___typing___ACharExpr___after_typing[] = "typing::ACharExpr::(typing::ANode::after_typing)";
5938 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5939 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5940 val_t REGB0;
5941 val_t tmp;
5942 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5943 fra.me.file = LOCATE_syntax___typing;
5944 fra.me.line = 1096;
5945 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5946 fra.me.has_broke = 0;
5947 fra.me.REG_size = 2;
5948 fra.me.nitni_local_ref_head = NULL;
5949 fra.me.REG[0] = NIT_NULL;
5950 fra.me.REG[1] = NIT_NULL;
5951 fra.me.REG[0] = p0;
5952 fra.me.REG[1] = p1;
5953 /* syntax/typing.nit:1098 */
5954 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5955 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5956 /* syntax/typing.nit:1099 */
5957 REGB0 = TAG_Bool(1);
5958 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5959 stack_frame_head = fra.me.prev;
5960 return;
5961 }
5962 static const char LOCATE_syntax___typing___AStringFormExpr___after_typing[] = "typing::AStringFormExpr::(typing::ANode::after_typing)";
5963 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5964 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5965 val_t REGB0;
5966 val_t tmp;
5967 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5968 fra.me.file = LOCATE_syntax___typing;
5969 fra.me.line = 1104;
5970 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5971 fra.me.has_broke = 0;
5972 fra.me.REG_size = 2;
5973 fra.me.nitni_local_ref_head = NULL;
5974 fra.me.REG[0] = NIT_NULL;
5975 fra.me.REG[1] = NIT_NULL;
5976 fra.me.REG[0] = p0;
5977 fra.me.REG[1] = p1;
5978 /* syntax/typing.nit:1106 */
5979 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5980 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5981 /* syntax/typing.nit:1107 */
5982 REGB0 = TAG_Bool(1);
5983 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5984 stack_frame_head = fra.me.prev;
5985 return;
5986 }
5987 static const char LOCATE_syntax___typing___ASuperstringExpr___atype[] = "typing::ASuperstringExpr::(syntax_base::ASuperstringExpr::atype)";
5988 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5989 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5990 val_t REGB0;
5991 val_t tmp;
5992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5993 fra.me.file = LOCATE_syntax___typing;
5994 fra.me.line = 1112;
5995 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5996 fra.me.has_broke = 0;
5997 fra.me.REG_size = 2;
5998 fra.me.nitni_local_ref_head = NULL;
5999 fra.me.REG[0] = NIT_NULL;
6000 fra.me.REG[1] = NIT_NULL;
6001 fra.me.REG[0] = p0;
6002 /* syntax/typing.nit:1112 */
6003 fra.me.REG[1] = fra.me.REG[0];
6004 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
6005 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6006 if (UNTAG_Bool(REGB0)) {
6007 } else {
6008 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1112);
6009 }
6010 goto label1;
6011 label1: while(0);
6012 stack_frame_head = fra.me.prev;
6013 return fra.me.REG[1];
6014 }
6015 static const char LOCATE_syntax___typing___ASuperstringExpr___after_typing[] = "typing::ASuperstringExpr::(typing::ANode::after_typing)";
6016 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
6017 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6018 val_t REGB0;
6019 val_t tmp;
6020 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6021 fra.me.file = LOCATE_syntax___typing;
6022 fra.me.line = 1114;
6023 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6024 fra.me.has_broke = 0;
6025 fra.me.REG_size = 5;
6026 fra.me.nitni_local_ref_head = NULL;
6027 fra.me.REG[0] = NIT_NULL;
6028 fra.me.REG[1] = NIT_NULL;
6029 fra.me.REG[2] = NIT_NULL;
6030 fra.me.REG[3] = NIT_NULL;
6031 fra.me.REG[4] = NIT_NULL;
6032 fra.me.REG[0] = p0;
6033 fra.me.REG[1] = p1;
6034 /* syntax/typing.nit:1116 */
6035 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
6036 /* syntax/typing.nit:1117 */
6037 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
6038 /* syntax/typing.nit:1118 */
6039 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
6040 /* syntax/typing.nit:1119 */
6041 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6042 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___typing___ASuperstringExpr___after_typing_1));
6043 /* syntax/typing.nit:1120 */
6044 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6045 /* syntax/typing.nit:1121 */
6046 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
6047 /* syntax/typing.nit:1122 */
6048 REGB0 = TAG_Bool(1);
6049 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6050 stack_frame_head = fra.me.prev;
6051 return;
6052 }
6053 void OC_syntax___typing___ASuperstringExpr___after_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
6054 struct {struct stack_frame_t me;} fra;
6055 fun_t CREG[1];
6056 val_t tmp;
6057 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6058 fra.me.file = LOCATE_syntax___typing;
6059 fra.me.line = 0;
6060 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6061 fra.me.has_broke = 0;
6062 fra.me.REG_size = 1;
6063 fra.me.nitni_local_ref_head = NULL;
6064 fra.me.REG[0] = NIT_NULL;
6065 fra.me.closure_ctx = closctx_param;
6066 fra.me.closure_funs = CREG;
6067 fra.me.REG[0] = p0;
6068 CREG[0] = clos_fun0;
6069 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
6070 stack_frame_head = fra.me.prev;
6071 return;
6072 }
6073 static const char LOCATE_syntax___typing___ANullExpr___after_typing[] = "typing::ANullExpr::(typing::ANode::after_typing)";
6074 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
6075 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6076 val_t REGB0;
6077 val_t tmp;
6078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6079 fra.me.file = LOCATE_syntax___typing;
6080 fra.me.line = 1127;
6081 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
6082 fra.me.has_broke = 0;
6083 fra.me.REG_size = 2;
6084 fra.me.nitni_local_ref_head = NULL;
6085 fra.me.REG[0] = NIT_NULL;
6086 fra.me.REG[1] = NIT_NULL;
6087 fra.me.REG[0] = p0;
6088 fra.me.REG[1] = p1;
6089 /* syntax/typing.nit:1129 */
6090 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
6091 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6092 /* syntax/typing.nit:1130 */
6093 REGB0 = TAG_Bool(1);
6094 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6095 stack_frame_head = fra.me.prev;
6096 return;
6097 }
6098 static const char LOCATE_syntax___typing___AArrayExpr___after_typing[] = "typing::AArrayExpr::(typing::ANode::after_typing)";
6099 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
6100 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6101 val_t REGB0;
6102 val_t REGB1;
6103 val_t tmp;
6104 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6105 fra.me.file = LOCATE_syntax___typing;
6106 fra.me.line = 1135;
6107 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
6108 fra.me.has_broke = 0;
6109 fra.me.REG_size = 3;
6110 fra.me.nitni_local_ref_head = NULL;
6111 fra.me.REG[0] = NIT_NULL;
6112 fra.me.REG[1] = NIT_NULL;
6113 fra.me.REG[2] = NIT_NULL;
6114 fra.me.REG[0] = p0;
6115 fra.me.REG[1] = p1;
6116 /* syntax/typing.nit:1137 */
6117 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6118 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
6119 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[2]);
6120 /* syntax/typing.nit:1138 */
6121 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6122 if (UNTAG_Bool(REGB0)) {
6123 } else {
6124 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6125 if (UNTAG_Bool(REGB1)) {
6126 REGB1 = TAG_Bool(0);
6127 REGB0 = REGB1;
6128 } else {
6129 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6130 REGB0 = REGB1;
6131 }
6132 }
6133 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6134 if (UNTAG_Bool(REGB0)) {
6135 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
6136 }
6137 stack_frame_head = fra.me.prev;
6138 return;
6139 }
6140 static const char LOCATE_syntax___typing___AArrayExpr___do_typing[] = "typing::AArrayExpr::do_typing";
6141 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
6142 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6143 val_t REGB0;
6144 val_t tmp;
6145 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6146 fra.me.file = LOCATE_syntax___typing;
6147 fra.me.line = 1141;
6148 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
6149 fra.me.has_broke = 0;
6150 fra.me.REG_size = 3;
6151 fra.me.nitni_local_ref_head = NULL;
6152 fra.me.REG[0] = NIT_NULL;
6153 fra.me.REG[1] = NIT_NULL;
6154 fra.me.REG[2] = NIT_NULL;
6155 fra.me.REG[0] = p0;
6156 fra.me.REG[1] = p1;
6157 fra.me.REG[2] = p2;
6158 /* syntax/typing.nit:1143 */
6159 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6160 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6161 /* syntax/typing.nit:1144 */
6162 REGB0 = TAG_Bool(1);
6163 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6164 stack_frame_head = fra.me.prev;
6165 return;
6166 }
6167 static const char LOCATE_syntax___typing___ARangeExpr___after_typing[] = "typing::ARangeExpr::(typing::ANode::after_typing)";
6168 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
6169 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
6170 val_t REGB0;
6171 val_t REGB1;
6172 val_t tmp;
6173 static val_t once_value_2; /* Once value */
6174 static val_t once_value_3; /* Once value */
6175 static val_t once_value_4; /* Once value */
6176 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6177 fra.me.file = LOCATE_syntax___typing;
6178 fra.me.line = 1149;
6179 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
6180 fra.me.has_broke = 0;
6181 fra.me.REG_size = 6;
6182 fra.me.nitni_local_ref_head = NULL;
6183 fra.me.REG[0] = NIT_NULL;
6184 fra.me.REG[1] = NIT_NULL;
6185 fra.me.REG[2] = NIT_NULL;
6186 fra.me.REG[3] = NIT_NULL;
6187 fra.me.REG[4] = NIT_NULL;
6188 fra.me.REG[5] = NIT_NULL;
6189 fra.me.REG[0] = p0;
6190 fra.me.REG[1] = p1;
6191 /* syntax/typing.nit:1151 */
6192 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6193 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6194 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6195 if (UNTAG_Bool(REGB0)) {
6196 REGB0 = TAG_Bool(1);
6197 } else {
6198 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6199 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6200 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6201 REGB0 = REGB1;
6202 }
6203 if (UNTAG_Bool(REGB0)) {
6204 goto label1;
6205 }
6206 /* syntax/typing.nit:1152 */
6207 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6208 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6209 /* syntax/typing.nit:1153 */
6210 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6211 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6212 /* syntax/typing.nit:1154 */
6213 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6214 if (UNTAG_Bool(REGB0)) {
6215 /* syntax/typing.nit:1155 */
6216 fra.me.REG[2] = fra.me.REG[3];
6217 } else {
6218 /* syntax/typing.nit:1156 */
6219 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
6220 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6221 if (UNTAG_Bool(REGB0)) {
6222 /* syntax/typing.nit:1157 */
6223 REGB0 = TAG_Int(5);
6224 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6225 if (!once_value_2) {
6226 fra.me.REG[5] = BOX_NativeString("Type error: ");
6227 REGB0 = TAG_Int(12);
6228 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
6229 once_value_2 = fra.me.REG[5];
6230 register_static_object(&once_value_2);
6231 } else fra.me.REG[5] = once_value_2;
6232 fra.me.REG[5] = fra.me.REG[5];
6233 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6234 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6235 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6236 if (!once_value_3) {
6237 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
6238 REGB0 = TAG_Int(19);
6239 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
6240 once_value_3 = fra.me.REG[5];
6241 register_static_object(&once_value_3);
6242 } else fra.me.REG[5] = once_value_3;
6243 fra.me.REG[5] = fra.me.REG[5];
6244 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6245 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6246 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6247 if (!once_value_4) {
6248 fra.me.REG[3] = BOX_NativeString(".");
6249 REGB0 = TAG_Int(1);
6250 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
6251 once_value_4 = fra.me.REG[3];
6252 register_static_object(&once_value_4);
6253 } else fra.me.REG[3] = once_value_4;
6254 fra.me.REG[3] = fra.me.REG[3];
6255 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6256 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6257 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6258 /* syntax/typing.nit:1158 */
6259 goto label1;
6260 }
6261 }
6262 /* syntax/typing.nit:1160 */
6263 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
6264 /* syntax/typing.nit:1161 */
6265 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6266 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
6267 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6268 if (UNTAG_Bool(REGB0)) {
6269 REGB0 = TAG_Bool(1);
6270 } else {
6271 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6272 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
6273 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6274 REGB0 = REGB1;
6275 }
6276 if (UNTAG_Bool(REGB0)) {
6277 goto label1;
6278 }
6279 /* syntax/typing.nit:1162 */
6280 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6281 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6282 /* syntax/typing.nit:1163 */
6283 REGB0 = TAG_Bool(1);
6284 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6285 label1: while(0);
6286 stack_frame_head = fra.me.prev;
6287 return;
6288 }
6289 static const char LOCATE_syntax___typing___ASuperExpr___init_in_superclass[] = "typing::ASuperExpr::(syntax_base::ASuperExpr::init_in_superclass)";
6290 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
6291 struct {struct stack_frame_t me;} fra;
6292 val_t tmp;
6293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6294 fra.me.file = LOCATE_syntax___typing;
6295 fra.me.line = 1168;
6296 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
6297 fra.me.has_broke = 0;
6298 fra.me.REG_size = 1;
6299 fra.me.nitni_local_ref_head = NULL;
6300 fra.me.REG[0] = NIT_NULL;
6301 fra.me.REG[0] = p0;
6302 /* syntax/typing.nit:1168 */
6303 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
6304 stack_frame_head = fra.me.prev;
6305 return fra.me.REG[0];
6306 }
6307 static const char LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments[] = "typing::ASuperExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
6308 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
6309 struct {struct stack_frame_t me;} fra;
6310 val_t tmp;
6311 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6312 fra.me.file = LOCATE_syntax___typing;
6313 fra.me.line = 1169;
6314 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
6315 fra.me.has_broke = 0;
6316 fra.me.REG_size = 1;
6317 fra.me.nitni_local_ref_head = NULL;
6318 fra.me.REG[0] = NIT_NULL;
6319 fra.me.REG[0] = p0;
6320 /* syntax/typing.nit:1169 */
6321 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6322 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
6323 goto label1;
6324 label1: while(0);
6325 stack_frame_head = fra.me.prev;
6326 return fra.me.REG[0];
6327 }
6328 static const char LOCATE_syntax___typing___ASuperExpr___after_typing[] = "typing::ASuperExpr::(typing::ANode::after_typing)";
6329 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
6330 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
6331 val_t REGB0;
6332 val_t REGB1;
6333 val_t REGB2;
6334 val_t tmp;
6335 static val_t once_value_1; /* Once value */
6336 static val_t once_value_2; /* Once value */
6337 static val_t once_value_3; /* Once value */
6338 static val_t once_value_5; /* Once value */
6339 static val_t once_value_6; /* Once value */
6340 static val_t once_value_8; /* Once value */
6341 static val_t once_value_9; /* Once value */
6342 static val_t once_value_10; /* Once value */
6343 static val_t once_value_11; /* Once value */
6344 static val_t once_value_12; /* Once value */
6345 static val_t once_value_13; /* Once value */
6346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6347 fra.me.file = LOCATE_syntax___typing;
6348 fra.me.line = 1170;
6349 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
6350 fra.me.has_broke = 0;
6351 fra.me.REG_size = 10;
6352 fra.me.nitni_local_ref_head = NULL;
6353 fra.me.REG[0] = NIT_NULL;
6354 fra.me.REG[1] = NIT_NULL;
6355 fra.me.REG[2] = NIT_NULL;
6356 fra.me.REG[3] = NIT_NULL;
6357 fra.me.REG[4] = NIT_NULL;
6358 fra.me.REG[5] = NIT_NULL;
6359 fra.me.REG[6] = NIT_NULL;
6360 fra.me.REG[7] = NIT_NULL;
6361 fra.me.REG[8] = NIT_NULL;
6362 fra.me.REG[9] = NIT_NULL;
6363 fra.me.REG[0] = p0;
6364 fra.me.REG[1] = p1;
6365 /* syntax/typing.nit:1170 */
6366 fra.me.REG[2] = fra.me.REG[0];
6367 /* syntax/typing.nit:1172 */
6368 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6369 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
6370 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
6371 /* syntax/typing.nit:1173 */
6372 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6373 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6374 if (UNTAG_Bool(REGB0)) {
6375 /* syntax/typing.nit:1174 */
6376 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6377 REGB0 = TAG_Bool(1);
6378 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
6379 } else {
6380 /* syntax/typing.nit:1175 */
6381 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6382 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6383 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
6384 if (UNTAG_Bool(REGB0)) {
6385 /* syntax/typing.nit:1176 */
6386 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6387 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6388 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6389 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6390 /* ../lib/standard/collection/array.nit:267 */
6391 fra.me.REG[4] = fra.me.REG[5];
6392 /* ../lib/standard/collection/array.nit:270 */
6393 REGB0 = TAG_Int(0);
6394 /* ../lib/standard/collection/array.nit:271 */
6395 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6396 if (UNTAG_Bool(REGB1)) {
6397 } else {
6398 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
6399 }
6400 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6401 /* ../lib/standard/collection/array.nit:272 */
6402 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6403 /* ../lib/standard/collection/array.nit:273 */
6404 while(1) {
6405 /* ../lib/standard/collection/array.nit:24 */
6406 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6407 if (UNTAG_Bool(REGB1)) {
6408 } else {
6409 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6410 }
6411 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6412 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6413 if (UNTAG_Bool(REGB2)) {
6414 } else {
6415 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6416 }
6417 /* ../lib/standard/kernel.nit:242 */
6418 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6419 /* ../lib/standard/collection/array.nit:273 */
6420 if (UNTAG_Bool(REGB1)) {
6421 /* ../lib/standard/collection/array.nit:274 */
6422 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6423 if (UNTAG_Bool(REGB1)) {
6424 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
6425 }
6426 /* ../lib/standard/collection/array.nit:725 */
6427 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6428 /* syntax/typing.nit:1178 */
6429 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6430 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6431 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6432 if (UNTAG_Bool(REGB1)) {
6433 /* syntax/typing.nit:1179 */
6434 REGB1 = TAG_Int(5);
6435 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6436 if (!once_value_1) {
6437 fra.me.REG[9] = BOX_NativeString("Error: ");
6438 REGB1 = TAG_Int(7);
6439 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
6440 once_value_1 = fra.me.REG[9];
6441 register_static_object(&once_value_1);
6442 } else fra.me.REG[9] = once_value_1;
6443 fra.me.REG[9] = fra.me.REG[9];
6444 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6445 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6446 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6447 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6448 if (!once_value_2) {
6449 fra.me.REG[9] = BOX_NativeString("::");
6450 REGB1 = TAG_Int(2);
6451 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
6452 once_value_2 = fra.me.REG[9];
6453 register_static_object(&once_value_2);
6454 } else fra.me.REG[9] = once_value_2;
6455 fra.me.REG[9] = fra.me.REG[9];
6456 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6457 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6458 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6459 if (!once_value_3) {
6460 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6461 REGB1 = TAG_Int(22);
6462 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB1);
6463 once_value_3 = fra.me.REG[9];
6464 register_static_object(&once_value_3);
6465 } else fra.me.REG[9] = once_value_3;
6466 fra.me.REG[9] = fra.me.REG[9];
6467 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6468 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6469 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6470 } else {
6471 /* syntax/typing.nit:1181 */
6472 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6473 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6474 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6475 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6476 }
6477 /* ../lib/standard/collection/array.nit:275 */
6478 REGB1 = TAG_Int(1);
6479 /* ../lib/standard/kernel.nit:245 */
6480 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6481 /* ../lib/standard/collection/array.nit:275 */
6482 REGB0 = REGB1;
6483 } else {
6484 /* ../lib/standard/collection/array.nit:273 */
6485 goto label4;
6486 }
6487 }
6488 label4: while(0);
6489 /* syntax/typing.nit:1184 */
6490 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6491 if (UNTAG_Bool(REGB0)) {
6492 /* syntax/typing.nit:1185 */
6493 REGB0 = TAG_Int(3);
6494 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6495 if (!once_value_5) {
6496 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6497 REGB0 = TAG_Int(27);
6498 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
6499 once_value_5 = fra.me.REG[4];
6500 register_static_object(&once_value_5);
6501 } else fra.me.REG[4] = once_value_5;
6502 fra.me.REG[4] = fra.me.REG[4];
6503 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6504 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6505 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6506 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6507 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6508 if (!once_value_6) {
6509 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6510 REGB0 = TAG_Int(17);
6511 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
6512 once_value_6 = fra.me.REG[4];
6513 register_static_object(&once_value_6);
6514 } else fra.me.REG[4] = once_value_6;
6515 fra.me.REG[4] = fra.me.REG[4];
6516 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6517 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6518 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6519 /* syntax/typing.nit:1186 */
6520 goto label7;
6521 } else {
6522 /* ../lib/standard/collection/array.nit:24 */
6523 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6524 if (UNTAG_Bool(REGB0)) {
6525 } else {
6526 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6527 }
6528 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6529 /* syntax/typing.nit:1187 */
6530 REGB1 = TAG_Int(1);
6531 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6532 if (UNTAG_Bool(REGB2)) {
6533 } else {
6534 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6535 }
6536 /* ../lib/standard/kernel.nit:244 */
6537 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6538 /* syntax/typing.nit:1187 */
6539 if (UNTAG_Bool(REGB1)) {
6540 /* syntax/typing.nit:1188 */
6541 REGB1 = TAG_Int(5);
6542 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6543 if (!once_value_8) {
6544 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6545 REGB1 = TAG_Int(37);
6546 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
6547 once_value_8 = fra.me.REG[4];
6548 register_static_object(&once_value_8);
6549 } else fra.me.REG[4] = once_value_8;
6550 fra.me.REG[4] = fra.me.REG[4];
6551 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6552 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6553 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6554 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6555 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6556 if (!once_value_9) {
6557 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6558 REGB1 = TAG_Int(18);
6559 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
6560 once_value_9 = fra.me.REG[4];
6561 register_static_object(&once_value_9);
6562 } else fra.me.REG[4] = once_value_9;
6563 fra.me.REG[4] = fra.me.REG[4];
6564 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6565 if (!once_value_10) {
6566 fra.me.REG[4] = BOX_NativeString(", ");
6567 REGB1 = TAG_Int(2);
6568 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
6569 once_value_10 = fra.me.REG[4];
6570 register_static_object(&once_value_10);
6571 } else fra.me.REG[4] = once_value_10;
6572 fra.me.REG[4] = fra.me.REG[4];
6573 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6574 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6575 if (!once_value_11) {
6576 fra.me.REG[4] = BOX_NativeString(".");
6577 REGB1 = TAG_Int(1);
6578 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
6579 once_value_11 = fra.me.REG[4];
6580 register_static_object(&once_value_11);
6581 } else fra.me.REG[4] = once_value_11;
6582 fra.me.REG[4] = fra.me.REG[4];
6583 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6584 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6585 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6586 /* syntax/typing.nit:1189 */
6587 goto label7;
6588 }
6589 }
6590 /* syntax/typing.nit:1191 */
6591 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6592 /* syntax/typing.nit:1192 */
6593 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6594 if (UNTAG_Bool(REGB1)) {
6595 } else {
6596 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1192);
6597 }
6598 /* syntax/typing.nit:1193 */
6599 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6600 /* syntax/typing.nit:1194 */
6601 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6602 /* syntax/typing.nit:1195 */
6603 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6604 fra.me.REG[6] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[6])(fra.me.REG[6]);
6605 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6606 REGB0 = TAG_Int(0);
6607 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6608 if (UNTAG_Bool(REGB2)) {
6609 } else {
6610 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6611 }
6612 /* ../lib/standard/kernel.nit:244 */
6613 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6614 /* syntax/typing.nit:1195 */
6615 if (UNTAG_Bool(REGB0)) {
6616 /* syntax/typing.nit:1196 */
6617 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6618 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6619 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6620 if (UNTAG_Bool(REGB0)) {
6621 } else {
6622 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1196);
6623 }
6624 REGB0 = TAG_Bool(1);
6625 fra.me.REG[6] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], REGB0);
6626 /* syntax/typing.nit:1197 */
6627 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6628 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6629 CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4]);
6630 }
6631 } else {
6632 /* syntax/typing.nit:1200 */
6633 REGB0 = TAG_Int(3);
6634 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6635 if (!once_value_12) {
6636 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6637 REGB0 = TAG_Int(35);
6638 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
6639 once_value_12 = fra.me.REG[5];
6640 register_static_object(&once_value_12);
6641 } else fra.me.REG[5] = once_value_12;
6642 fra.me.REG[5] = fra.me.REG[5];
6643 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6644 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6645 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6646 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6647 if (!once_value_13) {
6648 fra.me.REG[5] = BOX_NativeString(".");
6649 REGB0 = TAG_Int(1);
6650 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
6651 once_value_13 = fra.me.REG[5];
6652 register_static_object(&once_value_13);
6653 } else fra.me.REG[5] = once_value_13;
6654 fra.me.REG[5] = fra.me.REG[5];
6655 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6656 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6657 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6658 /* syntax/typing.nit:1201 */
6659 goto label7;
6660 }
6661 }
6662 /* syntax/typing.nit:1204 */
6663 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6664 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6665 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6666 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6667 if (UNTAG_Bool(REGB0)) {
6668 } else {
6669 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1204);
6670 }
6671 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6672 if (UNTAG_Bool(REGB0)) {
6673 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1204);
6674 }
6675 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6676 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6677 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6678 if (UNTAG_Bool(REGB0)) {
6679 } else {
6680 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6681 if (UNTAG_Bool(REGB1)) {
6682 REGB1 = TAG_Bool(0);
6683 REGB0 = REGB1;
6684 } else {
6685 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6686 REGB0 = REGB1;
6687 }
6688 }
6689 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6690 if (UNTAG_Bool(REGB0)) {
6691 /* syntax/typing.nit:1205 */
6692 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6693 /* syntax/typing.nit:1206 */
6694 fra.me.REG[4] = NIT_NULL;
6695 /* ../lib/standard/collection/array.nit:270 */
6696 REGB0 = TAG_Int(0);
6697 /* ../lib/standard/collection/array.nit:271 */
6698 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6699 if (UNTAG_Bool(REGB1)) {
6700 } else {
6701 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
6702 }
6703 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6704 /* ../lib/standard/collection/array.nit:272 */
6705 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6706 /* ../lib/standard/collection/array.nit:273 */
6707 while(1) {
6708 /* ../lib/standard/collection/array.nit:24 */
6709 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6710 if (UNTAG_Bool(REGB1)) {
6711 } else {
6712 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6713 }
6714 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6715 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6716 if (UNTAG_Bool(REGB2)) {
6717 } else {
6718 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6719 }
6720 /* ../lib/standard/kernel.nit:242 */
6721 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6722 /* ../lib/standard/collection/array.nit:273 */
6723 if (UNTAG_Bool(REGB1)) {
6724 /* ../lib/standard/collection/array.nit:274 */
6725 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6726 if (UNTAG_Bool(REGB1)) {
6727 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
6728 }
6729 /* ../lib/standard/collection/array.nit:725 */
6730 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6731 /* syntax/typing.nit:1208 */
6732 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6733 if (UNTAG_Bool(REGB1)) {
6734 } else {
6735 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1208);
6736 }
6737 /* syntax/typing.nit:1209 */
6738 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6739 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6740 REGB1 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6741 if (UNTAG_Bool(REGB1)) {
6742 } else {
6743 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1209);
6744 }
6745 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6746 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6747 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6748 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6749 if (UNTAG_Bool(REGB1)) {
6750 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1209);
6751 }
6752 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6753 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6754 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6755 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6756 if (UNTAG_Bool(REGB1)) {
6757 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1209);
6758 }
6759 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6760 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6761 /* syntax/typing.nit:1210 */
6762 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6763 /* syntax/typing.nit:1211 */
6764 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6765 if (UNTAG_Bool(REGB1)) {
6766 } else {
6767 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6768 if (UNTAG_Bool(REGB2)) {
6769 REGB2 = TAG_Bool(0);
6770 REGB1 = REGB2;
6771 } else {
6772 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6773 REGB1 = REGB2;
6774 }
6775 }
6776 if (UNTAG_Bool(REGB1)) {
6777 REGB1 = TAG_Bool(1);
6778 } else {
6779 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6780 if (UNTAG_Bool(REGB2)) {
6781 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1211);
6782 }
6783 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6784 REGB1 = REGB2;
6785 }
6786 if (UNTAG_Bool(REGB1)) {
6787 /* syntax/typing.nit:1212 */
6788 fra.me.REG[4] = fra.me.REG[8];
6789 }
6790 /* ../lib/standard/collection/array.nit:275 */
6791 REGB1 = TAG_Int(1);
6792 /* ../lib/standard/kernel.nit:245 */
6793 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6794 /* ../lib/standard/collection/array.nit:275 */
6795 REGB0 = REGB1;
6796 } else {
6797 /* ../lib/standard/collection/array.nit:273 */
6798 goto label14;
6799 }
6800 }
6801 label14: while(0);
6802 /* ../lib/standard/collection/array.nit:270 */
6803 REGB0 = TAG_Int(0);
6804 /* ../lib/standard/collection/array.nit:271 */
6805 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6806 if (UNTAG_Bool(REGB1)) {
6807 } else {
6808 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
6809 }
6810 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6811 /* ../lib/standard/collection/array.nit:272 */
6812 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6813 /* ../lib/standard/collection/array.nit:273 */
6814 while(1) {
6815 /* ../lib/standard/collection/array.nit:24 */
6816 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6817 if (UNTAG_Bool(REGB1)) {
6818 } else {
6819 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6820 }
6821 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6822 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6823 if (UNTAG_Bool(REGB2)) {
6824 } else {
6825 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6826 }
6827 /* ../lib/standard/kernel.nit:242 */
6828 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6829 /* ../lib/standard/collection/array.nit:273 */
6830 if (UNTAG_Bool(REGB1)) {
6831 /* ../lib/standard/collection/array.nit:274 */
6832 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6833 if (UNTAG_Bool(REGB1)) {
6834 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
6835 }
6836 /* ../lib/standard/collection/array.nit:725 */
6837 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6838 /* syntax/typing.nit:1216 */
6839 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6840 if (UNTAG_Bool(REGB1)) {
6841 } else {
6842 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1216);
6843 }
6844 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
6845 /* ../lib/standard/collection/array.nit:275 */
6846 REGB1 = TAG_Int(1);
6847 /* ../lib/standard/kernel.nit:245 */
6848 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6849 /* ../lib/standard/collection/array.nit:275 */
6850 REGB0 = REGB1;
6851 } else {
6852 /* ../lib/standard/collection/array.nit:273 */
6853 goto label15;
6854 }
6855 }
6856 label15: while(0);
6857 /* syntax/typing.nit:1218 */
6858 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6859 }
6860 /* syntax/typing.nit:1220 */
6861 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6862 /* syntax/typing.nit:1221 */
6863 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6864 if (UNTAG_Bool(REGB0)) {
6865 } else {
6866 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1221);
6867 }
6868 /* syntax/typing.nit:1222 */
6869 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6870 /* syntax/typing.nit:1223 */
6871 REGB0 = TAG_Bool(1);
6872 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6873 label7: while(0);
6874 stack_frame_head = fra.me.prev;
6875 return;
6876 }
6877 static const char LOCATE_syntax___typing___AExternCall___target_class_name[] = "typing::AExternCall::target_class_name";
6878 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6879 struct {struct stack_frame_t me;} fra;
6880 val_t tmp;
6881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6882 fra.me.file = LOCATE_syntax___typing;
6883 fra.me.line = 1228;
6884 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6885 fra.me.has_broke = 0;
6886 fra.me.REG_size = 1;
6887 fra.me.nitni_local_ref_head = NULL;
6888 fra.me.REG[0] = NIT_NULL;
6889 fra.me.REG[0] = p0;
6890 /* syntax/typing.nit:1228 */
6891 fra.me.REG[0] = NIT_NULL;
6892 goto label1;
6893 label1: while(0);
6894 stack_frame_head = fra.me.prev;
6895 return fra.me.REG[0];
6896 }
6897 static const char LOCATE_syntax___typing___AExternCall___target_method_name[] = "typing::AExternCall::target_method_name";
6898 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6899 struct {struct stack_frame_t me;} fra;
6900 val_t tmp;
6901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6902 fra.me.file = LOCATE_syntax___typing;
6903 fra.me.line = 1229;
6904 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6905 fra.me.has_broke = 0;
6906 fra.me.REG_size = 0;
6907 fra.me.nitni_local_ref_head = NULL;
6908 /* syntax/typing.nit:1229 */
6909 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1229);
6910 stack_frame_head = fra.me.prev;
6911 return NIT_NULL;
6912 }
6913 static const char LOCATE_syntax___typing___AExternCall___after_typing[] = "typing::AExternCall::(typing::ANode::after_typing)";
6914 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6915 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6916 val_t REGB0;
6917 val_t REGB1;
6918 val_t tmp;
6919 static val_t once_value_1; /* Once value */
6920 static val_t once_value_2; /* Once value */
6921 static val_t once_value_4; /* Once value */
6922 static val_t once_value_5; /* Once value */
6923 static val_t once_value_6; /* Once value */
6924 static val_t once_value_7; /* Once value */
6925 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6926 fra.me.file = LOCATE_syntax___typing;
6927 fra.me.line = 1231;
6928 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6929 fra.me.has_broke = 0;
6930 fra.me.REG_size = 8;
6931 fra.me.nitni_local_ref_head = NULL;
6932 fra.me.REG[0] = NIT_NULL;
6933 fra.me.REG[1] = NIT_NULL;
6934 fra.me.REG[2] = NIT_NULL;
6935 fra.me.REG[3] = NIT_NULL;
6936 fra.me.REG[4] = NIT_NULL;
6937 fra.me.REG[5] = NIT_NULL;
6938 fra.me.REG[6] = NIT_NULL;
6939 fra.me.REG[7] = NIT_NULL;
6940 fra.me.REG[0] = p0;
6941 fra.me.REG[1] = p1;
6942 /* syntax/typing.nit:1231 */
6943 fra.me.REG[2] = fra.me.REG[0];
6944 /* syntax/typing.nit:1233 */
6945 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6946 /* syntax/typing.nit:1234 */
6947 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6948 /* syntax/typing.nit:1241 */
6949 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6950 if (UNTAG_Bool(REGB0)) {
6951 } else {
6952 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6953 if (UNTAG_Bool(REGB1)) {
6954 REGB1 = TAG_Bool(0);
6955 REGB0 = REGB1;
6956 } else {
6957 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6958 REGB0 = REGB1;
6959 }
6960 }
6961 if (UNTAG_Bool(REGB0)) {
6962 /* syntax/typing.nit:1242 */
6963 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6964 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6965 } else {
6966 /* syntax/typing.nit:1244 */
6967 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6968 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6969 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6970 if (UNTAG_Bool(REGB0)) {
6971 /* syntax/typing.nit:1245 */
6972 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6973 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6974 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6975 /* syntax/typing.nit:1246 */
6976 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6977 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6978 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6979 fra.me.REG[5] = fra.me.REG[6];
6980 } else {
6981 /* syntax/typing.nit:1248 */
6982 REGB0 = TAG_Int(3);
6983 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6984 if (!once_value_1) {
6985 fra.me.REG[7] = BOX_NativeString("Error: class ");
6986 REGB0 = TAG_Int(13);
6987 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
6988 once_value_1 = fra.me.REG[7];
6989 register_static_object(&once_value_1);
6990 } else fra.me.REG[7] = once_value_1;
6991 fra.me.REG[7] = fra.me.REG[7];
6992 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6993 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6994 if (UNTAG_Bool(REGB0)) {
6995 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1248);
6996 }
6997 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6999 if (!once_value_2) {
7000 fra.me.REG[3] = BOX_NativeString(", not found.");
7001 REGB0 = TAG_Int(12);
7002 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
7003 once_value_2 = fra.me.REG[3];
7004 register_static_object(&once_value_2);
7005 } else fra.me.REG[3] = once_value_2;
7006 fra.me.REG[3] = fra.me.REG[3];
7007 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7008 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7009 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
7010 /* syntax/typing.nit:1249 */
7011 goto label3;
7012 }
7013 }
7014 /* syntax/typing.nit:1253 */
7015 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7016 if (UNTAG_Bool(REGB0)) {
7017 /* syntax/typing.nit:1254 */
7018 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7019 /* syntax/typing.nit:1256 */
7020 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7021 /* syntax/typing.nit:1258 */
7022 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7023 if (UNTAG_Bool(REGB0)) {
7024 } else {
7025 /* syntax/typing.nit:1261 */
7026 REGB0 = TAG_Int(3);
7027 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7028 if (!once_value_4) {
7029 fra.me.REG[7] = BOX_NativeString("Error: property ");
7030 REGB0 = TAG_Int(16);
7031 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
7032 once_value_4 = fra.me.REG[7];
7033 register_static_object(&once_value_4);
7034 } else fra.me.REG[7] = once_value_4;
7035 fra.me.REG[7] = fra.me.REG[7];
7036 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7037 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7038 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7039 if (!once_value_5) {
7040 fra.me.REG[7] = BOX_NativeString(" is not a method.");
7041 REGB0 = TAG_Int(17);
7042 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
7043 once_value_5 = fra.me.REG[7];
7044 register_static_object(&once_value_5);
7045 } else fra.me.REG[7] = once_value_5;
7046 fra.me.REG[7] = fra.me.REG[7];
7047 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7048 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7049 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7050 /* syntax/typing.nit:1262 */
7051 goto label3;
7052 }
7053 } else {
7054 /* syntax/typing.nit:1265 */
7055 REGB0 = TAG_Int(3);
7056 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7057 if (!once_value_6) {
7058 fra.me.REG[7] = BOX_NativeString("Error: property ");
7059 REGB0 = TAG_Int(16);
7060 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB0);
7061 once_value_6 = fra.me.REG[7];
7062 register_static_object(&once_value_6);
7063 } else fra.me.REG[7] = once_value_6;
7064 fra.me.REG[7] = fra.me.REG[7];
7065 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7066 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7067 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7068 if (!once_value_7) {
7069 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
7070 REGB0 = TAG_Int(27);
7071 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
7072 once_value_7 = fra.me.REG[4];
7073 register_static_object(&once_value_7);
7074 } else fra.me.REG[4] = once_value_7;
7075 fra.me.REG[4] = fra.me.REG[4];
7076 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7077 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7078 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7079 /* syntax/typing.nit:1266 */
7080 goto label3;
7081 }
7082 /* syntax/typing.nit:1269 */
7083 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
7084 /* syntax/typing.nit:1270 */
7085 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7086 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
7087 if (UNTAG_Bool(REGB0)) {
7088 } else {
7089 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1270);
7090 }
7091 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
7092 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
7093 label3: while(0);
7094 stack_frame_head = fra.me.prev;
7095 return;
7096 }
7097 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_class_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_class_name)";
7098 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
7099 struct {struct stack_frame_t me;} fra;
7100 val_t tmp;
7101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7102 fra.me.file = LOCATE_syntax___typing;
7103 fra.me.line = 1275;
7104 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
7105 fra.me.has_broke = 0;
7106 fra.me.REG_size = 1;
7107 fra.me.nitni_local_ref_head = NULL;
7108 fra.me.REG[0] = NIT_NULL;
7109 fra.me.REG[0] = p0;
7110 /* syntax/typing.nit:1275 */
7111 fra.me.REG[0] = NIT_NULL;
7112 goto label1;
7113 label1: while(0);
7114 stack_frame_head = fra.me.prev;
7115 return fra.me.REG[0];
7116 }
7117 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_method_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_method_name)";
7118 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
7119 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7120 val_t REGB0;
7121 val_t tmp;
7122 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7123 fra.me.file = LOCATE_syntax___typing;
7124 fra.me.line = 1276;
7125 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
7126 fra.me.has_broke = 0;
7127 fra.me.REG_size = 2;
7128 fra.me.nitni_local_ref_head = NULL;
7129 fra.me.REG[0] = NIT_NULL;
7130 fra.me.REG[1] = NIT_NULL;
7131 fra.me.REG[0] = p0;
7132 /* syntax/typing.nit:1276 */
7133 fra.me.REG[1] = fra.me.REG[0];
7134 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7135 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7136 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7137 if (UNTAG_Bool(REGB0)) {
7138 } else {
7139 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1276);
7140 }
7141 goto label1;
7142 label1: while(0);
7143 stack_frame_head = fra.me.prev;
7144 return fra.me.REG[1];
7145 }
7146 static const char LOCATE_syntax___typing___ASuperExternCall___after_typing[] = "typing::ASuperExternCall::(typing::ANode::after_typing)";
7147 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
7148 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7149 val_t REGB0;
7150 val_t tmp;
7151 static val_t once_value_1; /* Once value */
7152 static val_t once_value_2; /* Once value */
7153 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7154 fra.me.file = LOCATE_syntax___typing;
7155 fra.me.line = 1280;
7156 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
7157 fra.me.has_broke = 0;
7158 fra.me.REG_size = 4;
7159 fra.me.nitni_local_ref_head = NULL;
7160 fra.me.REG[0] = NIT_NULL;
7161 fra.me.REG[1] = NIT_NULL;
7162 fra.me.REG[2] = NIT_NULL;
7163 fra.me.REG[3] = NIT_NULL;
7164 fra.me.REG[0] = p0;
7165 fra.me.REG[1] = p1;
7166 /* syntax/typing.nit:1282 */
7167 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7168 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
7169 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
7170 /* syntax/typing.nit:1283 */
7171 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
7172 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7173 if (UNTAG_Bool(REGB0)) {
7174 /* syntax/typing.nit:1284 */
7175 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7176 REGB0 = TAG_Bool(1);
7177 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
7178 } else {
7179 /* syntax/typing.nit:1286 */
7180 REGB0 = TAG_Int(3);
7181 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7182 if (!once_value_1) {
7183 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
7184 REGB0 = TAG_Int(35);
7185 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
7186 once_value_1 = fra.me.REG[3];
7187 register_static_object(&once_value_1);
7188 } else fra.me.REG[3] = once_value_1;
7189 fra.me.REG[3] = fra.me.REG[3];
7190 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7191 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7192 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7193 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7194 if (!once_value_2) {
7195 fra.me.REG[3] = BOX_NativeString(".");
7196 REGB0 = TAG_Int(1);
7197 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
7198 once_value_2 = fra.me.REG[3];
7199 register_static_object(&once_value_2);
7200 } else fra.me.REG[3] = once_value_2;
7201 fra.me.REG[3] = fra.me.REG[3];
7202 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7203 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7204 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7205 /* syntax/typing.nit:1287 */
7206 goto label3;
7207 }
7208 label3: while(0);
7209 stack_frame_head = fra.me.prev;
7210 return;
7211 }
7212 static const char LOCATE_syntax___typing___AFullPropExternCall___target_class_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_class_name)";
7213 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
7214 struct {struct stack_frame_t me;} fra;
7215 val_t tmp;
7216 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7217 fra.me.file = LOCATE_syntax___typing;
7218 fra.me.line = 1293;
7219 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
7220 fra.me.has_broke = 0;
7221 fra.me.REG_size = 1;
7222 fra.me.nitni_local_ref_head = NULL;
7223 fra.me.REG[0] = NIT_NULL;
7224 fra.me.REG[0] = p0;
7225 /* syntax/typing.nit:1293 */
7226 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7227 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7228 goto label1;
7229 label1: while(0);
7230 stack_frame_head = fra.me.prev;
7231 return fra.me.REG[0];
7232 }
7233 static const char LOCATE_syntax___typing___AFullPropExternCall___target_method_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_method_name)";
7234 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
7235 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7236 val_t REGB0;
7237 val_t tmp;
7238 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7239 fra.me.file = LOCATE_syntax___typing;
7240 fra.me.line = 1294;
7241 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
7242 fra.me.has_broke = 0;
7243 fra.me.REG_size = 2;
7244 fra.me.nitni_local_ref_head = NULL;
7245 fra.me.REG[0] = NIT_NULL;
7246 fra.me.REG[1] = NIT_NULL;
7247 fra.me.REG[0] = p0;
7248 /* syntax/typing.nit:1294 */
7249 fra.me.REG[1] = fra.me.REG[0];
7250 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7251 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7252 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7253 if (UNTAG_Bool(REGB0)) {
7254 } else {
7255 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1294);
7256 }
7257 goto label1;
7258 label1: while(0);
7259 stack_frame_head = fra.me.prev;
7260 return fra.me.REG[1];
7261 }
7262 static const char LOCATE_syntax___typing___AInitPropExternCall___target_class_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_class_name)";
7263 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
7264 struct {struct stack_frame_t me;} fra;
7265 val_t tmp;
7266 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7267 fra.me.file = LOCATE_syntax___typing;
7268 fra.me.line = 1298;
7269 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
7270 fra.me.has_broke = 0;
7271 fra.me.REG_size = 1;
7272 fra.me.nitni_local_ref_head = NULL;
7273 fra.me.REG[0] = NIT_NULL;
7274 fra.me.REG[0] = p0;
7275 /* syntax/typing.nit:1298 */
7276 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7277 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7278 goto label1;
7279 label1: while(0);
7280 stack_frame_head = fra.me.prev;
7281 return fra.me.REG[0];
7282 }
7283 static const char LOCATE_syntax___typing___AInitPropExternCall___target_method_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_method_name)";
7284 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
7285 struct {struct stack_frame_t me;} fra;
7286 val_t REGB0;
7287 val_t tmp;
7288 static val_t once_value_1; /* Once value */
7289 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7290 fra.me.file = LOCATE_syntax___typing;
7291 fra.me.line = 1299;
7292 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
7293 fra.me.has_broke = 0;
7294 fra.me.REG_size = 1;
7295 fra.me.nitni_local_ref_head = NULL;
7296 fra.me.REG[0] = NIT_NULL;
7297 fra.me.REG[0] = p0;
7298 /* syntax/typing.nit:1299 */
7299 if (!once_value_1) {
7300 fra.me.REG[0] = BOX_NativeString("init");
7301 REGB0 = TAG_Int(4);
7302 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
7303 once_value_1 = fra.me.REG[0];
7304 register_static_object(&once_value_1);
7305 } else fra.me.REG[0] = once_value_1;
7306 fra.me.REG[0] = fra.me.REG[0];
7307 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7308 goto label2;
7309 label2: while(0);
7310 stack_frame_head = fra.me.prev;
7311 return fra.me.REG[0];
7312 }
7313 static const char LOCATE_syntax___typing___ACastExternCall___from_type[] = "typing::ACastExternCall::from_type";
7314 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
7315 struct {struct stack_frame_t me;} fra;
7316 val_t tmp;
7317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7318 fra.me.file = LOCATE_syntax___typing;
7319 fra.me.line = 1303;
7320 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
7321 fra.me.has_broke = 0;
7322 fra.me.REG_size = 0;
7323 fra.me.nitni_local_ref_head = NULL;
7324 /* syntax/typing.nit:1303 */
7325 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1303);
7326 stack_frame_head = fra.me.prev;
7327 return NIT_NULL;
7328 }
7329 static const char LOCATE_syntax___typing___ACastExternCall___to_type[] = "typing::ACastExternCall::to_type";
7330 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
7331 struct {struct stack_frame_t me;} fra;
7332 val_t tmp;
7333 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7334 fra.me.file = LOCATE_syntax___typing;
7335 fra.me.line = 1304;
7336 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
7337 fra.me.has_broke = 0;
7338 fra.me.REG_size = 0;
7339 fra.me.nitni_local_ref_head = NULL;
7340 /* syntax/typing.nit:1304 */
7341 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1304);
7342 stack_frame_head = fra.me.prev;
7343 return NIT_NULL;
7344 }
7345 static const char LOCATE_syntax___typing___ACastExternCall___after_typing[] = "typing::ACastExternCall::(typing::ANode::after_typing)";
7346 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
7347 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7348 val_t REGB0;
7349 val_t REGB1;
7350 val_t tmp;
7351 static val_t once_value_1; /* Once value */
7352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7353 fra.me.file = LOCATE_syntax___typing;
7354 fra.me.line = 1306;
7355 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
7356 fra.me.has_broke = 0;
7357 fra.me.REG_size = 4;
7358 fra.me.nitni_local_ref_head = NULL;
7359 fra.me.REG[0] = NIT_NULL;
7360 fra.me.REG[1] = NIT_NULL;
7361 fra.me.REG[2] = NIT_NULL;
7362 fra.me.REG[3] = NIT_NULL;
7363 fra.me.REG[0] = p0;
7364 fra.me.REG[1] = p1;
7365 /* syntax/typing.nit:1308 */
7366 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7367 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7368 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
7369 if (UNTAG_Bool(REGB0)) {
7370 } else {
7371 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7372 REGB0 = REGB1;
7373 }
7374 if (UNTAG_Bool(REGB0)) {
7375 /* syntax/typing.nit:1310 */
7376 if (!once_value_1) {
7377 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
7378 REGB0 = TAG_Int(44);
7379 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
7380 once_value_1 = fra.me.REG[3];
7381 register_static_object(&once_value_1);
7382 } else fra.me.REG[3] = once_value_1;
7383 fra.me.REG[3] = fra.me.REG[3];
7384 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7385 }
7386 /* syntax/typing.nit:1313 */
7387 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7388 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7389 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
7390 /* syntax/typing.nit:1314 */
7391 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7392 /* syntax/typing.nit:1315 */
7393 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7394 if (UNTAG_Bool(REGB0)) {
7395 } else {
7396 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1315);
7397 }
7398 /* syntax/typing.nit:1316 */
7399 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
7400 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7401 stack_frame_head = fra.me.prev;
7402 return;
7403 }
7404 static const char LOCATE_syntax___typing___ACastAsExternCall___from_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::from_type)";
7405 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
7406 struct {struct stack_frame_t me;} fra;
7407 val_t tmp;
7408 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7409 fra.me.file = LOCATE_syntax___typing;
7410 fra.me.line = 1321;
7411 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
7412 fra.me.has_broke = 0;
7413 fra.me.REG_size = 1;
7414 fra.me.nitni_local_ref_head = NULL;
7415 fra.me.REG[0] = NIT_NULL;
7416 fra.me.REG[0] = p0;
7417 /* syntax/typing.nit:1321 */
7418 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
7419 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7420 goto label1;
7421 label1: while(0);
7422 stack_frame_head = fra.me.prev;
7423 return fra.me.REG[0];
7424 }
7425 static const char LOCATE_syntax___typing___ACastAsExternCall___to_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::to_type)";
7426 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
7427 struct {struct stack_frame_t me;} fra;
7428 val_t tmp;
7429 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7430 fra.me.file = LOCATE_syntax___typing;
7431 fra.me.line = 1322;
7432 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
7433 fra.me.has_broke = 0;
7434 fra.me.REG_size = 1;
7435 fra.me.nitni_local_ref_head = NULL;
7436 fra.me.REG[0] = NIT_NULL;
7437 fra.me.REG[0] = p0;
7438 /* syntax/typing.nit:1322 */
7439 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
7440 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7441 goto label1;
7442 label1: while(0);
7443 stack_frame_head = fra.me.prev;
7444 return fra.me.REG[0];
7445 }
7446 static const char LOCATE_syntax___typing___AAsNullableExternCall___from_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::from_type)";
7447 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7448 struct {struct stack_frame_t me;} fra;
7449 val_t tmp;
7450 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7451 fra.me.file = LOCATE_syntax___typing;
7452 fra.me.line = 1326;
7453 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7454 fra.me.has_broke = 0;
7455 fra.me.REG_size = 1;
7456 fra.me.nitni_local_ref_head = NULL;
7457 fra.me.REG[0] = NIT_NULL;
7458 fra.me.REG[0] = p0;
7459 /* syntax/typing.nit:1326 */
7460 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7461 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7462 goto label1;
7463 label1: while(0);
7464 stack_frame_head = fra.me.prev;
7465 return fra.me.REG[0];
7466 }
7467 static const char LOCATE_syntax___typing___AAsNullableExternCall___to_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::to_type)";
7468 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7469 struct {struct stack_frame_t me;} fra;
7470 val_t tmp;
7471 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7472 fra.me.file = LOCATE_syntax___typing;
7473 fra.me.line = 1327;
7474 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7475 fra.me.has_broke = 0;
7476 fra.me.REG_size = 1;
7477 fra.me.nitni_local_ref_head = NULL;
7478 fra.me.REG[0] = NIT_NULL;
7479 fra.me.REG[0] = p0;
7480 /* syntax/typing.nit:1327 */
7481 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7482 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7483 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7484 goto label1;
7485 label1: while(0);
7486 stack_frame_head = fra.me.prev;
7487 return fra.me.REG[0];
7488 }
7489 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___from_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::from_type)";
7490 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7491 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7492 val_t REGB0;
7493 val_t tmp;
7494 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7495 fra.me.file = LOCATE_syntax___typing;
7496 fra.me.line = 1331;
7497 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7498 fra.me.has_broke = 0;
7499 fra.me.REG_size = 2;
7500 fra.me.nitni_local_ref_head = NULL;
7501 fra.me.REG[0] = NIT_NULL;
7502 fra.me.REG[1] = NIT_NULL;
7503 fra.me.REG[0] = p0;
7504 /* syntax/typing.nit:1333 */
7505 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7506 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7507 /* syntax/typing.nit:1334 */
7508 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7509 if (UNTAG_Bool(REGB0)) {
7510 /* syntax/typing.nit:1336 */
7511 fra.me.REG[1] = fra.me.REG[0];
7512 goto label1;
7513 } else {
7514 /* syntax/typing.nit:1338 */
7515 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7516 fra.me.REG[1] = fra.me.REG[0];
7517 goto label1;
7518 }
7519 label1: while(0);
7520 stack_frame_head = fra.me.prev;
7521 return fra.me.REG[1];
7522 }
7523 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___to_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::to_type)";
7524 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7525 struct {struct stack_frame_t me;} fra;
7526 val_t tmp;
7527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7528 fra.me.file = LOCATE_syntax___typing;
7529 fra.me.line = 1341;
7530 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7531 fra.me.has_broke = 0;
7532 fra.me.REG_size = 1;
7533 fra.me.nitni_local_ref_head = NULL;
7534 fra.me.REG[0] = NIT_NULL;
7535 fra.me.REG[0] = p0;
7536 /* syntax/typing.nit:1341 */
7537 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7538 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7539 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7540 goto label1;
7541 label1: while(0);
7542 stack_frame_head = fra.me.prev;
7543 return fra.me.REG[0];
7544 }
7545 static const char LOCATE_syntax___typing___AAttrFormExpr___prop[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::prop)";
7546 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7547 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7548 val_t REGB0;
7549 val_t tmp;
7550 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7551 fra.me.file = LOCATE_syntax___typing;
7552 fra.me.line = 1345;
7553 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7554 fra.me.has_broke = 0;
7555 fra.me.REG_size = 2;
7556 fra.me.nitni_local_ref_head = NULL;
7557 fra.me.REG[0] = NIT_NULL;
7558 fra.me.REG[1] = NIT_NULL;
7559 fra.me.REG[0] = p0;
7560 /* syntax/typing.nit:1345 */
7561 fra.me.REG[1] = fra.me.REG[0];
7562 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7563 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7564 if (UNTAG_Bool(REGB0)) {
7565 } else {
7566 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1345);
7567 }
7568 goto label1;
7569 label1: while(0);
7570 stack_frame_head = fra.me.prev;
7571 return fra.me.REG[1];
7572 }
7573 static const char LOCATE_syntax___typing___AAttrFormExpr___attr_type[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::attr_type)";
7574 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7575 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7576 val_t REGB0;
7577 val_t tmp;
7578 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7579 fra.me.file = LOCATE_syntax___typing;
7580 fra.me.line = 1348;
7581 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7582 fra.me.has_broke = 0;
7583 fra.me.REG_size = 2;
7584 fra.me.nitni_local_ref_head = NULL;
7585 fra.me.REG[0] = NIT_NULL;
7586 fra.me.REG[1] = NIT_NULL;
7587 fra.me.REG[0] = p0;
7588 /* syntax/typing.nit:1348 */
7589 fra.me.REG[1] = fra.me.REG[0];
7590 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7591 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7592 if (UNTAG_Bool(REGB0)) {
7593 } else {
7594 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1348);
7595 }
7596 goto label1;
7597 label1: while(0);
7598 stack_frame_head = fra.me.prev;
7599 return fra.me.REG[1];
7600 }
7601 static const char LOCATE_syntax___typing___AAttrFormExpr___do_typing[] = "typing::AAttrFormExpr::do_typing";
7602 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7603 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7604 val_t REGB0;
7605 val_t REGB1;
7606 val_t REGB2;
7607 val_t tmp;
7608 static val_t once_value_2; /* Once value */
7609 static val_t once_value_3; /* Once value */
7610 static val_t once_value_4; /* Once value */
7611 static val_t once_value_5; /* Once value */
7612 static val_t once_value_6; /* Once value */
7613 static val_t once_value_7; /* Once value */
7614 static val_t once_value_8; /* Once value */
7615 static val_t once_value_9; /* Once value */
7616 static val_t once_value_10; /* Once value */
7617 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7618 fra.me.file = LOCATE_syntax___typing;
7619 fra.me.line = 1351;
7620 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7621 fra.me.has_broke = 0;
7622 fra.me.REG_size = 7;
7623 fra.me.nitni_local_ref_head = NULL;
7624 fra.me.REG[0] = NIT_NULL;
7625 fra.me.REG[1] = NIT_NULL;
7626 fra.me.REG[2] = NIT_NULL;
7627 fra.me.REG[3] = NIT_NULL;
7628 fra.me.REG[4] = NIT_NULL;
7629 fra.me.REG[5] = NIT_NULL;
7630 fra.me.REG[6] = NIT_NULL;
7631 fra.me.REG[0] = p0;
7632 fra.me.REG[1] = p1;
7633 /* syntax/typing.nit:1354 */
7634 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7635 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7636 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7637 if (UNTAG_Bool(REGB0)) {
7638 goto label1;
7639 }
7640 /* syntax/typing.nit:1355 */
7641 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7642 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7643 /* syntax/typing.nit:1356 */
7644 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7645 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7646 /* syntax/typing.nit:1357 */
7647 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7648 if (UNTAG_Bool(REGB0)) {
7649 /* syntax/typing.nit:1358 */
7650 REGB0 = TAG_Int(3);
7651 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7652 if (!once_value_2) {
7653 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7654 REGB0 = TAG_Int(18);
7655 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
7656 once_value_2 = fra.me.REG[5];
7657 register_static_object(&once_value_2);
7658 } else fra.me.REG[5] = once_value_2;
7659 fra.me.REG[5] = fra.me.REG[5];
7660 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7661 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7662 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7663 if (!once_value_3) {
7664 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7665 REGB0 = TAG_Int(19);
7666 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
7667 once_value_3 = fra.me.REG[5];
7668 register_static_object(&once_value_3);
7669 } else fra.me.REG[5] = once_value_3;
7670 fra.me.REG[5] = fra.me.REG[5];
7671 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7672 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7673 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7674 /* syntax/typing.nit:1359 */
7675 goto label1;
7676 }
7677 /* syntax/typing.nit:1361 */
7678 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7679 /* syntax/typing.nit:1362 */
7680 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7681 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7682 if (UNTAG_Bool(REGB0)) {
7683 /* syntax/typing.nit:1363 */
7684 REGB0 = TAG_Int(5);
7685 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7686 if (!once_value_4) {
7687 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7688 REGB0 = TAG_Int(17);
7689 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
7690 once_value_4 = fra.me.REG[6];
7691 register_static_object(&once_value_4);
7692 } else fra.me.REG[6] = once_value_4;
7693 fra.me.REG[6] = fra.me.REG[6];
7694 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7695 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7696 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7697 if (!once_value_5) {
7698 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7699 REGB0 = TAG_Int(19);
7700 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
7701 once_value_5 = fra.me.REG[6];
7702 register_static_object(&once_value_5);
7703 } else fra.me.REG[6] = once_value_5;
7704 fra.me.REG[6] = fra.me.REG[6];
7705 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7706 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7707 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7708 if (!once_value_6) {
7709 fra.me.REG[6] = BOX_NativeString(".");
7710 REGB0 = TAG_Int(1);
7711 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
7712 once_value_6 = fra.me.REG[6];
7713 register_static_object(&once_value_6);
7714 } else fra.me.REG[6] = once_value_6;
7715 fra.me.REG[6] = fra.me.REG[6];
7716 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7717 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7718 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7719 /* syntax/typing.nit:1364 */
7720 goto label1;
7721 }
7722 /* syntax/typing.nit:1366 */
7723 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7724 /* syntax/typing.nit:1367 */
7725 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7726 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7727 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7728 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7729 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7730 REGB1 = TAG_Int(3);
7731 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7732 if (UNTAG_Bool(REGB2)) {
7733 } else {
7734 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7735 }
7736 /* ../lib/standard/kernel.nit:242 */
7737 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7738 /* syntax/typing.nit:1367 */
7739 if (UNTAG_Bool(REGB1)) {
7740 /* syntax/typing.nit:1368 */
7741 REGB1 = TAG_Int(7);
7742 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7743 if (!once_value_7) {
7744 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7745 REGB1 = TAG_Int(17);
7746 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
7747 once_value_7 = fra.me.REG[5];
7748 register_static_object(&once_value_7);
7749 } else fra.me.REG[5] = once_value_7;
7750 fra.me.REG[5] = fra.me.REG[5];
7751 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7752 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7753 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7754 if (!once_value_8) {
7755 fra.me.REG[3] = BOX_NativeString(" from ");
7756 REGB1 = TAG_Int(6);
7757 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
7758 once_value_8 = fra.me.REG[3];
7759 register_static_object(&once_value_8);
7760 } else fra.me.REG[3] = once_value_8;
7761 fra.me.REG[3] = fra.me.REG[3];
7762 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7763 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7764 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7765 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7766 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7768 if (!once_value_9) {
7769 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7770 REGB1 = TAG_Int(17);
7771 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
7772 once_value_9 = fra.me.REG[3];
7773 register_static_object(&once_value_9);
7774 } else fra.me.REG[3] = once_value_9;
7775 fra.me.REG[3] = fra.me.REG[3];
7776 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7777 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7778 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7780 if (!once_value_10) {
7781 fra.me.REG[3] = BOX_NativeString("");
7782 REGB1 = TAG_Int(0);
7783 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
7784 once_value_10 = fra.me.REG[3];
7785 register_static_object(&once_value_10);
7786 } else fra.me.REG[3] = once_value_10;
7787 fra.me.REG[3] = fra.me.REG[3];
7788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7789 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7790 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7791 }
7792 /* syntax/typing.nit:1370 */
7793 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7794 /* syntax/typing.nit:1371 */
7795 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7796 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7797 /* syntax/typing.nit:1372 */
7798 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7799 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7800 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7801 if (UNTAG_Bool(REGB1)) {
7802 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7803 if (UNTAG_Bool(REGB1)) {
7804 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1372);
7805 }
7806 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7807 fra.me.REG[2] = fra.me.REG[4];
7808 }
7809 /* syntax/typing.nit:1373 */
7810 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7811 label1: while(0);
7812 stack_frame_head = fra.me.prev;
7813 return;
7814 }
7815 static const char LOCATE_syntax___typing___AAttrExpr___after_typing[] = "typing::AAttrExpr::(typing::ANode::after_typing)";
7816 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7817 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7818 val_t REGB0;
7819 val_t REGB1;
7820 val_t tmp;
7821 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7822 fra.me.file = LOCATE_syntax___typing;
7823 fra.me.line = 1378;
7824 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7825 fra.me.has_broke = 0;
7826 fra.me.REG_size = 2;
7827 fra.me.nitni_local_ref_head = NULL;
7828 fra.me.REG[0] = NIT_NULL;
7829 fra.me.REG[1] = NIT_NULL;
7830 fra.me.REG[0] = p0;
7831 fra.me.REG[1] = p1;
7832 /* syntax/typing.nit:1380 */
7833 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7834 /* syntax/typing.nit:1381 */
7835 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7836 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7837 if (UNTAG_Bool(REGB0)) {
7838 } else {
7839 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7840 if (UNTAG_Bool(REGB1)) {
7841 REGB1 = TAG_Bool(0);
7842 REGB0 = REGB1;
7843 } else {
7844 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7845 REGB0 = REGB1;
7846 }
7847 }
7848 if (UNTAG_Bool(REGB0)) {
7849 goto label1;
7850 }
7851 /* syntax/typing.nit:1382 */
7852 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7853 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7854 /* syntax/typing.nit:1383 */
7855 REGB0 = TAG_Bool(1);
7856 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7857 label1: while(0);
7858 stack_frame_head = fra.me.prev;
7859 return;
7860 }
7861 static const char LOCATE_syntax___typing___AAttrAssignExpr___after_typing[] = "typing::AAttrAssignExpr::(typing::ANode::after_typing)";
7862 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7863 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7864 val_t REGB0;
7865 val_t REGB1;
7866 val_t tmp;
7867 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7868 fra.me.file = LOCATE_syntax___typing;
7869 fra.me.line = 1388;
7870 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7871 fra.me.has_broke = 0;
7872 fra.me.REG_size = 4;
7873 fra.me.nitni_local_ref_head = NULL;
7874 fra.me.REG[0] = NIT_NULL;
7875 fra.me.REG[1] = NIT_NULL;
7876 fra.me.REG[2] = NIT_NULL;
7877 fra.me.REG[3] = NIT_NULL;
7878 fra.me.REG[0] = p0;
7879 fra.me.REG[1] = p1;
7880 /* syntax/typing.nit:1390 */
7881 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7882 /* syntax/typing.nit:1391 */
7883 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7884 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7885 if (UNTAG_Bool(REGB0)) {
7886 } else {
7887 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7888 if (UNTAG_Bool(REGB1)) {
7889 REGB1 = TAG_Bool(0);
7890 REGB0 = REGB1;
7891 } else {
7892 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7893 REGB0 = REGB1;
7894 }
7895 }
7896 if (UNTAG_Bool(REGB0)) {
7897 goto label1;
7898 }
7899 /* syntax/typing.nit:1392 */
7900 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7901 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7902 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7903 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7904 if (UNTAG_Bool(REGB0)) {
7905 goto label1;
7906 }
7907 /* syntax/typing.nit:1393 */
7908 REGB0 = TAG_Bool(1);
7909 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7910 label1: while(0);
7911 stack_frame_head = fra.me.prev;
7912 return;
7913 }
7914 static const char LOCATE_syntax___typing___AAttrReassignExpr___after_typing[] = "typing::AAttrReassignExpr::(typing::ANode::after_typing)";
7915 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7916 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7917 val_t REGB0;
7918 val_t REGB1;
7919 val_t tmp;
7920 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7921 fra.me.file = LOCATE_syntax___typing;
7922 fra.me.line = 1398;
7923 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7924 fra.me.has_broke = 0;
7925 fra.me.REG_size = 4;
7926 fra.me.nitni_local_ref_head = NULL;
7927 fra.me.REG[0] = NIT_NULL;
7928 fra.me.REG[1] = NIT_NULL;
7929 fra.me.REG[2] = NIT_NULL;
7930 fra.me.REG[3] = NIT_NULL;
7931 fra.me.REG[0] = p0;
7932 fra.me.REG[1] = p1;
7933 /* syntax/typing.nit:1400 */
7934 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7935 /* syntax/typing.nit:1401 */
7936 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7937 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7938 if (UNTAG_Bool(REGB0)) {
7939 } else {
7940 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7941 if (UNTAG_Bool(REGB1)) {
7942 REGB1 = TAG_Bool(0);
7943 REGB0 = REGB1;
7944 } else {
7945 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7946 REGB0 = REGB1;
7947 }
7948 }
7949 if (UNTAG_Bool(REGB0)) {
7950 goto label1;
7951 }
7952 /* syntax/typing.nit:1402 */
7953 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7954 fra.me.REG[2] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
7955 /* syntax/typing.nit:1403 */
7956 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7957 if (UNTAG_Bool(REGB0)) {
7958 } else {
7959 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7960 if (UNTAG_Bool(REGB1)) {
7961 REGB1 = TAG_Bool(0);
7962 REGB0 = REGB1;
7963 } else {
7964 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7965 REGB0 = REGB1;
7966 }
7967 }
7968 if (UNTAG_Bool(REGB0)) {
7969 goto label1;
7970 }
7971 /* syntax/typing.nit:1404 */
7972 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7973 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7974 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
7975 /* syntax/typing.nit:1405 */
7976 REGB0 = TAG_Bool(1);
7977 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7978 label1: while(0);
7979 stack_frame_head = fra.me.prev;
7980 return;
7981 }
7982 static const char LOCATE_syntax___typing___AIssetAttrExpr___after_typing[] = "typing::AIssetAttrExpr::(typing::ANode::after_typing)";
7983 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7984 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7985 val_t REGB0;
7986 val_t REGB1;
7987 val_t tmp;
7988 static val_t once_value_2; /* Once value */
7989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7990 fra.me.file = LOCATE_syntax___typing;
7991 fra.me.line = 1410;
7992 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
7993 fra.me.has_broke = 0;
7994 fra.me.REG_size = 3;
7995 fra.me.nitni_local_ref_head = NULL;
7996 fra.me.REG[0] = NIT_NULL;
7997 fra.me.REG[1] = NIT_NULL;
7998 fra.me.REG[2] = NIT_NULL;
7999 fra.me.REG[0] = p0;
8000 fra.me.REG[1] = p1;
8001 /* syntax/typing.nit:1412 */
8002 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8003 /* syntax/typing.nit:1413 */
8004 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
8005 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8006 if (UNTAG_Bool(REGB0)) {
8007 } else {
8008 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8009 if (UNTAG_Bool(REGB1)) {
8010 REGB1 = TAG_Bool(0);
8011 REGB0 = REGB1;
8012 } else {
8013 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
8014 REGB0 = REGB1;
8015 }
8016 }
8017 if (UNTAG_Bool(REGB0)) {
8018 goto label1;
8019 }
8020 /* syntax/typing.nit:1414 */
8021 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
8022 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
8023 if (UNTAG_Bool(REGB0)) {
8024 /* syntax/typing.nit:1415 */
8025 if (!once_value_2) {
8026 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
8027 REGB0 = TAG_Int(37);
8028 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
8029 once_value_2 = fra.me.REG[2];
8030 register_static_object(&once_value_2);
8031 } else fra.me.REG[2] = once_value_2;
8032 fra.me.REG[2] = fra.me.REG[2];
8033 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
8034 }
8035 /* syntax/typing.nit:1417 */
8036 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
8037 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
8038 /* syntax/typing.nit:1418 */
8039 REGB0 = TAG_Bool(1);
8040 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
8041 label1: while(0);
8042 stack_frame_head = fra.me.prev;
8043 return;
8044 }
8045 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::prop_signature)";
8046 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
8047 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8048 val_t REGB0;
8049 val_t tmp;
8050 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8051 fra.me.file = LOCATE_syntax___typing;
8052 fra.me.line = 1423;
8053 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
8054 fra.me.has_broke = 0;
8055 fra.me.REG_size = 2;
8056 fra.me.nitni_local_ref_head = NULL;
8057 fra.me.REG[0] = NIT_NULL;
8058 fra.me.REG[1] = NIT_NULL;
8059 fra.me.REG[0] = p0;
8060 /* syntax/typing.nit:1423 */
8061 fra.me.REG[1] = fra.me.REG[0];
8062 /* syntax/typing.nit:1424 */
8063 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
8064 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
8065 if (UNTAG_Bool(REGB0)) {
8066 } else {
8067 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1424);
8068 }
8069 goto label1;
8070 label1: while(0);
8071 stack_frame_head = fra.me.prev;
8072 return fra.me.REG[1];
8073 }
8074 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::raw_arguments)";
8075 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
8076 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8077 val_t REGB0;
8078 val_t REGB1;
8079 val_t tmp;
8080 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8081 fra.me.file = LOCATE_syntax___typing;
8082 fra.me.line = 1427;
8083 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
8084 fra.me.has_broke = 0;
8085 fra.me.REG_size = 4;
8086 fra.me.nitni_local_ref_head = NULL;
8087 fra.me.REG[0] = NIT_NULL;
8088 fra.me.REG[1] = NIT_NULL;
8089 fra.me.REG[2] = NIT_NULL;
8090 fra.me.REG[3] = NIT_NULL;
8091 fra.me.REG[0] = p0;
8092 /* syntax/typing.nit:1430 */
8093 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
8094 /* syntax/typing.nit:1431 */
8095 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8096 if (UNTAG_Bool(REGB0)) {
8097 } else {
8098 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8099 if (UNTAG_Bool(REGB1)) {
8100 REGB1 = TAG_Bool(0);
8101 REGB0 = REGB1;
8102 } else {
8103 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8104 REGB0 = REGB1;
8105 }
8106 }
8107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8108 if (UNTAG_Bool(REGB0)) {
8109 /* syntax/typing.nit:1432 */
8110 fra.me.REG[2] = fra.me.REG[1];
8111 goto label1;
8112 } else {
8113 /* syntax/typing.nit:1434 */
8114 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8115 fra.me.REG[1] = fra.me.REG[3];
8116 /* syntax/typing.nit:1435 */
8117 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8118 if (UNTAG_Bool(REGB0)) {
8119 } else {
8120 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8121 if (UNTAG_Bool(REGB1)) {
8122 REGB1 = TAG_Bool(0);
8123 REGB0 = REGB1;
8124 } else {
8125 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8126 REGB0 = REGB1;
8127 }
8128 }
8129 if (UNTAG_Bool(REGB0)) {
8130 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
8131 fra.me.REG[1] = fra.me.REG[3];
8132 }
8133 /* syntax/typing.nit:1436 */
8134 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
8135 /* syntax/typing.nit:1437 */
8136 fra.me.REG[2] = fra.me.REG[1];
8137 goto label1;
8138 }
8139 label1: while(0);
8140 stack_frame_head = fra.me.prev;
8141 return fra.me.REG[2];
8142 }
8143 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments[] = "typing::AAbsAbsSendExpr::compute_raw_arguments";
8144 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
8145 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
8146 val_t REGB0;
8147 val_t tmp;
8148 static val_t once_value_1; /* Once value */
8149 static val_t once_value_2; /* Once value */
8150 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8151 fra.me.file = LOCATE_syntax___typing;
8152 fra.me.line = 1443;
8153 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
8154 fra.me.has_broke = 0;
8155 fra.me.REG_size = 3;
8156 fra.me.nitni_local_ref_head = NULL;
8157 fra.me.REG[0] = NIT_NULL;
8158 fra.me.REG[1] = NIT_NULL;
8159 fra.me.REG[2] = NIT_NULL;
8160 fra.me.REG[0] = p0;
8161 /* syntax/typing.nit:1445 */
8162 REGB0 = TAG_Int(3);
8163 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8164 if (!once_value_1) {
8165 fra.me.REG[2] = BOX_NativeString("");
8166 REGB0 = TAG_Int(0);
8167 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
8168 once_value_1 = fra.me.REG[2];
8169 register_static_object(&once_value_1);
8170 } else fra.me.REG[2] = once_value_1;
8171 fra.me.REG[2] = fra.me.REG[2];
8172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8173 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
8174 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8175 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8176 if (!once_value_2) {
8177 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
8178 REGB0 = TAG_Int(25);
8179 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
8180 once_value_2 = fra.me.REG[2];
8181 register_static_object(&once_value_2);
8182 } else fra.me.REG[2] = once_value_2;
8183 fra.me.REG[2] = fra.me.REG[2];
8184 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8185 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
8186 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8187 /* syntax/typing.nit:1446 */
8188 fra.me.REG[1] = NIT_NULL;
8189 goto label3;
8190 label3: while(0);
8191 stack_frame_head = fra.me.prev;
8192 return fra.me.REG[1];
8193 }
8194 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature[] = "typing::AAbsAbsSendExpr::process_signature";
8195 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8196 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8197 val_t REGB0;
8198 val_t REGB1;
8199 val_t REGB2;
8200 val_t REGB3;
8201 val_t REGB4;
8202 val_t REGB5;
8203 val_t REGB6;
8204 val_t REGB7;
8205 val_t REGB8;
8206 val_t REGB9;
8207 val_t REGB10;
8208 val_t REGB11;
8209 val_t tmp;
8210 static val_t once_value_1; /* Once value */
8211 static val_t once_value_2; /* Once value */
8212 static val_t once_value_3; /* Once value */
8213 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8214 fra.me.file = LOCATE_syntax___typing;
8215 fra.me.line = 1449;
8216 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
8217 fra.me.has_broke = 0;
8218 fra.me.REG_size = 7;
8219 fra.me.nitni_local_ref_head = NULL;
8220 fra.me.REG[0] = NIT_NULL;
8221 fra.me.REG[1] = NIT_NULL;
8222 fra.me.REG[2] = NIT_NULL;
8223 fra.me.REG[3] = NIT_NULL;
8224 fra.me.REG[4] = NIT_NULL;
8225 fra.me.REG[5] = NIT_NULL;
8226 fra.me.REG[6] = NIT_NULL;
8227 fra.me.REG[0] = p0;
8228 fra.me.REG[1] = p1;
8229 fra.me.REG[2] = p2;
8230 fra.me.REG[3] = p3;
8231 fra.me.REG[4] = p4;
8232 /* syntax/typing.nit:1452 */
8233 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
8234 /* syntax/typing.nit:1453 */
8235 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
8236 /* syntax/typing.nit:1455 */
8237 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8238 if (UNTAG_Bool(REGB2)) {
8239 } else {
8240 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8241 if (UNTAG_Bool(REGB3)) {
8242 REGB3 = TAG_Bool(0);
8243 REGB2 = REGB3;
8244 } else {
8245 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8246 REGB2 = REGB3;
8247 }
8248 }
8249 if (UNTAG_Bool(REGB2)) {
8250 REGB2 = TAG_Int(0);
8251 } else {
8252 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8253 if (UNTAG_Bool(REGB3)) {
8254 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1455);
8255 }
8256 /* ../lib/standard/collection/array.nit:24 */
8257 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8258 if (UNTAG_Bool(REGB3)) {
8259 } else {
8260 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8261 }
8262 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8263 /* syntax/typing.nit:1455 */
8264 REGB2 = REGB3;
8265 }
8266 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8267 if (UNTAG_Bool(REGB3)) {
8268 } else {
8269 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8270 }
8271 /* ../lib/standard/kernel.nit:244 */
8272 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8273 /* syntax/typing.nit:1456 */
8274 if (UNTAG_Bool(REGB3)) {
8275 REGB3 = TAG_Bool(1);
8276 } else {
8277 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8278 if (UNTAG_Bool(REGB4)) {
8279 } else {
8280 /* ../lib/standard/kernel.nit:237 */
8281 REGB5 = TAG_Bool((REGB1)==(REGB2));
8282 /* syntax/typing.nit:1456 */
8283 REGB4 = REGB5;
8284 }
8285 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
8286 if (UNTAG_Bool(REGB4)) {
8287 REGB4 = TAG_Int(1);
8288 /* ../lib/standard/kernel.nit:246 */
8289 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
8290 /* syntax/typing.nit:1456 */
8291 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
8292 if (UNTAG_Bool(REGB5)) {
8293 } else {
8294 /* ../lib/standard/kernel.nit:237 */
8295 REGB4 = TAG_Bool((REGB0)==(REGB4));
8296 /* syntax/typing.nit:1456 */
8297 REGB5 = REGB4;
8298 }
8299 } else {
8300 REGB4 = TAG_Bool(0);
8301 REGB5 = REGB4;
8302 }
8303 REGB3 = REGB5;
8304 }
8305 if (UNTAG_Bool(REGB3)) {
8306 /* syntax/typing.nit:1457 */
8307 REGB3 = TAG_Int(5);
8308 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
8309 if (!once_value_1) {
8310 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
8311 REGB3 = TAG_Int(37);
8312 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB3);
8313 once_value_1 = fra.me.REG[6];
8314 register_static_object(&once_value_1);
8315 } else fra.me.REG[6] = once_value_1;
8316 fra.me.REG[6] = fra.me.REG[6];
8317 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
8318 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8319 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8320 if (!once_value_2) {
8321 fra.me.REG[3] = BOX_NativeString("");
8322 REGB3 = TAG_Int(0);
8323 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB3);
8324 once_value_2 = fra.me.REG[3];
8325 register_static_object(&once_value_2);
8326 } else fra.me.REG[3] = once_value_2;
8327 fra.me.REG[3] = fra.me.REG[3];
8328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8329 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8330 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8331 if (!once_value_3) {
8332 fra.me.REG[3] = BOX_NativeString("'.");
8333 REGB3 = TAG_Int(2);
8334 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB3);
8335 once_value_3 = fra.me.REG[3];
8336 register_static_object(&once_value_3);
8337 } else fra.me.REG[3] = once_value_3;
8338 fra.me.REG[3] = fra.me.REG[3];
8339 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8340 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8341 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8342 /* syntax/typing.nit:1458 */
8343 REGB3 = TAG_Bool(0);
8344 goto label4;
8345 }
8346 /* syntax/typing.nit:1460 */
8347 REGB5 = TAG_Int(0);
8348 /* syntax/typing.nit:1461 */
8349 REGB4 = TAG_Int(0);
8350 /* ../lib/standard/kernel.nit:399 */
8351 REGB6 = REGB1;
8352 /* ../lib/standard/kernel.nit:404 */
8353 while(1) {
8354 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
8355 if (UNTAG_Bool(REGB7)) {
8356 } else {
8357 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8358 }
8359 /* ../lib/standard/kernel.nit:242 */
8360 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
8361 /* ../lib/standard/kernel.nit:404 */
8362 if (UNTAG_Bool(REGB7)) {
8363 /* syntax/typing.nit:1461 */
8364 REGB7 = REGB4;
8365 /* syntax/typing.nit:1463 */
8366 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
8367 /* syntax/typing.nit:1464 */
8368 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
8369 if (UNTAG_Bool(REGB8)) {
8370 } else {
8371 /* ../lib/standard/kernel.nit:237 */
8372 REGB7 = TAG_Bool((REGB7)==(REGB0));
8373 /* syntax/typing.nit:1464 */
8374 REGB8 = REGB7;
8375 }
8376 if (UNTAG_Bool(REGB8)) {
8377 /* syntax/typing.nit:1465 */
8378 REGB8 = TAG_Int(0);
8379 /* ../lib/standard/kernel.nit:247 */
8380 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
8381 /* ../lib/standard/kernel.nit:393 */
8382 while(1) {
8383 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8384 if (UNTAG_Bool(REGB9)) {
8385 } else {
8386 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8387 }
8388 /* ../lib/standard/kernel.nit:241 */
8389 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
8390 /* ../lib/standard/kernel.nit:393 */
8391 if (UNTAG_Bool(REGB9)) {
8392 /* syntax/typing.nit:1466 */
8393 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8394 if (UNTAG_Bool(REGB9)) {
8395 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1466);
8396 }
8397 /* ../lib/standard/collection/array.nit:279 */
8398 fra.me.REG[0] = fra.me.REG[4];
8399 REGB9 = REGB5;
8400 /* ../lib/standard/collection/array.nit:281 */
8401 REGB10 = TAG_Int(0);
8402 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8403 if (UNTAG_Bool(REGB11)) {
8404 } else {
8405 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8406 }
8407 /* ../lib/standard/kernel.nit:243 */
8408 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
8409 /* ../lib/standard/collection/array.nit:281 */
8410 if (UNTAG_Bool(REGB10)) {
8411 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
8412 if (UNTAG_Bool(REGB10)) {
8413 } else {
8414 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
8415 }
8416 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
8417 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8418 if (UNTAG_Bool(REGB11)) {
8419 } else {
8420 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8421 }
8422 /* ../lib/standard/kernel.nit:242 */
8423 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
8424 } else {
8425 /* ../lib/standard/collection/array.nit:281 */
8426 REGB11 = TAG_Bool(0);
8427 REGB10 = REGB11;
8428 }
8429 if (UNTAG_Bool(REGB10)) {
8430 } else {
8431 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
8432 }
8433 /* ../lib/standard/collection/array.nit:282 */
8434 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
8435 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8436 if (UNTAG_Bool(REGB10)) {
8437 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
8438 }
8439 /* ../lib/standard/collection/array.nit:725 */
8440 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
8441 /* ../lib/standard/collection/array.nit:282 */
8442 goto label5;
8443 label5: while(0);
8444 /* syntax/typing.nit:1467 */
8445 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8446 /* syntax/typing.nit:1468 */
8447 REGB9 = TAG_Int(1);
8448 /* ../lib/standard/kernel.nit:245 */
8449 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
8450 /* syntax/typing.nit:1468 */
8451 REGB5 = REGB9;
8452 /* ../lib/standard/kernel.nit:395 */
8453 REGB9 = TAG_Int(1);
8454 /* ../lib/standard/kernel.nit:245 */
8455 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
8456 /* ../lib/standard/kernel.nit:395 */
8457 REGB8 = REGB9;
8458 } else {
8459 /* ../lib/standard/kernel.nit:393 */
8460 goto label6;
8461 }
8462 }
8463 label6: while(0);
8464 } else {
8465 /* syntax/typing.nit:1471 */
8466 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8467 if (UNTAG_Bool(REGB8)) {
8468 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1471);
8469 }
8470 /* ../lib/standard/collection/array.nit:279 */
8471 fra.me.REG[3] = fra.me.REG[4];
8472 REGB8 = REGB5;
8473 /* ../lib/standard/collection/array.nit:281 */
8474 REGB7 = TAG_Int(0);
8475 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8476 if (UNTAG_Bool(REGB9)) {
8477 } else {
8478 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8479 }
8480 /* ../lib/standard/kernel.nit:243 */
8481 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8482 /* ../lib/standard/collection/array.nit:281 */
8483 if (UNTAG_Bool(REGB7)) {
8484 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8485 if (UNTAG_Bool(REGB7)) {
8486 } else {
8487 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
8488 }
8489 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8490 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8491 if (UNTAG_Bool(REGB9)) {
8492 } else {
8493 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8494 }
8495 /* ../lib/standard/kernel.nit:242 */
8496 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8497 } else {
8498 /* ../lib/standard/collection/array.nit:281 */
8499 REGB9 = TAG_Bool(0);
8500 REGB7 = REGB9;
8501 }
8502 if (UNTAG_Bool(REGB7)) {
8503 } else {
8504 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
8505 }
8506 /* ../lib/standard/collection/array.nit:282 */
8507 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8508 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8509 if (UNTAG_Bool(REGB7)) {
8510 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
8511 }
8512 /* ../lib/standard/collection/array.nit:725 */
8513 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8514 /* ../lib/standard/collection/array.nit:282 */
8515 goto label7;
8516 label7: while(0);
8517 /* syntax/typing.nit:1471 */
8518 fra.me.REG[0] = fra.me.REG[3];
8519 /* syntax/typing.nit:1472 */
8520 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8521 /* syntax/typing.nit:1473 */
8522 REGB8 = TAG_Int(1);
8523 /* ../lib/standard/kernel.nit:245 */
8524 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8525 /* syntax/typing.nit:1473 */
8526 REGB5 = REGB8;
8527 }
8528 /* ../lib/standard/kernel.nit:406 */
8529 REGB8 = TAG_Int(1);
8530 /* ../lib/standard/kernel.nit:245 */
8531 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8532 /* ../lib/standard/kernel.nit:406 */
8533 REGB4 = REGB8;
8534 } else {
8535 /* ../lib/standard/kernel.nit:404 */
8536 goto label8;
8537 }
8538 }
8539 label8: while(0);
8540 /* syntax/typing.nit:1476 */
8541 REGB4 = TAG_Bool(1);
8542 REGB3 = REGB4;
8543 goto label4;
8544 label4: while(0);
8545 stack_frame_head = fra.me.prev;
8546 return REGB3;
8547 }
8548 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures[] = "typing::AAbsAbsSendExpr::process_closures";
8549 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8550 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8551 val_t REGB0;
8552 val_t REGB1;
8553 val_t REGB2;
8554 val_t REGB3;
8555 val_t REGB4;
8556 val_t REGB5;
8557 val_t tmp;
8558 static val_t once_value_2; /* Once value */
8559 static val_t once_value_3; /* Once value */
8560 static val_t once_value_4; /* Once value */
8561 static val_t once_value_5; /* Once value */
8562 static val_t once_value_6; /* Once value */
8563 static val_t once_value_7; /* Once value */
8564 static val_t once_value_8; /* Once value */
8565 static val_t once_value_11; /* Once value */
8566 static val_t once_value_12; /* Once value */
8567 static val_t once_value_13; /* Once value */
8568 static val_t once_value_14; /* Once value */
8569 static val_t once_value_15; /* Once value */
8570 static val_t once_value_16; /* Once value */
8571 static val_t once_value_18; /* Once value */
8572 static val_t once_value_19; /* Once value */
8573 static val_t once_value_20; /* Once value */
8574 static val_t once_value_21; /* Once value */
8575 static val_t once_value_22; /* Once value */
8576 static val_t once_value_24; /* Once value */
8577 static val_t once_value_25; /* Once value */
8578 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8579 fra.me.file = LOCATE_syntax___typing;
8580 fra.me.line = 1479;
8581 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8582 fra.me.has_broke = 0;
8583 fra.me.REG_size = 17;
8584 fra.me.nitni_local_ref_head = NULL;
8585 fra.me.REG[0] = NIT_NULL;
8586 fra.me.REG[1] = NIT_NULL;
8587 fra.me.REG[2] = NIT_NULL;
8588 fra.me.REG[3] = NIT_NULL;
8589 fra.me.REG[4] = NIT_NULL;
8590 fra.me.REG[5] = NIT_NULL;
8591 fra.me.REG[6] = NIT_NULL;
8592 fra.me.REG[7] = NIT_NULL;
8593 fra.me.REG[8] = NIT_NULL;
8594 fra.me.REG[9] = NIT_NULL;
8595 fra.me.REG[10] = NIT_NULL;
8596 fra.me.REG[11] = NIT_NULL;
8597 fra.me.REG[12] = NIT_NULL;
8598 fra.me.REG[13] = NIT_NULL;
8599 fra.me.REG[14] = NIT_NULL;
8600 fra.me.REG[15] = NIT_NULL;
8601 fra.me.REG[16] = NIT_NULL;
8602 fra.me.REG[0] = p0;
8603 fra.me.REG[1] = p1;
8604 fra.me.REG[2] = p2;
8605 fra.me.REG[3] = p3;
8606 fra.me.REG[4] = p4;
8607 /* syntax/typing.nit:1482 */
8608 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8609 /* syntax/typing.nit:1483 */
8610 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8611 /* syntax/typing.nit:1484 */
8612 REGB0 = TAG_Int(0);
8613 /* ../lib/standard/collection/array.nit:267 */
8614 fra.me.REG[7] = fra.me.REG[6];
8615 /* ../lib/standard/collection/array.nit:270 */
8616 REGB1 = TAG_Int(0);
8617 /* ../lib/standard/collection/array.nit:271 */
8618 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8619 if (UNTAG_Bool(REGB2)) {
8620 } else {
8621 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
8622 }
8623 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8624 /* ../lib/standard/collection/array.nit:272 */
8625 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8626 /* ../lib/standard/collection/array.nit:273 */
8627 while(1) {
8628 /* ../lib/standard/collection/array.nit:24 */
8629 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8630 if (UNTAG_Bool(REGB2)) {
8631 } else {
8632 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8633 }
8634 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8635 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8636 if (UNTAG_Bool(REGB3)) {
8637 } else {
8638 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8639 }
8640 /* ../lib/standard/kernel.nit:242 */
8641 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8642 /* ../lib/standard/collection/array.nit:273 */
8643 if (UNTAG_Bool(REGB2)) {
8644 /* ../lib/standard/collection/array.nit:274 */
8645 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8646 if (UNTAG_Bool(REGB2)) {
8647 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
8648 }
8649 /* ../lib/standard/collection/array.nit:725 */
8650 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8651 /* syntax/typing.nit:1486 */
8652 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8653 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8654 if (UNTAG_Bool(REGB2)) {
8655 REGB2 = TAG_Int(1);
8656 /* ../lib/standard/kernel.nit:245 */
8657 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8658 /* syntax/typing.nit:1486 */
8659 REGB0 = REGB2;
8660 }
8661 /* ../lib/standard/collection/array.nit:275 */
8662 REGB2 = TAG_Int(1);
8663 /* ../lib/standard/kernel.nit:245 */
8664 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8665 /* ../lib/standard/collection/array.nit:275 */
8666 REGB1 = REGB2;
8667 } else {
8668 /* ../lib/standard/collection/array.nit:273 */
8669 goto label1;
8670 }
8671 }
8672 label1: while(0);
8673 /* syntax/typing.nit:1488 */
8674 REGB1 = TAG_Int(0);
8675 /* syntax/typing.nit:1489 */
8676 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8677 if (UNTAG_Bool(REGB2)) {
8678 } else {
8679 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8680 if (UNTAG_Bool(REGB3)) {
8681 REGB3 = TAG_Bool(0);
8682 REGB2 = REGB3;
8683 } else {
8684 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8685 REGB2 = REGB3;
8686 }
8687 }
8688 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8689 if (UNTAG_Bool(REGB2)) {
8690 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8691 if (UNTAG_Bool(REGB2)) {
8692 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1489);
8693 }
8694 /* ../lib/standard/collection/array.nit:24 */
8695 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8696 if (UNTAG_Bool(REGB2)) {
8697 } else {
8698 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8699 }
8700 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8701 /* syntax/typing.nit:1489 */
8702 REGB1 = REGB2;
8703 }
8704 /* ../lib/standard/collection/array.nit:24 */
8705 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8706 if (UNTAG_Bool(REGB2)) {
8707 } else {
8708 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8709 }
8710 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8711 /* syntax/typing.nit:1490 */
8712 REGB3 = TAG_Int(0);
8713 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8714 if (UNTAG_Bool(REGB4)) {
8715 } else {
8716 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8717 }
8718 /* ../lib/standard/kernel.nit:244 */
8719 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8720 /* syntax/typing.nit:1490 */
8721 if (UNTAG_Bool(REGB3)) {
8722 /* syntax/typing.nit:1491 */
8723 REGB3 = TAG_Int(0);
8724 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8725 if (UNTAG_Bool(REGB2)) {
8726 } else {
8727 /* ../lib/standard/kernel.nit:237 */
8728 REGB3 = TAG_Bool((REGB1)==(REGB3));
8729 /* syntax/typing.nit:1491 */
8730 REGB2 = REGB3;
8731 }
8732 if (UNTAG_Bool(REGB2)) {
8733 REGB2 = TAG_Int(0);
8734 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8735 if (UNTAG_Bool(REGB3)) {
8736 } else {
8737 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8738 }
8739 /* ../lib/standard/kernel.nit:244 */
8740 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8741 } else {
8742 /* syntax/typing.nit:1491 */
8743 REGB3 = TAG_Bool(0);
8744 REGB2 = REGB3;
8745 }
8746 if (UNTAG_Bool(REGB2)) {
8747 /* syntax/typing.nit:1492 */
8748 REGB2 = TAG_Int(5);
8749 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8750 if (!once_value_2) {
8751 fra.me.REG[7] = BOX_NativeString("Error: ");
8752 REGB2 = TAG_Int(7);
8753 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8754 once_value_2 = fra.me.REG[7];
8755 register_static_object(&once_value_2);
8756 } else fra.me.REG[7] = once_value_2;
8757 fra.me.REG[7] = fra.me.REG[7];
8758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8759 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8760 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8761 if (!once_value_3) {
8762 fra.me.REG[7] = BOX_NativeString(" requires ");
8763 REGB2 = TAG_Int(10);
8764 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8765 once_value_3 = fra.me.REG[7];
8766 register_static_object(&once_value_3);
8767 } else fra.me.REG[7] = once_value_3;
8768 fra.me.REG[7] = fra.me.REG[7];
8769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8770 /* ../lib/standard/collection/array.nit:24 */
8771 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8772 if (UNTAG_Bool(REGB2)) {
8773 } else {
8774 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8775 }
8776 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8777 /* syntax/typing.nit:1492 */
8778 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8780 if (!once_value_4) {
8781 fra.me.REG[7] = BOX_NativeString(" blocks.");
8782 REGB2 = TAG_Int(8);
8783 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8784 once_value_4 = fra.me.REG[7];
8785 register_static_object(&once_value_4);
8786 } else fra.me.REG[7] = once_value_4;
8787 fra.me.REG[7] = fra.me.REG[7];
8788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8789 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8790 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8791 } else {
8792 /* ../lib/standard/collection/array.nit:24 */
8793 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8794 if (UNTAG_Bool(REGB2)) {
8795 } else {
8796 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8797 }
8798 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8799 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8800 if (UNTAG_Bool(REGB3)) {
8801 } else {
8802 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8803 }
8804 /* ../lib/standard/kernel.nit:244 */
8805 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8806 /* syntax/typing.nit:1493 */
8807 if (UNTAG_Bool(REGB2)) {
8808 REGB2 = TAG_Bool(1);
8809 } else {
8810 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8811 if (UNTAG_Bool(REGB3)) {
8812 } else {
8813 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8814 }
8815 /* ../lib/standard/kernel.nit:242 */
8816 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8817 /* syntax/typing.nit:1493 */
8818 REGB2 = REGB0;
8819 }
8820 if (UNTAG_Bool(REGB2)) {
8821 /* syntax/typing.nit:1494 */
8822 REGB2 = TAG_Int(7);
8823 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8824 if (!once_value_5) {
8825 fra.me.REG[7] = BOX_NativeString("Error: ");
8826 REGB2 = TAG_Int(7);
8827 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8828 once_value_5 = fra.me.REG[7];
8829 register_static_object(&once_value_5);
8830 } else fra.me.REG[7] = once_value_5;
8831 fra.me.REG[7] = fra.me.REG[7];
8832 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8833 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8834 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8835 if (!once_value_6) {
8836 fra.me.REG[7] = BOX_NativeString(" requires ");
8837 REGB2 = TAG_Int(10);
8838 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8839 once_value_6 = fra.me.REG[7];
8840 register_static_object(&once_value_6);
8841 } else fra.me.REG[7] = once_value_6;
8842 fra.me.REG[7] = fra.me.REG[7];
8843 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8844 /* ../lib/standard/collection/array.nit:24 */
8845 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8846 if (UNTAG_Bool(REGB2)) {
8847 } else {
8848 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8849 }
8850 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8851 /* syntax/typing.nit:1494 */
8852 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8854 if (!once_value_7) {
8855 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8856 REGB2 = TAG_Int(9);
8857 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8858 once_value_7 = fra.me.REG[7];
8859 register_static_object(&once_value_7);
8860 } else fra.me.REG[7] = once_value_7;
8861 fra.me.REG[7] = fra.me.REG[7];
8862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8863 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8864 if (UNTAG_Bool(REGB2)) {
8865 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1494);
8866 }
8867 /* ../lib/standard/collection/array.nit:24 */
8868 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8869 if (UNTAG_Bool(REGB2)) {
8870 } else {
8871 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8872 }
8873 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8874 /* syntax/typing.nit:1494 */
8875 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8876 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8877 if (!once_value_8) {
8878 fra.me.REG[7] = BOX_NativeString(" found.");
8879 REGB2 = TAG_Int(7);
8880 fra.me.REG[7] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[7])(fra.me.REG[7], REGB2);
8881 once_value_8 = fra.me.REG[7];
8882 register_static_object(&once_value_8);
8883 } else fra.me.REG[7] = once_value_8;
8884 fra.me.REG[7] = fra.me.REG[7];
8885 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8886 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8887 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8888 } else {
8889 /* syntax/typing.nit:1497 */
8890 fra.me.REG[8] = NIT_NULL;
8891 /* syntax/typing.nit:1498 */
8892 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8893 if (UNTAG_Bool(REGB2)) {
8894 } else {
8895 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8896 if (UNTAG_Bool(REGB0)) {
8897 REGB0 = TAG_Bool(0);
8898 REGB2 = REGB0;
8899 } else {
8900 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8901 REGB2 = REGB0;
8902 }
8903 }
8904 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8905 if (UNTAG_Bool(REGB2)) {
8906 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8907 fra.me.REG[8] = fra.me.REG[7];
8908 }
8909 /* syntax/typing.nit:1501 */
8910 REGB2 = TAG_Int(0);
8911 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8912 if (UNTAG_Bool(REGB0)) {
8913 } else {
8914 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8915 }
8916 /* ../lib/standard/kernel.nit:244 */
8917 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8918 /* syntax/typing.nit:1501 */
8919 if (UNTAG_Bool(REGB2)) {
8920 REGB2 = TAG_Int(1);
8921 /* ../lib/standard/kernel.nit:247 */
8922 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8923 /* syntax/typing.nit:1501 */
8924 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8925 if (UNTAG_Bool(REGB0)) {
8926 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1501);
8927 }
8928 /* ../lib/standard/collection/array.nit:279 */
8929 fra.me.REG[7] = fra.me.REG[4];
8930 /* ../lib/standard/collection/array.nit:281 */
8931 REGB0 = TAG_Int(0);
8932 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8933 if (UNTAG_Bool(REGB3)) {
8934 } else {
8935 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8936 }
8937 /* ../lib/standard/kernel.nit:243 */
8938 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8939 /* ../lib/standard/collection/array.nit:281 */
8940 if (UNTAG_Bool(REGB0)) {
8941 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8942 if (UNTAG_Bool(REGB0)) {
8943 } else {
8944 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
8945 }
8946 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8947 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8948 if (UNTAG_Bool(REGB3)) {
8949 } else {
8950 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8951 }
8952 /* ../lib/standard/kernel.nit:242 */
8953 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8954 } else {
8955 /* ../lib/standard/collection/array.nit:281 */
8956 REGB3 = TAG_Bool(0);
8957 REGB0 = REGB3;
8958 }
8959 if (UNTAG_Bool(REGB0)) {
8960 } else {
8961 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
8962 }
8963 /* ../lib/standard/collection/array.nit:282 */
8964 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8965 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8966 if (UNTAG_Bool(REGB0)) {
8967 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
8968 }
8969 /* ../lib/standard/collection/array.nit:725 */
8970 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8971 /* ../lib/standard/collection/array.nit:282 */
8972 goto label9;
8973 label9: while(0);
8974 /* syntax/typing.nit:1501 */
8975 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8976 if (UNTAG_Bool(REGB2)) {
8977 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1501);
8978 }
8979 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8980 } else {
8981 fra.me.REG[7] = NIT_NULL;
8982 }
8983 /* syntax/typing.nit:1504 */
8984 REGB2 = TAG_Int(0);
8985 /* ../lib/standard/kernel.nit:399 */
8986 REGB0 = REGB1;
8987 /* ../lib/standard/kernel.nit:404 */
8988 while(1) {
8989 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8990 if (UNTAG_Bool(REGB3)) {
8991 } else {
8992 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8993 }
8994 /* ../lib/standard/kernel.nit:242 */
8995 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8996 /* ../lib/standard/kernel.nit:404 */
8997 if (UNTAG_Bool(REGB3)) {
8998 /* syntax/typing.nit:1504 */
8999 REGB3 = REGB2;
9000 /* syntax/typing.nit:1505 */
9001 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9002 if (UNTAG_Bool(REGB4)) {
9003 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1505);
9004 }
9005 /* ../lib/standard/collection/array.nit:279 */
9006 fra.me.REG[9] = fra.me.REG[4];
9007 /* ../lib/standard/collection/array.nit:281 */
9008 REGB4 = TAG_Int(0);
9009 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9010 if (UNTAG_Bool(REGB5)) {
9011 } else {
9012 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9013 }
9014 /* ../lib/standard/kernel.nit:243 */
9015 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
9016 /* ../lib/standard/collection/array.nit:281 */
9017 if (UNTAG_Bool(REGB4)) {
9018 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
9019 if (UNTAG_Bool(REGB4)) {
9020 } else {
9021 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
9022 }
9023 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
9024 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9025 if (UNTAG_Bool(REGB5)) {
9026 } else {
9027 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9028 }
9029 /* ../lib/standard/kernel.nit:242 */
9030 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
9031 } else {
9032 /* ../lib/standard/collection/array.nit:281 */
9033 REGB5 = TAG_Bool(0);
9034 REGB4 = REGB5;
9035 }
9036 if (UNTAG_Bool(REGB4)) {
9037 } else {
9038 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
9039 }
9040 /* ../lib/standard/collection/array.nit:282 */
9041 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
9042 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
9043 if (UNTAG_Bool(REGB4)) {
9044 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
9045 }
9046 /* ../lib/standard/collection/array.nit:725 */
9047 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
9048 /* ../lib/standard/collection/array.nit:282 */
9049 goto label10;
9050 label10: while(0);
9051 /* syntax/typing.nit:1506 */
9052 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9053 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
9054 /* syntax/typing.nit:1507 */
9055 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
9056 /* syntax/typing.nit:1508 */
9057 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9058 if (UNTAG_Bool(REGB3)) {
9059 } else {
9060 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9061 if (UNTAG_Bool(REGB4)) {
9062 REGB4 = TAG_Bool(0);
9063 REGB3 = REGB4;
9064 } else {
9065 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
9066 REGB3 = REGB4;
9067 }
9068 }
9069 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
9070 if (UNTAG_Bool(REGB3)) {
9071 /* syntax/typing.nit:1509 */
9072 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
9073 /* syntax/typing.nit:1510 */
9074 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9075 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
9076 /* syntax/typing.nit:1511 */
9077 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
9078 /* syntax/typing.nit:1512 */
9079 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9080 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
9081 } else {
9082 /* ../lib/standard/collection/array.nit:24 */
9083 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9084 if (UNTAG_Bool(REGB3)) {
9085 } else {
9086 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9087 }
9088 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
9089 /* syntax/typing.nit:1513 */
9090 REGB4 = TAG_Int(1);
9091 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
9092 if (UNTAG_Bool(REGB5)) {
9093 } else {
9094 /* ../lib/standard/kernel.nit:237 */
9095 REGB4 = TAG_Bool((REGB3)==(REGB4));
9096 /* syntax/typing.nit:1513 */
9097 REGB5 = REGB4;
9098 }
9099 if (UNTAG_Bool(REGB5)) {
9100 /* syntax/typing.nit:1514 */
9101 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9102 REGB5 = TAG_Int(7);
9103 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9104 if (!once_value_11) {
9105 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
9106 REGB5 = TAG_Int(26);
9107 fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
9108 once_value_11 = fra.me.REG[13];
9109 register_static_object(&once_value_11);
9110 } else fra.me.REG[13] = once_value_11;
9111 fra.me.REG[13] = fra.me.REG[13];
9112 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9113 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9114 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9115 if (!once_value_12) {
9116 fra.me.REG[13] = BOX_NativeString("' in ");
9117 REGB5 = TAG_Int(5);
9118 fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
9119 once_value_12 = fra.me.REG[13];
9120 register_static_object(&once_value_12);
9121 } else fra.me.REG[13] = once_value_12;
9122 fra.me.REG[13] = fra.me.REG[13];
9123 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9124 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9125 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9126 if (!once_value_13) {
9127 fra.me.REG[13] = BOX_NativeString("; only closure is !");
9128 REGB5 = TAG_Int(19);
9129 fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
9130 once_value_13 = fra.me.REG[13];
9131 register_static_object(&once_value_13);
9132 } else fra.me.REG[13] = once_value_13;
9133 fra.me.REG[13] = fra.me.REG[13];
9134 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9135 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
9136 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9137 if (UNTAG_Bool(REGB5)) {
9138 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1514);
9139 }
9140 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
9141 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9142 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9143 if (!once_value_14) {
9144 fra.me.REG[13] = BOX_NativeString(".");
9145 REGB5 = TAG_Int(1);
9146 fra.me.REG[13] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[13])(fra.me.REG[13], REGB5);
9147 once_value_14 = fra.me.REG[13];
9148 register_static_object(&once_value_14);
9149 } else fra.me.REG[13] = once_value_14;
9150 fra.me.REG[13] = fra.me.REG[13];
9151 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9152 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
9153 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
9154 } else {
9155 /* syntax/typing.nit:1516 */
9156 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
9157 /* ../lib/standard/collection/array.nit:267 */
9158 fra.me.REG[11] = fra.me.REG[6];
9159 /* ../lib/standard/collection/array.nit:270 */
9160 REGB5 = TAG_Int(0);
9161 /* ../lib/standard/collection/array.nit:271 */
9162 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9163 if (UNTAG_Bool(REGB4)) {
9164 } else {
9165 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
9166 }
9167 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9168 /* ../lib/standard/collection/array.nit:272 */
9169 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
9170 /* ../lib/standard/collection/array.nit:273 */
9171 while(1) {
9172 /* ../lib/standard/collection/array.nit:24 */
9173 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9174 if (UNTAG_Bool(REGB4)) {
9175 } else {
9176 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9177 }
9178 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9179 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
9180 if (UNTAG_Bool(REGB3)) {
9181 } else {
9182 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9183 }
9184 /* ../lib/standard/kernel.nit:242 */
9185 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
9186 /* ../lib/standard/collection/array.nit:273 */
9187 if (UNTAG_Bool(REGB4)) {
9188 /* ../lib/standard/collection/array.nit:274 */
9189 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9190 if (UNTAG_Bool(REGB4)) {
9191 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
9192 }
9193 /* ../lib/standard/collection/array.nit:725 */
9194 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
9195 /* syntax/typing.nit:1518 */
9196 REGB4 = TAG_Int(3);
9197 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
9198 if (!once_value_15) {
9199 fra.me.REG[16] = BOX_NativeString("!");
9200 REGB4 = TAG_Int(1);
9201 fra.me.REG[16] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[16])(fra.me.REG[16], REGB4);
9202 once_value_15 = fra.me.REG[16];
9203 register_static_object(&once_value_15);
9204 } else fra.me.REG[16] = once_value_15;
9205 fra.me.REG[16] = fra.me.REG[16];
9206 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
9207 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
9208 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
9209 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9210 if (!once_value_16) {
9211 fra.me.REG[14] = BOX_NativeString("");
9212 REGB4 = TAG_Int(0);
9213 fra.me.REG[14] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[14])(fra.me.REG[14], REGB4);
9214 once_value_16 = fra.me.REG[14];
9215 register_static_object(&once_value_16);
9216 } else fra.me.REG[14] = once_value_16;
9217 fra.me.REG[14] = fra.me.REG[14];
9218 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9219 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
9220 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
9221 /* ../lib/standard/collection/array.nit:275 */
9222 REGB4 = TAG_Int(1);
9223 /* ../lib/standard/kernel.nit:245 */
9224 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
9225 /* ../lib/standard/collection/array.nit:275 */
9226 REGB5 = REGB4;
9227 } else {
9228 /* ../lib/standard/collection/array.nit:273 */
9229 goto label17;
9230 }
9231 }
9232 label17: while(0);
9233 /* syntax/typing.nit:1520 */
9234 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9235 REGB5 = TAG_Int(7);
9236 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9237 if (!once_value_18) {
9238 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
9239 REGB5 = TAG_Int(26);
9240 fra.me.REG[11] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[11])(fra.me.REG[11], REGB5);
9241 once_value_18 = fra.me.REG[11];
9242 register_static_object(&once_value_18);
9243 } else fra.me.REG[11] = once_value_18;
9244 fra.me.REG[11] = fra.me.REG[11];
9245 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
9246 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9247 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9248 if (!once_value_19) {
9249 fra.me.REG[10] = BOX_NativeString("' in ");
9250 REGB5 = TAG_Int(5);
9251 fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
9252 once_value_19 = fra.me.REG[10];
9253 register_static_object(&once_value_19);
9254 } else fra.me.REG[10] = once_value_19;
9255 fra.me.REG[10] = fra.me.REG[10];
9256 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9257 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9258 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9259 if (!once_value_20) {
9260 fra.me.REG[10] = BOX_NativeString("; only closures are ");
9261 REGB5 = TAG_Int(20);
9262 fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
9263 once_value_20 = fra.me.REG[10];
9264 register_static_object(&once_value_20);
9265 } else fra.me.REG[10] = once_value_20;
9266 fra.me.REG[10] = fra.me.REG[10];
9267 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9268 if (!once_value_21) {
9269 fra.me.REG[10] = BOX_NativeString(",");
9270 REGB5 = TAG_Int(1);
9271 fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
9272 once_value_21 = fra.me.REG[10];
9273 register_static_object(&once_value_21);
9274 } else fra.me.REG[10] = once_value_21;
9275 fra.me.REG[10] = fra.me.REG[10];
9276 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
9277 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9278 if (!once_value_22) {
9279 fra.me.REG[10] = BOX_NativeString(".");
9280 REGB5 = TAG_Int(1);
9281 fra.me.REG[10] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[10])(fra.me.REG[10], REGB5);
9282 once_value_22 = fra.me.REG[10];
9283 register_static_object(&once_value_22);
9284 } else fra.me.REG[10] = once_value_22;
9285 fra.me.REG[10] = fra.me.REG[10];
9286 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9287 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9288 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
9289 }
9290 }
9291 /* ../lib/standard/kernel.nit:406 */
9292 REGB5 = TAG_Int(1);
9293 /* ../lib/standard/kernel.nit:245 */
9294 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
9295 /* ../lib/standard/kernel.nit:406 */
9296 REGB2 = REGB5;
9297 } else {
9298 /* ../lib/standard/kernel.nit:404 */
9299 goto label23;
9300 }
9301 }
9302 label23: while(0);
9303 /* syntax/typing.nit:1525 */
9304 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9305 if (UNTAG_Bool(REGB2)) {
9306 } else {
9307 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9308 if (UNTAG_Bool(REGB0)) {
9309 REGB0 = TAG_Bool(0);
9310 REGB2 = REGB0;
9311 } else {
9312 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
9313 REGB2 = REGB0;
9314 }
9315 }
9316 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
9317 if (UNTAG_Bool(REGB2)) {
9318 /* syntax/typing.nit:1526 */
9319 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[8]);
9320 fra.me.REG[5] = fra.me.REG[8];
9321 }
9322 }
9323 }
9324 } else {
9325 /* syntax/typing.nit:1529 */
9326 REGB2 = TAG_Int(0);
9327 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
9328 if (UNTAG_Bool(REGB0)) {
9329 } else {
9330 /* ../lib/standard/kernel.nit:237 */
9331 REGB2 = TAG_Bool((REGB1)==(REGB2));
9332 /* syntax/typing.nit:1529 */
9333 REGB0 = REGB2;
9334 }
9335 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9336 if (UNTAG_Bool(REGB0)) {
9337 /* syntax/typing.nit:1530 */
9338 REGB0 = TAG_Int(3);
9339 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9340 if (!once_value_24) {
9341 fra.me.REG[6] = BOX_NativeString("Error: ");
9342 REGB0 = TAG_Int(7);
9343 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
9344 once_value_24 = fra.me.REG[6];
9345 register_static_object(&once_value_24);
9346 } else fra.me.REG[6] = once_value_24;
9347 fra.me.REG[6] = fra.me.REG[6];
9348 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
9349 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9350 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9351 if (!once_value_25) {
9352 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
9353 REGB0 = TAG_Int(25);
9354 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
9355 once_value_25 = fra.me.REG[3];
9356 register_static_object(&once_value_25);
9357 } else fra.me.REG[3] = once_value_25;
9358 fra.me.REG[3] = fra.me.REG[3];
9359 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9360 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9361 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9362 }
9363 }
9364 /* syntax/typing.nit:1532 */
9365 goto label26;
9366 label26: while(0);
9367 stack_frame_head = fra.me.prev;
9368 return fra.me.REG[5];
9369 }
9370 static const char LOCATE_syntax___typing___AAbsSendExpr___do_typing[] = "typing::AAbsSendExpr::do_typing";
9371 void syntax___typing___AAbsSendExpr___do_typing(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7){
9372 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9373 val_t REGB0;
9374 val_t REGB1;
9375 val_t REGB2;
9376 val_t tmp;
9377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9378 fra.me.file = LOCATE_syntax___typing;
9379 fra.me.line = 1537;
9380 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
9381 fra.me.has_broke = 0;
9382 fra.me.REG_size = 7;
9383 fra.me.nitni_local_ref_head = NULL;
9384 fra.me.REG[0] = NIT_NULL;
9385 fra.me.REG[1] = NIT_NULL;
9386 fra.me.REG[2] = NIT_NULL;
9387 fra.me.REG[3] = NIT_NULL;
9388 fra.me.REG[4] = NIT_NULL;
9389 fra.me.REG[5] = NIT_NULL;
9390 fra.me.REG[6] = NIT_NULL;
9391 fra.me.REG[0] = p0;
9392 fra.me.REG[1] = p1;
9393 fra.me.REG[2] = p2;
9394 REGB0 = p3;
9395 REGB1 = p4;
9396 fra.me.REG[3] = p5;
9397 fra.me.REG[4] = p6;
9398 fra.me.REG[5] = p7;
9399 /* syntax/typing.nit:1540 */
9400 fra.me.REG[3] = CALL_syntax___typing___AAbsSendExpr___get_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, fra.me.REG[3]);
9401 /* syntax/typing.nit:1541 */
9402 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9403 if (UNTAG_Bool(REGB0)) {
9404 } else {
9405 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9406 if (UNTAG_Bool(REGB2)) {
9407 REGB2 = TAG_Bool(0);
9408 REGB0 = REGB2;
9409 } else {
9410 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9411 REGB0 = REGB2;
9412 }
9413 }
9414 if (UNTAG_Bool(REGB0)) {
9415 goto label1;
9416 }
9417 /* syntax/typing.nit:1542 */
9418 fra.me.REG[2] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB1);
9419 /* syntax/typing.nit:1543 */
9420 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9421 if (UNTAG_Bool(REGB1)) {
9422 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1543);
9423 }
9424 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9425 REGB1 = CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[6], fra.me.REG[4]);
9426 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9427 if (UNTAG_Bool(REGB1)) {
9428 goto label1;
9429 }
9430 /* syntax/typing.nit:1544 */
9431 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9432 if (UNTAG_Bool(REGB1)) {
9433 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1544);
9434 }
9435 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9436 fra.me.REG[5] = CALL_syntax___typing___AAbsAbsSendExpr___process_closures(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[5]);
9437 /* syntax/typing.nit:1545 */
9438 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9439 if (UNTAG_Bool(REGB1)) {
9440 } else {
9441 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9442 if (UNTAG_Bool(REGB0)) {
9443 REGB0 = TAG_Bool(0);
9444 REGB1 = REGB0;
9445 } else {
9446 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9447 REGB1 = REGB0;
9448 }
9449 }
9450 if (UNTAG_Bool(REGB1)) {
9451 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9452 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9453 if (UNTAG_Bool(REGB1)) {
9454 } else {
9455 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9456 if (UNTAG_Bool(REGB0)) {
9457 REGB0 = TAG_Bool(0);
9458 REGB1 = REGB0;
9459 } else {
9460 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9461 REGB1 = REGB0;
9462 }
9463 }
9464 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9465 } else {
9466 REGB0 = TAG_Bool(0);
9467 REGB1 = REGB0;
9468 }
9469 if (UNTAG_Bool(REGB1)) {
9470 goto label1;
9471 }
9472 /* syntax/typing.nit:1546 */
9473 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
9474 /* syntax/typing.nit:1547 */
9475 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9476 /* syntax/typing.nit:1548 */
9477 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
9478 label1: while(0);
9479 stack_frame_head = fra.me.prev;
9480 return;
9481 }
9482 static const char LOCATE_syntax___typing___AAbsSendExpr___get_property[] = "typing::AAbsSendExpr::get_property";
9483 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9484 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9485 val_t REGB0;
9486 val_t REGB1;
9487 val_t REGB2;
9488 val_t REGB3;
9489 val_t tmp;
9490 static val_t once_value_1; /* Once value */
9491 static val_t once_value_2; /* Once value */
9492 static val_t once_value_3; /* Once value */
9493 static val_t once_value_4; /* Once value */
9494 static val_t once_value_5; /* Once value */
9495 static val_t once_value_6; /* Once value */
9496 static val_t once_value_8; /* Once value */
9497 static val_t once_value_9; /* Once value */
9498 static val_t once_value_10; /* Once value */
9499 static val_t once_value_11; /* Once value */
9500 static val_t once_value_12; /* Once value */
9501 static val_t once_value_13; /* Once value */
9502 static val_t once_value_14; /* Once value */
9503 static val_t once_value_15; /* Once value */
9504 static val_t once_value_16; /* Once value */
9505 static val_t once_value_17; /* Once value */
9506 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9507 fra.me.file = LOCATE_syntax___typing;
9508 fra.me.line = 1551;
9509 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9510 fra.me.has_broke = 0;
9511 fra.me.REG_size = 10;
9512 fra.me.nitni_local_ref_head = NULL;
9513 fra.me.REG[0] = NIT_NULL;
9514 fra.me.REG[1] = NIT_NULL;
9515 fra.me.REG[2] = NIT_NULL;
9516 fra.me.REG[3] = NIT_NULL;
9517 fra.me.REG[4] = NIT_NULL;
9518 fra.me.REG[5] = NIT_NULL;
9519 fra.me.REG[6] = NIT_NULL;
9520 fra.me.REG[7] = NIT_NULL;
9521 fra.me.REG[8] = NIT_NULL;
9522 fra.me.REG[9] = NIT_NULL;
9523 fra.me.REG[0] = p0;
9524 fra.me.REG[1] = p1;
9525 fra.me.REG[2] = p2;
9526 REGB0 = p3;
9527 fra.me.REG[3] = p4;
9528 /* syntax/typing.nit:1553 */
9529 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9530 if (UNTAG_Bool(REGB1)) {
9531 /* syntax/typing.nit:1554 */
9532 if (!once_value_1) {
9533 if (!once_value_2) {
9534 fra.me.REG[4] = BOX_NativeString("==");
9535 REGB1 = TAG_Int(2);
9536 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
9537 once_value_2 = fra.me.REG[4];
9538 register_static_object(&once_value_2);
9539 } else fra.me.REG[4] = once_value_2;
9540 fra.me.REG[4] = fra.me.REG[4];
9541 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9542 once_value_1 = fra.me.REG[4];
9543 register_static_object(&once_value_1);
9544 } else fra.me.REG[4] = once_value_1;
9545 fra.me.REG[4] = fra.me.REG[4];
9546 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9547 if (UNTAG_Bool(REGB1)) {
9548 } else {
9549 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9550 REGB1 = REGB2;
9551 }
9552 if (UNTAG_Bool(REGB1)) {
9553 REGB1 = TAG_Bool(1);
9554 } else {
9555 if (!once_value_3) {
9556 if (!once_value_4) {
9557 fra.me.REG[4] = BOX_NativeString("!=");
9558 REGB2 = TAG_Int(2);
9559 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB2);
9560 once_value_4 = fra.me.REG[4];
9561 register_static_object(&once_value_4);
9562 } else fra.me.REG[4] = once_value_4;
9563 fra.me.REG[4] = fra.me.REG[4];
9564 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9565 once_value_3 = fra.me.REG[4];
9566 register_static_object(&once_value_3);
9567 } else fra.me.REG[4] = once_value_3;
9568 fra.me.REG[4] = fra.me.REG[4];
9569 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9570 if (UNTAG_Bool(REGB2)) {
9571 } else {
9572 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9573 REGB2 = REGB3;
9574 }
9575 REGB1 = REGB2;
9576 }
9577 if (UNTAG_Bool(REGB1)) {
9578 /* syntax/typing.nit:1556 */
9579 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9580 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9581 fra.me.REG[2] = fra.me.REG[4];
9582 } else {
9583 /* syntax/typing.nit:1558 */
9584 REGB1 = TAG_Int(3);
9585 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9586 if (!once_value_5) {
9587 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9588 REGB1 = TAG_Int(15);
9589 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
9590 once_value_5 = fra.me.REG[5];
9591 register_static_object(&once_value_5);
9592 } else fra.me.REG[5] = once_value_5;
9593 fra.me.REG[5] = fra.me.REG[5];
9594 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9595 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9596 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9597 if (!once_value_6) {
9598 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9599 REGB1 = TAG_Int(17);
9600 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
9601 once_value_6 = fra.me.REG[5];
9602 register_static_object(&once_value_6);
9603 } else fra.me.REG[5] = once_value_6;
9604 fra.me.REG[5] = fra.me.REG[5];
9605 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9606 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9607 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9608 /* syntax/typing.nit:1559 */
9609 fra.me.REG[4] = NIT_NULL;
9610 goto label7;
9611 }
9612 }
9613 /* syntax/typing.nit:1562 */
9614 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9615 /* syntax/typing.nit:1563 */
9616 fra.me.REG[6] = NIT_NULL;
9617 /* syntax/typing.nit:1564 */
9618 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9619 if (UNTAG_Bool(REGB1)) {
9620 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9621 fra.me.REG[6] = fra.me.REG[7];
9622 }
9623 /* syntax/typing.nit:1565 */
9624 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9625 if (UNTAG_Bool(REGB1)) {
9626 } else {
9627 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9628 if (UNTAG_Bool(REGB2)) {
9629 REGB2 = TAG_Bool(0);
9630 REGB1 = REGB2;
9631 } else {
9632 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9633 REGB1 = REGB2;
9634 }
9635 }
9636 if (UNTAG_Bool(REGB1)) {
9637 /* syntax/typing.nit:1566 */
9638 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9639 /* ../lib/standard/collection/array.nit:24 */
9640 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9641 if (UNTAG_Bool(REGB1)) {
9642 } else {
9643 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9644 }
9645 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9646 /* syntax/typing.nit:1567 */
9647 REGB2 = TAG_Int(1);
9648 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9649 if (UNTAG_Bool(REGB3)) {
9650 } else {
9651 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9652 }
9653 /* ../lib/standard/kernel.nit:244 */
9654 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9655 /* syntax/typing.nit:1567 */
9656 if (UNTAG_Bool(REGB2)) {
9657 /* syntax/typing.nit:1568 */
9658 REGB2 = TAG_Int(5);
9659 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9660 if (!once_value_8) {
9661 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9662 REGB2 = TAG_Int(29);
9663 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
9664 once_value_8 = fra.me.REG[9];
9665 register_static_object(&once_value_8);
9666 } else fra.me.REG[9] = once_value_8;
9667 fra.me.REG[9] = fra.me.REG[9];
9668 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9669 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9670 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9671 if (!once_value_9) {
9672 fra.me.REG[9] = BOX_NativeString("' for ");
9673 REGB2 = TAG_Int(6);
9674 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
9675 once_value_9 = fra.me.REG[9];
9676 register_static_object(&once_value_9);
9677 } else fra.me.REG[9] = once_value_9;
9678 fra.me.REG[9] = fra.me.REG[9];
9679 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9680 if (!once_value_10) {
9681 fra.me.REG[9] = BOX_NativeString(", ");
9682 REGB2 = TAG_Int(2);
9683 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
9684 once_value_10 = fra.me.REG[9];
9685 register_static_object(&once_value_10);
9686 } else fra.me.REG[9] = once_value_10;
9687 fra.me.REG[9] = fra.me.REG[9];
9688 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9690 if (!once_value_11) {
9691 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9692 REGB2 = TAG_Int(27);
9693 fra.me.REG[9] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[9])(fra.me.REG[9], REGB2);
9694 once_value_11 = fra.me.REG[9];
9695 register_static_object(&once_value_11);
9696 } else fra.me.REG[9] = once_value_11;
9697 fra.me.REG[9] = fra.me.REG[9];
9698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9699 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9700 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9701 /* syntax/typing.nit:1569 */
9702 fra.me.REG[4] = NIT_NULL;
9703 goto label7;
9704 } else {
9705 /* ../lib/standard/collection/array.nit:24 */
9706 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9707 if (UNTAG_Bool(REGB2)) {
9708 } else {
9709 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9710 }
9711 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9712 /* syntax/typing.nit:1570 */
9713 REGB1 = TAG_Int(1);
9714 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9715 if (UNTAG_Bool(REGB3)) {
9716 } else {
9717 /* ../lib/standard/kernel.nit:237 */
9718 REGB1 = TAG_Bool((REGB2)==(REGB1));
9719 /* syntax/typing.nit:1570 */
9720 REGB3 = REGB1;
9721 }
9722 if (UNTAG_Bool(REGB3)) {
9723 /* syntax/typing.nit:1571 */
9724 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9725 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9726 if (UNTAG_Bool(REGB3)) {
9727 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1571);
9728 }
9729 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9730 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9731 /* syntax/typing.nit:1572 */
9732 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9733 if (UNTAG_Bool(REGB3)) {
9734 } else {
9735 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1572);
9736 }
9737 /* syntax/typing.nit:1573 */
9738 fra.me.REG[6] = fra.me.REG[7];
9739 }
9740 }
9741 }
9742 /* syntax/typing.nit:1577 */
9743 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9744 if (UNTAG_Bool(REGB3)) {
9745 } else {
9746 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9747 if (UNTAG_Bool(REGB1)) {
9748 REGB1 = TAG_Bool(0);
9749 REGB3 = REGB1;
9750 } else {
9751 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9752 REGB3 = REGB1;
9753 }
9754 }
9755 if (UNTAG_Bool(REGB3)) {
9756 /* syntax/typing.nit:1578 */
9757 if (UNTAG_Bool(REGB0)) {
9758 /* syntax/typing.nit:1579 */
9759 REGB0 = TAG_Int(5);
9760 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9761 if (!once_value_12) {
9762 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9763 REGB0 = TAG_Int(27);
9764 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
9765 once_value_12 = fra.me.REG[5];
9766 register_static_object(&once_value_12);
9767 } else fra.me.REG[5] = once_value_12;
9768 fra.me.REG[5] = fra.me.REG[5];
9769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9770 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9771 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9772 if (!once_value_13) {
9773 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9774 REGB0 = TAG_Int(13);
9775 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
9776 once_value_13 = fra.me.REG[5];
9777 register_static_object(&once_value_13);
9778 } else fra.me.REG[5] = once_value_13;
9779 fra.me.REG[5] = fra.me.REG[5];
9780 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9781 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9782 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9783 if (!once_value_14) {
9784 fra.me.REG[5] = BOX_NativeString(".");
9785 REGB0 = TAG_Int(1);
9786 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
9787 once_value_14 = fra.me.REG[5];
9788 register_static_object(&once_value_14);
9789 } else fra.me.REG[5] = once_value_14;
9790 fra.me.REG[5] = fra.me.REG[5];
9791 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9792 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9793 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9794 } else {
9795 /* syntax/typing.nit:1581 */
9796 REGB0 = TAG_Int(5);
9797 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9798 if (!once_value_15) {
9799 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9800 REGB0 = TAG_Int(15);
9801 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
9802 once_value_15 = fra.me.REG[5];
9803 register_static_object(&once_value_15);
9804 } else fra.me.REG[5] = once_value_15;
9805 fra.me.REG[5] = fra.me.REG[5];
9806 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9807 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9808 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9809 if (!once_value_16) {
9810 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9811 REGB0 = TAG_Int(20);
9812 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
9813 once_value_16 = fra.me.REG[3];
9814 register_static_object(&once_value_16);
9815 } else fra.me.REG[3] = once_value_16;
9816 fra.me.REG[3] = fra.me.REG[3];
9817 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9818 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9819 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9820 if (!once_value_17) {
9821 fra.me.REG[2] = BOX_NativeString(".");
9822 REGB0 = TAG_Int(1);
9823 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
9824 once_value_17 = fra.me.REG[2];
9825 register_static_object(&once_value_17);
9826 } else fra.me.REG[2] = once_value_17;
9827 fra.me.REG[2] = fra.me.REG[2];
9828 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9829 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9830 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9831 }
9832 /* syntax/typing.nit:1583 */
9833 fra.me.REG[4] = NIT_NULL;
9834 goto label7;
9835 }
9836 /* syntax/typing.nit:1585 */
9837 fra.me.REG[4] = fra.me.REG[6];
9838 goto label7;
9839 label7: while(0);
9840 stack_frame_head = fra.me.prev;
9841 return fra.me.REG[4];
9842 }
9843 static const char LOCATE_syntax___typing___AAbsSendExpr___get_signature[] = "typing::AAbsSendExpr::get_signature";
9844 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9845 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9846 val_t REGB0;
9847 val_t tmp;
9848 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9849 fra.me.file = LOCATE_syntax___typing;
9850 fra.me.line = 1588;
9851 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9852 fra.me.has_broke = 0;
9853 fra.me.REG_size = 6;
9854 fra.me.nitni_local_ref_head = NULL;
9855 fra.me.REG[0] = NIT_NULL;
9856 fra.me.REG[1] = NIT_NULL;
9857 fra.me.REG[2] = NIT_NULL;
9858 fra.me.REG[3] = NIT_NULL;
9859 fra.me.REG[4] = NIT_NULL;
9860 fra.me.REG[5] = NIT_NULL;
9861 fra.me.REG[0] = p0;
9862 fra.me.REG[1] = p1;
9863 fra.me.REG[2] = p2;
9864 fra.me.REG[3] = p3;
9865 REGB0 = p4;
9866 /* syntax/typing.nit:1591 */
9867 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9868 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9869 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[0], fra.me.REG[5], REGB0);
9870 /* syntax/typing.nit:1592 */
9871 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9872 /* syntax/typing.nit:1593 */
9873 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9874 if (UNTAG_Bool(REGB0)) {
9875 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9876 fra.me.REG[2] = fra.me.REG[3];
9877 }
9878 /* syntax/typing.nit:1594 */
9879 goto label1;
9880 label1: while(0);
9881 stack_frame_head = fra.me.prev;
9882 return fra.me.REG[2];
9883 }
9884 static const char LOCATE_syntax___typing___AAbsSendExpr___prop[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::prop)";
9885 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9886 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9887 val_t REGB0;
9888 val_t tmp;
9889 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9890 fra.me.file = LOCATE_syntax___typing;
9891 fra.me.line = 1597;
9892 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9893 fra.me.has_broke = 0;
9894 fra.me.REG_size = 2;
9895 fra.me.nitni_local_ref_head = NULL;
9896 fra.me.REG[0] = NIT_NULL;
9897 fra.me.REG[1] = NIT_NULL;
9898 fra.me.REG[0] = p0;
9899 /* syntax/typing.nit:1597 */
9900 fra.me.REG[1] = fra.me.REG[0];
9901 /* syntax/typing.nit:1598 */
9902 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9903 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9904 if (UNTAG_Bool(REGB0)) {
9905 } else {
9906 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1598);
9907 }
9908 goto label1;
9909 label1: while(0);
9910 stack_frame_head = fra.me.prev;
9911 return fra.me.REG[1];
9912 }
9913 static const char LOCATE_syntax___typing___AAbsSendExpr___return_type[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::return_type)";
9914 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9915 struct {struct stack_frame_t me;} fra;
9916 val_t tmp;
9917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9918 fra.me.file = LOCATE_syntax___typing;
9919 fra.me.line = 1601;
9920 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9921 fra.me.has_broke = 0;
9922 fra.me.REG_size = 1;
9923 fra.me.nitni_local_ref_head = NULL;
9924 fra.me.REG[0] = NIT_NULL;
9925 fra.me.REG[0] = p0;
9926 /* syntax/typing.nit:1601 */
9927 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9928 stack_frame_head = fra.me.prev;
9929 return fra.me.REG[0];
9930 }
9931 static const char LOCATE_syntax___typing___ASuperInitCall___register_super_init_call[] = "typing::ASuperInitCall::register_super_init_call";
9932 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9933 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
9934 val_t REGB0;
9935 val_t REGB1;
9936 val_t REGB2;
9937 val_t tmp;
9938 static val_t once_value_1; /* Once value */
9939 static val_t once_value_2; /* Once value */
9940 static val_t once_value_3; /* Once value */
9941 static val_t once_value_4; /* Once value */
9942 static val_t once_value_5; /* Once value */
9943 static val_t once_value_6; /* Once value */
9944 static val_t once_value_7; /* Once value */
9945 static val_t once_value_8; /* Once value */
9946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9947 fra.me.file = LOCATE_syntax___typing;
9948 fra.me.line = 1608;
9949 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9950 fra.me.has_broke = 0;
9951 fra.me.REG_size = 9;
9952 fra.me.nitni_local_ref_head = NULL;
9953 fra.me.REG[0] = NIT_NULL;
9954 fra.me.REG[1] = NIT_NULL;
9955 fra.me.REG[2] = NIT_NULL;
9956 fra.me.REG[3] = NIT_NULL;
9957 fra.me.REG[4] = NIT_NULL;
9958 fra.me.REG[5] = NIT_NULL;
9959 fra.me.REG[6] = NIT_NULL;
9960 fra.me.REG[7] = NIT_NULL;
9961 fra.me.REG[8] = NIT_NULL;
9962 fra.me.REG[0] = p0;
9963 fra.me.REG[1] = p1;
9964 fra.me.REG[2] = p2;
9965 /* syntax/typing.nit:1608 */
9966 fra.me.REG[3] = fra.me.REG[0];
9967 /* syntax/typing.nit:1610 */
9968 fra.me.REG[4] = CALL_parser___parser_nodes___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9969 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9970 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9971 if (UNTAG_Bool(REGB0)) {
9972 } else {
9973 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9974 if (UNTAG_Bool(REGB1)) {
9975 REGB1 = TAG_Bool(0);
9976 REGB0 = REGB1;
9977 } else {
9978 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9979 REGB0 = REGB1;
9980 }
9981 }
9982 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9983 if (UNTAG_Bool(REGB0)) {
9984 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9985 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
9986 if (UNTAG_Bool(REGB0)) {
9987 } else {
9988 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9989 REGB0 = REGB1;
9990 }
9991 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9992 } else {
9993 REGB1 = TAG_Bool(0);
9994 REGB0 = REGB1;
9995 }
9996 if (UNTAG_Bool(REGB0)) {
9997 /* syntax/typing.nit:1611 */
9998 REGB0 = TAG_Int(3);
9999 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10000 if (!once_value_1) {
10001 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
10002 REGB0 = TAG_Int(30);
10003 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10004 once_value_1 = fra.me.REG[4];
10005 register_static_object(&once_value_1);
10006 } else fra.me.REG[4] = once_value_1;
10007 fra.me.REG[4] = fra.me.REG[4];
10008 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10009 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10010 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10011 if (!once_value_2) {
10012 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
10013 REGB0 = TAG_Int(29);
10014 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10015 once_value_2 = fra.me.REG[4];
10016 register_static_object(&once_value_2);
10017 } else fra.me.REG[4] = once_value_2;
10018 fra.me.REG[4] = fra.me.REG[4];
10019 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10020 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10021 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
10022 }
10023 /* syntax/typing.nit:1613 */
10024 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
10025 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
10026 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
10027 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
10028 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
10029 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10030 /* syntax/typing.nit:1614 */
10031 fra.me.REG[5] = NIT_NULL;
10032 /* syntax/typing.nit:1615 */
10033 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
10034 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10035 if (UNTAG_Bool(REGB0)) {
10036 } else {
10037 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1615);
10038 }
10039 /* syntax/typing.nit:1616 */
10040 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
10041 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10042 if (UNTAG_Bool(REGB0)) {
10043 /* syntax/typing.nit:1617 */
10044 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
10045 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
10046 if (UNTAG_Bool(REGB0)) {
10047 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1617);
10048 }
10049 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10050 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
10051 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
10052 fra.me.REG[5] = fra.me.REG[0];
10053 }
10054 /* syntax/typing.nit:1619 */
10055 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10056 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
10057 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
10058 /* syntax/typing.nit:1620 */
10059 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10060 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
10061 if (UNTAG_Bool(REGB0)) {
10062 } else {
10063 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
10064 REGB0 = REGB1;
10065 }
10066 if (UNTAG_Bool(REGB0)) {
10067 /* syntax/typing.nit:1621 */
10068 REGB0 = TAG_Bool(1);
10069 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
10070 } else {
10071 /* syntax/typing.nit:1622 */
10072 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
10073 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10074 if (UNTAG_Bool(REGB0)) {
10075 /* syntax/typing.nit:1623 */
10076 REGB0 = TAG_Int(5);
10077 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10078 if (!once_value_3) {
10079 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
10080 REGB0 = TAG_Int(28);
10081 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10082 once_value_3 = fra.me.REG[8];
10083 register_static_object(&once_value_3);
10084 } else fra.me.REG[8] = once_value_3;
10085 fra.me.REG[8] = fra.me.REG[8];
10086 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10087 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10088 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10089 if (!once_value_4) {
10090 fra.me.REG[8] = BOX_NativeString(" must be one in ");
10091 REGB0 = TAG_Int(16);
10092 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10093 once_value_4 = fra.me.REG[8];
10094 register_static_object(&once_value_4);
10095 } else fra.me.REG[8] = once_value_4;
10096 fra.me.REG[8] = fra.me.REG[8];
10097 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10098 if (!once_value_5) {
10099 fra.me.REG[8] = BOX_NativeString(", ");
10100 REGB0 = TAG_Int(2);
10101 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10102 once_value_5 = fra.me.REG[8];
10103 register_static_object(&once_value_5);
10104 } else fra.me.REG[8] = once_value_5;
10105 fra.me.REG[8] = fra.me.REG[8];
10106 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
10107 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10108 if (!once_value_6) {
10109 fra.me.REG[8] = BOX_NativeString(".");
10110 REGB0 = TAG_Int(1);
10111 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10112 once_value_6 = fra.me.REG[8];
10113 register_static_object(&once_value_6);
10114 } else fra.me.REG[8] = once_value_6;
10115 fra.me.REG[8] = fra.me.REG[8];
10116 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10117 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10118 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10119 } else {
10120 /* syntax/typing.nit:1624 */
10121 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
10122 if (UNTAG_Bool(REGB0)) {
10123 } else {
10124 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10125 REGB0 = REGB1;
10126 }
10127 if (UNTAG_Bool(REGB0)) {
10128 /* syntax/typing.nit:1625 */
10129 REGB0 = TAG_Int(3);
10130 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10131 if (!once_value_7) {
10132 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
10133 REGB0 = TAG_Int(54);
10134 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10135 once_value_7 = fra.me.REG[8];
10136 register_static_object(&once_value_7);
10137 } else fra.me.REG[8] = once_value_7;
10138 fra.me.REG[8] = fra.me.REG[8];
10139 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10140 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10141 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10142 if (!once_value_8) {
10143 fra.me.REG[8] = BOX_NativeString(" is allowed.");
10144 REGB0 = TAG_Int(12);
10145 fra.me.REG[8] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[8])(fra.me.REG[8], REGB0);
10146 once_value_8 = fra.me.REG[8];
10147 register_static_object(&once_value_8);
10148 } else fra.me.REG[8] = once_value_8;
10149 fra.me.REG[8] = fra.me.REG[8];
10150 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10151 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10152 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10153 } else {
10154 /* ../lib/standard/collection/array.nit:270 */
10155 REGB0 = TAG_Int(0);
10156 /* ../lib/standard/collection/array.nit:271 */
10157 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10158 if (UNTAG_Bool(REGB1)) {
10159 } else {
10160 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
10161 }
10162 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10163 /* ../lib/standard/collection/array.nit:272 */
10164 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
10165 /* ../lib/standard/collection/array.nit:273 */
10166 while(1) {
10167 /* ../lib/standard/collection/array.nit:24 */
10168 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10169 if (UNTAG_Bool(REGB1)) {
10170 } else {
10171 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
10172 }
10173 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10174 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
10175 if (UNTAG_Bool(REGB2)) {
10176 } else {
10177 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
10178 }
10179 /* ../lib/standard/kernel.nit:242 */
10180 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
10181 /* ../lib/standard/collection/array.nit:273 */
10182 if (UNTAG_Bool(REGB1)) {
10183 /* ../lib/standard/collection/array.nit:274 */
10184 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10185 if (UNTAG_Bool(REGB1)) {
10186 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
10187 }
10188 /* ../lib/standard/collection/array.nit:725 */
10189 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
10190 /* syntax/typing.nit:1628 */
10191 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
10192 if (UNTAG_Bool(REGB1)) {
10193 } else {
10194 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10195 REGB1 = REGB2;
10196 }
10197 if (UNTAG_Bool(REGB1)) {
10198 /* syntax/typing.nit:1629 */
10199 fra.me.REG[5] = NIT_NULL;
10200 } else {
10201 /* syntax/typing.nit:1630 */
10202 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
10203 if (UNTAG_Bool(REGB1)) {
10204 } else {
10205 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10206 REGB1 = REGB2;
10207 }
10208 if (UNTAG_Bool(REGB1)) {
10209 /* syntax/typing.nit:1631 */
10210 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
10211 /* syntax/typing.nit:1632 */
10212 goto label9;
10213 }
10214 }
10215 /* ../lib/standard/collection/array.nit:275 */
10216 REGB1 = TAG_Int(1);
10217 /* ../lib/standard/kernel.nit:245 */
10218 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
10219 /* ../lib/standard/collection/array.nit:275 */
10220 REGB0 = REGB1;
10221 } else {
10222 /* ../lib/standard/collection/array.nit:273 */
10223 goto label10;
10224 }
10225 }
10226 label10: while(0);
10227 label9: while(0);
10228 }
10229 }
10230 }
10231 stack_frame_head = fra.me.prev;
10232 return;
10233 }
10234 static const char LOCATE_syntax___typing___ANewExpr___compute_raw_arguments[] = "typing::ANewExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
10235 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
10236 struct {struct stack_frame_t me;} fra;
10237 val_t tmp;
10238 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10239 fra.me.file = LOCATE_syntax___typing;
10240 fra.me.line = 1641;
10241 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
10242 fra.me.has_broke = 0;
10243 fra.me.REG_size = 1;
10244 fra.me.nitni_local_ref_head = NULL;
10245 fra.me.REG[0] = NIT_NULL;
10246 fra.me.REG[0] = p0;
10247 /* syntax/typing.nit:1641 */
10248 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10249 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
10250 goto label1;
10251 label1: while(0);
10252 stack_frame_head = fra.me.prev;
10253 return fra.me.REG[0];
10254 }
10255 static const char LOCATE_syntax___typing___ANewExpr___after_typing[] = "typing::ANewExpr::(typing::ANode::after_typing)";
10256 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
10257 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10258 val_t REGB0;
10259 val_t REGB1;
10260 val_t tmp;
10261 static val_t once_value_2; /* Once value */
10262 static val_t once_value_3; /* Once value */
10263 static val_t once_value_4; /* Once value */
10264 static val_t once_value_5; /* Once value */
10265 static val_t once_value_6; /* Once value */
10266 static val_t once_value_7; /* Once value */
10267 static val_t once_value_8; /* Once value */
10268 static val_t once_value_9; /* Once value */
10269 static val_t once_value_10; /* Once value */
10270 static val_t once_value_11; /* Once value */
10271 static val_t once_value_12; /* Once value */
10272 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10273 fra.me.file = LOCATE_syntax___typing;
10274 fra.me.line = 1642;
10275 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
10276 fra.me.has_broke = 0;
10277 fra.me.REG_size = 5;
10278 fra.me.nitni_local_ref_head = NULL;
10279 fra.me.REG[0] = NIT_NULL;
10280 fra.me.REG[1] = NIT_NULL;
10281 fra.me.REG[2] = NIT_NULL;
10282 fra.me.REG[3] = NIT_NULL;
10283 fra.me.REG[4] = NIT_NULL;
10284 fra.me.REG[0] = p0;
10285 fra.me.REG[1] = p1;
10286 /* syntax/typing.nit:1644 */
10287 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10288 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
10289 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10290 if (UNTAG_Bool(REGB0)) {
10291 goto label1;
10292 }
10293 /* syntax/typing.nit:1645 */
10294 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10295 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
10296 /* syntax/typing.nit:1646 */
10297 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10298 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
10299 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
10300 if (UNTAG_Bool(REGB0)) {
10301 /* syntax/typing.nit:1647 */
10302 REGB0 = TAG_Int(3);
10303 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10304 if (!once_value_2) {
10305 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
10306 REGB0 = TAG_Int(41);
10307 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10308 once_value_2 = fra.me.REG[4];
10309 register_static_object(&once_value_2);
10310 } else fra.me.REG[4] = once_value_2;
10311 fra.me.REG[4] = fra.me.REG[4];
10312 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10313 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10314 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10315 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10316 if (!once_value_3) {
10317 fra.me.REG[4] = BOX_NativeString(".");
10318 REGB0 = TAG_Int(1);
10319 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10320 once_value_3 = fra.me.REG[4];
10321 register_static_object(&once_value_3);
10322 } else fra.me.REG[4] = once_value_3;
10323 fra.me.REG[4] = fra.me.REG[4];
10324 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10325 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10326 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10327 /* syntax/typing.nit:1648 */
10328 goto label1;
10329 }
10330 /* syntax/typing.nit:1650 */
10331 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
10332 if (UNTAG_Bool(REGB0)) {
10333 /* syntax/typing.nit:1651 */
10334 REGB0 = TAG_Int(3);
10335 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10336 if (!once_value_4) {
10337 fra.me.REG[4] = BOX_NativeString("Type error: cannot instantiate the nullable type ");
10338 REGB0 = TAG_Int(49);
10339 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10340 once_value_4 = fra.me.REG[4];
10341 register_static_object(&once_value_4);
10342 } else fra.me.REG[4] = once_value_4;
10343 fra.me.REG[4] = fra.me.REG[4];
10344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10345 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10346 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10347 if (!once_value_5) {
10348 fra.me.REG[4] = BOX_NativeString(".");
10349 REGB0 = TAG_Int(1);
10350 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10351 once_value_5 = fra.me.REG[4];
10352 register_static_object(&once_value_5);
10353 } else fra.me.REG[4] = once_value_5;
10354 fra.me.REG[4] = fra.me.REG[4];
10355 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10356 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10357 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10358 }
10359 /* syntax/typing.nit:1654 */
10360 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10361 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10362 if (UNTAG_Bool(REGB0)) {
10363 } else {
10364 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10365 if (UNTAG_Bool(REGB1)) {
10366 REGB1 = TAG_Bool(0);
10367 REGB0 = REGB1;
10368 } else {
10369 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10370 REGB0 = REGB1;
10371 }
10372 }
10373 if (UNTAG_Bool(REGB0)) {
10374 /* syntax/typing.nit:1655 */
10375 if (!once_value_6) {
10376 if (!once_value_7) {
10377 fra.me.REG[3] = BOX_NativeString("init");
10378 REGB0 = TAG_Int(4);
10379 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
10380 once_value_7 = fra.me.REG[3];
10381 register_static_object(&once_value_7);
10382 } else fra.me.REG[3] = once_value_7;
10383 fra.me.REG[3] = fra.me.REG[3];
10384 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10385 once_value_6 = fra.me.REG[3];
10386 register_static_object(&once_value_6);
10387 } else fra.me.REG[3] = once_value_6;
10388 fra.me.REG[3] = fra.me.REG[3];
10389 } else {
10390 /* syntax/typing.nit:1657 */
10391 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10392 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10393 if (UNTAG_Bool(REGB0)) {
10394 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1657);
10395 }
10396 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10397 fra.me.REG[3] = fra.me.REG[4];
10398 }
10399 /* syntax/typing.nit:1660 */
10400 REGB0 = TAG_Bool(0);
10401 REGB1 = TAG_Bool(0);
10402 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10403 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1, fra.me.REG[3], fra.me.REG[4], NIT_NULL);
10404 /* syntax/typing.nit:1661 */
10405 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
10406 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10407 if (UNTAG_Bool(REGB1)) {
10408 } else {
10409 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10410 if (UNTAG_Bool(REGB0)) {
10411 REGB0 = TAG_Bool(0);
10412 REGB1 = REGB0;
10413 } else {
10414 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10415 REGB1 = REGB0;
10416 }
10417 }
10418 if (UNTAG_Bool(REGB1)) {
10419 goto label1;
10420 }
10421 /* syntax/typing.nit:1663 */
10422 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10423 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10424 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10425 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10426 if (UNTAG_Bool(REGB1)) {
10427 /* syntax/typing.nit:1664 */
10428 REGB1 = TAG_Int(3);
10429 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10430 if (!once_value_8) {
10431 fra.me.REG[3] = BOX_NativeString("Error: ");
10432 REGB1 = TAG_Int(7);
10433 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
10434 once_value_8 = fra.me.REG[3];
10435 register_static_object(&once_value_8);
10436 } else fra.me.REG[3] = once_value_8;
10437 fra.me.REG[3] = fra.me.REG[3];
10438 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10439 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10440 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10441 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10442 if (!once_value_9) {
10443 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
10444 REGB1 = TAG_Int(22);
10445 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
10446 once_value_9 = fra.me.REG[3];
10447 register_static_object(&once_value_9);
10448 } else fra.me.REG[3] = once_value_9;
10449 fra.me.REG[3] = fra.me.REG[3];
10450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10451 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10452 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10453 /* syntax/typing.nit:1665 */
10454 goto label1;
10455 }
10456 /* syntax/typing.nit:1667 */
10457 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10458 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10459 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10460 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10461 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10462 if (UNTAG_Bool(REGB1)) {
10463 /* syntax/typing.nit:1668 */
10464 REGB1 = TAG_Int(5);
10465 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10466 if (!once_value_10) {
10467 fra.me.REG[4] = BOX_NativeString("Error: ");
10468 REGB1 = TAG_Int(7);
10469 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
10470 once_value_10 = fra.me.REG[4];
10471 register_static_object(&once_value_10);
10472 } else fra.me.REG[4] = once_value_10;
10473 fra.me.REG[4] = fra.me.REG[4];
10474 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10475 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10476 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10477 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10478 if (!once_value_11) {
10479 fra.me.REG[4] = BOX_NativeString(" is not a constructor in ");
10480 REGB1 = TAG_Int(25);
10481 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
10482 once_value_11 = fra.me.REG[4];
10483 register_static_object(&once_value_11);
10484 } else fra.me.REG[4] = once_value_11;
10485 fra.me.REG[4] = fra.me.REG[4];
10486 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10487 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10488 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10489 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10490 if (!once_value_12) {
10491 fra.me.REG[4] = BOX_NativeString(".");
10492 REGB1 = TAG_Int(1);
10493 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
10494 once_value_12 = fra.me.REG[4];
10495 register_static_object(&once_value_12);
10496 } else fra.me.REG[4] = once_value_12;
10497 fra.me.REG[4] = fra.me.REG[4];
10498 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10499 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10500 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10501 /* syntax/typing.nit:1669 */
10502 goto label1;
10503 }
10504 /* syntax/typing.nit:1671 */
10505 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10506 /* syntax/typing.nit:1672 */
10507 REGB1 = TAG_Bool(1);
10508 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
10509 label1: while(0);
10510 stack_frame_head = fra.me.prev;
10511 return;
10512 }
10513 static const char LOCATE_syntax___typing___ASendExpr___name[] = "typing::ASendExpr::name";
10514 val_t syntax___typing___ASendExpr___name(val_t p0){
10515 struct {struct stack_frame_t me;} fra;
10516 val_t tmp;
10517 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10518 fra.me.file = LOCATE_syntax___typing;
10519 fra.me.line = 1678;
10520 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10521 fra.me.has_broke = 0;
10522 fra.me.REG_size = 0;
10523 fra.me.nitni_local_ref_head = NULL;
10524 /* syntax/typing.nit:1678 */
10525 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1678);
10526 stack_frame_head = fra.me.prev;
10527 return NIT_NULL;
10528 }
10529 static const char LOCATE_syntax___typing___ASendExpr___closure_defs[] = "typing::ASendExpr::(syntax_base::ASendExpr::closure_defs)";
10530 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10531 struct {struct stack_frame_t me;} fra;
10532 val_t tmp;
10533 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10534 fra.me.file = LOCATE_syntax___typing;
10535 fra.me.line = 1681;
10536 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10537 fra.me.has_broke = 0;
10538 fra.me.REG_size = 1;
10539 fra.me.nitni_local_ref_head = NULL;
10540 fra.me.REG[0] = NIT_NULL;
10541 fra.me.REG[0] = p0;
10542 /* syntax/typing.nit:1682 */
10543 fra.me.REG[0] = NIT_NULL;
10544 goto label1;
10545 label1: while(0);
10546 stack_frame_head = fra.me.prev;
10547 return fra.me.REG[0];
10548 }
10549 static const char LOCATE_syntax___typing___ASendExpr___after_typing[] = "typing::ASendExpr::(typing::ANode::after_typing)";
10550 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10551 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10552 val_t tmp;
10553 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10554 fra.me.file = LOCATE_syntax___typing;
10555 fra.me.line = 1684;
10556 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10557 fra.me.has_broke = 0;
10558 fra.me.REG_size = 2;
10559 fra.me.nitni_local_ref_head = NULL;
10560 fra.me.REG[0] = NIT_NULL;
10561 fra.me.REG[1] = NIT_NULL;
10562 fra.me.REG[0] = p0;
10563 fra.me.REG[1] = p1;
10564 /* syntax/typing.nit:1686 */
10565 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10566 stack_frame_head = fra.me.prev;
10567 return;
10568 }
10569 static const char LOCATE_syntax___typing___ASendExpr___do_all_typing[] = "typing::ASendExpr::do_all_typing";
10570 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10571 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10572 val_t REGB0;
10573 val_t REGB1;
10574 val_t tmp;
10575 static val_t once_value_2; /* Once value */
10576 static val_t once_value_3; /* Once value */
10577 static val_t once_value_4; /* Once value */
10578 static val_t once_value_5; /* Once value */
10579 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10580 fra.me.file = LOCATE_syntax___typing;
10581 fra.me.line = 1689;
10582 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10583 fra.me.has_broke = 0;
10584 fra.me.REG_size = 7;
10585 fra.me.nitni_local_ref_head = NULL;
10586 fra.me.REG[0] = NIT_NULL;
10587 fra.me.REG[1] = NIT_NULL;
10588 fra.me.REG[2] = NIT_NULL;
10589 fra.me.REG[3] = NIT_NULL;
10590 fra.me.REG[4] = NIT_NULL;
10591 fra.me.REG[5] = NIT_NULL;
10592 fra.me.REG[6] = NIT_NULL;
10593 fra.me.REG[0] = p0;
10594 fra.me.REG[1] = p1;
10595 /* syntax/typing.nit:1689 */
10596 fra.me.REG[2] = fra.me.REG[0];
10597 /* syntax/typing.nit:1691 */
10598 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10599 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10600 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10601 if (UNTAG_Bool(REGB0)) {
10602 goto label1;
10603 }
10604 /* syntax/typing.nit:1692 */
10605 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10606 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10607 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10608 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10609 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10610 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10611 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10612 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10613 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10614 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3], REGB0, REGB1, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
10615 /* syntax/typing.nit:1693 */
10616 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10617 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10618 if (UNTAG_Bool(REGB1)) {
10619 } else {
10620 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10621 if (UNTAG_Bool(REGB0)) {
10622 REGB0 = TAG_Bool(0);
10623 REGB1 = REGB0;
10624 } else {
10625 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10626 REGB1 = REGB0;
10627 }
10628 }
10629 if (UNTAG_Bool(REGB1)) {
10630 goto label1;
10631 }
10632 /* syntax/typing.nit:1694 */
10633 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10634 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10635 if (UNTAG_Bool(REGB1)) {
10636 } else {
10637 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1694);
10638 }
10639 /* syntax/typing.nit:1696 */
10640 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10641 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10642 if (UNTAG_Bool(REGB1)) {
10643 /* syntax/typing.nit:1697 */
10644 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10645 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10646 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10647 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10648 if (UNTAG_Bool(REGB1)) {
10649 /* syntax/typing.nit:1698 */
10650 REGB1 = TAG_Int(3);
10651 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10652 if (!once_value_2) {
10653 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10654 REGB1 = TAG_Int(33);
10655 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
10656 once_value_2 = fra.me.REG[5];
10657 register_static_object(&once_value_2);
10658 } else fra.me.REG[5] = once_value_2;
10659 fra.me.REG[5] = fra.me.REG[5];
10660 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10661 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10662 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10663 if (!once_value_3) {
10664 fra.me.REG[5] = BOX_NativeString(" in a method.");
10665 REGB1 = TAG_Int(13);
10666 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
10667 once_value_3 = fra.me.REG[5];
10668 register_static_object(&once_value_3);
10669 } else fra.me.REG[5] = once_value_3;
10670 fra.me.REG[5] = fra.me.REG[5];
10671 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10672 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10673 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10674 } else {
10675 /* syntax/typing.nit:1699 */
10676 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10677 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10678 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10679 if (UNTAG_Bool(REGB1)) {
10680 /* syntax/typing.nit:1700 */
10681 REGB1 = TAG_Int(3);
10682 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10683 if (!once_value_4) {
10684 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10685 REGB1 = TAG_Int(19);
10686 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
10687 once_value_4 = fra.me.REG[5];
10688 register_static_object(&once_value_4);
10689 } else fra.me.REG[5] = once_value_4;
10690 fra.me.REG[5] = fra.me.REG[5];
10691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10692 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10693 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10694 if (!once_value_5) {
10695 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10696 REGB1 = TAG_Int(26);
10697 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
10698 once_value_5 = fra.me.REG[5];
10699 register_static_object(&once_value_5);
10700 } else fra.me.REG[5] = once_value_5;
10701 fra.me.REG[5] = fra.me.REG[5];
10702 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10703 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10704 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10705 } else {
10706 /* syntax/typing.nit:1702 */
10707 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10708 }
10709 }
10710 }
10711 /* syntax/typing.nit:1706 */
10712 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10713 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10714 /* syntax/typing.nit:1707 */
10715 REGB1 = TAG_Bool(1);
10716 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10717 label1: while(0);
10718 stack_frame_head = fra.me.prev;
10719 return;
10720 }
10721 static const char LOCATE_syntax___typing___ASendReassignExpr___read_prop[] = "typing::ASendReassignExpr::(syntax_base::ASendReassignExpr::read_prop)";
10722 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10723 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10724 val_t REGB0;
10725 val_t tmp;
10726 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10727 fra.me.file = LOCATE_syntax___typing;
10728 fra.me.line = 1712;
10729 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10730 fra.me.has_broke = 0;
10731 fra.me.REG_size = 2;
10732 fra.me.nitni_local_ref_head = NULL;
10733 fra.me.REG[0] = NIT_NULL;
10734 fra.me.REG[1] = NIT_NULL;
10735 fra.me.REG[0] = p0;
10736 /* syntax/typing.nit:1712 */
10737 fra.me.REG[1] = fra.me.REG[0];
10738 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10739 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10740 if (UNTAG_Bool(REGB0)) {
10741 } else {
10742 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1712);
10743 }
10744 goto label1;
10745 label1: while(0);
10746 stack_frame_head = fra.me.prev;
10747 return fra.me.REG[1];
10748 }
10749 static const char LOCATE_syntax___typing___ASendReassignExpr___do_all_typing[] = "typing::ASendReassignExpr::(typing::ASendExpr::do_all_typing)";
10750 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10751 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10752 val_t REGB0;
10753 val_t REGB1;
10754 val_t REGB2;
10755 val_t tmp;
10756 static val_t once_value_2; /* Once value */
10757 static val_t once_value_3; /* Once value */
10758 static val_t once_value_4; /* Once value */
10759 static val_t once_value_5; /* Once value */
10760 static val_t once_value_6; /* Once value */
10761 static val_t once_value_7; /* Once value */
10762 static val_t once_value_8; /* Once value */
10763 static val_t once_value_9; /* Once value */
10764 static val_t once_value_10; /* Once value */
10765 static val_t once_value_11; /* Once value */
10766 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10767 fra.me.file = LOCATE_syntax___typing;
10768 fra.me.line = 1714;
10769 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10770 fra.me.has_broke = 0;
10771 fra.me.REG_size = 7;
10772 fra.me.nitni_local_ref_head = NULL;
10773 fra.me.REG[0] = NIT_NULL;
10774 fra.me.REG[1] = NIT_NULL;
10775 fra.me.REG[2] = NIT_NULL;
10776 fra.me.REG[3] = NIT_NULL;
10777 fra.me.REG[4] = NIT_NULL;
10778 fra.me.REG[5] = NIT_NULL;
10779 fra.me.REG[6] = NIT_NULL;
10780 fra.me.REG[0] = p0;
10781 fra.me.REG[1] = p1;
10782 /* syntax/typing.nit:1714 */
10783 fra.me.REG[2] = fra.me.REG[0];
10784 /* syntax/typing.nit:1716 */
10785 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10786 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10787 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10788 if (UNTAG_Bool(REGB0)) {
10789 goto label1;
10790 }
10791 /* syntax/typing.nit:1717 */
10792 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10793 /* syntax/typing.nit:1718 */
10794 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10795 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10796 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10797 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10798 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10799 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10800 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10801 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], REGB0, REGB1, fra.me.REG[5], fra.me.REG[3], NIT_NULL);
10802 /* syntax/typing.nit:1719 */
10803 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10804 /* syntax/typing.nit:1720 */
10805 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10806 if (UNTAG_Bool(REGB1)) {
10807 } else {
10808 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10809 if (UNTAG_Bool(REGB0)) {
10810 REGB0 = TAG_Bool(0);
10811 REGB1 = REGB0;
10812 } else {
10813 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10814 REGB1 = REGB0;
10815 }
10816 }
10817 if (UNTAG_Bool(REGB1)) {
10818 goto label1;
10819 }
10820 /* syntax/typing.nit:1721 */
10821 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10822 if (UNTAG_Bool(REGB1)) {
10823 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1721);
10824 }
10825 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10826 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10827 if (UNTAG_Bool(REGB1)) {
10828 /* syntax/typing.nit:1722 */
10829 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10830 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10831 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10832 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10833 if (UNTAG_Bool(REGB1)) {
10834 /* syntax/typing.nit:1723 */
10835 REGB1 = TAG_Int(3);
10836 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10837 if (!once_value_2) {
10838 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10839 REGB1 = TAG_Int(33);
10840 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
10841 once_value_2 = fra.me.REG[6];
10842 register_static_object(&once_value_2);
10843 } else fra.me.REG[6] = once_value_2;
10844 fra.me.REG[6] = fra.me.REG[6];
10845 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10846 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10847 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10848 if (!once_value_3) {
10849 fra.me.REG[6] = BOX_NativeString(" in a method.");
10850 REGB1 = TAG_Int(13);
10851 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
10852 once_value_3 = fra.me.REG[6];
10853 register_static_object(&once_value_3);
10854 } else fra.me.REG[6] = once_value_3;
10855 fra.me.REG[6] = fra.me.REG[6];
10856 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10857 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10858 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10859 } else {
10860 /* syntax/typing.nit:1724 */
10861 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10862 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10863 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10864 if (UNTAG_Bool(REGB1)) {
10865 /* syntax/typing.nit:1725 */
10866 REGB1 = TAG_Int(3);
10867 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10868 if (!once_value_4) {
10869 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10870 REGB1 = TAG_Int(19);
10871 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
10872 once_value_4 = fra.me.REG[6];
10873 register_static_object(&once_value_4);
10874 } else fra.me.REG[6] = once_value_4;
10875 fra.me.REG[6] = fra.me.REG[6];
10876 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10877 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10878 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10879 if (!once_value_5) {
10880 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10881 REGB1 = TAG_Int(26);
10882 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB1);
10883 once_value_5 = fra.me.REG[6];
10884 register_static_object(&once_value_5);
10885 } else fra.me.REG[6] = once_value_5;
10886 fra.me.REG[6] = fra.me.REG[6];
10887 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10888 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10889 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10890 }
10891 }
10892 }
10893 /* syntax/typing.nit:1728 */
10894 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10895 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10896 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10897 if (UNTAG_Bool(REGB1)) {
10898 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1728);
10899 }
10900 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10901 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10902 REGB1 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
10903 if (UNTAG_Bool(REGB1)) {
10904 } else {
10905 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1728);
10906 }
10907 /* syntax/typing.nit:1729 */
10908 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10909 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10910 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10911 if (UNTAG_Bool(REGB1)) {
10912 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10913 fra.me.REG[4] = fra.me.REG[0];
10914 }
10915 /* syntax/typing.nit:1731 */
10916 fra.me.REG[4] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4]);
10917 /* syntax/typing.nit:1732 */
10918 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10919 if (UNTAG_Bool(REGB1)) {
10920 } else {
10921 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10922 if (UNTAG_Bool(REGB0)) {
10923 REGB0 = TAG_Bool(0);
10924 REGB1 = REGB0;
10925 } else {
10926 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10927 REGB1 = REGB0;
10928 }
10929 }
10930 if (UNTAG_Bool(REGB1)) {
10931 goto label1;
10932 }
10933 /* syntax/typing.nit:1733 */
10934 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10935 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10936 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[0]);
10937 /* syntax/typing.nit:1735 */
10938 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10939 /* syntax/typing.nit:1736 */
10940 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10941 fra.me.REG[3] = fra.me.REG[0];
10942 /* syntax/typing.nit:1737 */
10943 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10944 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10945 /* syntax/typing.nit:1739 */
10946 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10947 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10948 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10949 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10950 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10951 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10952 REGB2 = TAG_Int(3);
10953 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10954 if (!once_value_6) {
10955 fra.me.REG[6] = BOX_NativeString("");
10956 REGB2 = TAG_Int(0);
10957 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
10958 once_value_6 = fra.me.REG[6];
10959 register_static_object(&once_value_6);
10960 } else fra.me.REG[6] = once_value_6;
10961 fra.me.REG[6] = fra.me.REG[6];
10962 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10963 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10964 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10965 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10966 if (!once_value_7) {
10967 fra.me.REG[6] = BOX_NativeString("=");
10968 REGB2 = TAG_Int(1);
10969 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB2);
10970 once_value_7 = fra.me.REG[6];
10971 register_static_object(&once_value_7);
10972 } else fra.me.REG[6] = once_value_7;
10973 fra.me.REG[6] = fra.me.REG[6];
10974 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10975 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10976 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10977 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], REGB1, REGB0, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
10978 /* syntax/typing.nit:1740 */
10979 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10980 if (UNTAG_Bool(REGB0)) {
10981 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1740);
10982 }
10983 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10984 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10985 if (UNTAG_Bool(REGB0)) {
10986 /* syntax/typing.nit:1741 */
10987 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10988 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10989 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10990 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10991 if (UNTAG_Bool(REGB0)) {
10992 /* syntax/typing.nit:1742 */
10993 REGB0 = TAG_Int(3);
10994 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10995 if (!once_value_8) {
10996 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
10997 REGB0 = TAG_Int(33);
10998 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
10999 once_value_8 = fra.me.REG[4];
11000 register_static_object(&once_value_8);
11001 } else fra.me.REG[4] = once_value_8;
11002 fra.me.REG[4] = fra.me.REG[4];
11003 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11004 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
11005 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11006 if (!once_value_9) {
11007 fra.me.REG[4] = BOX_NativeString(" in a method.");
11008 REGB0 = TAG_Int(13);
11009 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
11010 once_value_9 = fra.me.REG[4];
11011 register_static_object(&once_value_9);
11012 } else fra.me.REG[4] = once_value_9;
11013 fra.me.REG[4] = fra.me.REG[4];
11014 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11015 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11016 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
11017 } else {
11018 /* syntax/typing.nit:1743 */
11019 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11020 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
11021 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11022 if (UNTAG_Bool(REGB0)) {
11023 /* syntax/typing.nit:1744 */
11024 REGB0 = TAG_Int(3);
11025 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11026 if (!once_value_10) {
11027 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
11028 REGB0 = TAG_Int(19);
11029 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
11030 once_value_10 = fra.me.REG[4];
11031 register_static_object(&once_value_10);
11032 } else fra.me.REG[4] = once_value_10;
11033 fra.me.REG[4] = fra.me.REG[4];
11034 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11035 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
11036 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11037 if (!once_value_11) {
11038 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
11039 REGB0 = TAG_Int(26);
11040 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
11041 once_value_11 = fra.me.REG[5];
11042 register_static_object(&once_value_11);
11043 } else fra.me.REG[5] = once_value_11;
11044 fra.me.REG[5] = fra.me.REG[5];
11045 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11046 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11047 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
11048 }
11049 }
11050 }
11051 /* syntax/typing.nit:1748 */
11052 REGB0 = TAG_Bool(1);
11053 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
11054 label1: while(0);
11055 stack_frame_head = fra.me.prev;
11056 return;
11057 }
11058 static const char LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments[] = "typing::ABinopExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
11059 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
11060 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11061 val_t REGB0;
11062 val_t tmp;
11063 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11064 fra.me.file = LOCATE_syntax___typing;
11065 fra.me.line = 1753;
11066 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
11067 fra.me.has_broke = 0;
11068 fra.me.REG_size = 2;
11069 fra.me.nitni_local_ref_head = NULL;
11070 fra.me.REG[0] = NIT_NULL;
11071 fra.me.REG[1] = NIT_NULL;
11072 fra.me.REG[0] = p0;
11073 /* syntax/typing.nit:1753 */
11074 REGB0 = TAG_Int(1);
11075 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11076 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
11077 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11078 goto label1;
11079 label1: while(0);
11080 stack_frame_head = fra.me.prev;
11081 return fra.me.REG[1];
11082 }
11083 static const char LOCATE_syntax___typing___AEqExpr___name[] = "typing::AEqExpr::(typing::ASendExpr::name)";
11084 val_t syntax___typing___AEqExpr___name(val_t p0){
11085 struct {struct stack_frame_t me;} fra;
11086 val_t REGB0;
11087 val_t tmp;
11088 static val_t once_value_1; /* Once value */
11089 static val_t once_value_2; /* Once value */
11090 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11091 fra.me.file = LOCATE_syntax___typing;
11092 fra.me.line = 1756;
11093 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
11094 fra.me.has_broke = 0;
11095 fra.me.REG_size = 1;
11096 fra.me.nitni_local_ref_head = NULL;
11097 fra.me.REG[0] = NIT_NULL;
11098 fra.me.REG[0] = p0;
11099 /* syntax/typing.nit:1756 */
11100 if (!once_value_1) {
11101 if (!once_value_2) {
11102 fra.me.REG[0] = BOX_NativeString("==");
11103 REGB0 = TAG_Int(2);
11104 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11105 once_value_2 = fra.me.REG[0];
11106 register_static_object(&once_value_2);
11107 } else fra.me.REG[0] = once_value_2;
11108 fra.me.REG[0] = fra.me.REG[0];
11109 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11110 once_value_1 = fra.me.REG[0];
11111 register_static_object(&once_value_1);
11112 } else fra.me.REG[0] = once_value_1;
11113 fra.me.REG[0] = fra.me.REG[0];
11114 goto label3;
11115 label3: while(0);
11116 stack_frame_head = fra.me.prev;
11117 return fra.me.REG[0];
11118 }
11119 static const char LOCATE_syntax___typing___AEqExpr___after_typing[] = "typing::AEqExpr::(typing::ANode::after_typing)";
11120 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
11121 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11122 val_t REGB0;
11123 val_t REGB1;
11124 val_t tmp;
11125 static val_t once_value_2; /* Once value */
11126 static val_t once_value_3; /* Once value */
11127 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11128 fra.me.file = LOCATE_syntax___typing;
11129 fra.me.line = 1757;
11130 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
11131 fra.me.has_broke = 0;
11132 fra.me.REG_size = 4;
11133 fra.me.nitni_local_ref_head = NULL;
11134 fra.me.REG[0] = NIT_NULL;
11135 fra.me.REG[1] = NIT_NULL;
11136 fra.me.REG[2] = NIT_NULL;
11137 fra.me.REG[3] = NIT_NULL;
11138 fra.me.REG[0] = p0;
11139 fra.me.REG[1] = p1;
11140 /* syntax/typing.nit:1757 */
11141 fra.me.REG[2] = fra.me.REG[0];
11142 fra.me.REG[3] = fra.me.REG[1];
11143 /* syntax/typing.nit:1759 */
11144 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11145 /* syntax/typing.nit:1760 */
11146 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11147 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11148 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11149 if (UNTAG_Bool(REGB0)) {
11150 REGB0 = TAG_Bool(1);
11151 } else {
11152 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11153 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11154 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11155 REGB0 = REGB1;
11156 }
11157 if (UNTAG_Bool(REGB0)) {
11158 goto label1;
11159 }
11160 /* syntax/typing.nit:1761 */
11161 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11162 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11163 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11164 if (UNTAG_Bool(REGB0)) {
11165 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11166 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11167 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11168 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11169 } else {
11170 REGB1 = TAG_Bool(0);
11171 REGB0 = REGB1;
11172 }
11173 if (UNTAG_Bool(REGB0)) {
11174 REGB0 = TAG_Bool(1);
11175 } else {
11176 /* syntax/typing.nit:1762 */
11177 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11178 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11179 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11180 /* syntax/typing.nit:1761 */
11181 REGB0 = REGB1;
11182 }
11183 if (UNTAG_Bool(REGB0)) {
11184 /* syntax/typing.nit:1762 */
11185 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11186 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11187 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11188 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11189 } else {
11190 /* syntax/typing.nit:1761 */
11191 REGB1 = TAG_Bool(0);
11192 REGB0 = REGB1;
11193 }
11194 if (UNTAG_Bool(REGB0)) {
11195 /* syntax/typing.nit:1763 */
11196 if (!once_value_2) {
11197 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11198 REGB0 = TAG_Int(59);
11199 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
11200 once_value_2 = fra.me.REG[1];
11201 register_static_object(&once_value_2);
11202 } else fra.me.REG[1] = once_value_2;
11203 fra.me.REG[1] = fra.me.REG[1];
11204 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11205 }
11206 /* syntax/typing.nit:1766 */
11207 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11208 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11209 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11210 if (UNTAG_Bool(REGB0)) {
11211 /* syntax/typing.nit:1767 */
11212 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11213 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11214 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11215 if (UNTAG_Bool(REGB0)) {
11216 /* syntax/typing.nit:1768 */
11217 if (!once_value_3) {
11218 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11219 REGB0 = TAG_Int(45);
11220 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
11221 once_value_3 = fra.me.REG[1];
11222 register_static_object(&once_value_3);
11223 } else fra.me.REG[1] = once_value_3;
11224 fra.me.REG[1] = fra.me.REG[1];
11225 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11226 } else {
11227 /* syntax/typing.nit:1770 */
11228 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11229 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11230 }
11231 } else {
11232 /* syntax/typing.nit:1772 */
11233 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11234 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11235 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11236 if (UNTAG_Bool(REGB0)) {
11237 /* syntax/typing.nit:1773 */
11238 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11239 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11240 }
11241 }
11242 label1: while(0);
11243 stack_frame_head = fra.me.prev;
11244 return;
11245 }
11246 static const char LOCATE_syntax___typing___AEqExpr___try_to_isa[] = "typing::AEqExpr::try_to_isa";
11247 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11248 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11249 val_t REGB0;
11250 val_t REGB1;
11251 val_t tmp;
11252 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11253 fra.me.file = LOCATE_syntax___typing;
11254 fra.me.line = 1777;
11255 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
11256 fra.me.has_broke = 0;
11257 fra.me.REG_size = 5;
11258 fra.me.nitni_local_ref_head = NULL;
11259 fra.me.REG[0] = NIT_NULL;
11260 fra.me.REG[1] = NIT_NULL;
11261 fra.me.REG[2] = NIT_NULL;
11262 fra.me.REG[3] = NIT_NULL;
11263 fra.me.REG[4] = NIT_NULL;
11264 fra.me.REG[0] = p0;
11265 fra.me.REG[1] = p1;
11266 fra.me.REG[2] = p2;
11267 /* syntax/typing.nit:1779 */
11268 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11269 /* syntax/typing.nit:1780 */
11270 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11271 if (UNTAG_Bool(REGB0)) {
11272 } else {
11273 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11274 if (UNTAG_Bool(REGB1)) {
11275 REGB1 = TAG_Bool(0);
11276 REGB0 = REGB1;
11277 } else {
11278 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11279 REGB0 = REGB1;
11280 }
11281 }
11282 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11283 if (UNTAG_Bool(REGB0)) {
11284 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11285 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11286 } else {
11287 REGB1 = TAG_Bool(0);
11288 REGB0 = REGB1;
11289 }
11290 if (UNTAG_Bool(REGB0)) {
11291 /* syntax/typing.nit:1781 */
11292 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11293 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11294 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11295 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
11296 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11297 /* syntax/typing.nit:1782 */
11298 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11299 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11300 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
11301 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11302 }
11303 stack_frame_head = fra.me.prev;
11304 return;
11305 }
11306 static const char LOCATE_syntax___typing___ANeExpr___name[] = "typing::ANeExpr::(typing::ASendExpr::name)";
11307 val_t syntax___typing___ANeExpr___name(val_t p0){
11308 struct {struct stack_frame_t me;} fra;
11309 val_t REGB0;
11310 val_t tmp;
11311 static val_t once_value_1; /* Once value */
11312 static val_t once_value_2; /* Once value */
11313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11314 fra.me.file = LOCATE_syntax___typing;
11315 fra.me.line = 1787;
11316 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
11317 fra.me.has_broke = 0;
11318 fra.me.REG_size = 1;
11319 fra.me.nitni_local_ref_head = NULL;
11320 fra.me.REG[0] = NIT_NULL;
11321 fra.me.REG[0] = p0;
11322 /* syntax/typing.nit:1787 */
11323 if (!once_value_1) {
11324 if (!once_value_2) {
11325 fra.me.REG[0] = BOX_NativeString("!=");
11326 REGB0 = TAG_Int(2);
11327 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11328 once_value_2 = fra.me.REG[0];
11329 register_static_object(&once_value_2);
11330 } else fra.me.REG[0] = once_value_2;
11331 fra.me.REG[0] = fra.me.REG[0];
11332 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11333 once_value_1 = fra.me.REG[0];
11334 register_static_object(&once_value_1);
11335 } else fra.me.REG[0] = once_value_1;
11336 fra.me.REG[0] = fra.me.REG[0];
11337 goto label3;
11338 label3: while(0);
11339 stack_frame_head = fra.me.prev;
11340 return fra.me.REG[0];
11341 }
11342 static const char LOCATE_syntax___typing___ANeExpr___after_typing[] = "typing::ANeExpr::(typing::ANode::after_typing)";
11343 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
11344 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11345 val_t REGB0;
11346 val_t REGB1;
11347 val_t tmp;
11348 static val_t once_value_2; /* Once value */
11349 static val_t once_value_3; /* Once value */
11350 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11351 fra.me.file = LOCATE_syntax___typing;
11352 fra.me.line = 1788;
11353 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
11354 fra.me.has_broke = 0;
11355 fra.me.REG_size = 4;
11356 fra.me.nitni_local_ref_head = NULL;
11357 fra.me.REG[0] = NIT_NULL;
11358 fra.me.REG[1] = NIT_NULL;
11359 fra.me.REG[2] = NIT_NULL;
11360 fra.me.REG[3] = NIT_NULL;
11361 fra.me.REG[0] = p0;
11362 fra.me.REG[1] = p1;
11363 /* syntax/typing.nit:1788 */
11364 fra.me.REG[2] = fra.me.REG[0];
11365 fra.me.REG[3] = fra.me.REG[1];
11366 /* syntax/typing.nit:1790 */
11367 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11368 /* syntax/typing.nit:1791 */
11369 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11370 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11371 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11372 if (UNTAG_Bool(REGB0)) {
11373 REGB0 = TAG_Bool(1);
11374 } else {
11375 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11376 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11377 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11378 REGB0 = REGB1;
11379 }
11380 if (UNTAG_Bool(REGB0)) {
11381 goto label1;
11382 }
11383 /* syntax/typing.nit:1792 */
11384 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11385 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11386 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11387 if (UNTAG_Bool(REGB0)) {
11388 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11389 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11390 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11391 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11392 } else {
11393 REGB1 = TAG_Bool(0);
11394 REGB0 = REGB1;
11395 }
11396 if (UNTAG_Bool(REGB0)) {
11397 REGB0 = TAG_Bool(1);
11398 } else {
11399 /* syntax/typing.nit:1793 */
11400 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11401 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11402 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11403 /* syntax/typing.nit:1792 */
11404 REGB0 = REGB1;
11405 }
11406 if (UNTAG_Bool(REGB0)) {
11407 /* syntax/typing.nit:1793 */
11408 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11409 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11410 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11411 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11412 } else {
11413 /* syntax/typing.nit:1792 */
11414 REGB1 = TAG_Bool(0);
11415 REGB0 = REGB1;
11416 }
11417 if (UNTAG_Bool(REGB0)) {
11418 /* syntax/typing.nit:1794 */
11419 if (!once_value_2) {
11420 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11421 REGB0 = TAG_Int(59);
11422 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
11423 once_value_2 = fra.me.REG[1];
11424 register_static_object(&once_value_2);
11425 } else fra.me.REG[1] = once_value_2;
11426 fra.me.REG[1] = fra.me.REG[1];
11427 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11428 }
11429 /* syntax/typing.nit:1797 */
11430 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11431 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11432 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11433 if (UNTAG_Bool(REGB0)) {
11434 /* syntax/typing.nit:1798 */
11435 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11436 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11437 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11438 if (UNTAG_Bool(REGB0)) {
11439 /* syntax/typing.nit:1799 */
11440 if (!once_value_3) {
11441 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11442 REGB0 = TAG_Int(45);
11443 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
11444 once_value_3 = fra.me.REG[1];
11445 register_static_object(&once_value_3);
11446 } else fra.me.REG[1] = once_value_3;
11447 fra.me.REG[1] = fra.me.REG[1];
11448 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11449 } else {
11450 /* syntax/typing.nit:1801 */
11451 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11452 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11453 }
11454 } else {
11455 /* syntax/typing.nit:1803 */
11456 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11457 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11458 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11459 if (UNTAG_Bool(REGB0)) {
11460 /* syntax/typing.nit:1804 */
11461 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11462 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11463 }
11464 }
11465 label1: while(0);
11466 stack_frame_head = fra.me.prev;
11467 return;
11468 }
11469 static const char LOCATE_syntax___typing___ANeExpr___try_to_isa[] = "typing::ANeExpr::try_to_isa";
11470 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11471 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11472 val_t REGB0;
11473 val_t REGB1;
11474 val_t tmp;
11475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11476 fra.me.file = LOCATE_syntax___typing;
11477 fra.me.line = 1808;
11478 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
11479 fra.me.has_broke = 0;
11480 fra.me.REG_size = 5;
11481 fra.me.nitni_local_ref_head = NULL;
11482 fra.me.REG[0] = NIT_NULL;
11483 fra.me.REG[1] = NIT_NULL;
11484 fra.me.REG[2] = NIT_NULL;
11485 fra.me.REG[3] = NIT_NULL;
11486 fra.me.REG[4] = NIT_NULL;
11487 fra.me.REG[0] = p0;
11488 fra.me.REG[1] = p1;
11489 fra.me.REG[2] = p2;
11490 /* syntax/typing.nit:1810 */
11491 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11492 /* syntax/typing.nit:1811 */
11493 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11494 if (UNTAG_Bool(REGB0)) {
11495 } else {
11496 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11497 if (UNTAG_Bool(REGB1)) {
11498 REGB1 = TAG_Bool(0);
11499 REGB0 = REGB1;
11500 } else {
11501 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11502 REGB0 = REGB1;
11503 }
11504 }
11505 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11506 if (UNTAG_Bool(REGB0)) {
11507 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11508 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11509 } else {
11510 REGB1 = TAG_Bool(0);
11511 REGB0 = REGB1;
11512 }
11513 if (UNTAG_Bool(REGB0)) {
11514 /* syntax/typing.nit:1812 */
11515 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11516 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11517 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11518 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
11519 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11520 /* syntax/typing.nit:1813 */
11521 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11522 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11523 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
11524 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11525 }
11526 stack_frame_head = fra.me.prev;
11527 return;
11528 }
11529 static const char LOCATE_syntax___typing___ALtExpr___name[] = "typing::ALtExpr::(typing::ASendExpr::name)";
11530 val_t syntax___typing___ALtExpr___name(val_t p0){
11531 struct {struct stack_frame_t me;} fra;
11532 val_t REGB0;
11533 val_t tmp;
11534 static val_t once_value_1; /* Once value */
11535 static val_t once_value_2; /* Once value */
11536 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11537 fra.me.file = LOCATE_syntax___typing;
11538 fra.me.line = 1818;
11539 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11540 fra.me.has_broke = 0;
11541 fra.me.REG_size = 1;
11542 fra.me.nitni_local_ref_head = NULL;
11543 fra.me.REG[0] = NIT_NULL;
11544 fra.me.REG[0] = p0;
11545 /* syntax/typing.nit:1818 */
11546 if (!once_value_1) {
11547 if (!once_value_2) {
11548 fra.me.REG[0] = BOX_NativeString("<");
11549 REGB0 = TAG_Int(1);
11550 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11551 once_value_2 = fra.me.REG[0];
11552 register_static_object(&once_value_2);
11553 } else fra.me.REG[0] = once_value_2;
11554 fra.me.REG[0] = fra.me.REG[0];
11555 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11556 once_value_1 = fra.me.REG[0];
11557 register_static_object(&once_value_1);
11558 } else fra.me.REG[0] = once_value_1;
11559 fra.me.REG[0] = fra.me.REG[0];
11560 goto label3;
11561 label3: while(0);
11562 stack_frame_head = fra.me.prev;
11563 return fra.me.REG[0];
11564 }
11565 static const char LOCATE_syntax___typing___ALeExpr___name[] = "typing::ALeExpr::(typing::ASendExpr::name)";
11566 val_t syntax___typing___ALeExpr___name(val_t p0){
11567 struct {struct stack_frame_t me;} fra;
11568 val_t REGB0;
11569 val_t tmp;
11570 static val_t once_value_1; /* Once value */
11571 static val_t once_value_2; /* Once value */
11572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11573 fra.me.file = LOCATE_syntax___typing;
11574 fra.me.line = 1821;
11575 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11576 fra.me.has_broke = 0;
11577 fra.me.REG_size = 1;
11578 fra.me.nitni_local_ref_head = NULL;
11579 fra.me.REG[0] = NIT_NULL;
11580 fra.me.REG[0] = p0;
11581 /* syntax/typing.nit:1821 */
11582 if (!once_value_1) {
11583 if (!once_value_2) {
11584 fra.me.REG[0] = BOX_NativeString("<=");
11585 REGB0 = TAG_Int(2);
11586 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11587 once_value_2 = fra.me.REG[0];
11588 register_static_object(&once_value_2);
11589 } else fra.me.REG[0] = once_value_2;
11590 fra.me.REG[0] = fra.me.REG[0];
11591 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11592 once_value_1 = fra.me.REG[0];
11593 register_static_object(&once_value_1);
11594 } else fra.me.REG[0] = once_value_1;
11595 fra.me.REG[0] = fra.me.REG[0];
11596 goto label3;
11597 label3: while(0);
11598 stack_frame_head = fra.me.prev;
11599 return fra.me.REG[0];
11600 }
11601 static const char LOCATE_syntax___typing___ALlExpr___name[] = "typing::ALlExpr::(typing::ASendExpr::name)";
11602 val_t syntax___typing___ALlExpr___name(val_t p0){
11603 struct {struct stack_frame_t me;} fra;
11604 val_t REGB0;
11605 val_t tmp;
11606 static val_t once_value_1; /* Once value */
11607 static val_t once_value_2; /* Once value */
11608 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11609 fra.me.file = LOCATE_syntax___typing;
11610 fra.me.line = 1824;
11611 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11612 fra.me.has_broke = 0;
11613 fra.me.REG_size = 1;
11614 fra.me.nitni_local_ref_head = NULL;
11615 fra.me.REG[0] = NIT_NULL;
11616 fra.me.REG[0] = p0;
11617 /* syntax/typing.nit:1824 */
11618 if (!once_value_1) {
11619 if (!once_value_2) {
11620 fra.me.REG[0] = BOX_NativeString("<<");
11621 REGB0 = TAG_Int(2);
11622 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11623 once_value_2 = fra.me.REG[0];
11624 register_static_object(&once_value_2);
11625 } else fra.me.REG[0] = once_value_2;
11626 fra.me.REG[0] = fra.me.REG[0];
11627 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11628 once_value_1 = fra.me.REG[0];
11629 register_static_object(&once_value_1);
11630 } else fra.me.REG[0] = once_value_1;
11631 fra.me.REG[0] = fra.me.REG[0];
11632 goto label3;
11633 label3: while(0);
11634 stack_frame_head = fra.me.prev;
11635 return fra.me.REG[0];
11636 }
11637 static const char LOCATE_syntax___typing___AGtExpr___name[] = "typing::AGtExpr::(typing::ASendExpr::name)";
11638 val_t syntax___typing___AGtExpr___name(val_t p0){
11639 struct {struct stack_frame_t me;} fra;
11640 val_t REGB0;
11641 val_t tmp;
11642 static val_t once_value_1; /* Once value */
11643 static val_t once_value_2; /* Once value */
11644 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11645 fra.me.file = LOCATE_syntax___typing;
11646 fra.me.line = 1827;
11647 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11648 fra.me.has_broke = 0;
11649 fra.me.REG_size = 1;
11650 fra.me.nitni_local_ref_head = NULL;
11651 fra.me.REG[0] = NIT_NULL;
11652 fra.me.REG[0] = p0;
11653 /* syntax/typing.nit:1827 */
11654 if (!once_value_1) {
11655 if (!once_value_2) {
11656 fra.me.REG[0] = BOX_NativeString(">");
11657 REGB0 = TAG_Int(1);
11658 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11659 once_value_2 = fra.me.REG[0];
11660 register_static_object(&once_value_2);
11661 } else fra.me.REG[0] = once_value_2;
11662 fra.me.REG[0] = fra.me.REG[0];
11663 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11664 once_value_1 = fra.me.REG[0];
11665 register_static_object(&once_value_1);
11666 } else fra.me.REG[0] = once_value_1;
11667 fra.me.REG[0] = fra.me.REG[0];
11668 goto label3;
11669 label3: while(0);
11670 stack_frame_head = fra.me.prev;
11671 return fra.me.REG[0];
11672 }
11673 static const char LOCATE_syntax___typing___AGeExpr___name[] = "typing::AGeExpr::(typing::ASendExpr::name)";
11674 val_t syntax___typing___AGeExpr___name(val_t p0){
11675 struct {struct stack_frame_t me;} fra;
11676 val_t REGB0;
11677 val_t tmp;
11678 static val_t once_value_1; /* Once value */
11679 static val_t once_value_2; /* Once value */
11680 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11681 fra.me.file = LOCATE_syntax___typing;
11682 fra.me.line = 1830;
11683 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11684 fra.me.has_broke = 0;
11685 fra.me.REG_size = 1;
11686 fra.me.nitni_local_ref_head = NULL;
11687 fra.me.REG[0] = NIT_NULL;
11688 fra.me.REG[0] = p0;
11689 /* syntax/typing.nit:1830 */
11690 if (!once_value_1) {
11691 if (!once_value_2) {
11692 fra.me.REG[0] = BOX_NativeString(">=");
11693 REGB0 = TAG_Int(2);
11694 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11695 once_value_2 = fra.me.REG[0];
11696 register_static_object(&once_value_2);
11697 } else fra.me.REG[0] = once_value_2;
11698 fra.me.REG[0] = fra.me.REG[0];
11699 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11700 once_value_1 = fra.me.REG[0];
11701 register_static_object(&once_value_1);
11702 } else fra.me.REG[0] = once_value_1;
11703 fra.me.REG[0] = fra.me.REG[0];
11704 goto label3;
11705 label3: while(0);
11706 stack_frame_head = fra.me.prev;
11707 return fra.me.REG[0];
11708 }
11709 static const char LOCATE_syntax___typing___AGgExpr___name[] = "typing::AGgExpr::(typing::ASendExpr::name)";
11710 val_t syntax___typing___AGgExpr___name(val_t p0){
11711 struct {struct stack_frame_t me;} fra;
11712 val_t REGB0;
11713 val_t tmp;
11714 static val_t once_value_1; /* Once value */
11715 static val_t once_value_2; /* Once value */
11716 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11717 fra.me.file = LOCATE_syntax___typing;
11718 fra.me.line = 1833;
11719 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
11720 fra.me.has_broke = 0;
11721 fra.me.REG_size = 1;
11722 fra.me.nitni_local_ref_head = NULL;
11723 fra.me.REG[0] = NIT_NULL;
11724 fra.me.REG[0] = p0;
11725 /* syntax/typing.nit:1833 */
11726 if (!once_value_1) {
11727 if (!once_value_2) {
11728 fra.me.REG[0] = BOX_NativeString(">>");
11729 REGB0 = TAG_Int(2);
11730 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11731 once_value_2 = fra.me.REG[0];
11732 register_static_object(&once_value_2);
11733 } else fra.me.REG[0] = once_value_2;
11734 fra.me.REG[0] = fra.me.REG[0];
11735 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11736 once_value_1 = fra.me.REG[0];
11737 register_static_object(&once_value_1);
11738 } else fra.me.REG[0] = once_value_1;
11739 fra.me.REG[0] = fra.me.REG[0];
11740 goto label3;
11741 label3: while(0);
11742 stack_frame_head = fra.me.prev;
11743 return fra.me.REG[0];
11744 }
11745 static const char LOCATE_syntax___typing___APlusExpr___name[] = "typing::APlusExpr::(typing::ASendExpr::name)";
11746 val_t syntax___typing___APlusExpr___name(val_t p0){
11747 struct {struct stack_frame_t me;} fra;
11748 val_t REGB0;
11749 val_t tmp;
11750 static val_t once_value_1; /* Once value */
11751 static val_t once_value_2; /* Once value */
11752 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11753 fra.me.file = LOCATE_syntax___typing;
11754 fra.me.line = 1836;
11755 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11756 fra.me.has_broke = 0;
11757 fra.me.REG_size = 1;
11758 fra.me.nitni_local_ref_head = NULL;
11759 fra.me.REG[0] = NIT_NULL;
11760 fra.me.REG[0] = p0;
11761 /* syntax/typing.nit:1836 */
11762 if (!once_value_1) {
11763 if (!once_value_2) {
11764 fra.me.REG[0] = BOX_NativeString("+");
11765 REGB0 = TAG_Int(1);
11766 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11767 once_value_2 = fra.me.REG[0];
11768 register_static_object(&once_value_2);
11769 } else fra.me.REG[0] = once_value_2;
11770 fra.me.REG[0] = fra.me.REG[0];
11771 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11772 once_value_1 = fra.me.REG[0];
11773 register_static_object(&once_value_1);
11774 } else fra.me.REG[0] = once_value_1;
11775 fra.me.REG[0] = fra.me.REG[0];
11776 goto label3;
11777 label3: while(0);
11778 stack_frame_head = fra.me.prev;
11779 return fra.me.REG[0];
11780 }
11781 static const char LOCATE_syntax___typing___AMinusExpr___name[] = "typing::AMinusExpr::(typing::ASendExpr::name)";
11782 val_t syntax___typing___AMinusExpr___name(val_t p0){
11783 struct {struct stack_frame_t me;} fra;
11784 val_t REGB0;
11785 val_t tmp;
11786 static val_t once_value_1; /* Once value */
11787 static val_t once_value_2; /* Once value */
11788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11789 fra.me.file = LOCATE_syntax___typing;
11790 fra.me.line = 1839;
11791 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11792 fra.me.has_broke = 0;
11793 fra.me.REG_size = 1;
11794 fra.me.nitni_local_ref_head = NULL;
11795 fra.me.REG[0] = NIT_NULL;
11796 fra.me.REG[0] = p0;
11797 /* syntax/typing.nit:1839 */
11798 if (!once_value_1) {
11799 if (!once_value_2) {
11800 fra.me.REG[0] = BOX_NativeString("-");
11801 REGB0 = TAG_Int(1);
11802 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11803 once_value_2 = fra.me.REG[0];
11804 register_static_object(&once_value_2);
11805 } else fra.me.REG[0] = once_value_2;
11806 fra.me.REG[0] = fra.me.REG[0];
11807 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11808 once_value_1 = fra.me.REG[0];
11809 register_static_object(&once_value_1);
11810 } else fra.me.REG[0] = once_value_1;
11811 fra.me.REG[0] = fra.me.REG[0];
11812 goto label3;
11813 label3: while(0);
11814 stack_frame_head = fra.me.prev;
11815 return fra.me.REG[0];
11816 }
11817 static const char LOCATE_syntax___typing___AStarshipExpr___name[] = "typing::AStarshipExpr::(typing::ASendExpr::name)";
11818 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11819 struct {struct stack_frame_t me;} fra;
11820 val_t REGB0;
11821 val_t tmp;
11822 static val_t once_value_1; /* Once value */
11823 static val_t once_value_2; /* Once value */
11824 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11825 fra.me.file = LOCATE_syntax___typing;
11826 fra.me.line = 1842;
11827 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11828 fra.me.has_broke = 0;
11829 fra.me.REG_size = 1;
11830 fra.me.nitni_local_ref_head = NULL;
11831 fra.me.REG[0] = NIT_NULL;
11832 fra.me.REG[0] = p0;
11833 /* syntax/typing.nit:1842 */
11834 if (!once_value_1) {
11835 if (!once_value_2) {
11836 fra.me.REG[0] = BOX_NativeString("<=>");
11837 REGB0 = TAG_Int(3);
11838 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11839 once_value_2 = fra.me.REG[0];
11840 register_static_object(&once_value_2);
11841 } else fra.me.REG[0] = once_value_2;
11842 fra.me.REG[0] = fra.me.REG[0];
11843 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11844 once_value_1 = fra.me.REG[0];
11845 register_static_object(&once_value_1);
11846 } else fra.me.REG[0] = once_value_1;
11847 fra.me.REG[0] = fra.me.REG[0];
11848 goto label3;
11849 label3: while(0);
11850 stack_frame_head = fra.me.prev;
11851 return fra.me.REG[0];
11852 }
11853 static const char LOCATE_syntax___typing___AStarExpr___name[] = "typing::AStarExpr::(typing::ASendExpr::name)";
11854 val_t syntax___typing___AStarExpr___name(val_t p0){
11855 struct {struct stack_frame_t me;} fra;
11856 val_t REGB0;
11857 val_t tmp;
11858 static val_t once_value_1; /* Once value */
11859 static val_t once_value_2; /* Once value */
11860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11861 fra.me.file = LOCATE_syntax___typing;
11862 fra.me.line = 1845;
11863 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11864 fra.me.has_broke = 0;
11865 fra.me.REG_size = 1;
11866 fra.me.nitni_local_ref_head = NULL;
11867 fra.me.REG[0] = NIT_NULL;
11868 fra.me.REG[0] = p0;
11869 /* syntax/typing.nit:1845 */
11870 if (!once_value_1) {
11871 if (!once_value_2) {
11872 fra.me.REG[0] = BOX_NativeString("*");
11873 REGB0 = TAG_Int(1);
11874 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11875 once_value_2 = fra.me.REG[0];
11876 register_static_object(&once_value_2);
11877 } else fra.me.REG[0] = once_value_2;
11878 fra.me.REG[0] = fra.me.REG[0];
11879 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11880 once_value_1 = fra.me.REG[0];
11881 register_static_object(&once_value_1);
11882 } else fra.me.REG[0] = once_value_1;
11883 fra.me.REG[0] = fra.me.REG[0];
11884 goto label3;
11885 label3: while(0);
11886 stack_frame_head = fra.me.prev;
11887 return fra.me.REG[0];
11888 }
11889 static const char LOCATE_syntax___typing___ASlashExpr___name[] = "typing::ASlashExpr::(typing::ASendExpr::name)";
11890 val_t syntax___typing___ASlashExpr___name(val_t p0){
11891 struct {struct stack_frame_t me;} fra;
11892 val_t REGB0;
11893 val_t tmp;
11894 static val_t once_value_1; /* Once value */
11895 static val_t once_value_2; /* Once value */
11896 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11897 fra.me.file = LOCATE_syntax___typing;
11898 fra.me.line = 1848;
11899 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11900 fra.me.has_broke = 0;
11901 fra.me.REG_size = 1;
11902 fra.me.nitni_local_ref_head = NULL;
11903 fra.me.REG[0] = NIT_NULL;
11904 fra.me.REG[0] = p0;
11905 /* syntax/typing.nit:1848 */
11906 if (!once_value_1) {
11907 if (!once_value_2) {
11908 fra.me.REG[0] = BOX_NativeString("/");
11909 REGB0 = TAG_Int(1);
11910 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11911 once_value_2 = fra.me.REG[0];
11912 register_static_object(&once_value_2);
11913 } else fra.me.REG[0] = once_value_2;
11914 fra.me.REG[0] = fra.me.REG[0];
11915 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11916 once_value_1 = fra.me.REG[0];
11917 register_static_object(&once_value_1);
11918 } else fra.me.REG[0] = once_value_1;
11919 fra.me.REG[0] = fra.me.REG[0];
11920 goto label3;
11921 label3: while(0);
11922 stack_frame_head = fra.me.prev;
11923 return fra.me.REG[0];
11924 }
11925 static const char LOCATE_syntax___typing___APercentExpr___name[] = "typing::APercentExpr::(typing::ASendExpr::name)";
11926 val_t syntax___typing___APercentExpr___name(val_t p0){
11927 struct {struct stack_frame_t me;} fra;
11928 val_t REGB0;
11929 val_t tmp;
11930 static val_t once_value_1; /* Once value */
11931 static val_t once_value_2; /* Once value */
11932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11933 fra.me.file = LOCATE_syntax___typing;
11934 fra.me.line = 1851;
11935 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11936 fra.me.has_broke = 0;
11937 fra.me.REG_size = 1;
11938 fra.me.nitni_local_ref_head = NULL;
11939 fra.me.REG[0] = NIT_NULL;
11940 fra.me.REG[0] = p0;
11941 /* syntax/typing.nit:1851 */
11942 if (!once_value_1) {
11943 if (!once_value_2) {
11944 fra.me.REG[0] = BOX_NativeString("%");
11945 REGB0 = TAG_Int(1);
11946 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11947 once_value_2 = fra.me.REG[0];
11948 register_static_object(&once_value_2);
11949 } else fra.me.REG[0] = once_value_2;
11950 fra.me.REG[0] = fra.me.REG[0];
11951 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11952 once_value_1 = fra.me.REG[0];
11953 register_static_object(&once_value_1);
11954 } else fra.me.REG[0] = once_value_1;
11955 fra.me.REG[0] = fra.me.REG[0];
11956 goto label3;
11957 label3: while(0);
11958 stack_frame_head = fra.me.prev;
11959 return fra.me.REG[0];
11960 }
11961 static const char LOCATE_syntax___typing___AUminusExpr___name[] = "typing::AUminusExpr::(typing::ASendExpr::name)";
11962 val_t syntax___typing___AUminusExpr___name(val_t p0){
11963 struct {struct stack_frame_t me;} fra;
11964 val_t REGB0;
11965 val_t tmp;
11966 static val_t once_value_1; /* Once value */
11967 static val_t once_value_2; /* Once value */
11968 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11969 fra.me.file = LOCATE_syntax___typing;
11970 fra.me.line = 1855;
11971 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11972 fra.me.has_broke = 0;
11973 fra.me.REG_size = 1;
11974 fra.me.nitni_local_ref_head = NULL;
11975 fra.me.REG[0] = NIT_NULL;
11976 fra.me.REG[0] = p0;
11977 /* syntax/typing.nit:1855 */
11978 if (!once_value_1) {
11979 if (!once_value_2) {
11980 fra.me.REG[0] = BOX_NativeString("unary -");
11981 REGB0 = TAG_Int(7);
11982 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
11983 once_value_2 = fra.me.REG[0];
11984 register_static_object(&once_value_2);
11985 } else fra.me.REG[0] = once_value_2;
11986 fra.me.REG[0] = fra.me.REG[0];
11987 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11988 once_value_1 = fra.me.REG[0];
11989 register_static_object(&once_value_1);
11990 } else fra.me.REG[0] = once_value_1;
11991 fra.me.REG[0] = fra.me.REG[0];
11992 goto label3;
11993 label3: while(0);
11994 stack_frame_head = fra.me.prev;
11995 return fra.me.REG[0];
11996 }
11997 static const char LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments[] = "typing::AUminusExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
11998 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11999 struct {struct stack_frame_t me;} fra;
12000 val_t tmp;
12001 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12002 fra.me.file = LOCATE_syntax___typing;
12003 fra.me.line = 1856;
12004 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
12005 fra.me.has_broke = 0;
12006 fra.me.REG_size = 1;
12007 fra.me.nitni_local_ref_head = NULL;
12008 fra.me.REG[0] = NIT_NULL;
12009 fra.me.REG[0] = p0;
12010 /* syntax/typing.nit:1856 */
12011 fra.me.REG[0] = NIT_NULL;
12012 goto label1;
12013 label1: while(0);
12014 stack_frame_head = fra.me.prev;
12015 return fra.me.REG[0];
12016 }
12017 static const char LOCATE_syntax___typing___ACallFormExpr___after_typing[] = "typing::ACallFormExpr::(typing::ANode::after_typing)";
12018 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
12019 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
12020 val_t REGB0;
12021 val_t REGB1;
12022 val_t tmp;
12023 static val_t once_value_1; /* Once value */
12024 static val_t once_value_2; /* Once value */
12025 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12026 fra.me.file = LOCATE_syntax___typing;
12027 fra.me.line = 1860;
12028 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
12029 fra.me.has_broke = 0;
12030 fra.me.REG_size = 9;
12031 fra.me.nitni_local_ref_head = NULL;
12032 fra.me.REG[0] = NIT_NULL;
12033 fra.me.REG[1] = NIT_NULL;
12034 fra.me.REG[2] = NIT_NULL;
12035 fra.me.REG[3] = NIT_NULL;
12036 fra.me.REG[4] = NIT_NULL;
12037 fra.me.REG[5] = NIT_NULL;
12038 fra.me.REG[6] = NIT_NULL;
12039 fra.me.REG[7] = NIT_NULL;
12040 fra.me.REG[8] = NIT_NULL;
12041 fra.me.REG[0] = p0;
12042 fra.me.REG[1] = p1;
12043 /* syntax/typing.nit:1860 */
12044 fra.me.REG[2] = fra.me.REG[0];
12045 fra.me.REG[3] = fra.me.REG[1];
12046 /* syntax/typing.nit:1862 */
12047 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
12048 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
12049 if (UNTAG_Bool(REGB0)) {
12050 /* syntax/typing.nit:1863 */
12051 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12052 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12053 /* syntax/typing.nit:1864 */
12054 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
12055 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
12056 /* syntax/typing.nit:1865 */
12057 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12058 if (UNTAG_Bool(REGB0)) {
12059 } else {
12060 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12061 if (UNTAG_Bool(REGB1)) {
12062 REGB1 = TAG_Bool(0);
12063 REGB0 = REGB1;
12064 } else {
12065 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
12066 REGB0 = REGB1;
12067 }
12068 }
12069 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12070 if (UNTAG_Bool(REGB0)) {
12071 /* syntax/typing.nit:1867 */
12072 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_syntax___syntax_base___ClosureVariable, ID_syntax___syntax_base___ClosureVariable)) /*cast ClosureVariable*/;
12073 if (UNTAG_Bool(REGB0)) {
12074 /* syntax/typing.nit:1868 */
12075 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12076 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12077 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
12078 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
12079 /* syntax/typing.nit:1869 */
12080 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12081 } else {
12082 /* syntax/typing.nit:1871 */
12083 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12084 fra.me.REG[7] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[7])(fra.me.REG[7]);
12085 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
12086 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12087 if (UNTAG_Bool(REGB0)) {
12088 REGB0 = TAG_Bool(1);
12089 } else {
12090 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12091 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AParExprs, ID_parser___parser_nodes___AParExprs)) /*cast AParExprs*/;
12092 REGB0 = REGB1;
12093 }
12094 if (UNTAG_Bool(REGB0)) {
12095 /* syntax/typing.nit:1872 */
12096 REGB0 = TAG_Int(3);
12097 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12098 if (!once_value_1) {
12099 fra.me.REG[6] = BOX_NativeString("Error: ");
12100 REGB0 = TAG_Int(7);
12101 fra.me.REG[6] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[6])(fra.me.REG[6], REGB0);
12102 once_value_1 = fra.me.REG[6];
12103 register_static_object(&once_value_1);
12104 } else fra.me.REG[6] = once_value_1;
12105 fra.me.REG[6] = fra.me.REG[6];
12106 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12107 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12108 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12109 if (!once_value_2) {
12110 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
12111 REGB0 = TAG_Int(29);
12112 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
12113 once_value_2 = fra.me.REG[4];
12114 register_static_object(&once_value_2);
12115 } else fra.me.REG[4] = once_value_2;
12116 fra.me.REG[4] = fra.me.REG[4];
12117 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12118 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
12119 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
12120 /* syntax/typing.nit:1873 */
12121 goto label3;
12122 }
12123 /* syntax/typing.nit:1875 */
12124 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
12125 fra.me.REG[8] = fra.me.REG[7];
12126 /* syntax/typing.nit:1876 */
12127 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12128 }
12129 /* syntax/typing.nit:1878 */
12130 CALL_parser___parser_nodes___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
12131 /* syntax/typing.nit:1879 */
12132 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
12133 /* syntax/typing.nit:1880 */
12134 goto label3;
12135 }
12136 }
12137 /* syntax/typing.nit:1884 */
12138 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12139 label3: while(0);
12140 stack_frame_head = fra.me.prev;
12141 return;
12142 }
12143 static const char LOCATE_syntax___typing___ACallFormExpr___closure_defs[] = "typing::ACallFormExpr::(syntax_base::ASendExpr::closure_defs)";
12144 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
12145 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12146 val_t REGB0;
12147 val_t tmp;
12148 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12149 fra.me.file = LOCATE_syntax___typing;
12150 fra.me.line = 1887;
12151 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
12152 fra.me.has_broke = 0;
12153 fra.me.REG_size = 2;
12154 fra.me.nitni_local_ref_head = NULL;
12155 fra.me.REG[0] = NIT_NULL;
12156 fra.me.REG[1] = NIT_NULL;
12157 fra.me.REG[0] = p0;
12158 /* syntax/typing.nit:1889 */
12159 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12160 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12161 if (UNTAG_Bool(REGB0)) {
12162 /* syntax/typing.nit:1890 */
12163 fra.me.REG[1] = NIT_NULL;
12164 goto label1;
12165 } else {
12166 /* syntax/typing.nit:1892 */
12167 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12168 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12169 fra.me.REG[1] = fra.me.REG[0];
12170 goto label1;
12171 }
12172 label1: while(0);
12173 stack_frame_head = fra.me.prev;
12174 return fra.me.REG[1];
12175 }
12176 static const char LOCATE_syntax___typing___ACallFormExpr___variable_create[] = "typing::ACallFormExpr::variable_create";
12177 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
12178 struct {struct stack_frame_t me;} fra;
12179 val_t tmp;
12180 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12181 fra.me.file = LOCATE_syntax___typing;
12182 fra.me.line = 1896;
12183 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
12184 fra.me.has_broke = 0;
12185 fra.me.REG_size = 0;
12186 fra.me.nitni_local_ref_head = NULL;
12187 /* syntax/typing.nit:1896 */
12188 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1896);
12189 stack_frame_head = fra.me.prev;
12190 return NIT_NULL;
12191 }
12192 static const char LOCATE_syntax___typing___ACallExpr___variable_create[] = "typing::ACallExpr::(typing::ACallFormExpr::variable_create)";
12193 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
12194 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12195 val_t tmp;
12196 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12197 fra.me.file = LOCATE_syntax___typing;
12198 fra.me.line = 1901;
12199 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
12200 fra.me.has_broke = 0;
12201 fra.me.REG_size = 2;
12202 fra.me.nitni_local_ref_head = NULL;
12203 fra.me.REG[0] = NIT_NULL;
12204 fra.me.REG[1] = NIT_NULL;
12205 fra.me.REG[0] = p0;
12206 fra.me.REG[1] = p1;
12207 /* syntax/typing.nit:1903 */
12208 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12209 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
12210 goto label1;
12211 label1: while(0);
12212 stack_frame_head = fra.me.prev;
12213 return fra.me.REG[0];
12214 }
12215 static const char LOCATE_syntax___typing___ACallExpr___name[] = "typing::ACallExpr::(typing::ASendExpr::name)";
12216 val_t syntax___typing___ACallExpr___name(val_t p0){
12217 struct {struct stack_frame_t me;} fra;
12218 val_t tmp;
12219 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12220 fra.me.file = LOCATE_syntax___typing;
12221 fra.me.line = 1906;
12222 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
12223 fra.me.has_broke = 0;
12224 fra.me.REG_size = 1;
12225 fra.me.nitni_local_ref_head = NULL;
12226 fra.me.REG[0] = NIT_NULL;
12227 fra.me.REG[0] = p0;
12228 /* syntax/typing.nit:1906 */
12229 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12230 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12231 goto label1;
12232 label1: while(0);
12233 stack_frame_head = fra.me.prev;
12234 return fra.me.REG[0];
12235 }
12236 static const char LOCATE_syntax___typing___ACallExpr___compute_raw_arguments[] = "typing::ACallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12237 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
12238 struct {struct stack_frame_t me;} fra;
12239 val_t tmp;
12240 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12241 fra.me.file = LOCATE_syntax___typing;
12242 fra.me.line = 1907;
12243 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
12244 fra.me.has_broke = 0;
12245 fra.me.REG_size = 1;
12246 fra.me.nitni_local_ref_head = NULL;
12247 fra.me.REG[0] = NIT_NULL;
12248 fra.me.REG[0] = p0;
12249 /* syntax/typing.nit:1907 */
12250 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12251 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12252 goto label1;
12253 label1: while(0);
12254 stack_frame_head = fra.me.prev;
12255 return fra.me.REG[0];
12256 }
12257 static const char LOCATE_syntax___typing___ACallAssignExpr___variable_create[] = "typing::ACallAssignExpr::(typing::ACallFormExpr::variable_create)";
12258 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
12259 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12260 val_t tmp;
12261 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12262 fra.me.file = LOCATE_syntax___typing;
12263 fra.me.line = 1911;
12264 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
12265 fra.me.has_broke = 0;
12266 fra.me.REG_size = 3;
12267 fra.me.nitni_local_ref_head = NULL;
12268 fra.me.REG[0] = NIT_NULL;
12269 fra.me.REG[1] = NIT_NULL;
12270 fra.me.REG[2] = NIT_NULL;
12271 fra.me.REG[0] = p0;
12272 fra.me.REG[1] = p1;
12273 /* syntax/typing.nit:1913 */
12274 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12275 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
12276 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12277 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12278 goto label1;
12279 label1: while(0);
12280 stack_frame_head = fra.me.prev;
12281 return fra.me.REG[0];
12282 }
12283 static const char LOCATE_syntax___typing___ACallAssignExpr___name[] = "typing::ACallAssignExpr::(typing::ASendExpr::name)";
12284 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
12285 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12286 val_t REGB0;
12287 val_t tmp;
12288 static val_t once_value_1; /* Once value */
12289 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12290 fra.me.file = LOCATE_syntax___typing;
12291 fra.me.line = 1916;
12292 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
12293 fra.me.has_broke = 0;
12294 fra.me.REG_size = 2;
12295 fra.me.nitni_local_ref_head = NULL;
12296 fra.me.REG[0] = NIT_NULL;
12297 fra.me.REG[1] = NIT_NULL;
12298 fra.me.REG[0] = p0;
12299 /* syntax/typing.nit:1916 */
12300 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12301 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
12302 if (!once_value_1) {
12303 fra.me.REG[1] = BOX_NativeString("=");
12304 REGB0 = TAG_Int(1);
12305 fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
12306 once_value_1 = fra.me.REG[1];
12307 register_static_object(&once_value_1);
12308 } else fra.me.REG[1] = once_value_1;
12309 fra.me.REG[1] = fra.me.REG[1];
12310 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12311 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
12312 goto label2;
12313 label2: while(0);
12314 stack_frame_head = fra.me.prev;
12315 return fra.me.REG[1];
12316 }
12317 static const char LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments[] = "typing::ACallAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12318 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
12319 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12320 val_t tmp;
12321 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12322 fra.me.file = LOCATE_syntax___typing;
12323 fra.me.line = 1917;
12324 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
12325 fra.me.has_broke = 0;
12326 fra.me.REG_size = 2;
12327 fra.me.nitni_local_ref_head = NULL;
12328 fra.me.REG[0] = NIT_NULL;
12329 fra.me.REG[1] = NIT_NULL;
12330 fra.me.REG[0] = p0;
12331 /* syntax/typing.nit:1918 */
12332 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12333 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12334 /* syntax/typing.nit:1919 */
12335 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12336 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12337 /* syntax/typing.nit:1920 */
12338 goto label1;
12339 label1: while(0);
12340 stack_frame_head = fra.me.prev;
12341 return fra.me.REG[1];
12342 }
12343 static const char LOCATE_syntax___typing___ACallReassignExpr___variable_create[] = "typing::ACallReassignExpr::(typing::ACallFormExpr::variable_create)";
12344 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
12345 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12346 val_t tmp;
12347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12348 fra.me.file = LOCATE_syntax___typing;
12349 fra.me.line = 1925;
12350 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
12351 fra.me.has_broke = 0;
12352 fra.me.REG_size = 3;
12353 fra.me.nitni_local_ref_head = NULL;
12354 fra.me.REG[0] = NIT_NULL;
12355 fra.me.REG[1] = NIT_NULL;
12356 fra.me.REG[2] = NIT_NULL;
12357 fra.me.REG[0] = p0;
12358 fra.me.REG[1] = p1;
12359 /* syntax/typing.nit:1927 */
12360 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12361 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
12362 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12363 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12364 goto label1;
12365 label1: while(0);
12366 stack_frame_head = fra.me.prev;
12367 return fra.me.REG[0];
12368 }
12369 static const char LOCATE_syntax___typing___ACallReassignExpr___name[] = "typing::ACallReassignExpr::(typing::ASendExpr::name)";
12370 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
12371 struct {struct stack_frame_t me;} fra;
12372 val_t tmp;
12373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12374 fra.me.file = LOCATE_syntax___typing;
12375 fra.me.line = 1930;
12376 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
12377 fra.me.has_broke = 0;
12378 fra.me.REG_size = 1;
12379 fra.me.nitni_local_ref_head = NULL;
12380 fra.me.REG[0] = NIT_NULL;
12381 fra.me.REG[0] = p0;
12382 /* syntax/typing.nit:1930 */
12383 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12384 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12385 goto label1;
12386 label1: while(0);
12387 stack_frame_head = fra.me.prev;
12388 return fra.me.REG[0];
12389 }
12390 static const char LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments[] = "typing::ACallReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12391 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
12392 struct {struct stack_frame_t me;} fra;
12393 val_t tmp;
12394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12395 fra.me.file = LOCATE_syntax___typing;
12396 fra.me.line = 1931;
12397 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
12398 fra.me.has_broke = 0;
12399 fra.me.REG_size = 1;
12400 fra.me.nitni_local_ref_head = NULL;
12401 fra.me.REG[0] = NIT_NULL;
12402 fra.me.REG[0] = p0;
12403 /* syntax/typing.nit:1931 */
12404 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12405 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12406 goto label1;
12407 label1: while(0);
12408 stack_frame_head = fra.me.prev;
12409 return fra.me.REG[0];
12410 }
12411 static const char LOCATE_syntax___typing___ABraExpr___name[] = "typing::ABraExpr::(typing::ASendExpr::name)";
12412 val_t syntax___typing___ABraExpr___name(val_t p0){
12413 struct {struct stack_frame_t me;} fra;
12414 val_t REGB0;
12415 val_t tmp;
12416 static val_t once_value_1; /* Once value */
12417 static val_t once_value_2; /* Once value */
12418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12419 fra.me.file = LOCATE_syntax___typing;
12420 fra.me.line = 1935;
12421 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
12422 fra.me.has_broke = 0;
12423 fra.me.REG_size = 1;
12424 fra.me.nitni_local_ref_head = NULL;
12425 fra.me.REG[0] = NIT_NULL;
12426 fra.me.REG[0] = p0;
12427 /* syntax/typing.nit:1935 */
12428 if (!once_value_1) {
12429 if (!once_value_2) {
12430 fra.me.REG[0] = BOX_NativeString("[]");
12431 REGB0 = TAG_Int(2);
12432 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
12433 once_value_2 = fra.me.REG[0];
12434 register_static_object(&once_value_2);
12435 } else fra.me.REG[0] = once_value_2;
12436 fra.me.REG[0] = fra.me.REG[0];
12437 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12438 once_value_1 = fra.me.REG[0];
12439 register_static_object(&once_value_1);
12440 } else fra.me.REG[0] = once_value_1;
12441 fra.me.REG[0] = fra.me.REG[0];
12442 goto label3;
12443 label3: while(0);
12444 stack_frame_head = fra.me.prev;
12445 return fra.me.REG[0];
12446 }
12447 static const char LOCATE_syntax___typing___ABraExpr___compute_raw_arguments[] = "typing::ABraExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12448 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
12449 struct {struct stack_frame_t me;} fra;
12450 val_t tmp;
12451 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12452 fra.me.file = LOCATE_syntax___typing;
12453 fra.me.line = 1936;
12454 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
12455 fra.me.has_broke = 0;
12456 fra.me.REG_size = 1;
12457 fra.me.nitni_local_ref_head = NULL;
12458 fra.me.REG[0] = NIT_NULL;
12459 fra.me.REG[0] = p0;
12460 /* syntax/typing.nit:1936 */
12461 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12462 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12463 goto label1;
12464 label1: while(0);
12465 stack_frame_head = fra.me.prev;
12466 return fra.me.REG[0];
12467 }
12468 static const char LOCATE_syntax___typing___ABraExpr___closure_defs[] = "typing::ABraExpr::(syntax_base::ASendExpr::closure_defs)";
12469 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
12470 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12471 val_t REGB0;
12472 val_t tmp;
12473 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12474 fra.me.file = LOCATE_syntax___typing;
12475 fra.me.line = 1937;
12476 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
12477 fra.me.has_broke = 0;
12478 fra.me.REG_size = 2;
12479 fra.me.nitni_local_ref_head = NULL;
12480 fra.me.REG[0] = NIT_NULL;
12481 fra.me.REG[1] = NIT_NULL;
12482 fra.me.REG[0] = p0;
12483 /* syntax/typing.nit:1939 */
12484 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12485 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12486 if (UNTAG_Bool(REGB0)) {
12487 /* syntax/typing.nit:1940 */
12488 fra.me.REG[1] = NIT_NULL;
12489 goto label1;
12490 } else {
12491 /* syntax/typing.nit:1942 */
12492 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12493 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12494 fra.me.REG[1] = fra.me.REG[0];
12495 goto label1;
12496 }
12497 label1: while(0);
12498 stack_frame_head = fra.me.prev;
12499 return fra.me.REG[1];
12500 }
12501 static const char LOCATE_syntax___typing___ABraAssignExpr___name[] = "typing::ABraAssignExpr::(typing::ASendExpr::name)";
12502 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
12503 struct {struct stack_frame_t me;} fra;
12504 val_t REGB0;
12505 val_t tmp;
12506 static val_t once_value_1; /* Once value */
12507 static val_t once_value_2; /* Once value */
12508 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12509 fra.me.file = LOCATE_syntax___typing;
12510 fra.me.line = 1948;
12511 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
12512 fra.me.has_broke = 0;
12513 fra.me.REG_size = 1;
12514 fra.me.nitni_local_ref_head = NULL;
12515 fra.me.REG[0] = NIT_NULL;
12516 fra.me.REG[0] = p0;
12517 /* syntax/typing.nit:1948 */
12518 if (!once_value_1) {
12519 if (!once_value_2) {
12520 fra.me.REG[0] = BOX_NativeString("[]=");
12521 REGB0 = TAG_Int(3);
12522 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
12523 once_value_2 = fra.me.REG[0];
12524 register_static_object(&once_value_2);
12525 } else fra.me.REG[0] = once_value_2;
12526 fra.me.REG[0] = fra.me.REG[0];
12527 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12528 once_value_1 = fra.me.REG[0];
12529 register_static_object(&once_value_1);
12530 } else fra.me.REG[0] = once_value_1;
12531 fra.me.REG[0] = fra.me.REG[0];
12532 goto label3;
12533 label3: while(0);
12534 stack_frame_head = fra.me.prev;
12535 return fra.me.REG[0];
12536 }
12537 static const char LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments[] = "typing::ABraAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12538 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
12539 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12540 val_t tmp;
12541 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12542 fra.me.file = LOCATE_syntax___typing;
12543 fra.me.line = 1949;
12544 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
12545 fra.me.has_broke = 0;
12546 fra.me.REG_size = 2;
12547 fra.me.nitni_local_ref_head = NULL;
12548 fra.me.REG[0] = NIT_NULL;
12549 fra.me.REG[1] = NIT_NULL;
12550 fra.me.REG[0] = p0;
12551 /* syntax/typing.nit:1950 */
12552 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12553 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12554 /* syntax/typing.nit:1951 */
12555 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12556 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12557 /* syntax/typing.nit:1952 */
12558 goto label1;
12559 label1: while(0);
12560 stack_frame_head = fra.me.prev;
12561 return fra.me.REG[1];
12562 }
12563 static const char LOCATE_syntax___typing___ABraReassignExpr___name[] = "typing::ABraReassignExpr::(typing::ASendExpr::name)";
12564 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
12565 struct {struct stack_frame_t me;} fra;
12566 val_t REGB0;
12567 val_t tmp;
12568 static val_t once_value_1; /* Once value */
12569 static val_t once_value_2; /* Once value */
12570 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12571 fra.me.file = LOCATE_syntax___typing;
12572 fra.me.line = 1957;
12573 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
12574 fra.me.has_broke = 0;
12575 fra.me.REG_size = 1;
12576 fra.me.nitni_local_ref_head = NULL;
12577 fra.me.REG[0] = NIT_NULL;
12578 fra.me.REG[0] = p0;
12579 /* syntax/typing.nit:1957 */
12580 if (!once_value_1) {
12581 if (!once_value_2) {
12582 fra.me.REG[0] = BOX_NativeString("[]");
12583 REGB0 = TAG_Int(2);
12584 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
12585 once_value_2 = fra.me.REG[0];
12586 register_static_object(&once_value_2);
12587 } else fra.me.REG[0] = once_value_2;
12588 fra.me.REG[0] = fra.me.REG[0];
12589 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12590 once_value_1 = fra.me.REG[0];
12591 register_static_object(&once_value_1);
12592 } else fra.me.REG[0] = once_value_1;
12593 fra.me.REG[0] = fra.me.REG[0];
12594 goto label3;
12595 label3: while(0);
12596 stack_frame_head = fra.me.prev;
12597 return fra.me.REG[0];
12598 }
12599 static const char LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments[] = "typing::ABraReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12600 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
12601 struct {struct stack_frame_t me;} fra;
12602 val_t tmp;
12603 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12604 fra.me.file = LOCATE_syntax___typing;
12605 fra.me.line = 1958;
12606 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
12607 fra.me.has_broke = 0;
12608 fra.me.REG_size = 1;
12609 fra.me.nitni_local_ref_head = NULL;
12610 fra.me.REG[0] = NIT_NULL;
12611 fra.me.REG[0] = p0;
12612 /* syntax/typing.nit:1958 */
12613 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12614 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12615 goto label1;
12616 label1: while(0);
12617 stack_frame_head = fra.me.prev;
12618 return fra.me.REG[0];
12619 }
12620 static const char LOCATE_syntax___typing___AInitExpr___name[] = "typing::AInitExpr::(typing::ASendExpr::name)";
12621 val_t syntax___typing___AInitExpr___name(val_t p0){
12622 struct {struct stack_frame_t me;} fra;
12623 val_t REGB0;
12624 val_t tmp;
12625 static val_t once_value_1; /* Once value */
12626 static val_t once_value_2; /* Once value */
12627 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12628 fra.me.file = LOCATE_syntax___typing;
12629 fra.me.line = 1962;
12630 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12631 fra.me.has_broke = 0;
12632 fra.me.REG_size = 1;
12633 fra.me.nitni_local_ref_head = NULL;
12634 fra.me.REG[0] = NIT_NULL;
12635 fra.me.REG[0] = p0;
12636 /* syntax/typing.nit:1962 */
12637 if (!once_value_1) {
12638 if (!once_value_2) {
12639 fra.me.REG[0] = BOX_NativeString("init");
12640 REGB0 = TAG_Int(4);
12641 fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
12642 once_value_2 = fra.me.REG[0];
12643 register_static_object(&once_value_2);
12644 } else fra.me.REG[0] = once_value_2;
12645 fra.me.REG[0] = fra.me.REG[0];
12646 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12647 once_value_1 = fra.me.REG[0];
12648 register_static_object(&once_value_1);
12649 } else fra.me.REG[0] = once_value_1;
12650 fra.me.REG[0] = fra.me.REG[0];
12651 goto label3;
12652 label3: while(0);
12653 stack_frame_head = fra.me.prev;
12654 return fra.me.REG[0];
12655 }
12656 static const char LOCATE_syntax___typing___AInitExpr___compute_raw_arguments[] = "typing::AInitExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12657 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
12658 struct {struct stack_frame_t me;} fra;
12659 val_t tmp;
12660 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12661 fra.me.file = LOCATE_syntax___typing;
12662 fra.me.line = 1963;
12663 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
12664 fra.me.has_broke = 0;
12665 fra.me.REG_size = 1;
12666 fra.me.nitni_local_ref_head = NULL;
12667 fra.me.REG[0] = NIT_NULL;
12668 fra.me.REG[0] = p0;
12669 /* syntax/typing.nit:1963 */
12670 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12671 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12672 goto label1;
12673 label1: while(0);
12674 stack_frame_head = fra.me.prev;
12675 return fra.me.REG[0];
12676 }
12677 static const char LOCATE_syntax___typing___AClosureCallExpr___variable[] = "typing::AClosureCallExpr::(syntax_base::AClosureCallExpr::variable)";
12678 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12679 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12680 val_t REGB0;
12681 val_t tmp;
12682 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12683 fra.me.file = LOCATE_syntax___typing;
12684 fra.me.line = 1968;
12685 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12686 fra.me.has_broke = 0;
12687 fra.me.REG_size = 2;
12688 fra.me.nitni_local_ref_head = NULL;
12689 fra.me.REG[0] = NIT_NULL;
12690 fra.me.REG[1] = NIT_NULL;
12691 fra.me.REG[0] = p0;
12692 /* syntax/typing.nit:1968 */
12693 fra.me.REG[1] = fra.me.REG[0];
12694 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12695 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12696 if (UNTAG_Bool(REGB0)) {
12697 } else {
12698 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1968);
12699 }
12700 goto label1;
12701 label1: while(0);
12702 stack_frame_head = fra.me.prev;
12703 return fra.me.REG[1];
12704 }
12705 static const char LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments[] = "typing::AClosureCallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12706 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12707 struct {struct stack_frame_t me;} fra;
12708 val_t tmp;
12709 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12710 fra.me.file = LOCATE_syntax___typing;
12711 fra.me.line = 1969;
12712 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12713 fra.me.has_broke = 0;
12714 fra.me.REG_size = 1;
12715 fra.me.nitni_local_ref_head = NULL;
12716 fra.me.REG[0] = NIT_NULL;
12717 fra.me.REG[0] = p0;
12718 /* syntax/typing.nit:1969 */
12719 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12720 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12721 goto label1;
12722 label1: while(0);
12723 stack_frame_head = fra.me.prev;
12724 return fra.me.REG[0];
12725 }
12726 static const char LOCATE_syntax___typing___AClosureCallExpr___after_typing[] = "typing::AClosureCallExpr::(typing::ANode::after_typing)";
12727 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12728 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12729 val_t REGB0;
12730 val_t REGB1;
12731 val_t tmp;
12732 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12733 fra.me.file = LOCATE_syntax___typing;
12734 fra.me.line = 1971;
12735 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12736 fra.me.has_broke = 0;
12737 fra.me.REG_size = 5;
12738 fra.me.nitni_local_ref_head = NULL;
12739 fra.me.REG[0] = NIT_NULL;
12740 fra.me.REG[1] = NIT_NULL;
12741 fra.me.REG[2] = NIT_NULL;
12742 fra.me.REG[3] = NIT_NULL;
12743 fra.me.REG[4] = NIT_NULL;
12744 fra.me.REG[0] = p0;
12745 fra.me.REG[1] = p1;
12746 /* syntax/typing.nit:1973 */
12747 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12748 /* syntax/typing.nit:1974 */
12749 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12750 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12751 if (UNTAG_Bool(REGB0)) {
12752 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12753 }
12754 /* syntax/typing.nit:1975 */
12755 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12756 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12757 /* syntax/typing.nit:1976 */
12758 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12759 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12760 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12761 REGB0 = CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
12762 /* syntax/typing.nit:1977 */
12763 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12764 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12765 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12766 if (UNTAG_Bool(REGB1)) {
12767 /* syntax/typing.nit:1978 */
12768 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12769 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12770 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12771 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12772 CALL_syntax___typing___AAbsAbsSendExpr___process_closures(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[3]);
12773 }
12774 /* syntax/typing.nit:1980 */
12775 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12776 if (UNTAG_Bool(REGB0)) {
12777 goto label1;
12778 }
12779 /* syntax/typing.nit:1981 */
12780 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12781 /* syntax/typing.nit:1982 */
12782 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12783 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12784 /* syntax/typing.nit:1983 */
12785 REGB0 = TAG_Bool(1);
12786 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12787 label1: while(0);
12788 stack_frame_head = fra.me.prev;
12789 return;
12790 }
12791 static const char LOCATE_syntax___typing___AClosureId___to_symbol[] = "typing::AClosureId::to_symbol";
12792 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12793 struct {struct stack_frame_t me;} fra;
12794 val_t tmp;
12795 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12796 fra.me.file = LOCATE_syntax___typing;
12797 fra.me.line = 1988;
12798 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12799 fra.me.has_broke = 0;
12800 fra.me.REG_size = 0;
12801 fra.me.nitni_local_ref_head = NULL;
12802 /* syntax/typing.nit:1988 */
12803 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1988);
12804 stack_frame_head = fra.me.prev;
12805 return NIT_NULL;
12806 }
12807 static const char LOCATE_syntax___typing___ASimpleClosureId___to_symbol[] = "typing::ASimpleClosureId::(typing::AClosureId::to_symbol)";
12808 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12809 struct {struct stack_frame_t me;} fra;
12810 val_t tmp;
12811 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12812 fra.me.file = LOCATE_syntax___typing;
12813 fra.me.line = 1991;
12814 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12815 fra.me.has_broke = 0;
12816 fra.me.REG_size = 1;
12817 fra.me.nitni_local_ref_head = NULL;
12818 fra.me.REG[0] = NIT_NULL;
12819 fra.me.REG[0] = p0;
12820 /* syntax/typing.nit:1991 */
12821 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12822 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12823 goto label1;
12824 label1: while(0);
12825 stack_frame_head = fra.me.prev;
12826 return fra.me.REG[0];
12827 }
12828 static const char LOCATE_syntax___typing___ABreakClosureId___to_symbol[] = "typing::ABreakClosureId::(typing::AClosureId::to_symbol)";
12829 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12830 struct {struct stack_frame_t me;} fra;
12831 val_t tmp;
12832 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12833 fra.me.file = LOCATE_syntax___typing;
12834 fra.me.line = 1994;
12835 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12836 fra.me.has_broke = 0;
12837 fra.me.REG_size = 1;
12838 fra.me.nitni_local_ref_head = NULL;
12839 fra.me.REG[0] = NIT_NULL;
12840 fra.me.REG[0] = p0;
12841 /* syntax/typing.nit:1994 */
12842 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12843 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12844 goto label1;
12845 label1: while(0);
12846 stack_frame_head = fra.me.prev;
12847 return fra.me.REG[0];
12848 }
12849 static const char LOCATE_syntax___typing___AClosureDef___closure[] = "typing::AClosureDef::(syntax_base::AClosureDef::closure)";
12850 val_t syntax___typing___AClosureDef___closure(val_t p0){
12851 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12852 val_t REGB0;
12853 val_t tmp;
12854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12855 fra.me.file = LOCATE_syntax___typing;
12856 fra.me.line = 1999;
12857 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12858 fra.me.has_broke = 0;
12859 fra.me.REG_size = 2;
12860 fra.me.nitni_local_ref_head = NULL;
12861 fra.me.REG[0] = NIT_NULL;
12862 fra.me.REG[1] = NIT_NULL;
12863 fra.me.REG[0] = p0;
12864 /* syntax/typing.nit:1999 */
12865 fra.me.REG[1] = fra.me.REG[0];
12866 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12867 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12868 if (UNTAG_Bool(REGB0)) {
12869 } else {
12870 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1999);
12871 }
12872 goto label1;
12873 label1: while(0);
12874 stack_frame_head = fra.me.prev;
12875 return fra.me.REG[1];
12876 }
12877 static const char LOCATE_syntax___typing___AClosureDef___escapable[] = "typing::AClosureDef::escapable";
12878 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12879 struct {struct stack_frame_t me;} fra;
12880 val_t tmp;
12881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12882 fra.me.file = LOCATE_syntax___typing;
12883 fra.me.line = 2001;
12884 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12885 fra.me.has_broke = 0;
12886 fra.me.REG_size = 1;
12887 fra.me.nitni_local_ref_head = NULL;
12888 fra.me.REG[0] = NIT_NULL;
12889 fra.me.REG[0] = p0;
12890 /* syntax/typing.nit:2001 */
12891 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12892 stack_frame_head = fra.me.prev;
12893 return fra.me.REG[0];
12894 }
12895 static const char LOCATE_syntax___typing___AClosureDef___accept_typing[] = "typing::AClosureDef::(typing::ANode::accept_typing)";
12896 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12897 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12898 val_t REGB0;
12899 val_t tmp;
12900 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12901 fra.me.file = LOCATE_syntax___typing;
12902 fra.me.line = 2005;
12903 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12904 fra.me.has_broke = 0;
12905 fra.me.REG_size = 3;
12906 fra.me.nitni_local_ref_head = NULL;
12907 fra.me.REG[0] = NIT_NULL;
12908 fra.me.REG[1] = NIT_NULL;
12909 fra.me.REG[2] = NIT_NULL;
12910 fra.me.REG[0] = p0;
12911 fra.me.REG[1] = p1;
12912 /* syntax/typing.nit:2005 */
12913 fra.me.REG[2] = fra.me.REG[0];
12914 /* syntax/typing.nit:2008 */
12915 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12916 if (UNTAG_Bool(REGB0)) {
12917 } else {
12918 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 2008);
12919 }
12920 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12921 if (UNTAG_Bool(REGB0)) {
12922 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12923 }
12924 stack_frame_head = fra.me.prev;
12925 return;
12926 }
12927 static const char LOCATE_syntax___typing___AClosureDef___accept_typing2[] = "typing::AClosureDef::accept_typing2";
12928 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12929 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12930 val_t REGB0;
12931 val_t REGB1;
12932 val_t REGB2;
12933 val_t REGB3;
12934 val_t tmp;
12935 static val_t once_value_1; /* Once value */
12936 static val_t once_value_2; /* Once value */
12937 static val_t once_value_3; /* Once value */
12938 static val_t once_value_6; /* Once value */
12939 static val_t once_value_7; /* Once value */
12940 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12941 fra.me.file = LOCATE_syntax___typing;
12942 fra.me.line = 2011;
12943 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12944 fra.me.has_broke = 0;
12945 fra.me.REG_size = 8;
12946 fra.me.nitni_local_ref_head = NULL;
12947 fra.me.REG[0] = NIT_NULL;
12948 fra.me.REG[1] = NIT_NULL;
12949 fra.me.REG[2] = NIT_NULL;
12950 fra.me.REG[3] = NIT_NULL;
12951 fra.me.REG[4] = NIT_NULL;
12952 fra.me.REG[5] = NIT_NULL;
12953 fra.me.REG[6] = NIT_NULL;
12954 fra.me.REG[7] = NIT_NULL;
12955 fra.me.REG[0] = p0;
12956 fra.me.REG[1] = p1;
12957 fra.me.REG[2] = p2;
12958 /* syntax/typing.nit:2013 */
12959 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12960 /* syntax/typing.nit:2015 */
12961 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12962 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12963 /* syntax/typing.nit:2016 */
12964 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12965 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12966 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12967 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12968 if (UNTAG_Bool(REGB2)) {
12969 } else {
12970 /* ../lib/standard/kernel.nit:237 */
12971 REGB1 = TAG_Bool((REGB0)==(REGB1));
12972 /* syntax/typing.nit:2016 */
12973 REGB2 = REGB1;
12974 }
12975 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12976 if (UNTAG_Bool(REGB2)) {
12977 /* syntax/typing.nit:2017 */
12978 REGB2 = TAG_Int(5);
12979 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12980 if (!once_value_1) {
12981 fra.me.REG[5] = BOX_NativeString("Error: ");
12982 REGB2 = TAG_Int(7);
12983 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
12984 once_value_1 = fra.me.REG[5];
12985 register_static_object(&once_value_1);
12986 } else fra.me.REG[5] = once_value_1;
12987 fra.me.REG[5] = fra.me.REG[5];
12988 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12989 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12990 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12991 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12992 if (!once_value_2) {
12993 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12994 REGB2 = TAG_Int(36);
12995 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
12996 once_value_2 = fra.me.REG[5];
12997 register_static_object(&once_value_2);
12998 } else fra.me.REG[5] = once_value_2;
12999 fra.me.REG[5] = fra.me.REG[5];
13000 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13001 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13002 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
13003 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
13004 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13005 if (!once_value_3) {
13006 fra.me.REG[5] = BOX_NativeString(" found.");
13007 REGB2 = TAG_Int(7);
13008 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB2);
13009 once_value_3 = fra.me.REG[5];
13010 register_static_object(&once_value_3);
13011 } else fra.me.REG[5] = once_value_3;
13012 fra.me.REG[5] = fra.me.REG[5];
13013 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13014 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13015 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13016 /* syntax/typing.nit:2018 */
13017 goto label4;
13018 }
13019 /* syntax/typing.nit:2021 */
13020 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
13021 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
13022 /* syntax/typing.nit:2023 */
13023 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13024 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
13025 /* syntax/typing.nit:2024 */
13026 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13027 /* syntax/typing.nit:2025 */
13028 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13029 /* syntax/typing.nit:2026 */
13030 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13031 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
13032 /* syntax/typing.nit:2027 */
13033 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
13034 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
13035 /* syntax/typing.nit:2028 */
13036 REGB2 = TAG_Int(0);
13037 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13038 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
13039 /* ../lib/standard/kernel.nit:404 */
13040 while(1) {
13041 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
13042 if (UNTAG_Bool(REGB0)) {
13043 } else {
13044 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13045 }
13046 /* ../lib/standard/kernel.nit:242 */
13047 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
13048 /* ../lib/standard/kernel.nit:404 */
13049 if (UNTAG_Bool(REGB0)) {
13050 /* syntax/typing.nit:2028 */
13051 REGB0 = REGB2;
13052 /* syntax/typing.nit:2029 */
13053 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13054 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
13055 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
13056 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13057 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
13058 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
13059 /* syntax/typing.nit:2030 */
13060 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
13061 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
13062 if (UNTAG_Bool(REGB3)) {
13063 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2030);
13064 }
13065 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13066 /* syntax/typing.nit:2031 */
13067 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
13068 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
13069 /* syntax/typing.nit:2032 */
13070 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13071 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13072 /* ../lib/standard/kernel.nit:406 */
13073 REGB0 = TAG_Int(1);
13074 /* ../lib/standard/kernel.nit:245 */
13075 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
13076 /* ../lib/standard/kernel.nit:406 */
13077 REGB2 = REGB0;
13078 } else {
13079 /* ../lib/standard/kernel.nit:404 */
13080 goto label5;
13081 }
13082 }
13083 label5: while(0);
13084 /* syntax/typing.nit:2035 */
13085 REGB2 = TAG_Bool(1);
13086 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
13087 /* syntax/typing.nit:2036 */
13088 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13089 /* syntax/typing.nit:2038 */
13090 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13091 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
13092 REGB1 = TAG_Bool(0);
13093 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
13094 if (UNTAG_Bool(REGB0)) {
13095 } else {
13096 /* ../lib/standard/kernel.nit:199 */
13097 REGB1 = TAG_Bool((REGB2)==(REGB1));
13098 /* syntax/typing.nit:2038 */
13099 REGB0 = REGB1;
13100 }
13101 if (UNTAG_Bool(REGB0)) {
13102 /* syntax/typing.nit:2039 */
13103 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13104 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
13105 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
13106 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13107 if (UNTAG_Bool(REGB0)) {
13108 } else {
13109 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13110 if (UNTAG_Bool(REGB1)) {
13111 REGB1 = TAG_Bool(0);
13112 REGB0 = REGB1;
13113 } else {
13114 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13115 REGB0 = REGB1;
13116 }
13117 }
13118 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13119 if (UNTAG_Bool(REGB0)) {
13120 /* syntax/typing.nit:2040 */
13121 if (!once_value_6) {
13122 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
13123 REGB0 = TAG_Int(77);
13124 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
13125 once_value_6 = fra.me.REG[3];
13126 register_static_object(&once_value_6);
13127 } else fra.me.REG[3] = once_value_6;
13128 fra.me.REG[3] = fra.me.REG[3];
13129 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13130 } else {
13131 /* syntax/typing.nit:2041 */
13132 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13133 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
13134 if (UNTAG_Bool(REGB0)) {
13135 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
13136 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13137 if (UNTAG_Bool(REGB0)) {
13138 } else {
13139 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13140 if (UNTAG_Bool(REGB1)) {
13141 REGB1 = TAG_Bool(0);
13142 REGB0 = REGB1;
13143 } else {
13144 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
13145 REGB0 = REGB1;
13146 }
13147 }
13148 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13149 } else {
13150 REGB1 = TAG_Bool(0);
13151 REGB0 = REGB1;
13152 }
13153 if (UNTAG_Bool(REGB0)) {
13154 /* syntax/typing.nit:2042 */
13155 if (!once_value_7) {
13156 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
13157 REGB0 = TAG_Int(80);
13158 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
13159 once_value_7 = fra.me.REG[2];
13160 register_static_object(&once_value_7);
13161 } else fra.me.REG[2] = once_value_7;
13162 fra.me.REG[2] = fra.me.REG[2];
13163 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
13164 }
13165 }
13166 }
13167 /* syntax/typing.nit:2045 */
13168 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
13169 /* syntax/typing.nit:2046 */
13170 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
13171 /* syntax/typing.nit:2047 */
13172 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13173 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
13174 label4: while(0);
13175 stack_frame_head = fra.me.prev;
13176 return;
13177 }
13178 static const char LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast[] = "typing::ATypeCheckExpr::check_expr_cast";
13179 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
13180 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13181 val_t REGB0;
13182 val_t REGB1;
13183 val_t tmp;
13184 static val_t once_value_2; /* Once value */
13185 static val_t once_value_3; /* Once value */
13186 static val_t once_value_4; /* Once value */
13187 static val_t once_value_5; /* Once value */
13188 static val_t once_value_6; /* Once value */
13189 static val_t once_value_7; /* Once value */
13190 static val_t once_value_8; /* Once value */
13191 static val_t once_value_9; /* Once value */
13192 static val_t once_value_10; /* Once value */
13193 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13194 fra.me.file = LOCATE_syntax___typing;
13195 fra.me.line = 2053;
13196 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
13197 fra.me.has_broke = 0;
13198 fra.me.REG_size = 6;
13199 fra.me.nitni_local_ref_head = NULL;
13200 fra.me.REG[0] = NIT_NULL;
13201 fra.me.REG[1] = NIT_NULL;
13202 fra.me.REG[2] = NIT_NULL;
13203 fra.me.REG[3] = NIT_NULL;
13204 fra.me.REG[4] = NIT_NULL;
13205 fra.me.REG[5] = NIT_NULL;
13206 fra.me.REG[0] = p0;
13207 fra.me.REG[1] = p1;
13208 fra.me.REG[2] = p2;
13209 fra.me.REG[3] = p3;
13210 /* syntax/typing.nit:2055 */
13211 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13212 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13213 if (UNTAG_Bool(REGB0)) {
13214 goto label1;
13215 }
13216 /* syntax/typing.nit:2056 */
13217 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13218 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13219 if (UNTAG_Bool(REGB0)) {
13220 goto label1;
13221 }
13222 /* syntax/typing.nit:2057 */
13223 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13224 /* syntax/typing.nit:2058 */
13225 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13226 /* syntax/typing.nit:2059 */
13227 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13228 if (UNTAG_Bool(REGB0)) {
13229 } else {
13230 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13231 REGB0 = REGB1;
13232 }
13233 if (UNTAG_Bool(REGB0)) {
13234 /* syntax/typing.nit:2060 */
13235 REGB0 = TAG_Int(3);
13236 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13237 if (!once_value_2) {
13238 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13239 REGB0 = TAG_Int(33);
13240 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13241 once_value_2 = fra.me.REG[5];
13242 register_static_object(&once_value_2);
13243 } else fra.me.REG[5] = once_value_2;
13244 fra.me.REG[5] = fra.me.REG[5];
13245 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13246 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13247 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13248 if (!once_value_3) {
13249 fra.me.REG[5] = BOX_NativeString(".");
13250 REGB0 = TAG_Int(1);
13251 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13252 once_value_3 = fra.me.REG[5];
13253 register_static_object(&once_value_3);
13254 } else fra.me.REG[5] = once_value_3;
13255 fra.me.REG[5] = fra.me.REG[5];
13256 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13257 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13258 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13259 } else {
13260 /* syntax/typing.nit:2061 */
13261 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13262 if (UNTAG_Bool(REGB0)) {
13263 /* syntax/typing.nit:2062 */
13264 REGB0 = CALL_metamodel___type_formal___MMType___has_formal(fra.me.REG[3])(fra.me.REG[3]);
13265 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13266 if (UNTAG_Bool(REGB0)) {
13267 REGB0 = CALL_metamodel___type_formal___MMType___has_formal(fra.me.REG[2])(fra.me.REG[2]);
13268 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13269 } else {
13270 REGB1 = TAG_Bool(0);
13271 REGB0 = REGB1;
13272 }
13273 if (UNTAG_Bool(REGB0)) {
13274 /* syntax/typing.nit:2064 */
13275 REGB0 = TAG_Int(5);
13276 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13277 if (!once_value_4) {
13278 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13279 REGB0 = TAG_Int(33);
13280 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13281 once_value_4 = fra.me.REG[5];
13282 register_static_object(&once_value_4);
13283 } else fra.me.REG[5] = once_value_4;
13284 fra.me.REG[5] = fra.me.REG[5];
13285 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13286 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13287 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13288 if (!once_value_5) {
13289 fra.me.REG[5] = BOX_NativeString(" since it is a ");
13290 REGB0 = TAG_Int(15);
13291 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13292 once_value_5 = fra.me.REG[5];
13293 register_static_object(&once_value_5);
13294 } else fra.me.REG[5] = once_value_5;
13295 fra.me.REG[5] = fra.me.REG[5];
13296 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13297 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13299 if (!once_value_6) {
13300 fra.me.REG[5] = BOX_NativeString(".");
13301 REGB0 = TAG_Int(1);
13302 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13303 once_value_6 = fra.me.REG[5];
13304 register_static_object(&once_value_6);
13305 } else fra.me.REG[5] = once_value_6;
13306 fra.me.REG[5] = fra.me.REG[5];
13307 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13308 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13309 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13310 }
13311 } else {
13312 /* syntax/typing.nit:2066 */
13313 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13314 if (UNTAG_Bool(REGB0)) {
13315 /* syntax/typing.nit:2068 */
13316 REGB0 = TAG_Int(3);
13317 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13318 if (!once_value_7) {
13319 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
13320 REGB0 = TAG_Int(50);
13321 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13322 once_value_7 = fra.me.REG[5];
13323 register_static_object(&once_value_7);
13324 } else fra.me.REG[5] = once_value_7;
13325 fra.me.REG[5] = fra.me.REG[5];
13326 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13327 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13329 if (!once_value_8) {
13330 fra.me.REG[5] = BOX_NativeString(".");
13331 REGB0 = TAG_Int(1);
13332 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13333 once_value_8 = fra.me.REG[5];
13334 register_static_object(&once_value_8);
13335 } else fra.me.REG[5] = once_value_8;
13336 fra.me.REG[5] = fra.me.REG[5];
13337 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13338 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13339 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13340 } else {
13341 /* syntax/typing.nit:2069 */
13342 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13343 if (UNTAG_Bool(REGB0)) {
13344 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
13345 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13346 if (UNTAG_Bool(REGB0)) {
13347 } else {
13348 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13349 REGB0 = REGB1;
13350 }
13351 } else {
13352 REGB1 = TAG_Bool(0);
13353 REGB0 = REGB1;
13354 }
13355 if (UNTAG_Bool(REGB0)) {
13356 /* syntax/typing.nit:2070 */
13357 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
13358 if (UNTAG_Bool(REGB0)) {
13359 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
13360 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
13361 } else {
13362 REGB1 = TAG_Bool(0);
13363 REGB0 = REGB1;
13364 }
13365 if (UNTAG_Bool(REGB0)) {
13366 } else {
13367 /* syntax/typing.nit:2076 */
13368 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
13369 if (UNTAG_Bool(REGB0)) {
13370 /* syntax/typing.nit:2077 */
13371 if (!once_value_9) {
13372 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
13373 REGB0 = TAG_Int(26);
13374 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
13375 once_value_9 = fra.me.REG[3];
13376 register_static_object(&once_value_9);
13377 } else fra.me.REG[3] = once_value_9;
13378 fra.me.REG[3] = fra.me.REG[3];
13379 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13380 } else {
13381 /* syntax/typing.nit:2079 */
13382 if (!once_value_10) {
13383 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
13384 REGB0 = TAG_Int(32);
13385 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
13386 once_value_10 = fra.me.REG[3];
13387 register_static_object(&once_value_10);
13388 } else fra.me.REG[3] = once_value_10;
13389 fra.me.REG[3] = fra.me.REG[3];
13390 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13391 }
13392 }
13393 }
13394 }
13395 }
13396 }
13397 label1: while(0);
13398 stack_frame_head = fra.me.prev;
13399 return;
13400 }
13401 static const char LOCATE_syntax___typing___AIsaExpr___after_typing[] = "typing::AIsaExpr::(typing::ANode::after_typing)";
13402 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
13403 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13404 val_t REGB0;
13405 val_t REGB1;
13406 val_t tmp;
13407 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13408 fra.me.file = LOCATE_syntax___typing;
13409 fra.me.line = 2087;
13410 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
13411 fra.me.has_broke = 0;
13412 fra.me.REG_size = 5;
13413 fra.me.nitni_local_ref_head = NULL;
13414 fra.me.REG[0] = NIT_NULL;
13415 fra.me.REG[1] = NIT_NULL;
13416 fra.me.REG[2] = NIT_NULL;
13417 fra.me.REG[3] = NIT_NULL;
13418 fra.me.REG[4] = NIT_NULL;
13419 fra.me.REG[0] = p0;
13420 fra.me.REG[1] = p1;
13421 /* syntax/typing.nit:2089 */
13422 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13423 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13424 CALL_syntax___typing___ATypeCheckExpr___check_expr_cast(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
13425 /* syntax/typing.nit:2090 */
13426 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13427 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13428 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13429 if (UNTAG_Bool(REGB0)) {
13430 goto label1;
13431 }
13432 /* syntax/typing.nit:2091 */
13433 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13434 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
13435 /* syntax/typing.nit:2092 */
13436 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13437 if (UNTAG_Bool(REGB0)) {
13438 } else {
13439 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13440 if (UNTAG_Bool(REGB1)) {
13441 REGB1 = TAG_Bool(0);
13442 REGB0 = REGB1;
13443 } else {
13444 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13445 REGB0 = REGB1;
13446 }
13447 }
13448 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13449 if (UNTAG_Bool(REGB0)) {
13450 /* syntax/typing.nit:2093 */
13451 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13452 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13453 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
13454 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[4]);
13455 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
13456 }
13457 /* syntax/typing.nit:2095 */
13458 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
13459 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13460 /* syntax/typing.nit:2096 */
13461 REGB0 = TAG_Bool(1);
13462 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13463 label1: while(0);
13464 stack_frame_head = fra.me.prev;
13465 return;
13466 }
13467 static const char LOCATE_syntax___typing___AAsCastExpr___after_typing[] = "typing::AAsCastExpr::(typing::ANode::after_typing)";
13468 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
13469 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
13470 val_t REGB0;
13471 val_t REGB1;
13472 val_t tmp;
13473 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13474 fra.me.file = LOCATE_syntax___typing;
13475 fra.me.line = 2102;
13476 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
13477 fra.me.has_broke = 0;
13478 fra.me.REG_size = 4;
13479 fra.me.nitni_local_ref_head = NULL;
13480 fra.me.REG[0] = NIT_NULL;
13481 fra.me.REG[1] = NIT_NULL;
13482 fra.me.REG[2] = NIT_NULL;
13483 fra.me.REG[3] = NIT_NULL;
13484 fra.me.REG[0] = p0;
13485 fra.me.REG[1] = p1;
13486 /* syntax/typing.nit:2104 */
13487 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13488 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13489 CALL_syntax___typing___ATypeCheckExpr___check_expr_cast(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
13490 /* syntax/typing.nit:2105 */
13491 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13492 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13493 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13494 if (UNTAG_Bool(REGB0)) {
13495 goto label1;
13496 }
13497 /* syntax/typing.nit:2106 */
13498 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13499 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13500 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
13501 /* syntax/typing.nit:2107 */
13502 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
13503 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13504 if (UNTAG_Bool(REGB0)) {
13505 } else {
13506 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13507 if (UNTAG_Bool(REGB1)) {
13508 REGB1 = TAG_Bool(0);
13509 REGB0 = REGB1;
13510 } else {
13511 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13512 REGB0 = REGB1;
13513 }
13514 }
13515 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13516 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13517 label1: while(0);
13518 stack_frame_head = fra.me.prev;
13519 return;
13520 }
13521 static const char LOCATE_syntax___typing___AAsNotnullExpr___after_typing[] = "typing::AAsNotnullExpr::(typing::ANode::after_typing)";
13522 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
13523 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13524 val_t REGB0;
13525 val_t tmp;
13526 static val_t once_value_2; /* Once value */
13527 static val_t once_value_3; /* Once value */
13528 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13529 fra.me.file = LOCATE_syntax___typing;
13530 fra.me.line = 2112;
13531 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
13532 fra.me.has_broke = 0;
13533 fra.me.REG_size = 5;
13534 fra.me.nitni_local_ref_head = NULL;
13535 fra.me.REG[0] = NIT_NULL;
13536 fra.me.REG[1] = NIT_NULL;
13537 fra.me.REG[2] = NIT_NULL;
13538 fra.me.REG[3] = NIT_NULL;
13539 fra.me.REG[4] = NIT_NULL;
13540 fra.me.REG[0] = p0;
13541 fra.me.REG[1] = p1;
13542 /* syntax/typing.nit:2114 */
13543 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13544 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13545 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13546 if (UNTAG_Bool(REGB0)) {
13547 goto label1;
13548 }
13549 /* syntax/typing.nit:2115 */
13550 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13551 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13552 /* syntax/typing.nit:2116 */
13553 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13554 if (UNTAG_Bool(REGB0)) {
13555 /* syntax/typing.nit:2117 */
13556 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13557 if (!once_value_2) {
13558 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
13559 REGB0 = TAG_Int(43);
13560 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
13561 once_value_2 = fra.me.REG[4];
13562 register_static_object(&once_value_2);
13563 } else fra.me.REG[4] = once_value_2;
13564 fra.me.REG[4] = fra.me.REG[4];
13565 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
13566 /* syntax/typing.nit:2118 */
13567 goto label1;
13568 } else {
13569 /* syntax/typing.nit:2119 */
13570 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13571 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13572 if (UNTAG_Bool(REGB0)) {
13573 /* syntax/typing.nit:2120 */
13574 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13575 if (!once_value_3) {
13576 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
13577 REGB0 = TAG_Int(45);
13578 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
13579 once_value_3 = fra.me.REG[4];
13580 register_static_object(&once_value_3);
13581 } else fra.me.REG[4] = once_value_3;
13582 fra.me.REG[4] = fra.me.REG[4];
13583 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
13584 }
13585 }
13586 /* syntax/typing.nit:2122 */
13587 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13588 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
13589 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
13590 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
13591 /* syntax/typing.nit:2123 */
13592 REGB0 = TAG_Bool(1);
13593 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13594 label1: while(0);
13595 stack_frame_head = fra.me.prev;
13596 return;
13597 }
13598 static const char LOCATE_syntax___typing___AProxyExpr___after_typing[] = "typing::AProxyExpr::(typing::ANode::after_typing)";
13599 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
13600 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
13601 val_t REGB0;
13602 val_t tmp;
13603 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13604 fra.me.file = LOCATE_syntax___typing;
13605 fra.me.line = 2128;
13606 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
13607 fra.me.has_broke = 0;
13608 fra.me.REG_size = 2;
13609 fra.me.nitni_local_ref_head = NULL;
13610 fra.me.REG[0] = NIT_NULL;
13611 fra.me.REG[1] = NIT_NULL;
13612 fra.me.REG[0] = p0;
13613 fra.me.REG[1] = p1;
13614 /* syntax/typing.nit:2130 */
13615 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13616 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
13617 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13618 if (UNTAG_Bool(REGB0)) {
13619 goto label1;
13620 }
13621 /* syntax/typing.nit:2131 */
13622 REGB0 = TAG_Bool(1);
13623 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13624 /* syntax/typing.nit:2132 */
13625 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13626 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
13627 if (UNTAG_Bool(REGB0)) {
13628 goto label1;
13629 }
13630 /* syntax/typing.nit:2133 */
13631 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13632 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
13633 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13634 /* syntax/typing.nit:2134 */
13635 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13636 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[1]);
13637 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13638 /* syntax/typing.nit:2135 */
13639 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13640 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[1]);
13641 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13642 label1: while(0);
13643 stack_frame_head = fra.me.prev;
13644 return;
13645 }
13646 static const char LOCATE_syntax___typing___AProxyExpr___is_self[] = "typing::AProxyExpr::(typing::AExpr::is_self)";
13647 val_t syntax___typing___AProxyExpr___is_self(val_t p0){
13648 struct {struct stack_frame_t me;} fra;
13649 val_t REGB0;
13650 val_t tmp;
13651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13652 fra.me.file = LOCATE_syntax___typing;
13653 fra.me.line = 2138;
13654 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___is_self;
13655 fra.me.has_broke = 0;
13656 fra.me.REG_size = 1;
13657 fra.me.nitni_local_ref_head = NULL;
13658 fra.me.REG[0] = NIT_NULL;
13659 fra.me.REG[0] = p0;
13660 /* syntax/typing.nit:2138 */
13661 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13662 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
13663 goto label1;
13664 label1: while(0);
13665 stack_frame_head = fra.me.prev;
13666 return REGB0;
13667 }
13668 static const char LOCATE_syntax___typing___AProxyExpr___its_variable[] = "typing::AProxyExpr::(typing::AExpr::its_variable)";
13669 val_t syntax___typing___AProxyExpr___its_variable(val_t p0){
13670 struct {struct stack_frame_t me;} fra;
13671 val_t tmp;
13672 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13673 fra.me.file = LOCATE_syntax___typing;
13674 fra.me.line = 2140;
13675 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___its_variable;
13676 fra.me.has_broke = 0;
13677 fra.me.REG_size = 1;
13678 fra.me.nitni_local_ref_head = NULL;
13679 fra.me.REG[0] = NIT_NULL;
13680 fra.me.REG[0] = p0;
13681 /* syntax/typing.nit:2140 */
13682 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13683 fra.me.REG[0] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[0])(fra.me.REG[0]);
13684 goto label1;
13685 label1: while(0);
13686 stack_frame_head = fra.me.prev;
13687 return fra.me.REG[0];
13688 }
13689 static const char LOCATE_syntax___typing___AOnceExpr___accept_typing[] = "typing::AOnceExpr::(typing::ANode::accept_typing)";
13690 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
13691 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13692 val_t REGB0;
13693 val_t REGB1;
13694 val_t REGB2;
13695 val_t tmp;
13696 static val_t once_value_1; /* Once value */
13697 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13698 fra.me.file = LOCATE_syntax___typing;
13699 fra.me.line = 2144;
13700 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
13701 fra.me.has_broke = 0;
13702 fra.me.REG_size = 5;
13703 fra.me.nitni_local_ref_head = NULL;
13704 fra.me.REG[0] = NIT_NULL;
13705 fra.me.REG[1] = NIT_NULL;
13706 fra.me.REG[2] = NIT_NULL;
13707 fra.me.REG[3] = NIT_NULL;
13708 fra.me.REG[4] = NIT_NULL;
13709 fra.me.REG[0] = p0;
13710 fra.me.REG[1] = p1;
13711 /* syntax/typing.nit:2144 */
13712 fra.me.REG[2] = fra.me.REG[0];
13713 fra.me.REG[3] = fra.me.REG[1];
13714 /* syntax/typing.nit:2146 */
13715 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13716 REGB1 = TAG_Int(0);
13717 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13718 if (UNTAG_Bool(REGB2)) {
13719 } else {
13720 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13721 }
13722 /* ../lib/standard/kernel.nit:244 */
13723 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13724 /* syntax/typing.nit:2146 */
13725 if (UNTAG_Bool(REGB1)) {
13726 /* syntax/typing.nit:2147 */
13727 if (!once_value_1) {
13728 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13729 REGB1 = TAG_Int(34);
13730 fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB1);
13731 once_value_1 = fra.me.REG[4];
13732 register_static_object(&once_value_1);
13733 } else fra.me.REG[4] = once_value_1;
13734 fra.me.REG[4] = fra.me.REG[4];
13735 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13736 }
13737 /* syntax/typing.nit:2149 */
13738 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13739 REGB0 = TAG_Int(1);
13740 /* ../lib/standard/kernel.nit:245 */
13741 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13742 /* syntax/typing.nit:2149 */
13743 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13744 /* syntax/typing.nit:2151 */
13745 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13746 /* syntax/typing.nit:2153 */
13747 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13748 REGB1 = TAG_Int(1);
13749 /* ../lib/standard/kernel.nit:247 */
13750 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13751 /* syntax/typing.nit:2153 */
13752 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13753 stack_frame_head = fra.me.prev;
13754 return;
13755 }
13756 static const char LOCATE_syntax___typing___ADebugTypeExpr___after_typing[] = "typing::ADebugTypeExpr::(typing::ANode::after_typing)";
13757 void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
13758 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13759 val_t REGB0;
13760 val_t REGB1;
13761 val_t tmp;
13762 static val_t once_value_2; /* Once value */
13763 static val_t once_value_3; /* Once value */
13764 static val_t once_value_4; /* Once value */
13765 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13766 fra.me.file = LOCATE_syntax___typing;
13767 fra.me.line = 2158;
13768 fra.me.meth = LOCATE_syntax___typing___ADebugTypeExpr___after_typing;
13769 fra.me.has_broke = 0;
13770 fra.me.REG_size = 6;
13771 fra.me.nitni_local_ref_head = NULL;
13772 fra.me.REG[0] = NIT_NULL;
13773 fra.me.REG[1] = NIT_NULL;
13774 fra.me.REG[2] = NIT_NULL;
13775 fra.me.REG[3] = NIT_NULL;
13776 fra.me.REG[4] = NIT_NULL;
13777 fra.me.REG[5] = NIT_NULL;
13778 fra.me.REG[0] = p0;
13779 fra.me.REG[1] = p1;
13780 /* syntax/typing.nit:2160 */
13781 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13782 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13783 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13784 if (UNTAG_Bool(REGB0)) {
13785 goto label1;
13786 }
13787 /* syntax/typing.nit:2161 */
13788 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13789 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
13790 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13791 if (UNTAG_Bool(REGB0)) {
13792 goto label1;
13793 }
13794 /* syntax/typing.nit:2162 */
13795 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13796 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13797 /* syntax/typing.nit:2163 */
13798 fra.me.REG[3] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13799 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13800 /* syntax/typing.nit:2164 */
13801 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13802 if (UNTAG_Bool(REGB0)) {
13803 } else {
13804 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13805 REGB0 = REGB1;
13806 }
13807 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13808 if (UNTAG_Bool(REGB0)) {
13809 /* syntax/typing.nit:2165 */
13810 REGB0 = TAG_Int(5);
13811 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13812 if (!once_value_2) {
13813 fra.me.REG[5] = BOX_NativeString("Warning: Expression is a ");
13814 REGB0 = TAG_Int(25);
13815 fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
13816 once_value_2 = fra.me.REG[5];
13817 register_static_object(&once_value_2);
13818 } else fra.me.REG[5] = once_value_2;
13819 fra.me.REG[5] = fra.me.REG[5];
13820 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13821 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13822 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13823 if (!once_value_3) {
13824 fra.me.REG[2] = BOX_NativeString(", expected ");
13825 REGB0 = TAG_Int(11);
13826 fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
13827 once_value_3 = fra.me.REG[2];
13828 register_static_object(&once_value_3);
13829 } else fra.me.REG[2] = once_value_3;
13830 fra.me.REG[2] = fra.me.REG[2];
13831 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13832 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13833 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13834 if (!once_value_4) {
13835 fra.me.REG[3] = BOX_NativeString(".");
13836 REGB0 = TAG_Int(1);
13837 fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
13838 once_value_4 = fra.me.REG[3];
13839 register_static_object(&once_value_4);
13840 } else fra.me.REG[3] = once_value_4;
13841 fra.me.REG[3] = fra.me.REG[3];
13842 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13843 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13844 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13845 }
13846 label1: while(0);
13847 stack_frame_head = fra.me.prev;
13848 return;
13849 }