78875612b52d3e4ba4be96294b13a90889ab95c1
[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 void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_syntax___typing;
8 fra.me.line = 25;
9 fra.me.meth = LOCATE_syntax___typing___MMSrcModule___do_typing;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 2;
12 fra.me.nitni_local_ref_head = NULL;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[1] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 fra.me.REG[1] = p1;
17 /* syntax/typing.nit:29 */
18 fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
19 /* syntax/typing.nit:30 */
20 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
21 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return;
24 }
25 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
26 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
27 val_t REGB0;
28 val_t REGB1;
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 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
43 if (UNTAG_Bool(REGB0)) {
44 } else {
45 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
46 if (UNTAG_Bool(REGB1)) {
47 REGB1 = TAG_Bool(false);
48 REGB0 = REGB1;
49 } else {
50 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
51 REGB0 = REGB1;
52 }
53 }
54 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
55 if (UNTAG_Bool(REGB0)) {
56 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
57 if (UNTAG_Bool(REGB0)) {
58 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 43);
59 }
60 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
61 }
62 stack_frame_head = fra.me.prev;
63 return;
64 }
65 val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
66 struct {struct stack_frame_t me;} fra;
67 val_t REGB0;
68 val_t tmp;
69 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
70 fra.me.file = LOCATE_syntax___typing;
71 fra.me.line = 46;
72 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___scope_ctx;
73 fra.me.has_broke = 0;
74 fra.me.REG_size = 1;
75 fra.me.nitni_local_ref_head = NULL;
76 fra.me.REG[0] = NIT_NULL;
77 fra.me.REG[0] = p0;
78 /* syntax/typing.nit:46 */
79 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
80 if (UNTAG_Bool(REGB0)) {
81 } else {
82 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_syntax___typing, 46);
83 }
84 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
85 stack_frame_head = fra.me.prev;
86 return fra.me.REG[0];
87 }
88 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
89 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
90 val_t REGB0;
91 val_t tmp;
92 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
93 fra.me.file = LOCATE_syntax___typing;
94 fra.me.line = 49;
95 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
96 fra.me.has_broke = 0;
97 fra.me.REG_size = 2;
98 fra.me.nitni_local_ref_head = NULL;
99 fra.me.REG[0] = NIT_NULL;
100 fra.me.REG[1] = NIT_NULL;
101 fra.me.REG[0] = p0;
102 /* syntax/typing.nit:49 */
103 fra.me.REG[1] = fra.me.REG[0];
104 /* syntax/typing.nit:50 */
105 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
106 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
107 if (UNTAG_Bool(REGB0)) {
108 } else {
109 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
110 }
111 goto label1;
112 label1: while(0);
113 stack_frame_head = fra.me.prev;
114 return fra.me.REG[1];
115 }
116 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
117 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
118 val_t tmp;
119 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
120 fra.me.file = LOCATE_syntax___typing;
121 fra.me.line = 51;
122 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
123 fra.me.has_broke = 0;
124 fra.me.REG_size = 2;
125 fra.me.nitni_local_ref_head = NULL;
126 fra.me.REG[0] = NIT_NULL;
127 fra.me.REG[1] = NIT_NULL;
128 fra.me.REG[0] = p0;
129 fra.me.REG[1] = p1;
130 /* syntax/typing.nit:51 */
131 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
132 stack_frame_head = fra.me.prev;
133 return;
134 }
135 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
136 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
137 val_t REGB0;
138 val_t tmp;
139 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
140 fra.me.file = LOCATE_syntax___typing;
141 fra.me.line = 53;
142 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
143 fra.me.has_broke = 0;
144 fra.me.REG_size = 3;
145 fra.me.nitni_local_ref_head = NULL;
146 fra.me.REG[0] = NIT_NULL;
147 fra.me.REG[1] = NIT_NULL;
148 fra.me.REG[2] = NIT_NULL;
149 fra.me.REG[0] = p0;
150 fra.me.REG[1] = p1;
151 /* syntax/typing.nit:56 */
152 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
153 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
154 if (UNTAG_Bool(REGB0)) {
155 goto label1;
156 }
157 /* syntax/typing.nit:57 */
158 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
159 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
160 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
161 label1: while(0);
162 stack_frame_head = fra.me.prev;
163 return;
164 }
165 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
166 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
167 val_t tmp;
168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
169 fra.me.file = LOCATE_syntax___typing;
170 fra.me.line = 60;
171 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
172 fra.me.has_broke = 0;
173 fra.me.REG_size = 3;
174 fra.me.nitni_local_ref_head = NULL;
175 fra.me.REG[0] = NIT_NULL;
176 fra.me.REG[1] = NIT_NULL;
177 fra.me.REG[2] = NIT_NULL;
178 fra.me.REG[0] = p0;
179 fra.me.REG[1] = p1;
180 /* syntax/typing.nit:63 */
181 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
182 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
183 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
184 stack_frame_head = fra.me.prev;
185 return;
186 }
187 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
188 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
189 val_t REGB0;
190 val_t REGB1;
191 val_t tmp;
192 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
193 fra.me.file = LOCATE_syntax___typing;
194 fra.me.line = 66;
195 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
196 fra.me.has_broke = 0;
197 fra.me.REG_size = 3;
198 fra.me.nitni_local_ref_head = NULL;
199 fra.me.REG[0] = NIT_NULL;
200 fra.me.REG[1] = NIT_NULL;
201 fra.me.REG[2] = NIT_NULL;
202 fra.me.REG[0] = p0;
203 fra.me.REG[1] = p1;
204 /* syntax/typing.nit:69 */
205 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
206 if (UNTAG_Bool(REGB0)) {
207 } else {
208 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
209 if (UNTAG_Bool(REGB1)) {
210 REGB1 = TAG_Bool(false);
211 REGB0 = REGB1;
212 } else {
213 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
214 REGB0 = REGB1;
215 }
216 }
217 if (UNTAG_Bool(REGB0)) {
218 goto label1;
219 }
220 /* syntax/typing.nit:70 */
221 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
222 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
223 /* syntax/typing.nit:71 */
224 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
225 /* syntax/typing.nit:72 */
226 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
227 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
228 label1: while(0);
229 stack_frame_head = fra.me.prev;
230 return;
231 }
232 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
233 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
234 val_t REGB0;
235 val_t tmp;
236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
237 fra.me.file = LOCATE_syntax___typing;
238 fra.me.line = 75;
239 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
240 fra.me.has_broke = 0;
241 fra.me.REG_size = 2;
242 fra.me.nitni_local_ref_head = NULL;
243 fra.me.REG[0] = NIT_NULL;
244 fra.me.REG[1] = NIT_NULL;
245 fra.me.REG[0] = p0;
246 /* syntax/typing.nit:75 */
247 fra.me.REG[1] = fra.me.REG[0];
248 /* syntax/typing.nit:76 */
249 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
250 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
251 if (UNTAG_Bool(REGB0)) {
252 } else {
253 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
254 }
255 goto label1;
256 label1: while(0);
257 stack_frame_head = fra.me.prev;
258 return fra.me.REG[1];
259 }
260 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
261 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
262 val_t tmp;
263 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
264 fra.me.file = LOCATE_syntax___typing;
265 fra.me.line = 77;
266 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
267 fra.me.has_broke = 0;
268 fra.me.REG_size = 2;
269 fra.me.nitni_local_ref_head = NULL;
270 fra.me.REG[0] = NIT_NULL;
271 fra.me.REG[1] = NIT_NULL;
272 fra.me.REG[0] = p0;
273 fra.me.REG[1] = p1;
274 /* syntax/typing.nit:77 */
275 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
276 stack_frame_head = fra.me.prev;
277 return;
278 }
279 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
280 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
281 val_t REGB0;
282 val_t tmp;
283 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
284 fra.me.file = LOCATE_syntax___typing;
285 fra.me.line = 79;
286 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
287 fra.me.has_broke = 0;
288 fra.me.REG_size = 2;
289 fra.me.nitni_local_ref_head = NULL;
290 fra.me.REG[0] = NIT_NULL;
291 fra.me.REG[1] = NIT_NULL;
292 fra.me.REG[0] = p0;
293 /* syntax/typing.nit:79 */
294 fra.me.REG[1] = fra.me.REG[0];
295 /* syntax/typing.nit:80 */
296 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
297 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
298 if (UNTAG_Bool(REGB0)) {
299 } else {
300 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
301 }
302 goto label1;
303 label1: while(0);
304 stack_frame_head = fra.me.prev;
305 return fra.me.REG[1];
306 }
307 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
308 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
309 val_t tmp;
310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
311 fra.me.file = LOCATE_syntax___typing;
312 fra.me.line = 81;
313 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
314 fra.me.has_broke = 0;
315 fra.me.REG_size = 2;
316 fra.me.nitni_local_ref_head = NULL;
317 fra.me.REG[0] = NIT_NULL;
318 fra.me.REG[1] = NIT_NULL;
319 fra.me.REG[0] = p0;
320 fra.me.REG[1] = p1;
321 /* syntax/typing.nit:81 */
322 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
323 stack_frame_head = fra.me.prev;
324 return;
325 }
326 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
327 struct {struct stack_frame_t me;} fra;
328 val_t tmp;
329 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
330 fra.me.file = LOCATE_syntax___typing;
331 fra.me.line = 83;
332 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
333 fra.me.has_broke = 0;
334 fra.me.REG_size = 1;
335 fra.me.nitni_local_ref_head = NULL;
336 fra.me.REG[0] = NIT_NULL;
337 fra.me.REG[0] = p0;
338 /* syntax/typing.nit:83 */
339 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
340 stack_frame_head = fra.me.prev;
341 return fra.me.REG[0];
342 }
343 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
344 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
345 val_t tmp;
346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
347 fra.me.file = LOCATE_syntax___typing;
348 fra.me.line = 83;
349 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
350 fra.me.has_broke = 0;
351 fra.me.REG_size = 2;
352 fra.me.nitni_local_ref_head = NULL;
353 fra.me.REG[0] = NIT_NULL;
354 fra.me.REG[1] = NIT_NULL;
355 fra.me.REG[0] = p0;
356 fra.me.REG[1] = p1;
357 /* syntax/typing.nit:83 */
358 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
359 stack_frame_head = fra.me.prev;
360 return;
361 }
362 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
363 struct {struct stack_frame_t me;} fra;
364 val_t tmp;
365 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
366 fra.me.file = LOCATE_syntax___typing;
367 fra.me.line = 86;
368 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
369 fra.me.has_broke = 0;
370 fra.me.REG_size = 1;
371 fra.me.nitni_local_ref_head = NULL;
372 fra.me.REG[0] = NIT_NULL;
373 fra.me.REG[0] = p0;
374 /* syntax/typing.nit:86 */
375 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
376 stack_frame_head = fra.me.prev;
377 return fra.me.REG[0];
378 }
379 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
380 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
381 val_t tmp;
382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
383 fra.me.file = LOCATE_syntax___typing;
384 fra.me.line = 86;
385 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
386 fra.me.has_broke = 0;
387 fra.me.REG_size = 2;
388 fra.me.nitni_local_ref_head = NULL;
389 fra.me.REG[0] = NIT_NULL;
390 fra.me.REG[1] = NIT_NULL;
391 fra.me.REG[0] = p0;
392 fra.me.REG[1] = p1;
393 /* syntax/typing.nit:86 */
394 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
395 stack_frame_head = fra.me.prev;
396 return;
397 }
398 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
399 struct {struct stack_frame_t me;} fra;
400 val_t REGB0;
401 val_t tmp;
402 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
403 fra.me.file = LOCATE_syntax___typing;
404 fra.me.line = 89;
405 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
406 fra.me.has_broke = 0;
407 fra.me.REG_size = 1;
408 fra.me.nitni_local_ref_head = NULL;
409 fra.me.REG[0] = NIT_NULL;
410 fra.me.REG[0] = p0;
411 /* syntax/typing.nit:89 */
412 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
413 if (UNTAG_Bool(REGB0)) {
414 } else {
415 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
416 }
417 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
418 stack_frame_head = fra.me.prev;
419 return REGB0;
420 }
421 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
422 struct {struct stack_frame_t me;} fra;
423 val_t REGB0;
424 val_t tmp;
425 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
426 fra.me.file = LOCATE_syntax___typing;
427 fra.me.line = 89;
428 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
429 fra.me.has_broke = 0;
430 fra.me.REG_size = 1;
431 fra.me.nitni_local_ref_head = NULL;
432 fra.me.REG[0] = NIT_NULL;
433 fra.me.REG[0] = p0;
434 REGB0 = p1;
435 /* syntax/typing.nit:89 */
436 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
437 stack_frame_head = fra.me.prev;
438 return;
439 }
440 void syntax___typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
441 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
442 val_t REGB0;
443 val_t REGB1;
444 val_t tmp;
445 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
446 fra.me.file = LOCATE_syntax___typing;
447 fra.me.line = 92;
448 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
449 fra.me.has_broke = 0;
450 fra.me.REG_size = 2;
451 fra.me.nitni_local_ref_head = NULL;
452 fra.me.REG[0] = NIT_NULL;
453 fra.me.REG[1] = NIT_NULL;
454 fra.me.REG[0] = p0;
455 fra.me.REG[1] = p1;
456 /* syntax/typing.nit:95 */
457 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
458 /* syntax/typing.nit:96 */
459 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
460 if (UNTAG_Bool(REGB0)) {
461 } else {
462 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
463 if (UNTAG_Bool(REGB1)) {
464 REGB1 = TAG_Bool(false);
465 REGB0 = REGB1;
466 } else {
467 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
468 REGB0 = REGB1;
469 }
470 }
471 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
472 if (UNTAG_Bool(REGB0)) {
473 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
474 }
475 stack_frame_head = fra.me.prev;
476 return;
477 }
478 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
479 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
480 val_t REGB0;
481 val_t REGB1;
482 val_t tmp;
483 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
484 fra.me.file = LOCATE_syntax___typing;
485 fra.me.line = 99;
486 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
487 fra.me.has_broke = 0;
488 fra.me.REG_size = 2;
489 fra.me.nitni_local_ref_head = NULL;
490 fra.me.REG[0] = NIT_NULL;
491 fra.me.REG[1] = NIT_NULL;
492 fra.me.REG[0] = p0;
493 fra.me.REG[1] = p1;
494 /* syntax/typing.nit:102 */
495 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
496 /* syntax/typing.nit:103 */
497 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
498 if (UNTAG_Bool(REGB0)) {
499 } else {
500 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
501 if (UNTAG_Bool(REGB1)) {
502 REGB1 = TAG_Bool(false);
503 REGB0 = REGB1;
504 } else {
505 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
506 REGB0 = REGB1;
507 }
508 }
509 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
510 if (UNTAG_Bool(REGB0)) {
511 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
512 }
513 stack_frame_head = fra.me.prev;
514 return;
515 }
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 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
540 struct {struct stack_frame_t me;} fra;
541 val_t REGB0;
542 val_t tmp;
543 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
544 fra.me.file = LOCATE_syntax___typing;
545 fra.me.line = 106;
546 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
547 fra.me.has_broke = 0;
548 fra.me.REG_size = 1;
549 fra.me.nitni_local_ref_head = NULL;
550 fra.me.REG[0] = NIT_NULL;
551 fra.me.REG[0] = p0;
552 REGB0 = p1;
553 /* syntax/typing.nit:106 */
554 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
555 stack_frame_head = fra.me.prev;
556 return;
557 }
558 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
559 struct {struct stack_frame_t me;} fra;
560 val_t REGB0;
561 val_t tmp;
562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
563 fra.me.file = LOCATE_syntax___typing;
564 fra.me.line = 109;
565 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count;
566 fra.me.has_broke = 0;
567 fra.me.REG_size = 1;
568 fra.me.nitni_local_ref_head = NULL;
569 fra.me.REG[0] = NIT_NULL;
570 fra.me.REG[0] = p0;
571 /* syntax/typing.nit:109 */
572 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
573 if (UNTAG_Bool(REGB0)) {
574 } else {
575 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
576 }
577 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
578 stack_frame_head = fra.me.prev;
579 return REGB0;
580 }
581 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
582 struct {struct stack_frame_t me;} fra;
583 val_t REGB0;
584 val_t tmp;
585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
586 fra.me.file = LOCATE_syntax___typing;
587 fra.me.line = 109;
588 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
589 fra.me.has_broke = 0;
590 fra.me.REG_size = 1;
591 fra.me.nitni_local_ref_head = NULL;
592 fra.me.REG[0] = NIT_NULL;
593 fra.me.REG[0] = p0;
594 REGB0 = p1;
595 /* syntax/typing.nit:109 */
596 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
597 stack_frame_head = fra.me.prev;
598 return;
599 }
600 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
601 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
602 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
603 val_t tmp;
604 if (init_table[itpos0]) return;
605 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
606 fra.me.file = LOCATE_syntax___typing;
607 fra.me.line = 112;
608 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
609 fra.me.has_broke = 0;
610 fra.me.REG_size = 3;
611 fra.me.nitni_local_ref_head = NULL;
612 fra.me.REG[0] = NIT_NULL;
613 fra.me.REG[1] = NIT_NULL;
614 fra.me.REG[2] = NIT_NULL;
615 fra.me.REG[0] = p0;
616 fra.me.REG[1] = p1;
617 fra.me.REG[2] = p2;
618 /* syntax/typing.nit:112 */
619 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
620 stack_frame_head = fra.me.prev;
621 init_table[itpos0] = 1;
622 return;
623 }
624 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
625 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
626 val_t REGB0;
627 val_t REGB1;
628 val_t REGB2;
629 val_t tmp;
630 static val_t once_value_6; /* Once value */
631 static val_t once_value_7; /* Once value */
632 static val_t once_value_8; /* Once value */
633 static val_t once_value_10; /* Once value */
634 static val_t once_value_11; /* Once value */
635 static val_t once_value_12; /* Once value */
636 static val_t once_value_13; /* Once value */
637 static val_t once_value_14; /* Once value */
638 static val_t once_value_15; /* Once value */
639 static val_t once_value_16; /* Once value */
640 static val_t once_value_18; /* Once value */
641 static val_t once_value_19; /* Once value */
642 static val_t once_value_20; /* Once value */
643 static val_t once_value_21; /* Once value */
644 static val_t once_value_22; /* Once value */
645 static val_t once_value_23; /* Once value */
646 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
647 fra.me.file = LOCATE_syntax___typing;
648 fra.me.line = 114;
649 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
650 fra.me.has_broke = 0;
651 fra.me.REG_size = 12;
652 fra.me.nitni_local_ref_head = NULL;
653 fra.me.REG[0] = NIT_NULL;
654 fra.me.REG[1] = NIT_NULL;
655 fra.me.REG[2] = NIT_NULL;
656 fra.me.REG[3] = NIT_NULL;
657 fra.me.REG[4] = NIT_NULL;
658 fra.me.REG[5] = NIT_NULL;
659 fra.me.REG[6] = NIT_NULL;
660 fra.me.REG[7] = NIT_NULL;
661 fra.me.REG[8] = NIT_NULL;
662 fra.me.REG[9] = NIT_NULL;
663 fra.me.REG[10] = NIT_NULL;
664 fra.me.REG[11] = NIT_NULL;
665 fra.me.REG[0] = p0;
666 fra.me.REG[1] = p1;
667 fra.me.REG[2] = p2;
668 fra.me.REG[3] = p3;
669 /* syntax/typing.nit:114 */
670 fra.me.REG[4] = fra.me.REG[0];
671 /* syntax/typing.nit:116 */
672 fra.me.REG[5] = fra.me.REG[4];
673 /* syntax/typing.nit:119 */
674 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
675 /* syntax/typing.nit:120 */
676 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
677 /* syntax/typing.nit:121 */
678 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
679 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
680 if (UNTAG_Bool(REGB0)) {
681 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
682 }
683 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
684 fra.me.REG[8] = REGB0;
685 /* syntax/typing.nit:122 */
686 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
687 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));
688 switch ((&(fra.me))->has_broke) {
689 case 0: break;
690 case 1: (&(fra.me))->has_broke = 0; goto label5;
691 }
692 /* ../lib/standard/collection/array.nit:24 */
693 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
694 if (UNTAG_Bool(REGB0)) {
695 } else {
696 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
697 }
698 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
699 /* syntax/typing.nit:141 */
700 REGB1 = TAG_Int(1);
701 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
702 if (UNTAG_Bool(REGB2)) {
703 } else {
704 /* ../lib/standard/kernel.nit:227 */
705 REGB1 = TAG_Bool((REGB0)==(REGB1));
706 /* syntax/typing.nit:141 */
707 REGB2 = REGB1;
708 }
709 if (UNTAG_Bool(REGB2)) {
710 /* syntax/typing.nit:142 */
711 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
712 fra.me.REG[9] = fra.me.REG[3];
713 goto label5;
714 } else {
715 /* ../lib/standard/collection/array.nit:24 */
716 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
717 if (UNTAG_Bool(REGB2)) {
718 } else {
719 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
720 }
721 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
722 /* syntax/typing.nit:143 */
723 REGB1 = TAG_Int(0);
724 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
725 if (UNTAG_Bool(REGB0)) {
726 } else {
727 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
728 }
729 /* ../lib/standard/kernel.nit:234 */
730 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
731 /* syntax/typing.nit:143 */
732 if (UNTAG_Bool(REGB1)) {
733 /* syntax/typing.nit:144 */
734 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
735 /* ../lib/standard/collection/array.nit:269 */
736 REGB1 = TAG_Int(0);
737 /* ../lib/standard/collection/array.nit:270 */
738 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
739 if (UNTAG_Bool(REGB2)) {
740 } else {
741 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
742 }
743 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
744 /* ../lib/standard/collection/array.nit:271 */
745 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
746 /* ../lib/standard/collection/array.nit:272 */
747 while(1) {
748 /* ../lib/standard/collection/array.nit:24 */
749 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
750 if (UNTAG_Bool(REGB2)) {
751 } else {
752 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
753 }
754 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
755 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
756 if (UNTAG_Bool(REGB0)) {
757 } else {
758 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
759 }
760 /* ../lib/standard/kernel.nit:232 */
761 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
762 /* ../lib/standard/collection/array.nit:272 */
763 if (UNTAG_Bool(REGB2)) {
764 /* ../lib/standard/collection/array.nit:273 */
765 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
766 if (UNTAG_Bool(REGB2)) {
767 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
768 }
769 /* ../lib/standard/collection/array.nit:718 */
770 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
771 /* syntax/typing.nit:146 */
772 REGB2 = TAG_Int(5);
773 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
774 if (!once_value_6) {
775 fra.me.REG[11] = BOX_NativeString("");
776 REGB2 = TAG_Int(0);
777 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
778 once_value_6 = fra.me.REG[11];
779 register_static_object(&once_value_6);
780 } else fra.me.REG[11] = once_value_6;
781 fra.me.REG[11] = fra.me.REG[11];
782 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
783 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
784 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
785 if (!once_value_7) {
786 fra.me.REG[11] = BOX_NativeString("");
787 REGB2 = TAG_Int(0);
788 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
789 once_value_7 = fra.me.REG[11];
790 register_static_object(&once_value_7);
791 } else fra.me.REG[11] = once_value_7;
792 fra.me.REG[11] = fra.me.REG[11];
793 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
794 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
795 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*/;
796 if (UNTAG_Bool(REGB2)) {
797 } else {
798 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
799 }
800 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
801 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
802 if (!once_value_8) {
803 fra.me.REG[4] = BOX_NativeString("");
804 REGB2 = TAG_Int(0);
805 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
806 once_value_8 = fra.me.REG[4];
807 register_static_object(&once_value_8);
808 } else fra.me.REG[4] = once_value_8;
809 fra.me.REG[4] = fra.me.REG[4];
810 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
811 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
813 /* ../lib/standard/collection/array.nit:274 */
814 REGB2 = TAG_Int(1);
815 /* ../lib/standard/kernel.nit:235 */
816 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
817 /* ../lib/standard/collection/array.nit:274 */
818 REGB1 = REGB2;
819 } else {
820 /* ../lib/standard/collection/array.nit:272 */
821 goto label9;
822 }
823 }
824 label9: while(0);
825 /* syntax/typing.nit:148 */
826 REGB1 = TAG_Int(5);
827 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
828 if (!once_value_10) {
829 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
830 REGB1 = TAG_Int(51);
831 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
832 once_value_10 = fra.me.REG[6];
833 register_static_object(&once_value_10);
834 } else fra.me.REG[6] = once_value_10;
835 fra.me.REG[6] = fra.me.REG[6];
836 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
837 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
839 if (!once_value_11) {
840 fra.me.REG[6] = BOX_NativeString(": ");
841 REGB1 = TAG_Int(2);
842 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
843 once_value_11 = fra.me.REG[6];
844 register_static_object(&once_value_11);
845 } else fra.me.REG[6] = once_value_11;
846 fra.me.REG[6] = fra.me.REG[6];
847 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
848 if (!once_value_12) {
849 fra.me.REG[6] = BOX_NativeString(", ");
850 REGB1 = TAG_Int(2);
851 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
852 once_value_12 = fra.me.REG[6];
853 register_static_object(&once_value_12);
854 } else fra.me.REG[6] = once_value_12;
855 fra.me.REG[6] = fra.me.REG[6];
856 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
858 if (!once_value_13) {
859 fra.me.REG[6] = BOX_NativeString(".");
860 REGB1 = TAG_Int(1);
861 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
862 once_value_13 = fra.me.REG[6];
863 register_static_object(&once_value_13);
864 } else fra.me.REG[6] = once_value_13;
865 fra.me.REG[6] = fra.me.REG[6];
866 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
867 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
868 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
869 /* syntax/typing.nit:149 */
870 fra.me.REG[9] = NIT_NULL;
871 goto label5;
872 } else {
873 /* ../lib/standard/collection/array.nit:24 */
874 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
875 if (UNTAG_Bool(REGB1)) {
876 } else {
877 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
878 }
879 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
880 /* syntax/typing.nit:150 */
881 REGB2 = TAG_Int(0);
882 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
883 if (UNTAG_Bool(REGB0)) {
884 } else {
885 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
886 }
887 /* ../lib/standard/kernel.nit:234 */
888 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
889 /* syntax/typing.nit:150 */
890 if (UNTAG_Bool(REGB2)) {
891 /* syntax/typing.nit:151 */
892 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
893 /* ../lib/standard/collection/array.nit:269 */
894 REGB2 = TAG_Int(0);
895 /* ../lib/standard/collection/array.nit:270 */
896 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
897 if (UNTAG_Bool(REGB1)) {
898 } else {
899 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
900 }
901 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
902 /* ../lib/standard/collection/array.nit:271 */
903 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
904 /* ../lib/standard/collection/array.nit:272 */
905 while(1) {
906 /* ../lib/standard/collection/array.nit:24 */
907 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
908 if (UNTAG_Bool(REGB1)) {
909 } else {
910 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
911 }
912 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
913 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
914 if (UNTAG_Bool(REGB0)) {
915 } else {
916 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
917 }
918 /* ../lib/standard/kernel.nit:232 */
919 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
920 /* ../lib/standard/collection/array.nit:272 */
921 if (UNTAG_Bool(REGB1)) {
922 /* ../lib/standard/collection/array.nit:273 */
923 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
924 if (UNTAG_Bool(REGB1)) {
925 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
926 }
927 /* ../lib/standard/collection/array.nit:718 */
928 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
929 /* syntax/typing.nit:153 */
930 REGB1 = TAG_Int(5);
931 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
932 if (!once_value_14) {
933 fra.me.REG[4] = BOX_NativeString("");
934 REGB1 = TAG_Int(0);
935 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
936 once_value_14 = fra.me.REG[4];
937 register_static_object(&once_value_14);
938 } else fra.me.REG[4] = once_value_14;
939 fra.me.REG[4] = fra.me.REG[4];
940 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
941 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
942 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
943 if (!once_value_15) {
944 fra.me.REG[4] = BOX_NativeString("");
945 REGB1 = TAG_Int(0);
946 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
947 once_value_15 = fra.me.REG[4];
948 register_static_object(&once_value_15);
949 } else fra.me.REG[4] = once_value_15;
950 fra.me.REG[4] = fra.me.REG[4];
951 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
952 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
953 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*/;
954 if (UNTAG_Bool(REGB1)) {
955 } else {
956 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
957 }
958 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
960 if (!once_value_16) {
961 fra.me.REG[3] = BOX_NativeString("");
962 REGB1 = TAG_Int(0);
963 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
964 once_value_16 = fra.me.REG[3];
965 register_static_object(&once_value_16);
966 } else fra.me.REG[3] = once_value_16;
967 fra.me.REG[3] = fra.me.REG[3];
968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
969 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
970 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
971 /* ../lib/standard/collection/array.nit:274 */
972 REGB1 = TAG_Int(1);
973 /* ../lib/standard/kernel.nit:235 */
974 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
975 /* ../lib/standard/collection/array.nit:274 */
976 REGB2 = REGB1;
977 } else {
978 /* ../lib/standard/collection/array.nit:272 */
979 goto label17;
980 }
981 }
982 label17: while(0);
983 /* syntax/typing.nit:155 */
984 REGB2 = TAG_Int(5);
985 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
986 if (!once_value_18) {
987 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
988 REGB2 = TAG_Int(55);
989 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
990 once_value_18 = fra.me.REG[6];
991 register_static_object(&once_value_18);
992 } else fra.me.REG[6] = once_value_18;
993 fra.me.REG[6] = fra.me.REG[6];
994 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
995 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
996 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
997 if (!once_value_19) {
998 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
999 REGB2 = TAG_Int(27);
1000 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1001 once_value_19 = fra.me.REG[6];
1002 register_static_object(&once_value_19);
1003 } else fra.me.REG[6] = once_value_19;
1004 fra.me.REG[6] = fra.me.REG[6];
1005 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1006 if (!once_value_20) {
1007 fra.me.REG[6] = BOX_NativeString(", ");
1008 REGB2 = TAG_Int(2);
1009 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1010 once_value_20 = fra.me.REG[6];
1011 register_static_object(&once_value_20);
1012 } else fra.me.REG[6] = once_value_20;
1013 fra.me.REG[6] = fra.me.REG[6];
1014 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
1015 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1016 if (!once_value_21) {
1017 fra.me.REG[6] = BOX_NativeString(".");
1018 REGB2 = TAG_Int(1);
1019 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1020 once_value_21 = fra.me.REG[6];
1021 register_static_object(&once_value_21);
1022 } else fra.me.REG[6] = once_value_21;
1023 fra.me.REG[6] = fra.me.REG[6];
1024 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1025 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1026 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1027 /* syntax/typing.nit:156 */
1028 fra.me.REG[9] = NIT_NULL;
1029 goto label5;
1030 } else {
1031 /* syntax/typing.nit:158 */
1032 REGB2 = TAG_Int(3);
1033 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1034 if (!once_value_22) {
1035 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1036 REGB2 = TAG_Int(55);
1037 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1038 once_value_22 = fra.me.REG[6];
1039 register_static_object(&once_value_22);
1040 } else fra.me.REG[6] = once_value_22;
1041 fra.me.REG[6] = fra.me.REG[6];
1042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1043 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1044 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1045 if (!once_value_23) {
1046 fra.me.REG[2] = BOX_NativeString(".");
1047 REGB2 = TAG_Int(1);
1048 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
1049 once_value_23 = fra.me.REG[2];
1050 register_static_object(&once_value_23);
1051 } else fra.me.REG[2] = once_value_23;
1052 fra.me.REG[2] = fra.me.REG[2];
1053 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1054 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1055 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1056 /* syntax/typing.nit:159 */
1057 fra.me.REG[9] = NIT_NULL;
1058 goto label5;
1059 }
1060 }
1061 }
1062 label5: while(0);
1063 stack_frame_head = fra.me.prev;
1064 return fra.me.REG[9];
1065 }
1066 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){
1067 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1068 val_t REGB0;
1069 val_t REGB1;
1070 val_t REGB2;
1071 val_t REGB3;
1072 fun_t CREG[1];
1073 val_t tmp;
1074 static val_t once_value_3; /* Once value */
1075 static val_t once_value_4; /* Once value */
1076 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1077 fra.me.file = LOCATE_syntax___typing;
1078 fra.me.line = 0;
1079 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1080 fra.me.has_broke = 0;
1081 fra.me.REG_size = 4;
1082 fra.me.nitni_local_ref_head = NULL;
1083 fra.me.REG[0] = NIT_NULL;
1084 fra.me.REG[1] = NIT_NULL;
1085 fra.me.REG[2] = NIT_NULL;
1086 fra.me.REG[3] = NIT_NULL;
1087 fra.me.closure_ctx = closctx_param;
1088 fra.me.closure_funs = CREG;
1089 fra.me.REG[0] = p0;
1090 CREG[0] = clos_fun0;
1091 /* syntax/typing.nit:123 */
1092 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1093 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1094 if (UNTAG_Bool(REGB0)) {
1095 goto label2;
1096 }
1097 /* syntax/typing.nit:124 */
1098 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1099 /* syntax/typing.nit:125 */
1100 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1101 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1102 /* syntax/typing.nit:126 */
1103 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1104 if (UNTAG_Bool(REGB0)) {
1105 } else {
1106 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1107 }
1108 /* syntax/typing.nit:127 */
1109 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1110 /* syntax/typing.nit:128 */
1111 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1112 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1113 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1114 if (UNTAG_Bool(REGB1)) {
1115 } else {
1116 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1117 REGB1 = REGB2;
1118 }
1119 if (UNTAG_Bool(REGB1)) {
1120 /* syntax/typing.nit:129 */
1121 REGB1 = TAG_Int(0);
1122 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1123 if (UNTAG_Bool(REGB2)) {
1124 } else {
1125 /* ../lib/standard/kernel.nit:227 */
1126 REGB1 = TAG_Bool((REGB0)==(REGB1));
1127 /* syntax/typing.nit:129 */
1128 REGB2 = REGB1;
1129 }
1130 if (UNTAG_Bool(REGB2)) {
1131 REGB2 = TAG_Bool(true);
1132 } else {
1133 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1134 if (UNTAG_Bool(REGB1)) {
1135 } else {
1136 /* ../lib/standard/kernel.nit:227 */
1137 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1138 /* syntax/typing.nit:129 */
1139 REGB1 = REGB3;
1140 }
1141 if (UNTAG_Bool(REGB1)) {
1142 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1143 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1144 if (UNTAG_Bool(REGB1)) {
1145 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1146 }
1147 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1148 } else {
1149 REGB3 = TAG_Bool(false);
1150 REGB1 = REGB3;
1151 }
1152 REGB2 = REGB1;
1153 }
1154 if (UNTAG_Bool(REGB2)) {
1155 /* syntax/typing.nit:130 */
1156 closctx->REG[9] = fra.me.REG[0];
1157 closctx->has_broke = 1;
1158 goto label2;
1159 } else {
1160 /* syntax/typing.nit:132 */
1161 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1162 }
1163 } else {
1164 /* syntax/typing.nit:134 */
1165 REGB2 = TAG_Int(0);
1166 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1167 if (UNTAG_Bool(REGB1)) {
1168 } else {
1169 /* ../lib/standard/kernel.nit:227 */
1170 REGB2 = TAG_Bool((REGB0)==(REGB2));
1171 /* syntax/typing.nit:134 */
1172 REGB1 = REGB2;
1173 }
1174 if (UNTAG_Bool(REGB1)) {
1175 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1176 if (!once_value_3) {
1177 if (!once_value_4) {
1178 fra.me.REG[3] = BOX_NativeString("init");
1179 REGB1 = TAG_Int(4);
1180 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
1181 once_value_4 = fra.me.REG[3];
1182 register_static_object(&once_value_4);
1183 } else fra.me.REG[3] = once_value_4;
1184 fra.me.REG[3] = fra.me.REG[3];
1185 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1186 once_value_3 = fra.me.REG[3];
1187 register_static_object(&once_value_3);
1188 } else fra.me.REG[3] = once_value_3;
1189 fra.me.REG[3] = fra.me.REG[3];
1190 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1191 if (UNTAG_Bool(REGB1)) {
1192 } else {
1193 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1194 REGB1 = REGB2;
1195 }
1196 } else {
1197 REGB2 = TAG_Bool(false);
1198 REGB1 = REGB2;
1199 }
1200 if (UNTAG_Bool(REGB1)) {
1201 /* syntax/typing.nit:135 */
1202 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1203 /* syntax/typing.nit:136 */
1204 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1205 } else {
1206 /* syntax/typing.nit:138 */
1207 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1208 }
1209 }
1210 label2: while(0);
1211 stack_frame_head = fra.me.prev;
1212 return;
1213 }
1214 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1215 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1216 val_t tmp;
1217 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1218 fra.me.file = LOCATE_syntax___typing;
1219 fra.me.line = 168;
1220 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1221 fra.me.has_broke = 0;
1222 fra.me.REG_size = 2;
1223 fra.me.nitni_local_ref_head = NULL;
1224 fra.me.REG[0] = NIT_NULL;
1225 fra.me.REG[1] = NIT_NULL;
1226 fra.me.REG[0] = p0;
1227 fra.me.REG[1] = p1;
1228 /* syntax/typing.nit:170 */
1229 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1230 /* syntax/typing.nit:171 */
1231 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1232 stack_frame_head = fra.me.prev;
1233 return;
1234 }
1235 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1236 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1237 val_t tmp;
1238 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1239 fra.me.file = LOCATE_syntax___typing;
1240 fra.me.line = 173;
1241 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1242 fra.me.has_broke = 0;
1243 fra.me.REG_size = 2;
1244 fra.me.nitni_local_ref_head = NULL;
1245 fra.me.REG[0] = NIT_NULL;
1246 fra.me.REG[1] = NIT_NULL;
1247 fra.me.REG[0] = p0;
1248 fra.me.REG[1] = p1;
1249 stack_frame_head = fra.me.prev;
1250 return;
1251 }
1252 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1253 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1254 val_t REGB0;
1255 val_t tmp;
1256 static val_t once_value_1; /* Once value */
1257 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1258 fra.me.file = LOCATE_syntax___typing;
1259 fra.me.line = 177;
1260 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1261 fra.me.has_broke = 0;
1262 fra.me.REG_size = 5;
1263 fra.me.nitni_local_ref_head = NULL;
1264 fra.me.REG[0] = NIT_NULL;
1265 fra.me.REG[1] = NIT_NULL;
1266 fra.me.REG[2] = NIT_NULL;
1267 fra.me.REG[3] = NIT_NULL;
1268 fra.me.REG[4] = NIT_NULL;
1269 fra.me.REG[0] = p0;
1270 fra.me.REG[1] = p1;
1271 /* syntax/typing.nit:177 */
1272 fra.me.REG[2] = fra.me.REG[0];
1273 fra.me.REG[3] = fra.me.REG[1];
1274 /* syntax/typing.nit:179 */
1275 if (!once_value_1) {
1276 fra.me.REG[4] = BOX_NativeString("self");
1277 REGB0 = TAG_Int(4);
1278 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1279 once_value_1 = fra.me.REG[4];
1280 register_static_object(&once_value_1);
1281 } else fra.me.REG[4] = once_value_1;
1282 fra.me.REG[4] = fra.me.REG[4];
1283 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1284 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1285 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1286 /* syntax/typing.nit:180 */
1287 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1288 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1289 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1290 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1291 /* syntax/typing.nit:181 */
1292 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1293 stack_frame_head = fra.me.prev;
1294 return;
1295 }
1296 val_t syntax___typing___APropdef___self_var(val_t p0){
1297 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1298 val_t REGB0;
1299 val_t tmp;
1300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1301 fra.me.file = LOCATE_syntax___typing;
1302 fra.me.line = 186;
1303 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1304 fra.me.has_broke = 0;
1305 fra.me.REG_size = 2;
1306 fra.me.nitni_local_ref_head = NULL;
1307 fra.me.REG[0] = NIT_NULL;
1308 fra.me.REG[1] = NIT_NULL;
1309 fra.me.REG[0] = p0;
1310 /* syntax/typing.nit:186 */
1311 fra.me.REG[1] = fra.me.REG[0];
1312 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1313 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1314 if (UNTAG_Bool(REGB0)) {
1315 } else {
1316 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1317 }
1318 goto label1;
1319 label1: while(0);
1320 stack_frame_head = fra.me.prev;
1321 return fra.me.REG[1];
1322 }
1323 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1324 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1325 val_t REGB0;
1326 val_t REGB1;
1327 val_t tmp;
1328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1329 fra.me.file = LOCATE_syntax___typing;
1330 fra.me.line = 191;
1331 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1332 fra.me.has_broke = 0;
1333 fra.me.REG_size = 5;
1334 fra.me.nitni_local_ref_head = NULL;
1335 fra.me.REG[0] = NIT_NULL;
1336 fra.me.REG[1] = NIT_NULL;
1337 fra.me.REG[2] = NIT_NULL;
1338 fra.me.REG[3] = NIT_NULL;
1339 fra.me.REG[4] = NIT_NULL;
1340 fra.me.REG[0] = p0;
1341 fra.me.REG[1] = p1;
1342 /* syntax/typing.nit:191 */
1343 fra.me.REG[2] = fra.me.REG[0];
1344 fra.me.REG[3] = fra.me.REG[1];
1345 /* syntax/typing.nit:193 */
1346 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1347 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1348 /* syntax/typing.nit:194 */
1349 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1350 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1351 /* syntax/typing.nit:196 */
1352 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1353 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1354 /* syntax/typing.nit:197 */
1355 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1356 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1357 /* syntax/typing.nit:198 */
1358 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1359 /* syntax/typing.nit:199 */
1360 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1361 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1362 if (UNTAG_Bool(REGB0)) {
1363 } else {
1364 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1365 if (UNTAG_Bool(REGB1)) {
1366 REGB1 = TAG_Bool(false);
1367 REGB0 = REGB1;
1368 } else {
1369 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1370 REGB0 = REGB1;
1371 }
1372 }
1373 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1374 if (UNTAG_Bool(REGB0)) {
1375 /* syntax/typing.nit:200 */
1376 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1377 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*/;
1378 if (UNTAG_Bool(REGB0)) {
1379 } else {
1380 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1381 }
1382 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1383 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1384 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1385 if (UNTAG_Bool(REGB0)) {
1386 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1387 }
1388 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1389 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*/;
1390 if (UNTAG_Bool(REGB0)) {
1391 } else {
1392 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1393 }
1394 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1395 }
1396 /* syntax/typing.nit:202 */
1397 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1398 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1399 stack_frame_head = fra.me.prev;
1400 return;
1401 }
1402 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1403 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1404 val_t tmp;
1405 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1406 fra.me.file = LOCATE_syntax___typing;
1407 fra.me.line = 207;
1408 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1409 fra.me.has_broke = 0;
1410 fra.me.REG_size = 5;
1411 fra.me.nitni_local_ref_head = NULL;
1412 fra.me.REG[0] = NIT_NULL;
1413 fra.me.REG[1] = NIT_NULL;
1414 fra.me.REG[2] = NIT_NULL;
1415 fra.me.REG[3] = NIT_NULL;
1416 fra.me.REG[4] = NIT_NULL;
1417 fra.me.REG[0] = p0;
1418 fra.me.REG[1] = p1;
1419 /* syntax/typing.nit:207 */
1420 fra.me.REG[2] = fra.me.REG[0];
1421 fra.me.REG[3] = fra.me.REG[1];
1422 /* syntax/typing.nit:209 */
1423 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1424 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1425 /* syntax/typing.nit:210 */
1426 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1427 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1428 /* syntax/typing.nit:212 */
1429 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1430 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1431 /* syntax/typing.nit:213 */
1432 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1433 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1434 /* syntax/typing.nit:214 */
1435 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1436 /* syntax/typing.nit:215 */
1437 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1438 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1439 stack_frame_head = fra.me.prev;
1440 return;
1441 }
1442 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1443 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1444 val_t REGB0;
1445 val_t REGB1;
1446 val_t tmp;
1447 static val_t once_value_1; /* Once value */
1448 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1449 fra.me.file = LOCATE_syntax___typing;
1450 fra.me.line = 220;
1451 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1452 fra.me.has_broke = 0;
1453 fra.me.REG_size = 4;
1454 fra.me.nitni_local_ref_head = NULL;
1455 fra.me.REG[0] = NIT_NULL;
1456 fra.me.REG[1] = NIT_NULL;
1457 fra.me.REG[2] = NIT_NULL;
1458 fra.me.REG[3] = NIT_NULL;
1459 fra.me.REG[0] = p0;
1460 fra.me.REG[1] = p1;
1461 /* syntax/typing.nit:220 */
1462 fra.me.REG[2] = fra.me.REG[0];
1463 fra.me.REG[3] = fra.me.REG[1];
1464 /* syntax/typing.nit:222 */
1465 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1466 /* syntax/typing.nit:223 */
1467 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1468 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1469 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1470 if (UNTAG_Bool(REGB0)) {
1471 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1472 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1473 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1474 if (UNTAG_Bool(REGB0)) {
1475 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1476 }
1477 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1478 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1479 if (UNTAG_Bool(REGB0)) {
1480 } else {
1481 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1482 if (UNTAG_Bool(REGB1)) {
1483 REGB1 = TAG_Bool(false);
1484 REGB0 = REGB1;
1485 } else {
1486 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1487 REGB0 = REGB1;
1488 }
1489 }
1490 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1491 } else {
1492 REGB1 = TAG_Bool(false);
1493 REGB0 = REGB1;
1494 }
1495 if (UNTAG_Bool(REGB0)) {
1496 /* syntax/typing.nit:224 */
1497 if (!once_value_1) {
1498 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1499 REGB0 = TAG_Int(78);
1500 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1501 once_value_1 = fra.me.REG[1];
1502 register_static_object(&once_value_1);
1503 } else fra.me.REG[1] = once_value_1;
1504 fra.me.REG[1] = fra.me.REG[1];
1505 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1506 }
1507 stack_frame_head = fra.me.prev;
1508 return;
1509 }
1510 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1511 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1512 val_t REGB0;
1513 val_t tmp;
1514 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1515 fra.me.file = LOCATE_syntax___typing;
1516 fra.me.line = 230;
1517 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1518 fra.me.has_broke = 0;
1519 fra.me.REG_size = 5;
1520 fra.me.nitni_local_ref_head = NULL;
1521 fra.me.REG[0] = NIT_NULL;
1522 fra.me.REG[1] = NIT_NULL;
1523 fra.me.REG[2] = NIT_NULL;
1524 fra.me.REG[3] = NIT_NULL;
1525 fra.me.REG[4] = NIT_NULL;
1526 fra.me.REG[0] = p0;
1527 fra.me.REG[1] = p1;
1528 /* syntax/typing.nit:230 */
1529 fra.me.REG[2] = fra.me.REG[0];
1530 fra.me.REG[3] = fra.me.REG[1];
1531 /* syntax/typing.nit:232 */
1532 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1533 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1534 /* syntax/typing.nit:233 */
1535 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1536 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1537 /* syntax/typing.nit:234 */
1538 REGB0 = TAG_Bool(false);
1539 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1540 /* syntax/typing.nit:235 */
1541 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1542 stack_frame_head = fra.me.prev;
1543 return;
1544 }
1545 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1546 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1547 val_t REGB0;
1548 val_t REGB1;
1549 val_t REGB2;
1550 val_t REGB3;
1551 val_t REGB4;
1552 val_t REGB5;
1553 val_t tmp;
1554 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1555 fra.me.file = LOCATE_syntax___typing;
1556 fra.me.line = 238;
1557 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1558 fra.me.has_broke = 0;
1559 fra.me.REG_size = 8;
1560 fra.me.nitni_local_ref_head = NULL;
1561 fra.me.REG[0] = NIT_NULL;
1562 fra.me.REG[1] = NIT_NULL;
1563 fra.me.REG[2] = NIT_NULL;
1564 fra.me.REG[3] = NIT_NULL;
1565 fra.me.REG[4] = NIT_NULL;
1566 fra.me.REG[5] = NIT_NULL;
1567 fra.me.REG[6] = NIT_NULL;
1568 fra.me.REG[7] = NIT_NULL;
1569 fra.me.REG[0] = p0;
1570 fra.me.REG[1] = p1;
1571 /* syntax/typing.nit:238 */
1572 fra.me.REG[2] = fra.me.REG[0];
1573 fra.me.REG[3] = fra.me.REG[1];
1574 /* syntax/typing.nit:240 */
1575 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1576 /* syntax/typing.nit:241 */
1577 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1578 if (UNTAG_Bool(REGB0)) {
1579 REGB0 = TAG_Bool(true);
1580 } else {
1581 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1582 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1583 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1584 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1585 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1586 if (UNTAG_Bool(REGB1)) {
1587 } else {
1588 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1589 REGB1 = REGB2;
1590 }
1591 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1592 REGB0 = REGB1;
1593 }
1594 if (UNTAG_Bool(REGB0)) {
1595 } else {
1596 /* syntax/typing.nit:244 */
1597 REGB0 = TAG_Int(0);
1598 /* syntax/typing.nit:245 */
1599 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1600 /* ../lib/standard/collection/array.nit:24 */
1601 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1602 if (UNTAG_Bool(REGB1)) {
1603 } else {
1604 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1605 }
1606 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1607 /* syntax/typing.nit:246 */
1608 fra.me.REG[4] = NIT_NULL;
1609 /* syntax/typing.nit:247 */
1610 fra.me.REG[1] = NIT_NULL;
1611 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1612 if (UNTAG_Bool(REGB2)) {
1613 } else {
1614 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1615 }
1616 /* ../lib/standard/kernel.nit:232 */
1617 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1618 /* syntax/typing.nit:248 */
1619 if (UNTAG_Bool(REGB2)) {
1620 /* syntax/typing.nit:249 */
1621 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1622 /* ../lib/standard/collection/array.nit:278 */
1623 REGB2 = REGB0;
1624 /* ../lib/standard/collection/array.nit:280 */
1625 REGB3 = TAG_Int(0);
1626 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1627 if (UNTAG_Bool(REGB4)) {
1628 } else {
1629 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1630 }
1631 /* ../lib/standard/kernel.nit:233 */
1632 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1633 /* ../lib/standard/collection/array.nit:280 */
1634 if (UNTAG_Bool(REGB3)) {
1635 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1636 if (UNTAG_Bool(REGB3)) {
1637 } else {
1638 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1639 }
1640 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1641 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1642 if (UNTAG_Bool(REGB4)) {
1643 } else {
1644 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1645 }
1646 /* ../lib/standard/kernel.nit:232 */
1647 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1648 } else {
1649 /* ../lib/standard/collection/array.nit:280 */
1650 REGB4 = TAG_Bool(false);
1651 REGB3 = REGB4;
1652 }
1653 if (UNTAG_Bool(REGB3)) {
1654 } else {
1655 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1656 }
1657 /* ../lib/standard/collection/array.nit:281 */
1658 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1659 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1660 if (UNTAG_Bool(REGB3)) {
1661 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1662 }
1663 /* ../lib/standard/collection/array.nit:718 */
1664 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1665 /* ../lib/standard/collection/array.nit:281 */
1666 goto label1;
1667 label1: while(0);
1668 /* syntax/typing.nit:249 */
1669 fra.me.REG[4] = fra.me.REG[5];
1670 /* syntax/typing.nit:250 */
1671 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1672 if (UNTAG_Bool(REGB2)) {
1673 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1674 }
1675 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1676 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1677 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1678 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1679 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1680 fra.me.REG[1] = fra.me.REG[6];
1681 }
1682 /* syntax/typing.nit:252 */
1683 REGB2 = TAG_Int(0);
1684 /* syntax/typing.nit:253 */
1685 while(1) {
1686 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1687 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1688 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1689 /* ../lib/standard/collection/array.nit:24 */
1690 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1691 if (UNTAG_Bool(REGB3)) {
1692 } else {
1693 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1694 }
1695 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1696 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1697 if (UNTAG_Bool(REGB4)) {
1698 } else {
1699 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1700 }
1701 /* ../lib/standard/kernel.nit:232 */
1702 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1703 /* syntax/typing.nit:253 */
1704 if (UNTAG_Bool(REGB3)) {
1705 /* syntax/typing.nit:254 */
1706 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1707 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1708 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1709 /* ../lib/standard/collection/array.nit:278 */
1710 REGB3 = REGB2;
1711 /* ../lib/standard/collection/array.nit:280 */
1712 REGB4 = TAG_Int(0);
1713 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1714 if (UNTAG_Bool(REGB5)) {
1715 } else {
1716 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1717 }
1718 /* ../lib/standard/kernel.nit:233 */
1719 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1720 /* ../lib/standard/collection/array.nit:280 */
1721 if (UNTAG_Bool(REGB4)) {
1722 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1723 if (UNTAG_Bool(REGB4)) {
1724 } else {
1725 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1726 }
1727 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1728 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1729 if (UNTAG_Bool(REGB5)) {
1730 } else {
1731 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1732 }
1733 /* ../lib/standard/kernel.nit:232 */
1734 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1735 } else {
1736 /* ../lib/standard/collection/array.nit:280 */
1737 REGB5 = TAG_Bool(false);
1738 REGB4 = REGB5;
1739 }
1740 if (UNTAG_Bool(REGB4)) {
1741 } else {
1742 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1743 }
1744 /* ../lib/standard/collection/array.nit:281 */
1745 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1746 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1747 if (UNTAG_Bool(REGB4)) {
1748 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1749 }
1750 /* ../lib/standard/collection/array.nit:718 */
1751 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1752 /* ../lib/standard/collection/array.nit:281 */
1753 goto label2;
1754 label2: while(0);
1755 /* syntax/typing.nit:255 */
1756 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1757 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1758 if (UNTAG_Bool(REGB3)) {
1759 REGB3 = TAG_Bool(true);
1760 } else {
1761 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1762 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1763 REGB3 = REGB4;
1764 }
1765 if (UNTAG_Bool(REGB3)) {
1766 REGB3 = TAG_Bool(true);
1767 } else {
1768 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1769 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1770 REGB3 = REGB4;
1771 }
1772 if (UNTAG_Bool(REGB3)) {
1773 REGB3 = TAG_Bool(true);
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_mixin(fra.me.REG[5])(fra.me.REG[5]);
1777 REGB3 = REGB4;
1778 }
1779 if (UNTAG_Bool(REGB3)) {
1780 /* syntax/typing.nit:256 */
1781 REGB3 = TAG_Int(1);
1782 /* ../lib/standard/kernel.nit:235 */
1783 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1784 /* syntax/typing.nit:256 */
1785 REGB2 = REGB3;
1786 } else {
1787 /* syntax/typing.nit:257 */
1788 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1789 if (UNTAG_Bool(REGB3)) {
1790 } else {
1791 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1792 if (UNTAG_Bool(REGB4)) {
1793 REGB4 = TAG_Bool(false);
1794 REGB3 = REGB4;
1795 } else {
1796 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1797 REGB3 = REGB4;
1798 }
1799 }
1800 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1801 if (UNTAG_Bool(REGB3)) {
1802 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1803 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1804 if (UNTAG_Bool(REGB3)) {
1805 REGB3 = TAG_Bool(true);
1806 } else {
1807 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1808 if (UNTAG_Bool(REGB4)) {
1809 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1810 }
1811 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1812 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1813 REGB3 = REGB4;
1814 }
1815 } else {
1816 REGB4 = TAG_Bool(false);
1817 REGB3 = REGB4;
1818 }
1819 if (UNTAG_Bool(REGB3)) {
1820 /* syntax/typing.nit:258 */
1821 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1822 if (UNTAG_Bool(REGB3)) {
1823 } else {
1824 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1825 REGB3 = REGB4;
1826 }
1827 if (UNTAG_Bool(REGB3)) {
1828 REGB3 = TAG_Int(1);
1829 /* ../lib/standard/kernel.nit:235 */
1830 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1831 /* syntax/typing.nit:258 */
1832 REGB2 = REGB3;
1833 }
1834 /* syntax/typing.nit:259 */
1835 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1836 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1837 if (UNTAG_Bool(REGB3)) {
1838 } else {
1839 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1840 }
1841 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1842 /* syntax/typing.nit:260 */
1843 REGB3 = TAG_Int(1);
1844 /* ../lib/standard/kernel.nit:235 */
1845 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1846 /* syntax/typing.nit:260 */
1847 REGB0 = REGB3;
1848 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1849 if (UNTAG_Bool(REGB3)) {
1850 } else {
1851 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1852 }
1853 /* ../lib/standard/kernel.nit:232 */
1854 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1855 /* syntax/typing.nit:261 */
1856 if (UNTAG_Bool(REGB3)) {
1857 /* syntax/typing.nit:262 */
1858 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1859 /* ../lib/standard/collection/array.nit:278 */
1860 REGB3 = REGB0;
1861 /* ../lib/standard/collection/array.nit:280 */
1862 REGB4 = TAG_Int(0);
1863 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1864 if (UNTAG_Bool(REGB5)) {
1865 } else {
1866 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1867 }
1868 /* ../lib/standard/kernel.nit:233 */
1869 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1870 /* ../lib/standard/collection/array.nit:280 */
1871 if (UNTAG_Bool(REGB4)) {
1872 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1873 if (UNTAG_Bool(REGB4)) {
1874 } else {
1875 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1876 }
1877 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1878 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1879 if (UNTAG_Bool(REGB5)) {
1880 } else {
1881 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1882 }
1883 /* ../lib/standard/kernel.nit:232 */
1884 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1885 } else {
1886 /* ../lib/standard/collection/array.nit:280 */
1887 REGB5 = TAG_Bool(false);
1888 REGB4 = REGB5;
1889 }
1890 if (UNTAG_Bool(REGB4)) {
1891 } else {
1892 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1893 }
1894 /* ../lib/standard/collection/array.nit:281 */
1895 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1896 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1897 if (UNTAG_Bool(REGB4)) {
1898 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1899 }
1900 /* ../lib/standard/collection/array.nit:718 */
1901 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1902 /* ../lib/standard/collection/array.nit:281 */
1903 goto label3;
1904 label3: while(0);
1905 /* syntax/typing.nit:262 */
1906 fra.me.REG[4] = fra.me.REG[5];
1907 /* syntax/typing.nit:263 */
1908 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1909 if (UNTAG_Bool(REGB3)) {
1910 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1911 }
1912 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1913 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1914 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1915 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1916 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1917 fra.me.REG[1] = fra.me.REG[7];
1918 } else {
1919 /* syntax/typing.nit:265 */
1920 fra.me.REG[4] = NIT_NULL;
1921 /* syntax/typing.nit:266 */
1922 fra.me.REG[1] = NIT_NULL;
1923 }
1924 } else {
1925 /* syntax/typing.nit:269 */
1926 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1927 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]);
1928 /* syntax/typing.nit:270 */
1929 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1930 if (UNTAG_Bool(REGB3)) {
1931 } else {
1932 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1933 if (UNTAG_Bool(REGB4)) {
1934 REGB4 = TAG_Bool(false);
1935 REGB3 = REGB4;
1936 } else {
1937 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1938 REGB3 = REGB4;
1939 }
1940 }
1941 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1942 if (UNTAG_Bool(REGB3)) {
1943 /* syntax/typing.nit:271 */
1944 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1945 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1946 }
1947 /* syntax/typing.nit:273 */
1948 REGB3 = TAG_Int(1);
1949 /* ../lib/standard/kernel.nit:235 */
1950 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1951 /* syntax/typing.nit:273 */
1952 REGB2 = REGB3;
1953 }
1954 }
1955 } else {
1956 /* syntax/typing.nit:253 */
1957 goto label4;
1958 }
1959 }
1960 label4: while(0);
1961 }
1962 stack_frame_head = fra.me.prev;
1963 return;
1964 }
1965 void syntax___typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
1966 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1967 val_t REGB0;
1968 val_t tmp;
1969 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1970 fra.me.file = LOCATE_syntax___typing;
1971 fra.me.line = 281;
1972 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___accept_typing;
1973 fra.me.has_broke = 0;
1974 fra.me.REG_size = 3;
1975 fra.me.nitni_local_ref_head = NULL;
1976 fra.me.REG[0] = NIT_NULL;
1977 fra.me.REG[1] = NIT_NULL;
1978 fra.me.REG[2] = NIT_NULL;
1979 fra.me.REG[0] = p0;
1980 fra.me.REG[1] = p1;
1981 /* syntax/typing.nit:281 */
1982 fra.me.REG[2] = fra.me.REG[1];
1983 /* syntax/typing.nit:283 */
1984 REGB0 = TAG_Bool(false);
1985 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
1986 /* syntax/typing.nit:284 */
1987 CALL_SUPER_syntax___typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1988 stack_frame_head = fra.me.prev;
1989 return;
1990 }
1991 void syntax___typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
1992 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1993 val_t tmp;
1994 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1995 fra.me.file = LOCATE_syntax___typing;
1996 fra.me.line = 286;
1997 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___after_typing;
1998 fra.me.has_broke = 0;
1999 fra.me.REG_size = 2;
2000 fra.me.nitni_local_ref_head = NULL;
2001 fra.me.REG[0] = NIT_NULL;
2002 fra.me.REG[1] = NIT_NULL;
2003 fra.me.REG[0] = p0;
2004 fra.me.REG[1] = p1;
2005 /* syntax/typing.nit:288 */
2006 CALL_SUPER_syntax___typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2007 stack_frame_head = fra.me.prev;
2008 return;
2009 }
2010 void syntax___typing___ASignature___after_typing(val_t p0, val_t p1){
2011 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2012 val_t REGB0;
2013 val_t REGB1;
2014 val_t tmp;
2015 static val_t once_value_1; /* Once value */
2016 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2017 fra.me.file = LOCATE_syntax___typing;
2018 fra.me.line = 293;
2019 fra.me.meth = LOCATE_syntax___typing___ASignature___after_typing;
2020 fra.me.has_broke = 0;
2021 fra.me.REG_size = 3;
2022 fra.me.nitni_local_ref_head = NULL;
2023 fra.me.REG[0] = NIT_NULL;
2024 fra.me.REG[1] = NIT_NULL;
2025 fra.me.REG[2] = NIT_NULL;
2026 fra.me.REG[0] = p0;
2027 fra.me.REG[1] = p1;
2028 /* syntax/typing.nit:295 */
2029 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_opar(fra.me.REG[0])(fra.me.REG[0]);
2030 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2031 if (UNTAG_Bool(REGB0)) {
2032 } else {
2033 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2034 if (UNTAG_Bool(REGB1)) {
2035 REGB1 = TAG_Bool(false);
2036 REGB0 = REGB1;
2037 } else {
2038 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2039 REGB0 = REGB1;
2040 }
2041 }
2042 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2043 if (UNTAG_Bool(REGB0)) {
2044 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
2045 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2046 } else {
2047 REGB1 = TAG_Bool(false);
2048 REGB0 = REGB1;
2049 }
2050 if (UNTAG_Bool(REGB0)) {
2051 /* syntax/typing.nit:296 */
2052 if (!once_value_1) {
2053 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2054 REGB0 = TAG_Int(33);
2055 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2056 once_value_1 = fra.me.REG[2];
2057 register_static_object(&once_value_1);
2058 } else fra.me.REG[2] = once_value_1;
2059 fra.me.REG[2] = fra.me.REG[2];
2060 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2061 }
2062 stack_frame_head = fra.me.prev;
2063 return;
2064 }
2065 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
2066 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2067 val_t tmp;
2068 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2069 fra.me.file = LOCATE_syntax___typing;
2070 fra.me.line = 302;
2071 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
2072 fra.me.has_broke = 0;
2073 fra.me.REG_size = 2;
2074 fra.me.nitni_local_ref_head = NULL;
2075 fra.me.REG[0] = NIT_NULL;
2076 fra.me.REG[1] = NIT_NULL;
2077 fra.me.REG[0] = p0;
2078 fra.me.REG[1] = p1;
2079 /* syntax/typing.nit:304 */
2080 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2081 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2082 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2083 stack_frame_head = fra.me.prev;
2084 return;
2085 }
2086 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
2087 struct {struct stack_frame_t me;} fra;
2088 val_t tmp;
2089 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2090 fra.me.file = LOCATE_syntax___typing;
2091 fra.me.line = 309;
2092 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
2093 fra.me.has_broke = 0;
2094 fra.me.REG_size = 1;
2095 fra.me.nitni_local_ref_head = NULL;
2096 fra.me.REG[0] = NIT_NULL;
2097 fra.me.REG[0] = p0;
2098 /* syntax/typing.nit:309 */
2099 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
2100 stack_frame_head = fra.me.prev;
2101 return fra.me.REG[0];
2102 }
2103 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
2104 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
2105 val_t REGB0;
2106 val_t REGB1;
2107 val_t REGB2;
2108 val_t tmp;
2109 static val_t once_value_1; /* Once value */
2110 static val_t once_value_2; /* Once value */
2111 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2112 fra.me.file = LOCATE_syntax___typing;
2113 fra.me.line = 312;
2114 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
2115 fra.me.has_broke = 0;
2116 fra.me.REG_size = 10;
2117 fra.me.nitni_local_ref_head = NULL;
2118 fra.me.REG[0] = NIT_NULL;
2119 fra.me.REG[1] = NIT_NULL;
2120 fra.me.REG[2] = NIT_NULL;
2121 fra.me.REG[3] = NIT_NULL;
2122 fra.me.REG[4] = NIT_NULL;
2123 fra.me.REG[5] = NIT_NULL;
2124 fra.me.REG[6] = NIT_NULL;
2125 fra.me.REG[7] = NIT_NULL;
2126 fra.me.REG[8] = NIT_NULL;
2127 fra.me.REG[9] = NIT_NULL;
2128 fra.me.REG[0] = p0;
2129 fra.me.REG[1] = p1;
2130 /* syntax/typing.nit:312 */
2131 fra.me.REG[2] = fra.me.REG[0];
2132 fra.me.REG[3] = fra.me.REG[1];
2133 /* syntax/typing.nit:315 */
2134 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2135 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2136 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2137 /* syntax/typing.nit:317 */
2138 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2139 /* syntax/typing.nit:318 */
2140 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2141 /* syntax/typing.nit:319 */
2142 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2143 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2144 /* syntax/typing.nit:321 */
2145 fra.me.REG[6] = NIT_NULL;
2146 /* syntax/typing.nit:322 */
2147 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2148 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2149 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2150 if (UNTAG_Bool(REGB0)) {
2151 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 322);
2152 }
2153 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2154 /* syntax/typing.nit:323 */
2155 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2156 if (UNTAG_Bool(REGB0)) {
2157 } else {
2158 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2159 if (UNTAG_Bool(REGB1)) {
2160 REGB1 = TAG_Bool(false);
2161 REGB0 = REGB1;
2162 } else {
2163 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2164 REGB0 = REGB1;
2165 }
2166 }
2167 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2168 if (UNTAG_Bool(REGB0)) {
2169 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2170 fra.me.REG[6] = fra.me.REG[8];
2171 }
2172 /* syntax/typing.nit:324 */
2173 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2174 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2175 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2176 /* syntax/typing.nit:325 */
2177 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2178 /* syntax/typing.nit:326 */
2179 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2180 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2181 /* syntax/typing.nit:328 */
2182 REGB0 = TAG_Bool(true);
2183 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2184 /* syntax/typing.nit:330 */
2185 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2186 /* syntax/typing.nit:332 */
2187 REGB0 = TAG_Bool(false);
2188 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2189 /* syntax/typing.nit:334 */
2190 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2191 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2192 if (UNTAG_Bool(REGB0)) {
2193 } else {
2194 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2195 if (UNTAG_Bool(REGB1)) {
2196 REGB1 = TAG_Bool(false);
2197 REGB0 = REGB1;
2198 } else {
2199 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2200 REGB0 = REGB1;
2201 }
2202 }
2203 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2204 if (UNTAG_Bool(REGB0)) {
2205 /* syntax/typing.nit:335 */
2206 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2207 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2208 REGB1 = TAG_Bool(false);
2209 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2210 if (UNTAG_Bool(REGB2)) {
2211 } else {
2212 /* ../lib/standard/kernel.nit:195 */
2213 REGB1 = TAG_Bool((REGB0)==(REGB1));
2214 /* syntax/typing.nit:335 */
2215 REGB2 = REGB1;
2216 }
2217 if (UNTAG_Bool(REGB2)) {
2218 /* syntax/typing.nit:336 */
2219 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2220 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2221 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2222 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2223 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2224 if (UNTAG_Bool(REGB2)) {
2225 } else {
2226 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2227 if (UNTAG_Bool(REGB1)) {
2228 REGB1 = TAG_Bool(false);
2229 REGB2 = REGB1;
2230 } else {
2231 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2232 REGB2 = REGB1;
2233 }
2234 }
2235 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2236 if (UNTAG_Bool(REGB2)) {
2237 /* syntax/typing.nit:337 */
2238 if (!once_value_1) {
2239 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2240 REGB2 = TAG_Int(77);
2241 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
2242 once_value_1 = fra.me.REG[1];
2243 register_static_object(&once_value_1);
2244 } else fra.me.REG[1] = once_value_1;
2245 fra.me.REG[1] = fra.me.REG[1];
2246 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2247 } else {
2248 /* syntax/typing.nit:338 */
2249 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2250 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2251 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2252 if (UNTAG_Bool(REGB2)) {
2253 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2254 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2255 if (UNTAG_Bool(REGB2)) {
2256 } else {
2257 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2258 if (UNTAG_Bool(REGB1)) {
2259 REGB1 = TAG_Bool(false);
2260 REGB2 = REGB1;
2261 } else {
2262 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2263 REGB2 = REGB1;
2264 }
2265 }
2266 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2267 } else {
2268 REGB1 = TAG_Bool(false);
2269 REGB2 = REGB1;
2270 }
2271 if (UNTAG_Bool(REGB2)) {
2272 /* syntax/typing.nit:339 */
2273 if (!once_value_2) {
2274 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2275 REGB2 = TAG_Int(80);
2276 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
2277 once_value_2 = fra.me.REG[8];
2278 register_static_object(&once_value_2);
2279 } else fra.me.REG[8] = once_value_2;
2280 fra.me.REG[8] = fra.me.REG[8];
2281 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2282 }
2283 }
2284 }
2285 }
2286 /* syntax/typing.nit:343 */
2287 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2288 if (UNTAG_Bool(REGB2)) {
2289 } else {
2290 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2291 if (UNTAG_Bool(REGB1)) {
2292 REGB1 = TAG_Bool(false);
2293 REGB2 = REGB1;
2294 } else {
2295 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2296 REGB2 = REGB1;
2297 }
2298 }
2299 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2300 if (UNTAG_Bool(REGB2)) {
2301 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2302 if (UNTAG_Bool(REGB2)) {
2303 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 343);
2304 }
2305 /* ../lib/standard/collection/array.nit:269 */
2306 REGB2 = TAG_Int(0);
2307 /* ../lib/standard/collection/array.nit:270 */
2308 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2309 if (UNTAG_Bool(REGB1)) {
2310 } else {
2311 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2312 }
2313 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2314 /* ../lib/standard/collection/array.nit:271 */
2315 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2316 /* ../lib/standard/collection/array.nit:272 */
2317 while(1) {
2318 /* ../lib/standard/collection/array.nit:24 */
2319 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2320 if (UNTAG_Bool(REGB1)) {
2321 } else {
2322 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2323 }
2324 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2325 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2326 if (UNTAG_Bool(REGB0)) {
2327 } else {
2328 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2329 }
2330 /* ../lib/standard/kernel.nit:232 */
2331 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2332 /* ../lib/standard/collection/array.nit:272 */
2333 if (UNTAG_Bool(REGB1)) {
2334 /* ../lib/standard/collection/array.nit:273 */
2335 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2336 if (UNTAG_Bool(REGB1)) {
2337 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2338 }
2339 /* ../lib/standard/collection/array.nit:718 */
2340 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2341 /* syntax/typing.nit:344 */
2342 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2343 /* ../lib/standard/collection/array.nit:274 */
2344 REGB1 = TAG_Int(1);
2345 /* ../lib/standard/kernel.nit:235 */
2346 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2347 /* ../lib/standard/collection/array.nit:274 */
2348 REGB2 = REGB1;
2349 } else {
2350 /* ../lib/standard/collection/array.nit:272 */
2351 goto label3;
2352 }
2353 }
2354 label3: while(0);
2355 }
2356 /* syntax/typing.nit:347 */
2357 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2358 /* syntax/typing.nit:348 */
2359 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2360 /* syntax/typing.nit:349 */
2361 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2362 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2363 stack_frame_head = fra.me.prev;
2364 return;
2365 }
2366 val_t syntax___typing___AType___stype(val_t p0){
2367 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2368 val_t REGB0;
2369 val_t tmp;
2370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2371 fra.me.file = LOCATE_syntax___typing;
2372 fra.me.line = 354;
2373 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2374 fra.me.has_broke = 0;
2375 fra.me.REG_size = 2;
2376 fra.me.nitni_local_ref_head = NULL;
2377 fra.me.REG[0] = NIT_NULL;
2378 fra.me.REG[1] = NIT_NULL;
2379 fra.me.REG[0] = p0;
2380 /* syntax/typing.nit:354 */
2381 fra.me.REG[1] = fra.me.REG[0];
2382 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2383 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2384 if (UNTAG_Bool(REGB0)) {
2385 } else {
2386 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 354);
2387 }
2388 goto label1;
2389 label1: while(0);
2390 stack_frame_head = fra.me.prev;
2391 return fra.me.REG[1];
2392 }
2393 val_t syntax___typing___AType___is_typed(val_t p0){
2394 struct {struct stack_frame_t me;} fra;
2395 val_t REGB0;
2396 val_t REGB1;
2397 val_t tmp;
2398 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2399 fra.me.file = LOCATE_syntax___typing;
2400 fra.me.line = 355;
2401 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2402 fra.me.has_broke = 0;
2403 fra.me.REG_size = 1;
2404 fra.me.nitni_local_ref_head = NULL;
2405 fra.me.REG[0] = NIT_NULL;
2406 fra.me.REG[0] = p0;
2407 /* syntax/typing.nit:355 */
2408 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2409 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2410 if (UNTAG_Bool(REGB0)) {
2411 } else {
2412 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2413 if (UNTAG_Bool(REGB1)) {
2414 REGB1 = TAG_Bool(false);
2415 REGB0 = REGB1;
2416 } else {
2417 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2418 REGB0 = REGB1;
2419 }
2420 }
2421 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2422 goto label1;
2423 label1: while(0);
2424 stack_frame_head = fra.me.prev;
2425 return REGB0;
2426 }
2427 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2428 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2429 val_t tmp;
2430 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2431 fra.me.file = LOCATE_syntax___typing;
2432 fra.me.line = 358;
2433 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2434 fra.me.has_broke = 0;
2435 fra.me.REG_size = 2;
2436 fra.me.nitni_local_ref_head = NULL;
2437 fra.me.REG[0] = NIT_NULL;
2438 fra.me.REG[1] = NIT_NULL;
2439 fra.me.REG[0] = p0;
2440 fra.me.REG[1] = p1;
2441 /* syntax/typing.nit:360 */
2442 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2443 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2444 stack_frame_head = fra.me.prev;
2445 return;
2446 }
2447 val_t syntax___typing___AExpr___is_typed(val_t p0){
2448 struct {struct stack_frame_t me;} fra;
2449 val_t REGB0;
2450 val_t tmp;
2451 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2452 fra.me.file = LOCATE_syntax___typing;
2453 fra.me.line = 365;
2454 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2455 fra.me.has_broke = 0;
2456 fra.me.REG_size = 1;
2457 fra.me.nitni_local_ref_head = NULL;
2458 fra.me.REG[0] = NIT_NULL;
2459 fra.me.REG[0] = p0;
2460 /* syntax/typing.nit:365 */
2461 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2462 if (UNTAG_Bool(REGB0)) {
2463 } else {
2464 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 365);
2465 }
2466 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2467 stack_frame_head = fra.me.prev;
2468 return REGB0;
2469 }
2470 val_t syntax___typing___AExpr___is_statement(val_t p0){
2471 struct {struct stack_frame_t me;} fra;
2472 val_t REGB0;
2473 val_t REGB1;
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 = 366;
2478 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
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:366 */
2485 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2486 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2487 if (UNTAG_Bool(REGB0)) {
2488 } else {
2489 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2490 if (UNTAG_Bool(REGB1)) {
2491 REGB1 = TAG_Bool(false);
2492 REGB0 = REGB1;
2493 } else {
2494 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2495 REGB0 = REGB1;
2496 }
2497 }
2498 goto label1;
2499 label1: while(0);
2500 stack_frame_head = fra.me.prev;
2501 return REGB0;
2502 }
2503 val_t syntax___typing___AExpr___stype(val_t p0){
2504 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2505 val_t REGB0;
2506 val_t tmp;
2507 static val_t once_value_1; /* Once value */
2508 static val_t once_value_2; /* Once value */
2509 static val_t once_value_3; /* Once value */
2510 static val_t once_value_4; /* Once value */
2511 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2512 fra.me.file = LOCATE_syntax___typing;
2513 fra.me.line = 367;
2514 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2515 fra.me.has_broke = 0;
2516 fra.me.REG_size = 4;
2517 fra.me.nitni_local_ref_head = NULL;
2518 fra.me.REG[0] = NIT_NULL;
2519 fra.me.REG[1] = NIT_NULL;
2520 fra.me.REG[2] = NIT_NULL;
2521 fra.me.REG[3] = NIT_NULL;
2522 fra.me.REG[0] = p0;
2523 /* syntax/typing.nit:367 */
2524 fra.me.REG[1] = fra.me.REG[0];
2525 /* syntax/typing.nit:369 */
2526 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2527 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2528 if (UNTAG_Bool(REGB0)) {
2529 /* syntax/typing.nit:370 */
2530 REGB0 = TAG_Int(3);
2531 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2532 if (!once_value_1) {
2533 fra.me.REG[3] = BOX_NativeString("");
2534 REGB0 = TAG_Int(0);
2535 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2536 once_value_1 = fra.me.REG[3];
2537 register_static_object(&once_value_1);
2538 } else fra.me.REG[3] = once_value_1;
2539 fra.me.REG[3] = fra.me.REG[3];
2540 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2541 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2542 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2543 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2544 if (!once_value_2) {
2545 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2546 REGB0 = TAG_Int(14);
2547 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2548 once_value_2 = fra.me.REG[3];
2549 register_static_object(&once_value_2);
2550 } else fra.me.REG[3] = once_value_2;
2551 fra.me.REG[3] = fra.me.REG[3];
2552 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2553 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2554 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2555 /* syntax/typing.nit:371 */
2556 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 371);
2557 }
2558 /* syntax/typing.nit:373 */
2559 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2560 if (UNTAG_Bool(REGB0)) {
2561 /* syntax/typing.nit:374 */
2562 REGB0 = TAG_Int(3);
2563 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2564 if (!once_value_3) {
2565 fra.me.REG[3] = BOX_NativeString("");
2566 REGB0 = TAG_Int(0);
2567 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2568 once_value_3 = fra.me.REG[3];
2569 register_static_object(&once_value_3);
2570 } else fra.me.REG[3] = once_value_3;
2571 fra.me.REG[3] = fra.me.REG[3];
2572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2573 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2574 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2575 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2576 if (!once_value_4) {
2577 fra.me.REG[3] = BOX_NativeString(": is_statement");
2578 REGB0 = TAG_Int(14);
2579 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2580 once_value_4 = fra.me.REG[3];
2581 register_static_object(&once_value_4);
2582 } else fra.me.REG[3] = once_value_4;
2583 fra.me.REG[3] = fra.me.REG[3];
2584 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2585 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2586 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2587 /* syntax/typing.nit:375 */
2588 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 375);
2589 }
2590 /* syntax/typing.nit:377 */
2591 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2592 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2593 if (UNTAG_Bool(REGB0)) {
2594 } else {
2595 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 377);
2596 }
2597 goto label5;
2598 label5: while(0);
2599 stack_frame_head = fra.me.prev;
2600 return fra.me.REG[1];
2601 }
2602 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2603 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2604 val_t REGB0;
2605 val_t tmp;
2606 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2607 fra.me.file = LOCATE_syntax___typing;
2608 fra.me.line = 381;
2609 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2610 fra.me.has_broke = 0;
2611 fra.me.REG_size = 2;
2612 fra.me.nitni_local_ref_head = NULL;
2613 fra.me.REG[0] = NIT_NULL;
2614 fra.me.REG[1] = NIT_NULL;
2615 fra.me.REG[0] = p0;
2616 fra.me.REG[1] = p1;
2617 /* syntax/typing.nit:384 */
2618 REGB0 = TAG_Bool(true);
2619 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2620 stack_frame_head = fra.me.prev;
2621 return;
2622 }
2623 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2624 struct {struct stack_frame_t me;} fra;
2625 val_t REGB0;
2626 val_t tmp;
2627 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2628 fra.me.file = LOCATE_syntax___typing;
2629 fra.me.line = 387;
2630 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2631 fra.me.has_broke = 0;
2632 fra.me.REG_size = 1;
2633 fra.me.nitni_local_ref_head = NULL;
2634 fra.me.REG[0] = NIT_NULL;
2635 fra.me.REG[0] = p0;
2636 /* syntax/typing.nit:388 */
2637 REGB0 = TAG_Bool(false);
2638 goto label1;
2639 label1: while(0);
2640 stack_frame_head = fra.me.prev;
2641 return REGB0;
2642 }
2643 val_t syntax___typing___AExpr___is_self(val_t p0){
2644 struct {struct stack_frame_t me;} fra;
2645 val_t REGB0;
2646 val_t tmp;
2647 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2648 fra.me.file = LOCATE_syntax___typing;
2649 fra.me.line = 390;
2650 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2651 fra.me.has_broke = 0;
2652 fra.me.REG_size = 1;
2653 fra.me.nitni_local_ref_head = NULL;
2654 fra.me.REG[0] = NIT_NULL;
2655 fra.me.REG[0] = p0;
2656 /* syntax/typing.nit:391 */
2657 REGB0 = TAG_Bool(false);
2658 goto label1;
2659 label1: while(0);
2660 stack_frame_head = fra.me.prev;
2661 return REGB0;
2662 }
2663 val_t syntax___typing___AExpr___its_variable(val_t p0){
2664 struct {struct stack_frame_t me;} fra;
2665 val_t tmp;
2666 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2667 fra.me.file = LOCATE_syntax___typing;
2668 fra.me.line = 393;
2669 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2670 fra.me.has_broke = 0;
2671 fra.me.REG_size = 1;
2672 fra.me.nitni_local_ref_head = NULL;
2673 fra.me.REG[0] = NIT_NULL;
2674 fra.me.REG[0] = p0;
2675 /* syntax/typing.nit:394 */
2676 fra.me.REG[0] = NIT_NULL;
2677 goto label1;
2678 label1: while(0);
2679 stack_frame_head = fra.me.prev;
2680 return fra.me.REG[0];
2681 }
2682 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2683 struct {struct stack_frame_t me;} fra;
2684 val_t tmp;
2685 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2686 fra.me.file = LOCATE_syntax___typing;
2687 fra.me.line = 396;
2688 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2689 fra.me.has_broke = 0;
2690 fra.me.REG_size = 1;
2691 fra.me.nitni_local_ref_head = NULL;
2692 fra.me.REG[0] = NIT_NULL;
2693 fra.me.REG[0] = p0;
2694 /* syntax/typing.nit:396 */
2695 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2696 stack_frame_head = fra.me.prev;
2697 return fra.me.REG[0];
2698 }
2699 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2700 struct {struct stack_frame_t me;} fra;
2701 val_t tmp;
2702 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2703 fra.me.file = LOCATE_syntax___typing;
2704 fra.me.line = 399;
2705 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2706 fra.me.has_broke = 0;
2707 fra.me.REG_size = 1;
2708 fra.me.nitni_local_ref_head = NULL;
2709 fra.me.REG[0] = NIT_NULL;
2710 fra.me.REG[0] = p0;
2711 /* syntax/typing.nit:399 */
2712 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2713 stack_frame_head = fra.me.prev;
2714 return fra.me.REG[0];
2715 }
2716 void syntax___typing___AExpr___warn_parentheses(val_t p0, val_t p1){
2717 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2718 val_t tmp;
2719 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2720 fra.me.file = LOCATE_syntax___typing;
2721 fra.me.line = 402;
2722 fra.me.meth = LOCATE_syntax___typing___AExpr___warn_parentheses;
2723 fra.me.has_broke = 0;
2724 fra.me.REG_size = 2;
2725 fra.me.nitni_local_ref_head = NULL;
2726 fra.me.REG[0] = NIT_NULL;
2727 fra.me.REG[1] = NIT_NULL;
2728 fra.me.REG[0] = p0;
2729 fra.me.REG[1] = p1;
2730 stack_frame_head = fra.me.prev;
2731 return;
2732 }
2733 void syntax___typing___AParExpr___warn_parentheses(val_t p0, val_t p1){
2734 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2735 val_t REGB0;
2736 val_t tmp;
2737 static val_t once_value_1; /* Once value */
2738 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2739 fra.me.file = LOCATE_syntax___typing;
2740 fra.me.line = 409;
2741 fra.me.meth = LOCATE_syntax___typing___AParExpr___warn_parentheses;
2742 fra.me.has_broke = 0;
2743 fra.me.REG_size = 3;
2744 fra.me.nitni_local_ref_head = NULL;
2745 fra.me.REG[0] = NIT_NULL;
2746 fra.me.REG[1] = NIT_NULL;
2747 fra.me.REG[2] = NIT_NULL;
2748 fra.me.REG[0] = p0;
2749 fra.me.REG[1] = p1;
2750 /* syntax/typing.nit:411 */
2751 if (!once_value_1) {
2752 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2753 REGB0 = TAG_Int(33);
2754 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2755 once_value_1 = fra.me.REG[2];
2756 register_static_object(&once_value_1);
2757 } else fra.me.REG[2] = once_value_1;
2758 fra.me.REG[2] = fra.me.REG[2];
2759 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2760 stack_frame_head = fra.me.prev;
2761 return;
2762 }
2763 void syntax___typing___AParExprs___after_typing(val_t p0, val_t p1){
2764 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2765 val_t REGB0;
2766 val_t tmp;
2767 static val_t once_value_1; /* Once value */
2768 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2769 fra.me.file = LOCATE_syntax___typing;
2770 fra.me.line = 416;
2771 fra.me.meth = LOCATE_syntax___typing___AParExprs___after_typing;
2772 fra.me.has_broke = 0;
2773 fra.me.REG_size = 3;
2774 fra.me.nitni_local_ref_head = NULL;
2775 fra.me.REG[0] = NIT_NULL;
2776 fra.me.REG[1] = NIT_NULL;
2777 fra.me.REG[2] = NIT_NULL;
2778 fra.me.REG[0] = p0;
2779 fra.me.REG[1] = p1;
2780 /* syntax/typing.nit:418 */
2781 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
2782 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2783 if (UNTAG_Bool(REGB0)) {
2784 /* syntax/typing.nit:419 */
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] = NEW_String_standard___string___String___with_native(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 }
2795 stack_frame_head = fra.me.prev;
2796 return;
2797 }
2798 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2799 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2800 val_t REGB0;
2801 val_t tmp;
2802 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2803 fra.me.file = LOCATE_syntax___typing;
2804 fra.me.line = 426;
2805 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2806 fra.me.has_broke = 0;
2807 fra.me.REG_size = 2;
2808 fra.me.nitni_local_ref_head = NULL;
2809 fra.me.REG[0] = NIT_NULL;
2810 fra.me.REG[1] = NIT_NULL;
2811 fra.me.REG[0] = p0;
2812 /* syntax/typing.nit:426 */
2813 fra.me.REG[1] = fra.me.REG[0];
2814 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2815 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2816 if (UNTAG_Bool(REGB0)) {
2817 } else {
2818 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 426);
2819 }
2820 goto label1;
2821 label1: while(0);
2822 stack_frame_head = fra.me.prev;
2823 return fra.me.REG[1];
2824 }
2825 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2826 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2827 val_t REGB0;
2828 val_t REGB1;
2829 val_t tmp;
2830 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2831 fra.me.file = LOCATE_syntax___typing;
2832 fra.me.line = 428;
2833 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2834 fra.me.has_broke = 0;
2835 fra.me.REG_size = 5;
2836 fra.me.nitni_local_ref_head = NULL;
2837 fra.me.REG[0] = NIT_NULL;
2838 fra.me.REG[1] = NIT_NULL;
2839 fra.me.REG[2] = NIT_NULL;
2840 fra.me.REG[3] = NIT_NULL;
2841 fra.me.REG[4] = NIT_NULL;
2842 fra.me.REG[0] = p0;
2843 fra.me.REG[1] = p1;
2844 /* syntax/typing.nit:430 */
2845 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2846 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2847 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2848 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2849 /* syntax/typing.nit:431 */
2850 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2851 /* syntax/typing.nit:432 */
2852 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2853 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2854 /* syntax/typing.nit:433 */
2855 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2856 /* syntax/typing.nit:434 */
2857 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2858 if (UNTAG_Bool(REGB0)) {
2859 } else {
2860 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2861 if (UNTAG_Bool(REGB1)) {
2862 REGB1 = TAG_Bool(false);
2863 REGB0 = REGB1;
2864 } else {
2865 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2866 REGB0 = REGB1;
2867 }
2868 }
2869 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2870 if (UNTAG_Bool(REGB0)) {
2871 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2872 }
2873 /* syntax/typing.nit:436 */
2874 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2875 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2876 if (UNTAG_Bool(REGB0)) {
2877 } else {
2878 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2879 if (UNTAG_Bool(REGB1)) {
2880 REGB1 = TAG_Bool(false);
2881 REGB0 = REGB1;
2882 } else {
2883 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2884 REGB0 = REGB1;
2885 }
2886 }
2887 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2888 if (UNTAG_Bool(REGB0)) {
2889 /* syntax/typing.nit:437 */
2890 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2891 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2892 if (UNTAG_Bool(REGB0)) {
2893 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 437);
2894 }
2895 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2896 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2897 if (UNTAG_Bool(REGB0)) {
2898 goto label1;
2899 }
2900 /* syntax/typing.nit:438 */
2901 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2902 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2903 if (UNTAG_Bool(REGB0)) {
2904 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 438);
2905 }
2906 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2907 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2908 /* syntax/typing.nit:439 */
2909 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2910 if (UNTAG_Bool(REGB0)) {
2911 } else {
2912 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2913 if (UNTAG_Bool(REGB1)) {
2914 REGB1 = TAG_Bool(false);
2915 REGB0 = REGB1;
2916 } else {
2917 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2918 REGB0 = REGB1;
2919 }
2920 }
2921 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2922 if (UNTAG_Bool(REGB0)) {
2923 /* syntax/typing.nit:440 */
2924 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2925 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2926 }
2927 } else {
2928 /* syntax/typing.nit:442 */
2929 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2930 if (UNTAG_Bool(REGB0)) {
2931 } else {
2932 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2933 if (UNTAG_Bool(REGB1)) {
2934 REGB1 = TAG_Bool(false);
2935 REGB0 = REGB1;
2936 } else {
2937 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2938 REGB0 = REGB1;
2939 }
2940 }
2941 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2942 if (UNTAG_Bool(REGB0)) {
2943 /* syntax/typing.nit:443 */
2944 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2945 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2946 if (UNTAG_Bool(REGB0)) {
2947 goto label1;
2948 }
2949 /* syntax/typing.nit:444 */
2950 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2951 if (UNTAG_Bool(REGB0)) {
2952 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 444);
2953 }
2954 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2955 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2956 } else {
2957 /* syntax/typing.nit:446 */
2958 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2959 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2960 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2961 }
2962 }
2963 /* syntax/typing.nit:448 */
2964 REGB0 = TAG_Bool(true);
2965 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2966 label1: while(0);
2967 stack_frame_head = fra.me.prev;
2968 return;
2969 }
2970 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2971 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2972 val_t REGB0;
2973 val_t tmp;
2974 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2975 fra.me.file = LOCATE_syntax___typing;
2976 fra.me.line = 453;
2977 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2978 fra.me.has_broke = 0;
2979 fra.me.REG_size = 3;
2980 fra.me.nitni_local_ref_head = NULL;
2981 fra.me.REG[0] = NIT_NULL;
2982 fra.me.REG[1] = NIT_NULL;
2983 fra.me.REG[2] = NIT_NULL;
2984 fra.me.REG[0] = p0;
2985 fra.me.REG[1] = p1;
2986 /* syntax/typing.nit:455 */
2987 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2988 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));
2989 /* syntax/typing.nit:464 */
2990 REGB0 = TAG_Bool(true);
2991 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2992 stack_frame_head = fra.me.prev;
2993 return;
2994 }
2995 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){
2996 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2997 val_t REGB0;
2998 fun_t CREG[1];
2999 val_t tmp;
3000 static val_t once_value_2; /* Once value */
3001 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3002 fra.me.file = LOCATE_syntax___typing;
3003 fra.me.line = 0;
3004 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3005 fra.me.has_broke = 0;
3006 fra.me.REG_size = 2;
3007 fra.me.nitni_local_ref_head = NULL;
3008 fra.me.REG[0] = NIT_NULL;
3009 fra.me.REG[1] = NIT_NULL;
3010 fra.me.closure_ctx = closctx_param;
3011 fra.me.closure_funs = CREG;
3012 fra.me.REG[0] = p0;
3013 CREG[0] = clos_fun0;
3014 /* syntax/typing.nit:456 */
3015 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3016 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
3017 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3018 if (UNTAG_Bool(REGB0)) {
3019 /* syntax/typing.nit:457 */
3020 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
3021 } else {
3022 /* syntax/typing.nit:458 */
3023 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3024 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
3025 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3026 if (UNTAG_Bool(REGB0)) {
3027 /* syntax/typing.nit:459 */
3028 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3029 REGB0 = TAG_Bool(true);
3030 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
3031 /* syntax/typing.nit:460 */
3032 if (!once_value_2) {
3033 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
3034 REGB0 = TAG_Int(29);
3035 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
3036 once_value_2 = fra.me.REG[1];
3037 register_static_object(&once_value_2);
3038 } else fra.me.REG[1] = once_value_2;
3039 fra.me.REG[1] = fra.me.REG[1];
3040 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
3041 }
3042 }
3043 stack_frame_head = fra.me.prev;
3044 return;
3045 }
3046 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
3047 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3048 val_t REGB0;
3049 val_t REGB1;
3050 val_t tmp;
3051 static val_t once_value_1; /* Once value */
3052 static val_t once_value_3; /* Once value */
3053 static val_t once_value_4; /* Once value */
3054 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3055 fra.me.file = LOCATE_syntax___typing;
3056 fra.me.line = 469;
3057 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
3058 fra.me.has_broke = 0;
3059 fra.me.REG_size = 5;
3060 fra.me.nitni_local_ref_head = NULL;
3061 fra.me.REG[0] = NIT_NULL;
3062 fra.me.REG[1] = NIT_NULL;
3063 fra.me.REG[2] = NIT_NULL;
3064 fra.me.REG[3] = NIT_NULL;
3065 fra.me.REG[4] = NIT_NULL;
3066 fra.me.REG[0] = p0;
3067 fra.me.REG[1] = p1;
3068 /* syntax/typing.nit:471 */
3069 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3070 /* syntax/typing.nit:472 */
3071 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
3072 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
3073 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3074 if (UNTAG_Bool(REGB0)) {
3075 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 472);
3076 }
3077 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
3078 /* syntax/typing.nit:474 */
3079 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
3080 if (UNTAG_Bool(REGB0)) {
3081 /* syntax/typing.nit:475 */
3082 if (!once_value_1) {
3083 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
3084 REGB0 = TAG_Int(82);
3085 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3086 once_value_1 = fra.me.REG[3];
3087 register_static_object(&once_value_1);
3088 } else fra.me.REG[3] = once_value_1;
3089 fra.me.REG[3] = fra.me.REG[3];
3090 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3091 /* syntax/typing.nit:476 */
3092 goto label2;
3093 }
3094 /* syntax/typing.nit:479 */
3095 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3096 /* syntax/typing.nit:480 */
3097 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3098 if (UNTAG_Bool(REGB0)) {
3099 } else {
3100 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3101 if (UNTAG_Bool(REGB1)) {
3102 REGB1 = TAG_Bool(false);
3103 REGB0 = REGB1;
3104 } else {
3105 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3106 REGB0 = REGB1;
3107 }
3108 }
3109 if (UNTAG_Bool(REGB0)) {
3110 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3111 if (UNTAG_Bool(REGB0)) {
3112 } else {
3113 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3114 if (UNTAG_Bool(REGB1)) {
3115 REGB1 = TAG_Bool(false);
3116 REGB0 = REGB1;
3117 } else {
3118 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3119 REGB0 = REGB1;
3120 }
3121 }
3122 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3123 } else {
3124 REGB1 = TAG_Bool(false);
3125 REGB0 = REGB1;
3126 }
3127 if (UNTAG_Bool(REGB0)) {
3128 /* syntax/typing.nit:481 */
3129 if (!once_value_3) {
3130 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
3131 REGB0 = TAG_Int(42);
3132 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3133 once_value_3 = fra.me.REG[4];
3134 register_static_object(&once_value_3);
3135 } else fra.me.REG[4] = once_value_3;
3136 fra.me.REG[4] = fra.me.REG[4];
3137 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3138 } else {
3139 /* syntax/typing.nit:482 */
3140 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3141 if (UNTAG_Bool(REGB0)) {
3142 } else {
3143 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3144 if (UNTAG_Bool(REGB1)) {
3145 REGB1 = TAG_Bool(false);
3146 REGB0 = REGB1;
3147 } else {
3148 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3149 REGB0 = REGB1;
3150 }
3151 }
3152 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3153 if (UNTAG_Bool(REGB0)) {
3154 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3155 if (UNTAG_Bool(REGB0)) {
3156 } else {
3157 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3158 if (UNTAG_Bool(REGB1)) {
3159 REGB1 = TAG_Bool(false);
3160 REGB0 = REGB1;
3161 } else {
3162 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3163 REGB0 = REGB1;
3164 }
3165 }
3166 } else {
3167 REGB1 = TAG_Bool(false);
3168 REGB0 = REGB1;
3169 }
3170 if (UNTAG_Bool(REGB0)) {
3171 /* syntax/typing.nit:483 */
3172 if (!once_value_4) {
3173 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
3174 REGB0 = TAG_Int(40);
3175 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3176 once_value_4 = fra.me.REG[4];
3177 register_static_object(&once_value_4);
3178 } else fra.me.REG[4] = once_value_4;
3179 fra.me.REG[4] = fra.me.REG[4];
3180 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3181 } else {
3182 /* syntax/typing.nit:484 */
3183 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3184 if (UNTAG_Bool(REGB0)) {
3185 } else {
3186 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3187 if (UNTAG_Bool(REGB1)) {
3188 REGB1 = TAG_Bool(false);
3189 REGB0 = REGB1;
3190 } else {
3191 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3192 REGB0 = REGB1;
3193 }
3194 }
3195 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3196 if (UNTAG_Bool(REGB0)) {
3197 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3198 if (UNTAG_Bool(REGB0)) {
3199 } else {
3200 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3201 if (UNTAG_Bool(REGB1)) {
3202 REGB1 = TAG_Bool(false);
3203 REGB0 = REGB1;
3204 } else {
3205 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3206 REGB0 = REGB1;
3207 }
3208 }
3209 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3210 } else {
3211 REGB1 = TAG_Bool(false);
3212 REGB0 = REGB1;
3213 }
3214 if (UNTAG_Bool(REGB0)) {
3215 /* syntax/typing.nit:485 */
3216 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3217 }
3218 }
3219 }
3220 /* syntax/typing.nit:487 */
3221 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3222 if (UNTAG_Bool(REGB0)) {
3223 } else {
3224 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3225 if (UNTAG_Bool(REGB1)) {
3226 REGB1 = TAG_Bool(false);
3227 REGB0 = REGB1;
3228 } else {
3229 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3230 REGB0 = REGB1;
3231 }
3232 }
3233 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3234 if (UNTAG_Bool(REGB0)) {
3235 /* syntax/typing.nit:488 */
3236 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3237 if (UNTAG_Bool(REGB0)) {
3238 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 488);
3239 }
3240 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3241 }
3242 /* syntax/typing.nit:490 */
3243 REGB0 = TAG_Bool(true);
3244 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3245 label2: while(0);
3246 stack_frame_head = fra.me.prev;
3247 return;
3248 }
3249 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3250 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3251 val_t REGB0;
3252 val_t REGB1;
3253 val_t tmp;
3254 static val_t once_value_2; /* Once value */
3255 static val_t once_value_3; /* Once value */
3256 static val_t once_value_4; /* Once value */
3257 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3258 fra.me.file = LOCATE_syntax___typing;
3259 fra.me.line = 495;
3260 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3261 fra.me.has_broke = 0;
3262 fra.me.REG_size = 5;
3263 fra.me.nitni_local_ref_head = NULL;
3264 fra.me.REG[0] = NIT_NULL;
3265 fra.me.REG[1] = NIT_NULL;
3266 fra.me.REG[2] = NIT_NULL;
3267 fra.me.REG[3] = NIT_NULL;
3268 fra.me.REG[4] = NIT_NULL;
3269 fra.me.REG[0] = p0;
3270 fra.me.REG[1] = p1;
3271 /* syntax/typing.nit:497 */
3272 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3273 /* syntax/typing.nit:498 */
3274 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3275 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3276 /* syntax/typing.nit:499 */
3277 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3278 if (UNTAG_Bool(REGB0)) {
3279 } else {
3280 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3281 if (UNTAG_Bool(REGB1)) {
3282 REGB1 = TAG_Bool(false);
3283 REGB0 = REGB1;
3284 } else {
3285 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3286 REGB0 = REGB1;
3287 }
3288 }
3289 if (UNTAG_Bool(REGB0)) {
3290 goto label1;
3291 }
3292 /* syntax/typing.nit:501 */
3293 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3294 if (UNTAG_Bool(REGB0)) {
3295 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 501);
3296 }
3297 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
3298 if (UNTAG_Bool(REGB0)) {
3299 /* syntax/typing.nit:502 */
3300 if (!once_value_2) {
3301 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3302 REGB0 = TAG_Int(39);
3303 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3304 once_value_2 = fra.me.REG[3];
3305 register_static_object(&once_value_2);
3306 } else fra.me.REG[3] = once_value_2;
3307 fra.me.REG[3] = fra.me.REG[3];
3308 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3309 /* syntax/typing.nit:503 */
3310 goto label1;
3311 }
3312 /* syntax/typing.nit:506 */
3313 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3314 if (UNTAG_Bool(REGB0)) {
3315 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 506);
3316 }
3317 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3318 /* syntax/typing.nit:507 */
3319 fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3320 /* syntax/typing.nit:508 */
3321 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3322 if (UNTAG_Bool(REGB0)) {
3323 } else {
3324 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3325 if (UNTAG_Bool(REGB1)) {
3326 REGB1 = TAG_Bool(false);
3327 REGB0 = REGB1;
3328 } else {
3329 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3330 REGB0 = REGB1;
3331 }
3332 }
3333 if (UNTAG_Bool(REGB0)) {
3334 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3335 if (UNTAG_Bool(REGB0)) {
3336 } else {
3337 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3338 if (UNTAG_Bool(REGB1)) {
3339 REGB1 = TAG_Bool(false);
3340 REGB0 = REGB1;
3341 } else {
3342 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3343 REGB0 = REGB1;
3344 }
3345 }
3346 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3347 } else {
3348 REGB1 = TAG_Bool(false);
3349 REGB0 = REGB1;
3350 }
3351 if (UNTAG_Bool(REGB0)) {
3352 /* syntax/typing.nit:509 */
3353 if (!once_value_3) {
3354 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3355 REGB0 = TAG_Int(52);
3356 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3357 once_value_3 = fra.me.REG[4];
3358 register_static_object(&once_value_3);
3359 } else fra.me.REG[4] = once_value_3;
3360 fra.me.REG[4] = fra.me.REG[4];
3361 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3362 } else {
3363 /* syntax/typing.nit:510 */
3364 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3365 if (UNTAG_Bool(REGB0)) {
3366 } else {
3367 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3368 if (UNTAG_Bool(REGB1)) {
3369 REGB1 = TAG_Bool(false);
3370 REGB0 = REGB1;
3371 } else {
3372 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3373 REGB0 = REGB1;
3374 }
3375 }
3376 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3377 if (UNTAG_Bool(REGB0)) {
3378 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3379 if (UNTAG_Bool(REGB0)) {
3380 } else {
3381 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3382 if (UNTAG_Bool(REGB1)) {
3383 REGB1 = TAG_Bool(false);
3384 REGB0 = REGB1;
3385 } else {
3386 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3387 REGB0 = REGB1;
3388 }
3389 }
3390 } else {
3391 REGB1 = TAG_Bool(false);
3392 REGB0 = REGB1;
3393 }
3394 if (UNTAG_Bool(REGB0)) {
3395 /* syntax/typing.nit:511 */
3396 if (!once_value_4) {
3397 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3398 REGB0 = TAG_Int(53);
3399 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3400 once_value_4 = fra.me.REG[4];
3401 register_static_object(&once_value_4);
3402 } else fra.me.REG[4] = once_value_4;
3403 fra.me.REG[4] = fra.me.REG[4];
3404 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3405 } else {
3406 /* syntax/typing.nit:512 */
3407 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3408 if (UNTAG_Bool(REGB0)) {
3409 } else {
3410 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3411 if (UNTAG_Bool(REGB1)) {
3412 REGB1 = TAG_Bool(false);
3413 REGB0 = REGB1;
3414 } else {
3415 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3416 REGB0 = REGB1;
3417 }
3418 }
3419 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3420 if (UNTAG_Bool(REGB0)) {
3421 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3422 if (UNTAG_Bool(REGB0)) {
3423 } else {
3424 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3425 if (UNTAG_Bool(REGB1)) {
3426 REGB1 = TAG_Bool(false);
3427 REGB0 = REGB1;
3428 } else {
3429 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3430 REGB0 = REGB1;
3431 }
3432 }
3433 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3434 } else {
3435 REGB1 = TAG_Bool(false);
3436 REGB0 = REGB1;
3437 }
3438 if (UNTAG_Bool(REGB0)) {
3439 /* syntax/typing.nit:513 */
3440 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3441 }
3442 }
3443 }
3444 /* syntax/typing.nit:515 */
3445 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3446 if (UNTAG_Bool(REGB0)) {
3447 } else {
3448 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3449 if (UNTAG_Bool(REGB1)) {
3450 REGB1 = TAG_Bool(false);
3451 REGB0 = REGB1;
3452 } else {
3453 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3454 REGB0 = REGB1;
3455 }
3456 }
3457 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3458 if (UNTAG_Bool(REGB0)) {
3459 /* syntax/typing.nit:516 */
3460 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3461 if (UNTAG_Bool(REGB0)) {
3462 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 516);
3463 }
3464 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3465 }
3466 /* syntax/typing.nit:518 */
3467 REGB0 = TAG_Bool(true);
3468 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3469 label1: while(0);
3470 stack_frame_head = fra.me.prev;
3471 return;
3472 }
3473 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3474 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3475 val_t REGB0;
3476 val_t REGB1;
3477 val_t tmp;
3478 static val_t once_value_2; /* Once value */
3479 static val_t once_value_3; /* Once value */
3480 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3481 fra.me.file = LOCATE_syntax___typing;
3482 fra.me.line = 523;
3483 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3484 fra.me.has_broke = 0;
3485 fra.me.REG_size = 5;
3486 fra.me.nitni_local_ref_head = NULL;
3487 fra.me.REG[0] = NIT_NULL;
3488 fra.me.REG[1] = NIT_NULL;
3489 fra.me.REG[2] = NIT_NULL;
3490 fra.me.REG[3] = NIT_NULL;
3491 fra.me.REG[4] = NIT_NULL;
3492 fra.me.REG[0] = p0;
3493 fra.me.REG[1] = p1;
3494 /* syntax/typing.nit:525 */
3495 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3496 /* syntax/typing.nit:526 */
3497 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3498 /* syntax/typing.nit:527 */
3499 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3500 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3501 /* syntax/typing.nit:528 */
3502 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3503 if (UNTAG_Bool(REGB0)) {
3504 } else {
3505 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3506 if (UNTAG_Bool(REGB1)) {
3507 REGB1 = TAG_Bool(false);
3508 REGB0 = REGB1;
3509 } else {
3510 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3511 REGB0 = REGB1;
3512 }
3513 }
3514 if (UNTAG_Bool(REGB0)) {
3515 goto label1;
3516 }
3517 /* syntax/typing.nit:530 */
3518 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3519 if (UNTAG_Bool(REGB0)) {
3520 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 530);
3521 }
3522 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3524 /* syntax/typing.nit:532 */
3525 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3526 if (UNTAG_Bool(REGB0)) {
3527 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 532);
3528 }
3529 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3530 /* syntax/typing.nit:533 */
3531 fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3532 /* syntax/typing.nit:534 */
3533 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3534 if (UNTAG_Bool(REGB0)) {
3535 } else {
3536 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3537 if (UNTAG_Bool(REGB1)) {
3538 REGB1 = TAG_Bool(false);
3539 REGB0 = REGB1;
3540 } else {
3541 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3542 REGB0 = REGB1;
3543 }
3544 }
3545 if (UNTAG_Bool(REGB0)) {
3546 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3547 if (UNTAG_Bool(REGB0)) {
3548 } else {
3549 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3550 if (UNTAG_Bool(REGB1)) {
3551 REGB1 = TAG_Bool(false);
3552 REGB0 = REGB1;
3553 } else {
3554 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3555 REGB0 = REGB1;
3556 }
3557 }
3558 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3559 } else {
3560 REGB1 = TAG_Bool(false);
3561 REGB0 = REGB1;
3562 }
3563 if (UNTAG_Bool(REGB0)) {
3564 /* syntax/typing.nit:535 */
3565 if (!once_value_2) {
3566 fra.me.REG[4] = BOX_NativeString("Error: break with a value required in this block.");
3567 REGB0 = TAG_Int(49);
3568 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3569 once_value_2 = fra.me.REG[4];
3570 register_static_object(&once_value_2);
3571 } else fra.me.REG[4] = once_value_2;
3572 fra.me.REG[4] = fra.me.REG[4];
3573 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3574 } else {
3575 /* syntax/typing.nit:536 */
3576 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3577 if (UNTAG_Bool(REGB0)) {
3578 } else {
3579 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3580 if (UNTAG_Bool(REGB1)) {
3581 REGB1 = TAG_Bool(false);
3582 REGB0 = REGB1;
3583 } else {
3584 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3585 REGB0 = REGB1;
3586 }
3587 }
3588 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3589 if (UNTAG_Bool(REGB0)) {
3590 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3591 if (UNTAG_Bool(REGB0)) {
3592 } else {
3593 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3594 if (UNTAG_Bool(REGB1)) {
3595 REGB1 = TAG_Bool(false);
3596 REGB0 = REGB1;
3597 } else {
3598 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3599 REGB0 = REGB1;
3600 }
3601 }
3602 } else {
3603 REGB1 = TAG_Bool(false);
3604 REGB0 = REGB1;
3605 }
3606 if (UNTAG_Bool(REGB0)) {
3607 /* syntax/typing.nit:537 */
3608 if (!once_value_3) {
3609 fra.me.REG[4] = BOX_NativeString("Error: break without value required in this block.");
3610 REGB0 = TAG_Int(50);
3611 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3612 once_value_3 = fra.me.REG[4];
3613 register_static_object(&once_value_3);
3614 } else fra.me.REG[4] = once_value_3;
3615 fra.me.REG[4] = fra.me.REG[4];
3616 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3617 } else {
3618 /* syntax/typing.nit:538 */
3619 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3620 if (UNTAG_Bool(REGB0)) {
3621 } else {
3622 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3623 if (UNTAG_Bool(REGB1)) {
3624 REGB1 = TAG_Bool(false);
3625 REGB0 = REGB1;
3626 } else {
3627 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3628 REGB0 = REGB1;
3629 }
3630 }
3631 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3632 if (UNTAG_Bool(REGB0)) {
3633 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3634 if (UNTAG_Bool(REGB0)) {
3635 } else {
3636 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3637 if (UNTAG_Bool(REGB1)) {
3638 REGB1 = TAG_Bool(false);
3639 REGB0 = REGB1;
3640 } else {
3641 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3642 REGB0 = REGB1;
3643 }
3644 }
3645 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3646 } else {
3647 REGB1 = TAG_Bool(false);
3648 REGB0 = REGB1;
3649 }
3650 if (UNTAG_Bool(REGB0)) {
3651 /* syntax/typing.nit:540 */
3652 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3653 if (UNTAG_Bool(REGB0)) {
3654 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 540);
3655 }
3656 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3657 }
3658 }
3659 }
3660 /* syntax/typing.nit:542 */
3661 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3662 if (UNTAG_Bool(REGB0)) {
3663 } else {
3664 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3665 if (UNTAG_Bool(REGB1)) {
3666 REGB1 = TAG_Bool(false);
3667 REGB0 = REGB1;
3668 } else {
3669 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3670 REGB0 = REGB1;
3671 }
3672 }
3673 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3674 if (UNTAG_Bool(REGB0)) {
3675 /* syntax/typing.nit:543 */
3676 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3677 if (UNTAG_Bool(REGB0)) {
3678 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 543);
3679 }
3680 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3681 }
3682 /* syntax/typing.nit:545 */
3683 REGB0 = TAG_Bool(true);
3684 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3685 label1: while(0);
3686 stack_frame_head = fra.me.prev;
3687 return;
3688 }
3689 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3690 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3691 val_t REGB0;
3692 val_t tmp;
3693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3694 fra.me.file = LOCATE_syntax___typing;
3695 fra.me.line = 550;
3696 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3697 fra.me.has_broke = 0;
3698 fra.me.REG_size = 2;
3699 fra.me.nitni_local_ref_head = NULL;
3700 fra.me.REG[0] = NIT_NULL;
3701 fra.me.REG[1] = NIT_NULL;
3702 fra.me.REG[0] = p0;
3703 fra.me.REG[1] = p1;
3704 /* syntax/typing.nit:552 */
3705 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3706 /* syntax/typing.nit:553 */
3707 REGB0 = TAG_Bool(true);
3708 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3709 stack_frame_head = fra.me.prev;
3710 return;
3711 }
3712 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3713 struct {struct stack_frame_t me;} fra;
3714 val_t tmp;
3715 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3716 fra.me.file = LOCATE_syntax___typing;
3717 fra.me.line = 560;
3718 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3719 fra.me.has_broke = 0;
3720 fra.me.REG_size = 1;
3721 fra.me.nitni_local_ref_head = NULL;
3722 fra.me.REG[0] = NIT_NULL;
3723 fra.me.REG[0] = p0;
3724 /* syntax/typing.nit:560 */
3725 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3726 stack_frame_head = fra.me.prev;
3727 return fra.me.REG[0];
3728 }
3729 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3730 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3731 val_t REGB0;
3732 val_t REGB1;
3733 val_t tmp;
3734 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3735 fra.me.file = LOCATE_syntax___typing;
3736 fra.me.line = 563;
3737 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3738 fra.me.has_broke = 0;
3739 fra.me.REG_size = 7;
3740 fra.me.nitni_local_ref_head = NULL;
3741 fra.me.REG[0] = NIT_NULL;
3742 fra.me.REG[1] = NIT_NULL;
3743 fra.me.REG[2] = NIT_NULL;
3744 fra.me.REG[3] = NIT_NULL;
3745 fra.me.REG[4] = NIT_NULL;
3746 fra.me.REG[5] = NIT_NULL;
3747 fra.me.REG[6] = NIT_NULL;
3748 fra.me.REG[0] = p0;
3749 fra.me.REG[1] = p1;
3750 fra.me.REG[2] = p2;
3751 fra.me.REG[3] = p3;
3752 REGB0 = p4;
3753 /* syntax/typing.nit:567 */
3754 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3755 /* syntax/typing.nit:568 */
3756 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3757 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3758 /* syntax/typing.nit:571 */
3759 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3760 /* syntax/typing.nit:572 */
3761 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3762 /* syntax/typing.nit:573 */
3763 if (UNTAG_Bool(REGB0)) {
3764 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3765 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3766 }
3767 /* syntax/typing.nit:576 */
3768 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3769 /* syntax/typing.nit:579 */
3770 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3771 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3772 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3773 if (UNTAG_Bool(REGB1)) {
3774 /* syntax/typing.nit:580 */
3775 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3776 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3777 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3778 }
3779 /* syntax/typing.nit:584 */
3780 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3781 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3782 if (UNTAG_Bool(REGB1)) {
3783 /* syntax/typing.nit:585 */
3784 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3785 /* syntax/typing.nit:586 */
3786 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3787 } else {
3788 /* syntax/typing.nit:588 */
3789 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3790 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]);
3791 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3792 }
3793 /* syntax/typing.nit:591 */
3794 if (UNTAG_Bool(REGB0)) {
3795 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3796 }
3797 /* syntax/typing.nit:592 */
3798 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3799 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3800 /* syntax/typing.nit:593 */
3801 REGB0 = TAG_Bool(true);
3802 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3803 stack_frame_head = fra.me.prev;
3804 return;
3805 }
3806 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3807 struct {struct stack_frame_t me;} fra;
3808 val_t tmp;
3809 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3810 fra.me.file = LOCATE_syntax___typing;
3811 fra.me.line = 596;
3812 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3813 fra.me.has_broke = 0;
3814 fra.me.REG_size = 0;
3815 fra.me.nitni_local_ref_head = NULL;
3816 /* syntax/typing.nit:596 */
3817 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 596);
3818 stack_frame_head = fra.me.prev;
3819 return;
3820 }
3821 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3822 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3823 val_t REGB0;
3824 val_t tmp;
3825 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3826 fra.me.file = LOCATE_syntax___typing;
3827 fra.me.line = 602;
3828 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3829 fra.me.has_broke = 0;
3830 fra.me.REG_size = 4;
3831 fra.me.nitni_local_ref_head = NULL;
3832 fra.me.REG[0] = NIT_NULL;
3833 fra.me.REG[1] = NIT_NULL;
3834 fra.me.REG[2] = NIT_NULL;
3835 fra.me.REG[3] = NIT_NULL;
3836 fra.me.REG[0] = p0;
3837 fra.me.REG[1] = p1;
3838 /* syntax/typing.nit:604 */
3839 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3840 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3841 REGB0 = TAG_Bool(false);
3842 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);
3843 stack_frame_head = fra.me.prev;
3844 return;
3845 }
3846 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3847 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3848 val_t tmp;
3849 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3850 fra.me.file = LOCATE_syntax___typing;
3851 fra.me.line = 607;
3852 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3853 fra.me.has_broke = 0;
3854 fra.me.REG_size = 2;
3855 fra.me.nitni_local_ref_head = NULL;
3856 fra.me.REG[0] = NIT_NULL;
3857 fra.me.REG[1] = NIT_NULL;
3858 fra.me.REG[0] = p0;
3859 fra.me.REG[1] = p1;
3860 /* syntax/typing.nit:609 */
3861 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3862 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3863 stack_frame_head = fra.me.prev;
3864 return;
3865 }
3866 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3867 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3868 val_t REGB0;
3869 val_t tmp;
3870 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3871 fra.me.file = LOCATE_syntax___typing;
3872 fra.me.line = 614;
3873 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3874 fra.me.has_broke = 0;
3875 fra.me.REG_size = 5;
3876 fra.me.nitni_local_ref_head = NULL;
3877 fra.me.REG[0] = NIT_NULL;
3878 fra.me.REG[1] = NIT_NULL;
3879 fra.me.REG[2] = NIT_NULL;
3880 fra.me.REG[3] = NIT_NULL;
3881 fra.me.REG[4] = NIT_NULL;
3882 fra.me.REG[0] = p0;
3883 fra.me.REG[1] = p1;
3884 /* syntax/typing.nit:616 */
3885 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3886 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3887 /* syntax/typing.nit:617 */
3888 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3889 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3890 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3891 /* syntax/typing.nit:619 */
3892 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3893 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3894 /* syntax/typing.nit:622 */
3895 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3896 /* syntax/typing.nit:623 */
3897 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3898 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3899 /* syntax/typing.nit:626 */
3900 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3901 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3902 /* syntax/typing.nit:629 */
3903 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3904 /* syntax/typing.nit:632 */
3905 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3906 /* syntax/typing.nit:633 */
3907 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3908 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3909 /* syntax/typing.nit:636 */
3910 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3911 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3912 /* syntax/typing.nit:639 */
3913 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3914 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3915 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]);
3916 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3917 /* syntax/typing.nit:640 */
3918 REGB0 = TAG_Bool(true);
3919 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3920 stack_frame_head = fra.me.prev;
3921 return;
3922 }
3923 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3924 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3925 val_t REGB0;
3926 val_t tmp;
3927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3928 fra.me.file = LOCATE_syntax___typing;
3929 fra.me.line = 646;
3930 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
3931 fra.me.has_broke = 0;
3932 fra.me.REG_size = 4;
3933 fra.me.nitni_local_ref_head = NULL;
3934 fra.me.REG[0] = NIT_NULL;
3935 fra.me.REG[1] = NIT_NULL;
3936 fra.me.REG[2] = NIT_NULL;
3937 fra.me.REG[3] = NIT_NULL;
3938 fra.me.REG[0] = p0;
3939 fra.me.REG[1] = p1;
3940 /* syntax/typing.nit:648 */
3941 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3942 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3943 REGB0 = TAG_Bool(true);
3944 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);
3945 stack_frame_head = fra.me.prev;
3946 return;
3947 }
3948 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3949 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3950 val_t REGB0;
3951 val_t tmp;
3952 static val_t once_value_1; /* Once value */
3953 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3954 fra.me.file = LOCATE_syntax___typing;
3955 fra.me.line = 651;
3956 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
3957 fra.me.has_broke = 0;
3958 fra.me.REG_size = 5;
3959 fra.me.nitni_local_ref_head = NULL;
3960 fra.me.REG[0] = NIT_NULL;
3961 fra.me.REG[1] = NIT_NULL;
3962 fra.me.REG[2] = NIT_NULL;
3963 fra.me.REG[3] = NIT_NULL;
3964 fra.me.REG[4] = NIT_NULL;
3965 fra.me.REG[0] = p0;
3966 fra.me.REG[1] = p1;
3967 /* syntax/typing.nit:653 */
3968 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3969 /* syntax/typing.nit:656 */
3970 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3971 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3972 /* syntax/typing.nit:657 */
3973 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3974 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3975 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3976 /* syntax/typing.nit:659 */
3977 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3978 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
3979 if (UNTAG_Bool(REGB0)) {
3980 /* syntax/typing.nit:660 */
3981 if (!once_value_1) {
3982 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3983 REGB0 = TAG_Int(47);
3984 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3985 once_value_1 = fra.me.REG[4];
3986 register_static_object(&once_value_1);
3987 } else fra.me.REG[4] = once_value_1;
3988 fra.me.REG[4] = fra.me.REG[4];
3989 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3990 } else {
3991 /* syntax/typing.nit:662 */
3992 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3993 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
3994 }
3995 /* syntax/typing.nit:666 */
3996 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3997 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3998 /* syntax/typing.nit:669 */
3999 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4000 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4001 /* syntax/typing.nit:672 */
4002 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4003 /* syntax/typing.nit:673 */
4004 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4005 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4006 /* syntax/typing.nit:674 */
4007 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
4008 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4009 if (UNTAG_Bool(REGB0)) {
4010 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 674);
4011 }
4012 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
4013 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4014 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4015 stack_frame_head = fra.me.prev;
4016 return;
4017 }
4018 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
4019 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4020 val_t REGB0;
4021 val_t tmp;
4022 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4023 fra.me.file = LOCATE_syntax___typing;
4024 fra.me.line = 680;
4025 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
4026 fra.me.has_broke = 0;
4027 fra.me.REG_size = 4;
4028 fra.me.nitni_local_ref_head = NULL;
4029 fra.me.REG[0] = NIT_NULL;
4030 fra.me.REG[1] = NIT_NULL;
4031 fra.me.REG[2] = NIT_NULL;
4032 fra.me.REG[3] = NIT_NULL;
4033 fra.me.REG[0] = p0;
4034 fra.me.REG[1] = p1;
4035 /* syntax/typing.nit:682 */
4036 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4037 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4038 REGB0 = TAG_Bool(true);
4039 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);
4040 stack_frame_head = fra.me.prev;
4041 return;
4042 }
4043 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
4044 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4045 val_t tmp;
4046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4047 fra.me.file = LOCATE_syntax___typing;
4048 fra.me.line = 685;
4049 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
4050 fra.me.has_broke = 0;
4051 fra.me.REG_size = 3;
4052 fra.me.nitni_local_ref_head = NULL;
4053 fra.me.REG[0] = NIT_NULL;
4054 fra.me.REG[1] = NIT_NULL;
4055 fra.me.REG[2] = NIT_NULL;
4056 fra.me.REG[0] = p0;
4057 fra.me.REG[1] = p1;
4058 /* syntax/typing.nit:688 */
4059 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4060 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4061 /* syntax/typing.nit:691 */
4062 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4063 stack_frame_head = fra.me.prev;
4064 return;
4065 }
4066 val_t syntax___typing___AForExpr___variables(val_t p0){
4067 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4068 val_t REGB0;
4069 val_t tmp;
4070 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4071 fra.me.file = LOCATE_syntax___typing;
4072 fra.me.line = 698;
4073 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
4074 fra.me.has_broke = 0;
4075 fra.me.REG_size = 2;
4076 fra.me.nitni_local_ref_head = NULL;
4077 fra.me.REG[0] = NIT_NULL;
4078 fra.me.REG[1] = NIT_NULL;
4079 fra.me.REG[0] = p0;
4080 /* syntax/typing.nit:698 */
4081 fra.me.REG[1] = fra.me.REG[0];
4082 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
4083 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4084 if (UNTAG_Bool(REGB0)) {
4085 } else {
4086 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 698);
4087 }
4088 goto label1;
4089 label1: while(0);
4090 stack_frame_head = fra.me.prev;
4091 return fra.me.REG[1];
4092 }
4093 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
4094 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4095 val_t REGB0;
4096 val_t tmp;
4097 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4098 fra.me.file = LOCATE_syntax___typing;
4099 fra.me.line = 700;
4100 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
4101 fra.me.has_broke = 0;
4102 fra.me.REG_size = 4;
4103 fra.me.nitni_local_ref_head = NULL;
4104 fra.me.REG[0] = NIT_NULL;
4105 fra.me.REG[1] = NIT_NULL;
4106 fra.me.REG[2] = NIT_NULL;
4107 fra.me.REG[3] = NIT_NULL;
4108 fra.me.REG[0] = p0;
4109 fra.me.REG[1] = p1;
4110 /* syntax/typing.nit:702 */
4111 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4112 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4113 REGB0 = TAG_Bool(true);
4114 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);
4115 stack_frame_head = fra.me.prev;
4116 return;
4117 }
4118 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
4119 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4120 val_t tmp;
4121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4122 fra.me.file = LOCATE_syntax___typing;
4123 fra.me.line = 705;
4124 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
4125 fra.me.has_broke = 0;
4126 fra.me.REG_size = 3;
4127 fra.me.nitni_local_ref_head = NULL;
4128 fra.me.REG[0] = NIT_NULL;
4129 fra.me.REG[1] = NIT_NULL;
4130 fra.me.REG[2] = NIT_NULL;
4131 fra.me.REG[0] = p0;
4132 fra.me.REG[1] = p1;
4133 /* syntax/typing.nit:707 */
4134 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4135 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4136 /* syntax/typing.nit:708 */
4137 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4138 /* syntax/typing.nit:710 */
4139 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4140 /* syntax/typing.nit:713 */
4141 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4142 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4143 /* syntax/typing.nit:716 */
4144 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4145 /* syntax/typing.nit:717 */
4146 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4147 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
4148 stack_frame_head = fra.me.prev;
4149 return;
4150 }
4151 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
4152 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4153 val_t REGB0;
4154 val_t REGB1;
4155 val_t REGB2;
4156 val_t REGB3;
4157 val_t REGB4;
4158 val_t REGB5;
4159 val_t tmp;
4160 static val_t once_value_3; /* Once value */
4161 static val_t once_value_4; /* Once value */
4162 static val_t once_value_5; /* Once value */
4163 static val_t once_value_6; /* Once value */
4164 static val_t once_value_7; /* Once value */
4165 static val_t once_value_8; /* Once value */
4166 static val_t once_value_9; /* Once value */
4167 static val_t once_value_10; /* Once value */
4168 static val_t once_value_11; /* Once value */
4169 static val_t once_value_12; /* Once value */
4170 static val_t once_value_13; /* Once value */
4171 static val_t once_value_14; /* Once value */
4172 static val_t once_value_15; /* Once value */
4173 static val_t once_value_16; /* Once value */
4174 static val_t once_value_17; /* Once value */
4175 static val_t once_value_18; /* Once value */
4176 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4177 fra.me.file = LOCATE_syntax___typing;
4178 fra.me.line = 720;
4179 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4180 fra.me.has_broke = 0;
4181 fra.me.REG_size = 8;
4182 fra.me.nitni_local_ref_head = NULL;
4183 fra.me.REG[0] = NIT_NULL;
4184 fra.me.REG[1] = NIT_NULL;
4185 fra.me.REG[2] = NIT_NULL;
4186 fra.me.REG[3] = NIT_NULL;
4187 fra.me.REG[4] = NIT_NULL;
4188 fra.me.REG[5] = NIT_NULL;
4189 fra.me.REG[6] = NIT_NULL;
4190 fra.me.REG[7] = NIT_NULL;
4191 fra.me.REG[0] = p0;
4192 fra.me.REG[1] = p1;
4193 /* syntax/typing.nit:723 */
4194 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
4195 /* syntax/typing.nit:724 */
4196 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
4197 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));
4198 /* syntax/typing.nit:729 */
4199 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
4200 /* syntax/typing.nit:732 */
4201 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4202 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4203 /* syntax/typing.nit:733 */
4204 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4205 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4206 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4207 if (UNTAG_Bool(REGB0)) {
4208 goto label2;
4209 }
4210 /* syntax/typing.nit:734 */
4211 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4212 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4213 /* syntax/typing.nit:736 */
4214 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4215 if (UNTAG_Bool(REGB0)) {
4216 /* syntax/typing.nit:737 */
4217 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4218 if (!once_value_3) {
4219 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
4220 REGB0 = TAG_Int(43);
4221 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4222 once_value_3 = fra.me.REG[5];
4223 register_static_object(&once_value_3);
4224 } else fra.me.REG[5] = once_value_3;
4225 fra.me.REG[5] = fra.me.REG[5];
4226 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4227 /* syntax/typing.nit:738 */
4228 goto label2;
4229 }
4230 /* syntax/typing.nit:740 */
4231 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4232 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
4233 /* syntax/typing.nit:743 */
4234 if (!once_value_4) {
4235 if (!once_value_5) {
4236 fra.me.REG[5] = BOX_NativeString("iterate");
4237 REGB0 = TAG_Int(7);
4238 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4239 once_value_5 = fra.me.REG[5];
4240 register_static_object(&once_value_5);
4241 } else fra.me.REG[5] = once_value_5;
4242 fra.me.REG[5] = fra.me.REG[5];
4243 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4244 once_value_4 = fra.me.REG[5];
4245 register_static_object(&once_value_4);
4246 } else fra.me.REG[5] = once_value_4;
4247 fra.me.REG[5] = fra.me.REG[5];
4248 /* syntax/typing.nit:744 */
4249 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4250 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4251 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4252 if (UNTAG_Bool(REGB0)) {
4253 /* syntax/typing.nit:745 */
4254 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4255 REGB0 = TAG_Int(3);
4256 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4257 if (!once_value_6) {
4258 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
4259 REGB0 = TAG_Int(60);
4260 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4261 once_value_6 = fra.me.REG[7];
4262 register_static_object(&once_value_6);
4263 } else fra.me.REG[7] = once_value_6;
4264 fra.me.REG[7] = fra.me.REG[7];
4265 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4266 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4267 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4268 if (!once_value_7) {
4269 fra.me.REG[7] = BOX_NativeString(".");
4270 REGB0 = TAG_Int(1);
4271 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4272 once_value_7 = fra.me.REG[7];
4273 register_static_object(&once_value_7);
4274 } else fra.me.REG[7] = once_value_7;
4275 fra.me.REG[7] = fra.me.REG[7];
4276 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4277 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4278 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4279 /* syntax/typing.nit:746 */
4280 goto label2;
4281 }
4282 /* syntax/typing.nit:748 */
4283 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4284 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4285 /* syntax/typing.nit:749 */
4286 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4287 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4288 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4289 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4290 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);
4291 /* syntax/typing.nit:750 */
4292 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4293 /* syntax/typing.nit:751 */
4294 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4295 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4296 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4297 if (UNTAG_Bool(REGB0)) {
4298 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4299 fra.me.REG[3] = fra.me.REG[5];
4300 }
4301 /* syntax/typing.nit:752 */
4302 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4303 REGB1 = TAG_Int(0);
4304 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4305 if (UNTAG_Bool(REGB2)) {
4306 } else {
4307 /* ../lib/standard/kernel.nit:227 */
4308 REGB1 = TAG_Bool((REGB0)==(REGB1));
4309 /* syntax/typing.nit:752 */
4310 REGB2 = REGB1;
4311 }
4312 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4313 if (UNTAG_Bool(REGB2)) {
4314 /* syntax/typing.nit:753 */
4315 if (!once_value_8) {
4316 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4317 REGB2 = TAG_Int(63);
4318 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4319 once_value_8 = fra.me.REG[5];
4320 register_static_object(&once_value_8);
4321 } else fra.me.REG[5] = once_value_8;
4322 fra.me.REG[5] = fra.me.REG[5];
4323 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4324 /* syntax/typing.nit:754 */
4325 goto label2;
4326 } else {
4327 /* syntax/typing.nit:755 */
4328 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4329 /* ../lib/standard/collection/array.nit:24 */
4330 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4331 if (UNTAG_Bool(REGB2)) {
4332 } else {
4333 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4334 }
4335 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4336 /* syntax/typing.nit:755 */
4337 REGB1 = TAG_Int(1);
4338 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4339 if (UNTAG_Bool(REGB0)) {
4340 } else {
4341 /* ../lib/standard/kernel.nit:227 */
4342 REGB1 = TAG_Bool((REGB2)==(REGB1));
4343 /* syntax/typing.nit:755 */
4344 REGB0 = REGB1;
4345 }
4346 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4347 if (UNTAG_Bool(REGB0)) {
4348 /* syntax/typing.nit:756 */
4349 if (!once_value_9) {
4350 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4351 REGB0 = TAG_Int(62);
4352 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4353 once_value_9 = fra.me.REG[5];
4354 register_static_object(&once_value_9);
4355 } else fra.me.REG[5] = once_value_9;
4356 fra.me.REG[5] = fra.me.REG[5];
4357 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4358 /* syntax/typing.nit:757 */
4359 goto label2;
4360 }
4361 }
4362 /* syntax/typing.nit:759 */
4363 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4364 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4365 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4366 if (UNTAG_Bool(REGB0)) {
4367 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 759);
4368 }
4369 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4370 fra.me.REG[3] = fra.me.REG[5];
4371 /* syntax/typing.nit:760 */
4372 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4373 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4374 if (UNTAG_Bool(REGB0)) {
4375 } else {
4376 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4377 if (UNTAG_Bool(REGB1)) {
4378 REGB1 = TAG_Bool(false);
4379 REGB0 = REGB1;
4380 } else {
4381 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4382 REGB0 = REGB1;
4383 }
4384 }
4385 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4386 if (UNTAG_Bool(REGB0)) {
4387 /* syntax/typing.nit:761 */
4388 if (!once_value_10) {
4389 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4390 REGB0 = TAG_Int(73);
4391 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4392 once_value_10 = fra.me.REG[5];
4393 register_static_object(&once_value_10);
4394 } else fra.me.REG[5] = once_value_10;
4395 fra.me.REG[5] = fra.me.REG[5];
4396 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4397 /* syntax/typing.nit:762 */
4398 goto label2;
4399 }
4400 /* ../lib/standard/collection/array.nit:24 */
4401 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4402 if (UNTAG_Bool(REGB0)) {
4403 } else {
4404 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4405 }
4406 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4407 /* syntax/typing.nit:764 */
4408 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4409 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4410 if (UNTAG_Bool(REGB2)) {
4411 } else {
4412 /* ../lib/standard/kernel.nit:227 */
4413 REGB1 = TAG_Bool((REGB0)==(REGB1));
4414 /* syntax/typing.nit:764 */
4415 REGB2 = REGB1;
4416 }
4417 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4418 if (UNTAG_Bool(REGB2)) {
4419 /* syntax/typing.nit:765 */
4420 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4421 REGB1 = TAG_Int(1);
4422 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4423 if (UNTAG_Bool(REGB0)) {
4424 } else {
4425 /* ../lib/standard/kernel.nit:227 */
4426 REGB1 = TAG_Bool((REGB2)==(REGB1));
4427 /* syntax/typing.nit:765 */
4428 REGB0 = REGB1;
4429 }
4430 if (UNTAG_Bool(REGB0)) {
4431 /* syntax/typing.nit:766 */
4432 REGB0 = TAG_Int(7);
4433 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4434 if (!once_value_11) {
4435 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4436 REGB0 = TAG_Int(16);
4437 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4438 once_value_11 = fra.me.REG[4];
4439 register_static_object(&once_value_11);
4440 } else fra.me.REG[4] = once_value_11;
4441 fra.me.REG[4] = fra.me.REG[4];
4442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4443 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4444 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4445 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4446 if (!once_value_12) {
4447 fra.me.REG[4] = BOX_NativeString(" variable ");
4448 REGB0 = TAG_Int(10);
4449 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4450 once_value_12 = fra.me.REG[4];
4451 register_static_object(&once_value_12);
4452 } else fra.me.REG[4] = once_value_12;
4453 fra.me.REG[4] = fra.me.REG[4];
4454 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4455 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4456 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4457 if (!once_value_13) {
4458 fra.me.REG[4] = BOX_NativeString(", found ");
4459 REGB0 = TAG_Int(8);
4460 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4461 once_value_13 = fra.me.REG[4];
4462 register_static_object(&once_value_13);
4463 } else fra.me.REG[4] = once_value_13;
4464 fra.me.REG[4] = fra.me.REG[4];
4465 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4466 /* ../lib/standard/collection/array.nit:24 */
4467 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4468 if (UNTAG_Bool(REGB0)) {
4469 } else {
4470 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4471 }
4472 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4473 /* syntax/typing.nit:766 */
4474 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4475 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4476 if (!once_value_14) {
4477 fra.me.REG[4] = BOX_NativeString(".");
4478 REGB0 = TAG_Int(1);
4479 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4480 once_value_14 = fra.me.REG[4];
4481 register_static_object(&once_value_14);
4482 } else fra.me.REG[4] = once_value_14;
4483 fra.me.REG[4] = fra.me.REG[4];
4484 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4485 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4486 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4487 } else {
4488 /* syntax/typing.nit:768 */
4489 REGB0 = TAG_Int(7);
4490 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4491 if (!once_value_15) {
4492 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4493 REGB0 = TAG_Int(16);
4494 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4495 once_value_15 = fra.me.REG[4];
4496 register_static_object(&once_value_15);
4497 } else fra.me.REG[4] = once_value_15;
4498 fra.me.REG[4] = fra.me.REG[4];
4499 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4500 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4501 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4502 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4503 if (!once_value_16) {
4504 fra.me.REG[4] = BOX_NativeString(" variables ");
4505 REGB0 = TAG_Int(11);
4506 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4507 once_value_16 = fra.me.REG[4];
4508 register_static_object(&once_value_16);
4509 } else fra.me.REG[4] = once_value_16;
4510 fra.me.REG[4] = fra.me.REG[4];
4511 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4512 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4513 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4514 if (!once_value_17) {
4515 fra.me.REG[4] = BOX_NativeString(", found ");
4516 REGB0 = TAG_Int(8);
4517 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4518 once_value_17 = fra.me.REG[4];
4519 register_static_object(&once_value_17);
4520 } else fra.me.REG[4] = once_value_17;
4521 fra.me.REG[4] = fra.me.REG[4];
4522 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4523 /* ../lib/standard/collection/array.nit:24 */
4524 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4525 if (UNTAG_Bool(REGB0)) {
4526 } else {
4527 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4528 }
4529 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4530 /* syntax/typing.nit:768 */
4531 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4532 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4533 if (!once_value_18) {
4534 fra.me.REG[4] = BOX_NativeString(".");
4535 REGB0 = TAG_Int(1);
4536 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4537 once_value_18 = fra.me.REG[4];
4538 register_static_object(&once_value_18);
4539 } else fra.me.REG[4] = once_value_18;
4540 fra.me.REG[4] = fra.me.REG[4];
4541 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4542 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4543 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4544 }
4545 /* syntax/typing.nit:770 */
4546 goto label2;
4547 }
4548 /* syntax/typing.nit:774 */
4549 REGB0 = TAG_Int(0);
4550 /* ../lib/standard/collection/array.nit:24 */
4551 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4552 if (UNTAG_Bool(REGB1)) {
4553 } else {
4554 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4555 }
4556 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4557 /* ../lib/standard/kernel.nit:352 */
4558 while(1) {
4559 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4560 if (UNTAG_Bool(REGB2)) {
4561 } else {
4562 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4563 }
4564 /* ../lib/standard/kernel.nit:232 */
4565 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4566 /* ../lib/standard/kernel.nit:352 */
4567 if (UNTAG_Bool(REGB2)) {
4568 /* syntax/typing.nit:774 */
4569 REGB2 = REGB0;
4570 /* ../lib/standard/collection/array.nit:278 */
4571 fra.me.REG[5] = fra.me.REG[2];
4572 REGB3 = REGB2;
4573 /* ../lib/standard/collection/array.nit:280 */
4574 REGB4 = TAG_Int(0);
4575 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4576 if (UNTAG_Bool(REGB5)) {
4577 } else {
4578 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4579 }
4580 /* ../lib/standard/kernel.nit:233 */
4581 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4582 /* ../lib/standard/collection/array.nit:280 */
4583 if (UNTAG_Bool(REGB4)) {
4584 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4585 if (UNTAG_Bool(REGB4)) {
4586 } else {
4587 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
4588 }
4589 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4590 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4591 if (UNTAG_Bool(REGB5)) {
4592 } else {
4593 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4594 }
4595 /* ../lib/standard/kernel.nit:232 */
4596 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4597 } else {
4598 /* ../lib/standard/collection/array.nit:280 */
4599 REGB5 = TAG_Bool(false);
4600 REGB4 = REGB5;
4601 }
4602 if (UNTAG_Bool(REGB4)) {
4603 } else {
4604 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
4605 }
4606 /* ../lib/standard/collection/array.nit:281 */
4607 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4608 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4609 if (UNTAG_Bool(REGB4)) {
4610 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
4611 }
4612 /* ../lib/standard/collection/array.nit:718 */
4613 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4614 /* ../lib/standard/collection/array.nit:281 */
4615 goto label19;
4616 label19: while(0);
4617 /* syntax/typing.nit:775 */
4618 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4619 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4620 if (UNTAG_Bool(REGB2)) {
4621 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 775);
4622 }
4623 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4624 /* ../lib/standard/kernel.nit:354 */
4625 REGB2 = TAG_Int(1);
4626 /* ../lib/standard/kernel.nit:235 */
4627 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4628 /* ../lib/standard/kernel.nit:354 */
4629 REGB0 = REGB2;
4630 } else {
4631 /* ../lib/standard/kernel.nit:352 */
4632 goto label20;
4633 }
4634 }
4635 label20: while(0);
4636 label2: while(0);
4637 stack_frame_head = fra.me.prev;
4638 return;
4639 }
4640 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){
4641 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4642 fun_t CREG[1];
4643 val_t tmp;
4644 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4645 fra.me.file = LOCATE_syntax___typing;
4646 fra.me.line = 0;
4647 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4648 fra.me.has_broke = 0;
4649 fra.me.REG_size = 2;
4650 fra.me.nitni_local_ref_head = NULL;
4651 fra.me.REG[0] = NIT_NULL;
4652 fra.me.REG[1] = NIT_NULL;
4653 fra.me.closure_ctx = closctx_param;
4654 fra.me.closure_funs = CREG;
4655 fra.me.REG[0] = p0;
4656 CREG[0] = clos_fun0;
4657 /* syntax/typing.nit:725 */
4658 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4659 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4660 /* syntax/typing.nit:726 */
4661 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4662 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4663 /* syntax/typing.nit:727 */
4664 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4665 stack_frame_head = fra.me.prev;
4666 return;
4667 }
4668 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4669 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4670 val_t REGB0;
4671 val_t REGB1;
4672 val_t tmp;
4673 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4674 fra.me.file = LOCATE_syntax___typing;
4675 fra.me.line = 781;
4676 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4677 fra.me.has_broke = 0;
4678 fra.me.REG_size = 4;
4679 fra.me.nitni_local_ref_head = NULL;
4680 fra.me.REG[0] = NIT_NULL;
4681 fra.me.REG[1] = NIT_NULL;
4682 fra.me.REG[2] = NIT_NULL;
4683 fra.me.REG[3] = NIT_NULL;
4684 fra.me.REG[0] = p0;
4685 fra.me.REG[1] = p1;
4686 /* syntax/typing.nit:784 */
4687 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4688 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4689 /* syntax/typing.nit:785 */
4690 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4691 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4692 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4693 /* syntax/typing.nit:786 */
4694 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4695 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
4696 /* syntax/typing.nit:789 */
4697 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4698 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4699 if (UNTAG_Bool(REGB0)) {
4700 } else {
4701 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4702 if (UNTAG_Bool(REGB1)) {
4703 REGB1 = TAG_Bool(false);
4704 REGB0 = REGB1;
4705 } else {
4706 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4707 REGB0 = REGB1;
4708 }
4709 }
4710 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4711 if (UNTAG_Bool(REGB0)) {
4712 /* syntax/typing.nit:790 */
4713 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4714 /* syntax/typing.nit:791 */
4715 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4716 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4717 /* syntax/typing.nit:792 */
4718 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4719 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4720 /* syntax/typing.nit:793 */
4721 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4722 }
4723 /* syntax/typing.nit:797 */
4724 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4725 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4726 /* syntax/typing.nit:798 */
4727 REGB0 = TAG_Bool(true);
4728 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4729 stack_frame_head = fra.me.prev;
4730 return;
4731 }
4732 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4733 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4734 val_t REGB0;
4735 val_t tmp;
4736 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4737 fra.me.file = LOCATE_syntax___typing;
4738 fra.me.line = 804;
4739 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4740 fra.me.has_broke = 0;
4741 fra.me.REG_size = 2;
4742 fra.me.nitni_local_ref_head = NULL;
4743 fra.me.REG[0] = NIT_NULL;
4744 fra.me.REG[1] = NIT_NULL;
4745 fra.me.REG[0] = p0;
4746 /* syntax/typing.nit:804 */
4747 fra.me.REG[1] = fra.me.REG[0];
4748 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4749 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4750 if (UNTAG_Bool(REGB0)) {
4751 } else {
4752 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 804);
4753 }
4754 goto label1;
4755 label1: while(0);
4756 stack_frame_head = fra.me.prev;
4757 return fra.me.REG[1];
4758 }
4759 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4760 struct {struct stack_frame_t me;} fra;
4761 val_t tmp;
4762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4763 fra.me.file = LOCATE_syntax___typing;
4764 fra.me.line = 808;
4765 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4766 fra.me.has_broke = 0;
4767 fra.me.REG_size = 1;
4768 fra.me.nitni_local_ref_head = NULL;
4769 fra.me.REG[0] = NIT_NULL;
4770 fra.me.REG[0] = p0;
4771 /* syntax/typing.nit:808 */
4772 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4773 goto label1;
4774 label1: while(0);
4775 stack_frame_head = fra.me.prev;
4776 return fra.me.REG[0];
4777 }
4778 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4779 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4780 val_t REGB0;
4781 val_t REGB1;
4782 val_t tmp;
4783 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4784 fra.me.file = LOCATE_syntax___typing;
4785 fra.me.line = 810;
4786 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4787 fra.me.has_broke = 0;
4788 fra.me.REG_size = 4;
4789 fra.me.nitni_local_ref_head = NULL;
4790 fra.me.REG[0] = NIT_NULL;
4791 fra.me.REG[1] = NIT_NULL;
4792 fra.me.REG[2] = NIT_NULL;
4793 fra.me.REG[3] = NIT_NULL;
4794 fra.me.REG[0] = p0;
4795 fra.me.REG[1] = p1;
4796 /* syntax/typing.nit:812 */
4797 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4798 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4799 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4800 /* syntax/typing.nit:813 */
4801 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4802 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4803 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4804 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4805 /* syntax/typing.nit:814 */
4806 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4807 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4808 if (UNTAG_Bool(REGB0)) {
4809 } else {
4810 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4811 if (UNTAG_Bool(REGB1)) {
4812 REGB1 = TAG_Bool(false);
4813 REGB0 = REGB1;
4814 } else {
4815 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4816 REGB0 = REGB1;
4817 }
4818 }
4819 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4820 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4821 stack_frame_head = fra.me.prev;
4822 return;
4823 }
4824 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4825 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4826 val_t REGB0;
4827 val_t REGB1;
4828 val_t tmp;
4829 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4830 fra.me.file = LOCATE_syntax___typing;
4831 fra.me.line = 819;
4832 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4833 fra.me.has_broke = 0;
4834 fra.me.REG_size = 5;
4835 fra.me.nitni_local_ref_head = NULL;
4836 fra.me.REG[0] = NIT_NULL;
4837 fra.me.REG[1] = NIT_NULL;
4838 fra.me.REG[2] = NIT_NULL;
4839 fra.me.REG[3] = NIT_NULL;
4840 fra.me.REG[4] = NIT_NULL;
4841 fra.me.REG[0] = p0;
4842 fra.me.REG[1] = p1;
4843 /* syntax/typing.nit:821 */
4844 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4845 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4846 /* syntax/typing.nit:824 */
4847 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4848 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4849 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4850 /* syntax/typing.nit:825 */
4851 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4852 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4853 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4854 if (UNTAG_Bool(REGB0)) {
4855 goto label1;
4856 }
4857 /* syntax/typing.nit:826 */
4858 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4859 if (UNTAG_Bool(REGB0)) {
4860 } else {
4861 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4862 if (UNTAG_Bool(REGB1)) {
4863 REGB1 = TAG_Bool(false);
4864 REGB0 = REGB1;
4865 } else {
4866 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4867 REGB0 = REGB1;
4868 }
4869 }
4870 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4871 if (UNTAG_Bool(REGB0)) {
4872 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4873 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]);
4874 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4875 } else {
4876 REGB1 = TAG_Bool(false);
4877 REGB0 = REGB1;
4878 }
4879 if (UNTAG_Bool(REGB0)) {
4880 goto label1;
4881 }
4882 /* syntax/typing.nit:829 */
4883 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4884 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4885 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4886 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4887 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]);
4888 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4889 /* syntax/typing.nit:831 */
4890 REGB0 = TAG_Bool(true);
4891 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4892 label1: while(0);
4893 stack_frame_head = fra.me.prev;
4894 return;
4895 }
4896 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4897 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4898 val_t REGB0;
4899 val_t REGB1;
4900 val_t tmp;
4901 static val_t once_value_2; /* Once value */
4902 static val_t once_value_3; /* Once value */
4903 static val_t once_value_4; /* Once value */
4904 static val_t once_value_5; /* Once value */
4905 static val_t once_value_6; /* Once value */
4906 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4907 fra.me.file = LOCATE_syntax___typing;
4908 fra.me.line = 836;
4909 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4910 fra.me.has_broke = 0;
4911 fra.me.REG_size = 8;
4912 fra.me.nitni_local_ref_head = NULL;
4913 fra.me.REG[0] = NIT_NULL;
4914 fra.me.REG[1] = NIT_NULL;
4915 fra.me.REG[2] = NIT_NULL;
4916 fra.me.REG[3] = NIT_NULL;
4917 fra.me.REG[4] = NIT_NULL;
4918 fra.me.REG[5] = NIT_NULL;
4919 fra.me.REG[6] = NIT_NULL;
4920 fra.me.REG[7] = NIT_NULL;
4921 fra.me.REG[0] = p0;
4922 fra.me.REG[1] = p1;
4923 fra.me.REG[2] = p2;
4924 /* syntax/typing.nit:841 */
4925 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4926 if (UNTAG_Bool(REGB0)) {
4927 } else {
4928 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4929 if (UNTAG_Bool(REGB1)) {
4930 REGB1 = TAG_Bool(false);
4931 REGB0 = REGB1;
4932 } else {
4933 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4934 REGB0 = REGB1;
4935 }
4936 }
4937 if (UNTAG_Bool(REGB0)) {
4938 /* syntax/typing.nit:842 */
4939 fra.me.REG[3] = NIT_NULL;
4940 goto label1;
4941 }
4942 /* syntax/typing.nit:844 */
4943 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4944 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4945 /* syntax/typing.nit:845 */
4946 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*/;
4947 if (UNTAG_Bool(REGB0)) {
4948 /* syntax/typing.nit:846 */
4949 REGB0 = TAG_Int(3);
4950 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4951 if (!once_value_2) {
4952 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4953 REGB0 = TAG_Int(15);
4954 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4955 once_value_2 = fra.me.REG[6];
4956 register_static_object(&once_value_2);
4957 } else fra.me.REG[6] = once_value_2;
4958 fra.me.REG[6] = fra.me.REG[6];
4959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4960 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4961 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4962 if (!once_value_3) {
4963 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4964 REGB0 = TAG_Int(17);
4965 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4966 once_value_3 = fra.me.REG[6];
4967 register_static_object(&once_value_3);
4968 } else fra.me.REG[6] = once_value_3;
4969 fra.me.REG[6] = fra.me.REG[6];
4970 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4971 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4972 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4973 /* syntax/typing.nit:847 */
4974 fra.me.REG[3] = NIT_NULL;
4975 goto label1;
4976 }
4977 /* syntax/typing.nit:849 */
4978 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4979 if (UNTAG_Bool(REGB0)) {
4980 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 849);
4981 }
4982 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4983 /* syntax/typing.nit:850 */
4984 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4985 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4986 if (UNTAG_Bool(REGB0)) {
4987 /* syntax/typing.nit:851 */
4988 REGB0 = TAG_Int(5);
4989 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4990 if (!once_value_4) {
4991 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4992 REGB0 = TAG_Int(15);
4993 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4994 once_value_4 = fra.me.REG[7];
4995 register_static_object(&once_value_4);
4996 } else fra.me.REG[7] = once_value_4;
4997 fra.me.REG[7] = fra.me.REG[7];
4998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4999 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5000 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5001 if (!once_value_5) {
5002 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
5003 REGB0 = TAG_Int(20);
5004 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5005 once_value_5 = fra.me.REG[7];
5006 register_static_object(&once_value_5);
5007 } else fra.me.REG[7] = once_value_5;
5008 fra.me.REG[7] = fra.me.REG[7];
5009 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5010 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5011 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5012 if (!once_value_6) {
5013 fra.me.REG[7] = BOX_NativeString(".");
5014 REGB0 = TAG_Int(1);
5015 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5016 once_value_6 = fra.me.REG[7];
5017 register_static_object(&once_value_6);
5018 } else fra.me.REG[7] = once_value_6;
5019 fra.me.REG[7] = fra.me.REG[7];
5020 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5021 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5022 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5023 /* syntax/typing.nit:852 */
5024 fra.me.REG[3] = NIT_NULL;
5025 goto label1;
5026 }
5027 /* syntax/typing.nit:854 */
5028 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5029 /* syntax/typing.nit:855 */
5030 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5031 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5032 REGB0 = TAG_Bool(false);
5033 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);
5034 /* syntax/typing.nit:856 */
5035 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5036 /* syntax/typing.nit:857 */
5037 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
5038 /* syntax/typing.nit:858 */
5039 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5040 REGB0 = TAG_Int(0);
5041 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
5042 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
5043 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]);
5044 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5045 if (UNTAG_Bool(REGB0)) {
5046 fra.me.REG[3] = NIT_NULL;
5047 goto label1;
5048 }
5049 /* syntax/typing.nit:859 */
5050 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
5051 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5052 if (UNTAG_Bool(REGB0)) {
5053 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 859);
5054 }
5055 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
5056 fra.me.REG[3] = fra.me.REG[2];
5057 goto label1;
5058 label1: while(0);
5059 stack_frame_head = fra.me.prev;
5060 return fra.me.REG[3];
5061 }
5062 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
5063 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5064 val_t REGB0;
5065 val_t tmp;
5066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5067 fra.me.file = LOCATE_syntax___typing;
5068 fra.me.line = 862;
5069 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
5070 fra.me.has_broke = 0;
5071 fra.me.REG_size = 2;
5072 fra.me.nitni_local_ref_head = NULL;
5073 fra.me.REG[0] = NIT_NULL;
5074 fra.me.REG[1] = NIT_NULL;
5075 fra.me.REG[0] = p0;
5076 /* syntax/typing.nit:862 */
5077 fra.me.REG[1] = fra.me.REG[0];
5078 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
5079 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5080 if (UNTAG_Bool(REGB0)) {
5081 } else {
5082 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 862);
5083 }
5084 goto label1;
5085 label1: while(0);
5086 stack_frame_head = fra.me.prev;
5087 return fra.me.REG[1];
5088 }
5089 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
5090 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5091 val_t REGB0;
5092 val_t REGB1;
5093 val_t tmp;
5094 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5095 fra.me.file = LOCATE_syntax___typing;
5096 fra.me.line = 867;
5097 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
5098 fra.me.has_broke = 0;
5099 fra.me.REG_size = 5;
5100 fra.me.nitni_local_ref_head = NULL;
5101 fra.me.REG[0] = NIT_NULL;
5102 fra.me.REG[1] = NIT_NULL;
5103 fra.me.REG[2] = NIT_NULL;
5104 fra.me.REG[3] = NIT_NULL;
5105 fra.me.REG[4] = NIT_NULL;
5106 fra.me.REG[0] = p0;
5107 fra.me.REG[1] = p1;
5108 /* syntax/typing.nit:869 */
5109 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5110 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5111 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
5112 /* syntax/typing.nit:870 */
5113 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5114 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5115 /* syntax/typing.nit:871 */
5116 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5117 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5118 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5119 /* syntax/typing.nit:872 */
5120 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]);
5121 /* syntax/typing.nit:873 */
5122 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5123 if (UNTAG_Bool(REGB0)) {
5124 } else {
5125 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5126 if (UNTAG_Bool(REGB1)) {
5127 REGB1 = TAG_Bool(false);
5128 REGB0 = REGB1;
5129 } else {
5130 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5131 REGB0 = REGB1;
5132 }
5133 }
5134 if (UNTAG_Bool(REGB0)) {
5135 goto label1;
5136 }
5137 /* syntax/typing.nit:876 */
5138 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5139 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5140 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5141 /* syntax/typing.nit:877 */
5142 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5143 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5144 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5145 if (UNTAG_Bool(REGB0)) {
5146 goto label1;
5147 }
5148 /* syntax/typing.nit:878 */
5149 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5150 if (UNTAG_Bool(REGB0)) {
5151 } else {
5152 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5153 if (UNTAG_Bool(REGB1)) {
5154 REGB1 = TAG_Bool(false);
5155 REGB0 = REGB1;
5156 } else {
5157 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5158 REGB0 = REGB1;
5159 }
5160 }
5161 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5162 if (UNTAG_Bool(REGB0)) {
5163 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5164 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]);
5165 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5166 } else {
5167 REGB1 = TAG_Bool(false);
5168 REGB0 = REGB1;
5169 }
5170 if (UNTAG_Bool(REGB0)) {
5171 goto label1;
5172 }
5173 /* syntax/typing.nit:881 */
5174 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5175 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5176 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]);
5177 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5178 /* syntax/typing.nit:883 */
5179 REGB0 = TAG_Bool(true);
5180 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5181 label1: while(0);
5182 stack_frame_head = fra.me.prev;
5183 return;
5184 }
5185 val_t syntax___typing___AAssignOp___method_name(val_t p0){
5186 struct {struct stack_frame_t me;} fra;
5187 val_t tmp;
5188 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5189 fra.me.file = LOCATE_syntax___typing;
5190 fra.me.line = 888;
5191 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
5192 fra.me.has_broke = 0;
5193 fra.me.REG_size = 0;
5194 fra.me.nitni_local_ref_head = NULL;
5195 /* syntax/typing.nit:888 */
5196 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 888);
5197 stack_frame_head = fra.me.prev;
5198 return NIT_NULL;
5199 }
5200 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
5201 struct {struct stack_frame_t me;} fra;
5202 val_t REGB0;
5203 val_t tmp;
5204 static val_t once_value_1; /* Once value */
5205 static val_t once_value_2; /* Once value */
5206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5207 fra.me.file = LOCATE_syntax___typing;
5208 fra.me.line = 891;
5209 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
5210 fra.me.has_broke = 0;
5211 fra.me.REG_size = 1;
5212 fra.me.nitni_local_ref_head = NULL;
5213 fra.me.REG[0] = NIT_NULL;
5214 fra.me.REG[0] = p0;
5215 /* syntax/typing.nit:891 */
5216 if (!once_value_1) {
5217 if (!once_value_2) {
5218 fra.me.REG[0] = BOX_NativeString("+");
5219 REGB0 = TAG_Int(1);
5220 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5221 once_value_2 = fra.me.REG[0];
5222 register_static_object(&once_value_2);
5223 } else fra.me.REG[0] = once_value_2;
5224 fra.me.REG[0] = fra.me.REG[0];
5225 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5226 once_value_1 = fra.me.REG[0];
5227 register_static_object(&once_value_1);
5228 } else fra.me.REG[0] = once_value_1;
5229 fra.me.REG[0] = fra.me.REG[0];
5230 goto label3;
5231 label3: while(0);
5232 stack_frame_head = fra.me.prev;
5233 return fra.me.REG[0];
5234 }
5235 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
5236 struct {struct stack_frame_t me;} fra;
5237 val_t REGB0;
5238 val_t tmp;
5239 static val_t once_value_1; /* Once value */
5240 static val_t once_value_2; /* Once value */
5241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5242 fra.me.file = LOCATE_syntax___typing;
5243 fra.me.line = 894;
5244 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
5245 fra.me.has_broke = 0;
5246 fra.me.REG_size = 1;
5247 fra.me.nitni_local_ref_head = NULL;
5248 fra.me.REG[0] = NIT_NULL;
5249 fra.me.REG[0] = p0;
5250 /* syntax/typing.nit:894 */
5251 if (!once_value_1) {
5252 if (!once_value_2) {
5253 fra.me.REG[0] = BOX_NativeString("-");
5254 REGB0 = TAG_Int(1);
5255 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5256 once_value_2 = fra.me.REG[0];
5257 register_static_object(&once_value_2);
5258 } else fra.me.REG[0] = once_value_2;
5259 fra.me.REG[0] = fra.me.REG[0];
5260 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5261 once_value_1 = fra.me.REG[0];
5262 register_static_object(&once_value_1);
5263 } else fra.me.REG[0] = once_value_1;
5264 fra.me.REG[0] = fra.me.REG[0];
5265 goto label3;
5266 label3: while(0);
5267 stack_frame_head = fra.me.prev;
5268 return fra.me.REG[0];
5269 }
5270 val_t syntax___typing___ASelfExpr___variable(val_t p0){
5271 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5272 val_t REGB0;
5273 val_t tmp;
5274 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5275 fra.me.file = LOCATE_syntax___typing;
5276 fra.me.line = 899;
5277 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
5278 fra.me.has_broke = 0;
5279 fra.me.REG_size = 2;
5280 fra.me.nitni_local_ref_head = NULL;
5281 fra.me.REG[0] = NIT_NULL;
5282 fra.me.REG[1] = NIT_NULL;
5283 fra.me.REG[0] = p0;
5284 /* syntax/typing.nit:899 */
5285 fra.me.REG[1] = fra.me.REG[0];
5286 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5287 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5288 if (UNTAG_Bool(REGB0)) {
5289 } else {
5290 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 899);
5291 }
5292 goto label1;
5293 label1: while(0);
5294 stack_frame_head = fra.me.prev;
5295 return fra.me.REG[1];
5296 }
5297 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5298 struct {struct stack_frame_t me;} fra;
5299 val_t tmp;
5300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5301 fra.me.file = LOCATE_syntax___typing;
5302 fra.me.line = 901;
5303 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5304 fra.me.has_broke = 0;
5305 fra.me.REG_size = 1;
5306 fra.me.nitni_local_ref_head = NULL;
5307 fra.me.REG[0] = NIT_NULL;
5308 fra.me.REG[0] = p0;
5309 /* syntax/typing.nit:901 */
5310 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5311 goto label1;
5312 label1: while(0);
5313 stack_frame_head = fra.me.prev;
5314 return fra.me.REG[0];
5315 }
5316 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5317 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5318 val_t REGB0;
5319 val_t tmp;
5320 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5321 fra.me.file = LOCATE_syntax___typing;
5322 fra.me.line = 903;
5323 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5324 fra.me.has_broke = 0;
5325 fra.me.REG_size = 3;
5326 fra.me.nitni_local_ref_head = NULL;
5327 fra.me.REG[0] = NIT_NULL;
5328 fra.me.REG[1] = NIT_NULL;
5329 fra.me.REG[2] = NIT_NULL;
5330 fra.me.REG[0] = p0;
5331 fra.me.REG[1] = p1;
5332 /* syntax/typing.nit:905 */
5333 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5334 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5335 /* syntax/typing.nit:906 */
5336 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5337 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5338 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5339 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5340 /* syntax/typing.nit:907 */
5341 REGB0 = TAG_Bool(true);
5342 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5343 stack_frame_head = fra.me.prev;
5344 return;
5345 }
5346 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5347 struct {struct stack_frame_t me;} fra;
5348 val_t REGB0;
5349 val_t tmp;
5350 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5351 fra.me.file = LOCATE_syntax___typing;
5352 fra.me.line = 910;
5353 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5354 fra.me.has_broke = 0;
5355 fra.me.REG_size = 1;
5356 fra.me.nitni_local_ref_head = NULL;
5357 fra.me.REG[0] = NIT_NULL;
5358 fra.me.REG[0] = p0;
5359 /* syntax/typing.nit:910 */
5360 REGB0 = TAG_Bool(true);
5361 goto label1;
5362 label1: while(0);
5363 stack_frame_head = fra.me.prev;
5364 return REGB0;
5365 }
5366 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5367 struct {struct stack_frame_t me;} fra;
5368 val_t REGB0;
5369 val_t tmp;
5370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5371 fra.me.file = LOCATE_syntax___typing;
5372 fra.me.line = 914;
5373 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5374 fra.me.has_broke = 0;
5375 fra.me.REG_size = 1;
5376 fra.me.nitni_local_ref_head = NULL;
5377 fra.me.REG[0] = NIT_NULL;
5378 fra.me.REG[0] = p0;
5379 /* syntax/typing.nit:914 */
5380 REGB0 = TAG_Bool(true);
5381 goto label1;
5382 label1: while(0);
5383 stack_frame_head = fra.me.prev;
5384 return REGB0;
5385 }
5386 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5387 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5388 val_t REGB0;
5389 val_t REGB1;
5390 val_t tmp;
5391 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5392 fra.me.file = LOCATE_syntax___typing;
5393 fra.me.line = 918;
5394 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5395 fra.me.has_broke = 0;
5396 fra.me.REG_size = 5;
5397 fra.me.nitni_local_ref_head = NULL;
5398 fra.me.REG[0] = NIT_NULL;
5399 fra.me.REG[1] = NIT_NULL;
5400 fra.me.REG[2] = NIT_NULL;
5401 fra.me.REG[3] = NIT_NULL;
5402 fra.me.REG[4] = NIT_NULL;
5403 fra.me.REG[0] = p0;
5404 fra.me.REG[1] = p1;
5405 /* syntax/typing.nit:920 */
5406 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5407 /* syntax/typing.nit:923 */
5408 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5409 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5410 /* syntax/typing.nit:924 */
5411 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5412 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5413 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5414 /* syntax/typing.nit:927 */
5415 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5416 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5417 /* syntax/typing.nit:930 */
5418 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5419 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5420 /* syntax/typing.nit:933 */
5421 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5422 /* syntax/typing.nit:936 */
5423 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5424 /* syntax/typing.nit:937 */
5425 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5426 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5427 /* syntax/typing.nit:940 */
5428 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5429 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5430 /* syntax/typing.nit:943 */
5431 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5432 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5433 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]);
5434 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5435 /* syntax/typing.nit:945 */
5436 REGB0 = TAG_Int(2);
5437 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5438 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5439 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5440 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5441 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5442 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]);
5443 /* syntax/typing.nit:946 */
5444 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5445 if (UNTAG_Bool(REGB0)) {
5446 } else {
5447 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5448 if (UNTAG_Bool(REGB1)) {
5449 REGB1 = TAG_Bool(false);
5450 REGB0 = REGB1;
5451 } else {
5452 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5453 REGB0 = REGB1;
5454 }
5455 }
5456 if (UNTAG_Bool(REGB0)) {
5457 goto label1;
5458 }
5459 /* syntax/typing.nit:948 */
5460 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5461 /* syntax/typing.nit:949 */
5462 REGB0 = TAG_Bool(true);
5463 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5464 label1: while(0);
5465 stack_frame_head = fra.me.prev;
5466 return;
5467 }
5468 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5469 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5470 val_t REGB0;
5471 val_t tmp;
5472 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5473 fra.me.file = LOCATE_syntax___typing;
5474 fra.me.line = 954;
5475 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5476 fra.me.has_broke = 0;
5477 fra.me.REG_size = 2;
5478 fra.me.nitni_local_ref_head = NULL;
5479 fra.me.REG[0] = NIT_NULL;
5480 fra.me.REG[1] = NIT_NULL;
5481 fra.me.REG[0] = p0;
5482 fra.me.REG[1] = p1;
5483 /* syntax/typing.nit:956 */
5484 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5485 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5486 /* syntax/typing.nit:957 */
5487 REGB0 = TAG_Bool(true);
5488 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5489 stack_frame_head = fra.me.prev;
5490 return;
5491 }
5492 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5493 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5494 val_t REGB0;
5495 val_t REGB1;
5496 val_t tmp;
5497 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5498 fra.me.file = LOCATE_syntax___typing;
5499 fra.me.line = 962;
5500 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5501 fra.me.has_broke = 0;
5502 fra.me.REG_size = 5;
5503 fra.me.nitni_local_ref_head = NULL;
5504 fra.me.REG[0] = NIT_NULL;
5505 fra.me.REG[1] = NIT_NULL;
5506 fra.me.REG[2] = NIT_NULL;
5507 fra.me.REG[3] = NIT_NULL;
5508 fra.me.REG[4] = NIT_NULL;
5509 fra.me.REG[0] = p0;
5510 fra.me.REG[1] = p1;
5511 /* syntax/typing.nit:964 */
5512 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5513 /* syntax/typing.nit:965 */
5514 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5515 /* syntax/typing.nit:966 */
5516 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5517 /* syntax/typing.nit:969 */
5518 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5519 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5520 /* syntax/typing.nit:972 */
5521 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5522 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5523 /* syntax/typing.nit:975 */
5524 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5525 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5526 /* syntax/typing.nit:976 */
5527 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5528 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5529 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5530 if (UNTAG_Bool(REGB0)) {
5531 } else {
5532 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5533 if (UNTAG_Bool(REGB1)) {
5534 REGB1 = TAG_Bool(false);
5535 REGB0 = REGB1;
5536 } else {
5537 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5538 REGB0 = REGB1;
5539 }
5540 }
5541 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5542 if (UNTAG_Bool(REGB0)) {
5543 /* syntax/typing.nit:977 */
5544 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5545 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5546 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5547 } else {
5548 /* syntax/typing.nit:979 */
5549 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5550 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5551 }
5552 /* syntax/typing.nit:982 */
5553 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5554 /* syntax/typing.nit:984 */
5555 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5556 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5557 /* syntax/typing.nit:985 */
5558 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5559 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5560 /* syntax/typing.nit:986 */
5561 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5562 /* syntax/typing.nit:987 */
5563 REGB0 = TAG_Bool(true);
5564 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5565 stack_frame_head = fra.me.prev;
5566 return;
5567 }
5568 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5569 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5570 val_t REGB0;
5571 val_t REGB1;
5572 val_t tmp;
5573 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5574 fra.me.file = LOCATE_syntax___typing;
5575 fra.me.line = 992;
5576 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5577 fra.me.has_broke = 0;
5578 fra.me.REG_size = 5;
5579 fra.me.nitni_local_ref_head = NULL;
5580 fra.me.REG[0] = NIT_NULL;
5581 fra.me.REG[1] = NIT_NULL;
5582 fra.me.REG[2] = NIT_NULL;
5583 fra.me.REG[3] = NIT_NULL;
5584 fra.me.REG[4] = NIT_NULL;
5585 fra.me.REG[0] = p0;
5586 fra.me.REG[1] = p1;
5587 /* syntax/typing.nit:994 */
5588 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5589 /* syntax/typing.nit:995 */
5590 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5591 /* syntax/typing.nit:998 */
5592 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5593 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5594 /* syntax/typing.nit:1001 */
5595 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5596 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5597 /* syntax/typing.nit:1004 */
5598 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5599 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5600 /* syntax/typing.nit:1005 */
5601 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5602 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5603 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5604 if (UNTAG_Bool(REGB0)) {
5605 } else {
5606 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5607 if (UNTAG_Bool(REGB1)) {
5608 REGB1 = TAG_Bool(false);
5609 REGB0 = REGB1;
5610 } else {
5611 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5612 REGB0 = REGB1;
5613 }
5614 }
5615 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5616 if (UNTAG_Bool(REGB0)) {
5617 /* syntax/typing.nit:1006 */
5618 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5619 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5620 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5621 } else {
5622 /* syntax/typing.nit:1008 */
5623 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5624 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5625 }
5626 /* syntax/typing.nit:1011 */
5627 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5628 /* syntax/typing.nit:1013 */
5629 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5630 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5631 /* syntax/typing.nit:1014 */
5632 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5633 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5634 /* syntax/typing.nit:1015 */
5635 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5636 /* syntax/typing.nit:1016 */
5637 REGB0 = TAG_Bool(true);
5638 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5639 stack_frame_head = fra.me.prev;
5640 return;
5641 }
5642 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5643 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5644 val_t REGB0;
5645 val_t tmp;
5646 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5647 fra.me.file = LOCATE_syntax___typing;
5648 fra.me.line = 1021;
5649 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5650 fra.me.has_broke = 0;
5651 fra.me.REG_size = 4;
5652 fra.me.nitni_local_ref_head = NULL;
5653 fra.me.REG[0] = NIT_NULL;
5654 fra.me.REG[1] = NIT_NULL;
5655 fra.me.REG[2] = NIT_NULL;
5656 fra.me.REG[3] = NIT_NULL;
5657 fra.me.REG[0] = p0;
5658 fra.me.REG[1] = p1;
5659 /* syntax/typing.nit:1023 */
5660 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5661 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5662 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5663 /* syntax/typing.nit:1026 */
5664 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5665 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5666 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5667 /* syntax/typing.nit:1027 */
5668 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5669 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5670 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5671 /* syntax/typing.nit:1029 */
5672 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5673 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5674 /* syntax/typing.nit:1030 */
5675 REGB0 = TAG_Bool(true);
5676 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5677 stack_frame_head = fra.me.prev;
5678 return;
5679 }
5680 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5681 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5682 val_t REGB0;
5683 val_t REGB1;
5684 val_t tmp;
5685 static val_t once_value_1; /* Once value */
5686 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5687 fra.me.file = LOCATE_syntax___typing;
5688 fra.me.line = 1035;
5689 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5690 fra.me.has_broke = 0;
5691 fra.me.REG_size = 7;
5692 fra.me.nitni_local_ref_head = NULL;
5693 fra.me.REG[0] = NIT_NULL;
5694 fra.me.REG[1] = NIT_NULL;
5695 fra.me.REG[2] = NIT_NULL;
5696 fra.me.REG[3] = NIT_NULL;
5697 fra.me.REG[4] = NIT_NULL;
5698 fra.me.REG[5] = NIT_NULL;
5699 fra.me.REG[6] = NIT_NULL;
5700 fra.me.REG[0] = p0;
5701 fra.me.REG[1] = p1;
5702 /* syntax/typing.nit:1037 */
5703 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5704 /* syntax/typing.nit:1040 */
5705 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5706 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5707 /* syntax/typing.nit:1041 */
5708 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5709 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5710 /* syntax/typing.nit:1044 */
5711 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5712 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5713 /* syntax/typing.nit:1045 */
5714 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5715 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5716 if (UNTAG_Bool(REGB0)) {
5717 /* syntax/typing.nit:1046 */
5718 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5719 if (!once_value_1) {
5720 fra.me.REG[5] = BOX_NativeString("Warning: left operand of a 'or else' is not a nullable type.");
5721 REGB0 = TAG_Int(60);
5722 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5723 once_value_1 = fra.me.REG[5];
5724 register_static_object(&once_value_1);
5725 } else fra.me.REG[5] = once_value_1;
5726 fra.me.REG[5] = fra.me.REG[5];
5727 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5728 } else {
5729 /* syntax/typing.nit:1048 */
5730 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5731 fra.me.REG[3] = fra.me.REG[5];
5732 }
5733 /* syntax/typing.nit:1052 */
5734 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5735 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5736 /* syntax/typing.nit:1053 */
5737 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5738 if (UNTAG_Bool(REGB0)) {
5739 } else {
5740 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5741 if (UNTAG_Bool(REGB1)) {
5742 REGB1 = TAG_Bool(false);
5743 REGB0 = REGB1;
5744 } else {
5745 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5746 REGB0 = REGB1;
5747 }
5748 }
5749 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5750 if (UNTAG_Bool(REGB0)) {
5751 /* syntax/typing.nit:1054 */
5752 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5753 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5754 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]);
5755 }
5756 /* syntax/typing.nit:1058 */
5757 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5758 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5759 /* syntax/typing.nit:1059 */
5760 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5761 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5762 /* syntax/typing.nit:1062 */
5763 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5764 /* syntax/typing.nit:1065 */
5765 REGB0 = TAG_Int(1);
5766 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5767 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5768 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5769 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]);
5770 /* syntax/typing.nit:1066 */
5771 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5772 if (UNTAG_Bool(REGB0)) {
5773 } else {
5774 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5775 if (UNTAG_Bool(REGB1)) {
5776 REGB1 = TAG_Bool(false);
5777 REGB0 = REGB1;
5778 } else {
5779 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5780 REGB0 = REGB1;
5781 }
5782 }
5783 if (UNTAG_Bool(REGB0)) {
5784 goto label2;
5785 }
5786 /* syntax/typing.nit:1068 */
5787 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5788 /* syntax/typing.nit:1069 */
5789 REGB0 = TAG_Bool(true);
5790 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5791 label2: while(0);
5792 stack_frame_head = fra.me.prev;
5793 return;
5794 }
5795 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5796 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5797 val_t REGB0;
5798 val_t tmp;
5799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5800 fra.me.file = LOCATE_syntax___typing;
5801 fra.me.line = 1074;
5802 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5803 fra.me.has_broke = 0;
5804 fra.me.REG_size = 2;
5805 fra.me.nitni_local_ref_head = NULL;
5806 fra.me.REG[0] = NIT_NULL;
5807 fra.me.REG[1] = NIT_NULL;
5808 fra.me.REG[0] = p0;
5809 fra.me.REG[1] = p1;
5810 /* syntax/typing.nit:1076 */
5811 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5812 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5813 /* syntax/typing.nit:1077 */
5814 REGB0 = TAG_Bool(true);
5815 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5816 stack_frame_head = fra.me.prev;
5817 return;
5818 }
5819 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5820 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5821 val_t REGB0;
5822 val_t tmp;
5823 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5824 fra.me.file = LOCATE_syntax___typing;
5825 fra.me.line = 1082;
5826 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5827 fra.me.has_broke = 0;
5828 fra.me.REG_size = 2;
5829 fra.me.nitni_local_ref_head = NULL;
5830 fra.me.REG[0] = NIT_NULL;
5831 fra.me.REG[1] = NIT_NULL;
5832 fra.me.REG[0] = p0;
5833 fra.me.REG[1] = p1;
5834 /* syntax/typing.nit:1084 */
5835 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5836 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5837 /* syntax/typing.nit:1085 */
5838 REGB0 = TAG_Bool(true);
5839 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5840 stack_frame_head = fra.me.prev;
5841 return;
5842 }
5843 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5844 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5845 val_t REGB0;
5846 val_t tmp;
5847 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5848 fra.me.file = LOCATE_syntax___typing;
5849 fra.me.line = 1090;
5850 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5851 fra.me.has_broke = 0;
5852 fra.me.REG_size = 2;
5853 fra.me.nitni_local_ref_head = NULL;
5854 fra.me.REG[0] = NIT_NULL;
5855 fra.me.REG[1] = NIT_NULL;
5856 fra.me.REG[0] = p0;
5857 fra.me.REG[1] = p1;
5858 /* syntax/typing.nit:1092 */
5859 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5860 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5861 /* syntax/typing.nit:1093 */
5862 REGB0 = TAG_Bool(true);
5863 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5864 stack_frame_head = fra.me.prev;
5865 return;
5866 }
5867 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5868 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5869 val_t REGB0;
5870 val_t tmp;
5871 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5872 fra.me.file = LOCATE_syntax___typing;
5873 fra.me.line = 1098;
5874 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5875 fra.me.has_broke = 0;
5876 fra.me.REG_size = 2;
5877 fra.me.nitni_local_ref_head = NULL;
5878 fra.me.REG[0] = NIT_NULL;
5879 fra.me.REG[1] = NIT_NULL;
5880 fra.me.REG[0] = p0;
5881 fra.me.REG[1] = p1;
5882 /* syntax/typing.nit:1100 */
5883 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5884 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5885 /* syntax/typing.nit:1101 */
5886 REGB0 = TAG_Bool(true);
5887 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5888 stack_frame_head = fra.me.prev;
5889 return;
5890 }
5891 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5892 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5893 val_t REGB0;
5894 val_t tmp;
5895 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5896 fra.me.file = LOCATE_syntax___typing;
5897 fra.me.line = 1106;
5898 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5899 fra.me.has_broke = 0;
5900 fra.me.REG_size = 2;
5901 fra.me.nitni_local_ref_head = NULL;
5902 fra.me.REG[0] = NIT_NULL;
5903 fra.me.REG[1] = NIT_NULL;
5904 fra.me.REG[0] = p0;
5905 /* syntax/typing.nit:1106 */
5906 fra.me.REG[1] = fra.me.REG[0];
5907 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
5908 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5909 if (UNTAG_Bool(REGB0)) {
5910 } else {
5911 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1106);
5912 }
5913 goto label1;
5914 label1: while(0);
5915 stack_frame_head = fra.me.prev;
5916 return fra.me.REG[1];
5917 }
5918 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5919 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5920 val_t REGB0;
5921 val_t tmp;
5922 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5923 fra.me.file = LOCATE_syntax___typing;
5924 fra.me.line = 1108;
5925 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5926 fra.me.has_broke = 0;
5927 fra.me.REG_size = 5;
5928 fra.me.nitni_local_ref_head = NULL;
5929 fra.me.REG[0] = NIT_NULL;
5930 fra.me.REG[1] = NIT_NULL;
5931 fra.me.REG[2] = NIT_NULL;
5932 fra.me.REG[3] = NIT_NULL;
5933 fra.me.REG[4] = NIT_NULL;
5934 fra.me.REG[0] = p0;
5935 fra.me.REG[1] = p1;
5936 /* syntax/typing.nit:1110 */
5937 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5938 /* syntax/typing.nit:1111 */
5939 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5940 /* syntax/typing.nit:1112 */
5941 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5942 /* syntax/typing.nit:1113 */
5943 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5944 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));
5945 /* syntax/typing.nit:1114 */
5946 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5947 /* syntax/typing.nit:1115 */
5948 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5949 /* syntax/typing.nit:1116 */
5950 REGB0 = TAG_Bool(true);
5951 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5952 stack_frame_head = fra.me.prev;
5953 return;
5954 }
5955 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){
5956 struct {struct stack_frame_t me;} fra;
5957 fun_t CREG[1];
5958 val_t tmp;
5959 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5960 fra.me.file = LOCATE_syntax___typing;
5961 fra.me.line = 0;
5962 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5963 fra.me.has_broke = 0;
5964 fra.me.REG_size = 1;
5965 fra.me.nitni_local_ref_head = NULL;
5966 fra.me.REG[0] = NIT_NULL;
5967 fra.me.closure_ctx = closctx_param;
5968 fra.me.closure_funs = CREG;
5969 fra.me.REG[0] = p0;
5970 CREG[0] = clos_fun0;
5971 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5972 stack_frame_head = fra.me.prev;
5973 return;
5974 }
5975 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
5976 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5977 val_t REGB0;
5978 val_t tmp;
5979 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5980 fra.me.file = LOCATE_syntax___typing;
5981 fra.me.line = 1121;
5982 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
5983 fra.me.has_broke = 0;
5984 fra.me.REG_size = 2;
5985 fra.me.nitni_local_ref_head = NULL;
5986 fra.me.REG[0] = NIT_NULL;
5987 fra.me.REG[1] = NIT_NULL;
5988 fra.me.REG[0] = p0;
5989 fra.me.REG[1] = p1;
5990 /* syntax/typing.nit:1123 */
5991 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5992 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5993 /* syntax/typing.nit:1124 */
5994 REGB0 = TAG_Bool(true);
5995 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5996 stack_frame_head = fra.me.prev;
5997 return;
5998 }
5999 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
6000 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6001 val_t REGB0;
6002 val_t REGB1;
6003 val_t tmp;
6004 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6005 fra.me.file = LOCATE_syntax___typing;
6006 fra.me.line = 1129;
6007 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
6008 fra.me.has_broke = 0;
6009 fra.me.REG_size = 3;
6010 fra.me.nitni_local_ref_head = NULL;
6011 fra.me.REG[0] = NIT_NULL;
6012 fra.me.REG[1] = NIT_NULL;
6013 fra.me.REG[2] = NIT_NULL;
6014 fra.me.REG[0] = p0;
6015 fra.me.REG[1] = p1;
6016 /* syntax/typing.nit:1131 */
6017 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6018 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
6019 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]);
6020 /* syntax/typing.nit:1132 */
6021 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6022 if (UNTAG_Bool(REGB0)) {
6023 } else {
6024 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6025 if (UNTAG_Bool(REGB1)) {
6026 REGB1 = TAG_Bool(false);
6027 REGB0 = REGB1;
6028 } else {
6029 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6030 REGB0 = REGB1;
6031 }
6032 }
6033 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6034 if (UNTAG_Bool(REGB0)) {
6035 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
6036 }
6037 stack_frame_head = fra.me.prev;
6038 return;
6039 }
6040 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
6041 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6042 val_t REGB0;
6043 val_t tmp;
6044 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6045 fra.me.file = LOCATE_syntax___typing;
6046 fra.me.line = 1135;
6047 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
6048 fra.me.has_broke = 0;
6049 fra.me.REG_size = 3;
6050 fra.me.nitni_local_ref_head = NULL;
6051 fra.me.REG[0] = NIT_NULL;
6052 fra.me.REG[1] = NIT_NULL;
6053 fra.me.REG[2] = NIT_NULL;
6054 fra.me.REG[0] = p0;
6055 fra.me.REG[1] = p1;
6056 fra.me.REG[2] = p2;
6057 /* syntax/typing.nit:1137 */
6058 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6059 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6060 /* syntax/typing.nit:1138 */
6061 REGB0 = TAG_Bool(true);
6062 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6063 stack_frame_head = fra.me.prev;
6064 return;
6065 }
6066 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
6067 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
6068 val_t REGB0;
6069 val_t REGB1;
6070 val_t tmp;
6071 static val_t once_value_2; /* Once value */
6072 static val_t once_value_3; /* Once value */
6073 static val_t once_value_4; /* Once value */
6074 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6075 fra.me.file = LOCATE_syntax___typing;
6076 fra.me.line = 1143;
6077 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
6078 fra.me.has_broke = 0;
6079 fra.me.REG_size = 6;
6080 fra.me.nitni_local_ref_head = NULL;
6081 fra.me.REG[0] = NIT_NULL;
6082 fra.me.REG[1] = NIT_NULL;
6083 fra.me.REG[2] = NIT_NULL;
6084 fra.me.REG[3] = NIT_NULL;
6085 fra.me.REG[4] = NIT_NULL;
6086 fra.me.REG[5] = NIT_NULL;
6087 fra.me.REG[0] = p0;
6088 fra.me.REG[1] = p1;
6089 /* syntax/typing.nit:1145 */
6090 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6091 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6092 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6093 if (UNTAG_Bool(REGB0)) {
6094 REGB0 = TAG_Bool(true);
6095 } else {
6096 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6097 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6098 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6099 REGB0 = REGB1;
6100 }
6101 if (UNTAG_Bool(REGB0)) {
6102 goto label1;
6103 }
6104 /* syntax/typing.nit:1146 */
6105 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6106 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6107 /* syntax/typing.nit:1147 */
6108 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6109 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6110 /* syntax/typing.nit:1148 */
6111 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6112 if (UNTAG_Bool(REGB0)) {
6113 /* syntax/typing.nit:1149 */
6114 fra.me.REG[2] = fra.me.REG[3];
6115 } else {
6116 /* syntax/typing.nit:1150 */
6117 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
6118 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6119 if (UNTAG_Bool(REGB0)) {
6120 /* syntax/typing.nit:1151 */
6121 REGB0 = TAG_Int(5);
6122 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6123 if (!once_value_2) {
6124 fra.me.REG[5] = BOX_NativeString("Type error: ");
6125 REGB0 = TAG_Int(12);
6126 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6127 once_value_2 = fra.me.REG[5];
6128 register_static_object(&once_value_2);
6129 } else fra.me.REG[5] = once_value_2;
6130 fra.me.REG[5] = fra.me.REG[5];
6131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6132 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6133 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6134 if (!once_value_3) {
6135 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
6136 REGB0 = TAG_Int(19);
6137 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6138 once_value_3 = fra.me.REG[5];
6139 register_static_object(&once_value_3);
6140 } else fra.me.REG[5] = once_value_3;
6141 fra.me.REG[5] = fra.me.REG[5];
6142 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6143 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6145 if (!once_value_4) {
6146 fra.me.REG[3] = BOX_NativeString(".");
6147 REGB0 = TAG_Int(1);
6148 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6149 once_value_4 = fra.me.REG[3];
6150 register_static_object(&once_value_4);
6151 } else fra.me.REG[3] = once_value_4;
6152 fra.me.REG[3] = fra.me.REG[3];
6153 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6154 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6155 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6156 /* syntax/typing.nit:1152 */
6157 goto label1;
6158 }
6159 }
6160 /* syntax/typing.nit:1154 */
6161 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
6162 /* syntax/typing.nit:1155 */
6163 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6164 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]);
6165 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6166 if (UNTAG_Bool(REGB0)) {
6167 REGB0 = TAG_Bool(true);
6168 } else {
6169 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6170 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]);
6171 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6172 REGB0 = REGB1;
6173 }
6174 if (UNTAG_Bool(REGB0)) {
6175 goto label1;
6176 }
6177 /* syntax/typing.nit:1156 */
6178 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6179 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6180 /* syntax/typing.nit:1157 */
6181 REGB0 = TAG_Bool(true);
6182 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6183 label1: while(0);
6184 stack_frame_head = fra.me.prev;
6185 return;
6186 }
6187 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
6188 struct {struct stack_frame_t me;} fra;
6189 val_t tmp;
6190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6191 fra.me.file = LOCATE_syntax___typing;
6192 fra.me.line = 1162;
6193 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
6194 fra.me.has_broke = 0;
6195 fra.me.REG_size = 1;
6196 fra.me.nitni_local_ref_head = NULL;
6197 fra.me.REG[0] = NIT_NULL;
6198 fra.me.REG[0] = p0;
6199 /* syntax/typing.nit:1162 */
6200 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
6201 stack_frame_head = fra.me.prev;
6202 return fra.me.REG[0];
6203 }
6204 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
6205 struct {struct stack_frame_t me;} fra;
6206 val_t tmp;
6207 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6208 fra.me.file = LOCATE_syntax___typing;
6209 fra.me.line = 1163;
6210 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
6211 fra.me.has_broke = 0;
6212 fra.me.REG_size = 1;
6213 fra.me.nitni_local_ref_head = NULL;
6214 fra.me.REG[0] = NIT_NULL;
6215 fra.me.REG[0] = p0;
6216 /* syntax/typing.nit:1163 */
6217 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6218 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
6219 goto label1;
6220 label1: while(0);
6221 stack_frame_head = fra.me.prev;
6222 return fra.me.REG[0];
6223 }
6224 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
6225 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
6226 val_t REGB0;
6227 val_t REGB1;
6228 val_t REGB2;
6229 val_t tmp;
6230 static val_t once_value_1; /* Once value */
6231 static val_t once_value_2; /* Once value */
6232 static val_t once_value_3; /* Once value */
6233 static val_t once_value_5; /* Once value */
6234 static val_t once_value_6; /* Once value */
6235 static val_t once_value_8; /* Once value */
6236 static val_t once_value_9; /* Once value */
6237 static val_t once_value_10; /* Once value */
6238 static val_t once_value_11; /* Once value */
6239 static val_t once_value_12; /* Once value */
6240 static val_t once_value_13; /* Once value */
6241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6242 fra.me.file = LOCATE_syntax___typing;
6243 fra.me.line = 1164;
6244 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
6245 fra.me.has_broke = 0;
6246 fra.me.REG_size = 10;
6247 fra.me.nitni_local_ref_head = NULL;
6248 fra.me.REG[0] = NIT_NULL;
6249 fra.me.REG[1] = NIT_NULL;
6250 fra.me.REG[2] = NIT_NULL;
6251 fra.me.REG[3] = NIT_NULL;
6252 fra.me.REG[4] = NIT_NULL;
6253 fra.me.REG[5] = NIT_NULL;
6254 fra.me.REG[6] = NIT_NULL;
6255 fra.me.REG[7] = NIT_NULL;
6256 fra.me.REG[8] = NIT_NULL;
6257 fra.me.REG[9] = NIT_NULL;
6258 fra.me.REG[0] = p0;
6259 fra.me.REG[1] = p1;
6260 /* syntax/typing.nit:1164 */
6261 fra.me.REG[2] = fra.me.REG[0];
6262 /* syntax/typing.nit:1166 */
6263 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6264 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
6265 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
6266 /* syntax/typing.nit:1167 */
6267 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6268 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6269 if (UNTAG_Bool(REGB0)) {
6270 /* syntax/typing.nit:1168 */
6271 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6272 REGB0 = TAG_Bool(true);
6273 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
6274 } else {
6275 /* syntax/typing.nit:1169 */
6276 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6277 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6278 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
6279 if (UNTAG_Bool(REGB0)) {
6280 /* syntax/typing.nit:1170 */
6281 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6282 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6283 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6284 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6285 /* ../lib/standard/collection/array.nit:266 */
6286 fra.me.REG[4] = fra.me.REG[5];
6287 /* ../lib/standard/collection/array.nit:269 */
6288 REGB0 = TAG_Int(0);
6289 /* ../lib/standard/collection/array.nit:270 */
6290 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6291 if (UNTAG_Bool(REGB1)) {
6292 } else {
6293 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6294 }
6295 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6296 /* ../lib/standard/collection/array.nit:271 */
6297 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6298 /* ../lib/standard/collection/array.nit:272 */
6299 while(1) {
6300 /* ../lib/standard/collection/array.nit:24 */
6301 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6302 if (UNTAG_Bool(REGB1)) {
6303 } else {
6304 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6305 }
6306 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6307 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6308 if (UNTAG_Bool(REGB2)) {
6309 } else {
6310 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6311 }
6312 /* ../lib/standard/kernel.nit:232 */
6313 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6314 /* ../lib/standard/collection/array.nit:272 */
6315 if (UNTAG_Bool(REGB1)) {
6316 /* ../lib/standard/collection/array.nit:273 */
6317 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6318 if (UNTAG_Bool(REGB1)) {
6319 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6320 }
6321 /* ../lib/standard/collection/array.nit:718 */
6322 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6323 /* syntax/typing.nit:1172 */
6324 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6325 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6326 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6327 if (UNTAG_Bool(REGB1)) {
6328 /* syntax/typing.nit:1173 */
6329 REGB1 = TAG_Int(5);
6330 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6331 if (!once_value_1) {
6332 fra.me.REG[9] = BOX_NativeString("Error: ");
6333 REGB1 = TAG_Int(7);
6334 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6335 once_value_1 = fra.me.REG[9];
6336 register_static_object(&once_value_1);
6337 } else fra.me.REG[9] = once_value_1;
6338 fra.me.REG[9] = fra.me.REG[9];
6339 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6340 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6341 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6343 if (!once_value_2) {
6344 fra.me.REG[9] = BOX_NativeString("::");
6345 REGB1 = TAG_Int(2);
6346 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6347 once_value_2 = fra.me.REG[9];
6348 register_static_object(&once_value_2);
6349 } else fra.me.REG[9] = once_value_2;
6350 fra.me.REG[9] = fra.me.REG[9];
6351 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6352 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6354 if (!once_value_3) {
6355 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6356 REGB1 = TAG_Int(22);
6357 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6358 once_value_3 = fra.me.REG[9];
6359 register_static_object(&once_value_3);
6360 } else fra.me.REG[9] = once_value_3;
6361 fra.me.REG[9] = fra.me.REG[9];
6362 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6363 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6364 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6365 } else {
6366 /* syntax/typing.nit:1175 */
6367 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6368 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6369 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6370 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6371 }
6372 /* ../lib/standard/collection/array.nit:274 */
6373 REGB1 = TAG_Int(1);
6374 /* ../lib/standard/kernel.nit:235 */
6375 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6376 /* ../lib/standard/collection/array.nit:274 */
6377 REGB0 = REGB1;
6378 } else {
6379 /* ../lib/standard/collection/array.nit:272 */
6380 goto label4;
6381 }
6382 }
6383 label4: while(0);
6384 /* syntax/typing.nit:1178 */
6385 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6386 if (UNTAG_Bool(REGB0)) {
6387 /* syntax/typing.nit:1179 */
6388 REGB0 = TAG_Int(3);
6389 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6390 if (!once_value_5) {
6391 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6392 REGB0 = TAG_Int(27);
6393 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6394 once_value_5 = fra.me.REG[4];
6395 register_static_object(&once_value_5);
6396 } else fra.me.REG[4] = once_value_5;
6397 fra.me.REG[4] = fra.me.REG[4];
6398 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6399 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6400 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6401 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6402 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6403 if (!once_value_6) {
6404 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6405 REGB0 = TAG_Int(17);
6406 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6407 once_value_6 = fra.me.REG[4];
6408 register_static_object(&once_value_6);
6409 } else fra.me.REG[4] = once_value_6;
6410 fra.me.REG[4] = fra.me.REG[4];
6411 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6412 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6413 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6414 /* syntax/typing.nit:1180 */
6415 goto label7;
6416 } else {
6417 /* ../lib/standard/collection/array.nit:24 */
6418 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6419 if (UNTAG_Bool(REGB0)) {
6420 } else {
6421 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6422 }
6423 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6424 /* syntax/typing.nit:1181 */
6425 REGB1 = TAG_Int(1);
6426 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6427 if (UNTAG_Bool(REGB2)) {
6428 } else {
6429 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6430 }
6431 /* ../lib/standard/kernel.nit:234 */
6432 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6433 /* syntax/typing.nit:1181 */
6434 if (UNTAG_Bool(REGB1)) {
6435 /* syntax/typing.nit:1182 */
6436 REGB1 = TAG_Int(5);
6437 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6438 if (!once_value_8) {
6439 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6440 REGB1 = TAG_Int(37);
6441 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6442 once_value_8 = fra.me.REG[4];
6443 register_static_object(&once_value_8);
6444 } else fra.me.REG[4] = once_value_8;
6445 fra.me.REG[4] = fra.me.REG[4];
6446 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6447 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6448 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6449 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6451 if (!once_value_9) {
6452 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6453 REGB1 = TAG_Int(18);
6454 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6455 once_value_9 = fra.me.REG[4];
6456 register_static_object(&once_value_9);
6457 } else fra.me.REG[4] = once_value_9;
6458 fra.me.REG[4] = fra.me.REG[4];
6459 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6460 if (!once_value_10) {
6461 fra.me.REG[4] = BOX_NativeString(", ");
6462 REGB1 = TAG_Int(2);
6463 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6464 once_value_10 = fra.me.REG[4];
6465 register_static_object(&once_value_10);
6466 } else fra.me.REG[4] = once_value_10;
6467 fra.me.REG[4] = fra.me.REG[4];
6468 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6469 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6470 if (!once_value_11) {
6471 fra.me.REG[4] = BOX_NativeString(".");
6472 REGB1 = TAG_Int(1);
6473 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6474 once_value_11 = fra.me.REG[4];
6475 register_static_object(&once_value_11);
6476 } else fra.me.REG[4] = once_value_11;
6477 fra.me.REG[4] = fra.me.REG[4];
6478 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6479 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6480 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6481 /* syntax/typing.nit:1183 */
6482 goto label7;
6483 }
6484 }
6485 /* syntax/typing.nit:1185 */
6486 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6487 /* syntax/typing.nit:1186 */
6488 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6489 if (UNTAG_Bool(REGB1)) {
6490 } else {
6491 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1186);
6492 }
6493 /* syntax/typing.nit:1187 */
6494 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6495 /* syntax/typing.nit:1188 */
6496 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6497 /* syntax/typing.nit:1189 */
6498 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6499 fra.me.REG[6] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[6])(fra.me.REG[6]);
6500 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6501 REGB0 = TAG_Int(0);
6502 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6503 if (UNTAG_Bool(REGB2)) {
6504 } else {
6505 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6506 }
6507 /* ../lib/standard/kernel.nit:234 */
6508 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6509 /* syntax/typing.nit:1189 */
6510 if (UNTAG_Bool(REGB0)) {
6511 /* syntax/typing.nit:1190 */
6512 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6513 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6514 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*/;
6515 if (UNTAG_Bool(REGB0)) {
6516 } else {
6517 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1190);
6518 }
6519 REGB0 = TAG_Bool(true);
6520 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);
6521 /* syntax/typing.nit:1191 */
6522 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6523 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6524 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]);
6525 }
6526 } else {
6527 /* syntax/typing.nit:1194 */
6528 REGB0 = TAG_Int(3);
6529 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6530 if (!once_value_12) {
6531 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6532 REGB0 = TAG_Int(35);
6533 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6534 once_value_12 = fra.me.REG[5];
6535 register_static_object(&once_value_12);
6536 } else fra.me.REG[5] = once_value_12;
6537 fra.me.REG[5] = fra.me.REG[5];
6538 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6539 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6540 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6541 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6542 if (!once_value_13) {
6543 fra.me.REG[5] = BOX_NativeString(".");
6544 REGB0 = TAG_Int(1);
6545 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6546 once_value_13 = fra.me.REG[5];
6547 register_static_object(&once_value_13);
6548 } else fra.me.REG[5] = once_value_13;
6549 fra.me.REG[5] = fra.me.REG[5];
6550 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6551 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6552 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6553 /* syntax/typing.nit:1195 */
6554 goto label7;
6555 }
6556 }
6557 /* syntax/typing.nit:1198 */
6558 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6559 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6560 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6561 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*/;
6562 if (UNTAG_Bool(REGB0)) {
6563 } else {
6564 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1198);
6565 }
6566 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6567 if (UNTAG_Bool(REGB0)) {
6568 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1198);
6569 }
6570 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6571 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6572 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6573 if (UNTAG_Bool(REGB0)) {
6574 } else {
6575 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6576 if (UNTAG_Bool(REGB1)) {
6577 REGB1 = TAG_Bool(false);
6578 REGB0 = REGB1;
6579 } else {
6580 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6581 REGB0 = REGB1;
6582 }
6583 }
6584 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6585 if (UNTAG_Bool(REGB0)) {
6586 /* syntax/typing.nit:1199 */
6587 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6588 /* syntax/typing.nit:1200 */
6589 fra.me.REG[4] = NIT_NULL;
6590 /* ../lib/standard/collection/array.nit:269 */
6591 REGB0 = TAG_Int(0);
6592 /* ../lib/standard/collection/array.nit:270 */
6593 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6594 if (UNTAG_Bool(REGB1)) {
6595 } else {
6596 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6597 }
6598 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6599 /* ../lib/standard/collection/array.nit:271 */
6600 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6601 /* ../lib/standard/collection/array.nit:272 */
6602 while(1) {
6603 /* ../lib/standard/collection/array.nit:24 */
6604 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6605 if (UNTAG_Bool(REGB1)) {
6606 } else {
6607 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6608 }
6609 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6610 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6611 if (UNTAG_Bool(REGB2)) {
6612 } else {
6613 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6614 }
6615 /* ../lib/standard/kernel.nit:232 */
6616 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6617 /* ../lib/standard/collection/array.nit:272 */
6618 if (UNTAG_Bool(REGB1)) {
6619 /* ../lib/standard/collection/array.nit:273 */
6620 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6621 if (UNTAG_Bool(REGB1)) {
6622 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6623 }
6624 /* ../lib/standard/collection/array.nit:718 */
6625 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6626 /* syntax/typing.nit:1202 */
6627 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6628 if (UNTAG_Bool(REGB1)) {
6629 } else {
6630 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1202);
6631 }
6632 /* syntax/typing.nit:1203 */
6633 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6634 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6635 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*/;
6636 if (UNTAG_Bool(REGB1)) {
6637 } else {
6638 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1203);
6639 }
6640 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6641 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6642 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6643 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6644 if (UNTAG_Bool(REGB1)) {
6645 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1203);
6646 }
6647 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6648 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6649 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6650 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6651 if (UNTAG_Bool(REGB1)) {
6652 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1203);
6653 }
6654 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6655 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6656 /* syntax/typing.nit:1204 */
6657 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6658 /* syntax/typing.nit:1205 */
6659 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6660 if (UNTAG_Bool(REGB1)) {
6661 } else {
6662 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6663 if (UNTAG_Bool(REGB2)) {
6664 REGB2 = TAG_Bool(false);
6665 REGB1 = REGB2;
6666 } else {
6667 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6668 REGB1 = REGB2;
6669 }
6670 }
6671 if (UNTAG_Bool(REGB1)) {
6672 REGB1 = TAG_Bool(true);
6673 } else {
6674 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6675 if (UNTAG_Bool(REGB2)) {
6676 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1205);
6677 }
6678 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6679 REGB1 = REGB2;
6680 }
6681 if (UNTAG_Bool(REGB1)) {
6682 /* syntax/typing.nit:1206 */
6683 fra.me.REG[4] = fra.me.REG[8];
6684 }
6685 /* ../lib/standard/collection/array.nit:274 */
6686 REGB1 = TAG_Int(1);
6687 /* ../lib/standard/kernel.nit:235 */
6688 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6689 /* ../lib/standard/collection/array.nit:274 */
6690 REGB0 = REGB1;
6691 } else {
6692 /* ../lib/standard/collection/array.nit:272 */
6693 goto label14;
6694 }
6695 }
6696 label14: while(0);
6697 /* ../lib/standard/collection/array.nit:269 */
6698 REGB0 = TAG_Int(0);
6699 /* ../lib/standard/collection/array.nit:270 */
6700 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6701 if (UNTAG_Bool(REGB1)) {
6702 } else {
6703 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6704 }
6705 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6706 /* ../lib/standard/collection/array.nit:271 */
6707 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6708 /* ../lib/standard/collection/array.nit:272 */
6709 while(1) {
6710 /* ../lib/standard/collection/array.nit:24 */
6711 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6712 if (UNTAG_Bool(REGB1)) {
6713 } else {
6714 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6715 }
6716 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6717 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6718 if (UNTAG_Bool(REGB2)) {
6719 } else {
6720 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6721 }
6722 /* ../lib/standard/kernel.nit:232 */
6723 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6724 /* ../lib/standard/collection/array.nit:272 */
6725 if (UNTAG_Bool(REGB1)) {
6726 /* ../lib/standard/collection/array.nit:273 */
6727 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6728 if (UNTAG_Bool(REGB1)) {
6729 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6730 }
6731 /* ../lib/standard/collection/array.nit:718 */
6732 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6733 /* syntax/typing.nit:1210 */
6734 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6735 if (UNTAG_Bool(REGB1)) {
6736 } else {
6737 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1210);
6738 }
6739 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]);
6740 /* ../lib/standard/collection/array.nit:274 */
6741 REGB1 = TAG_Int(1);
6742 /* ../lib/standard/kernel.nit:235 */
6743 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6744 /* ../lib/standard/collection/array.nit:274 */
6745 REGB0 = REGB1;
6746 } else {
6747 /* ../lib/standard/collection/array.nit:272 */
6748 goto label15;
6749 }
6750 }
6751 label15: while(0);
6752 /* syntax/typing.nit:1212 */
6753 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6754 }
6755 /* syntax/typing.nit:1214 */
6756 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6757 /* syntax/typing.nit:1215 */
6758 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6759 if (UNTAG_Bool(REGB0)) {
6760 } else {
6761 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1215);
6762 }
6763 /* syntax/typing.nit:1216 */
6764 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6765 /* syntax/typing.nit:1217 */
6766 REGB0 = TAG_Bool(true);
6767 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6768 label7: while(0);
6769 stack_frame_head = fra.me.prev;
6770 return;
6771 }
6772 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6773 struct {struct stack_frame_t me;} fra;
6774 val_t tmp;
6775 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6776 fra.me.file = LOCATE_syntax___typing;
6777 fra.me.line = 1222;
6778 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6779 fra.me.has_broke = 0;
6780 fra.me.REG_size = 1;
6781 fra.me.nitni_local_ref_head = NULL;
6782 fra.me.REG[0] = NIT_NULL;
6783 fra.me.REG[0] = p0;
6784 /* syntax/typing.nit:1222 */
6785 fra.me.REG[0] = NIT_NULL;
6786 goto label1;
6787 label1: while(0);
6788 stack_frame_head = fra.me.prev;
6789 return fra.me.REG[0];
6790 }
6791 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6792 struct {struct stack_frame_t me;} fra;
6793 val_t tmp;
6794 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6795 fra.me.file = LOCATE_syntax___typing;
6796 fra.me.line = 1223;
6797 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6798 fra.me.has_broke = 0;
6799 fra.me.REG_size = 0;
6800 fra.me.nitni_local_ref_head = NULL;
6801 /* syntax/typing.nit:1223 */
6802 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1223);
6803 stack_frame_head = fra.me.prev;
6804 return NIT_NULL;
6805 }
6806 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6807 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6808 val_t REGB0;
6809 val_t REGB1;
6810 val_t tmp;
6811 static val_t once_value_1; /* Once value */
6812 static val_t once_value_2; /* Once value */
6813 static val_t once_value_4; /* Once value */
6814 static val_t once_value_5; /* Once value */
6815 static val_t once_value_6; /* Once value */
6816 static val_t once_value_7; /* Once value */
6817 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6818 fra.me.file = LOCATE_syntax___typing;
6819 fra.me.line = 1225;
6820 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6821 fra.me.has_broke = 0;
6822 fra.me.REG_size = 8;
6823 fra.me.nitni_local_ref_head = NULL;
6824 fra.me.REG[0] = NIT_NULL;
6825 fra.me.REG[1] = NIT_NULL;
6826 fra.me.REG[2] = NIT_NULL;
6827 fra.me.REG[3] = NIT_NULL;
6828 fra.me.REG[4] = NIT_NULL;
6829 fra.me.REG[5] = NIT_NULL;
6830 fra.me.REG[6] = NIT_NULL;
6831 fra.me.REG[7] = NIT_NULL;
6832 fra.me.REG[0] = p0;
6833 fra.me.REG[1] = p1;
6834 /* syntax/typing.nit:1225 */
6835 fra.me.REG[2] = fra.me.REG[0];
6836 /* syntax/typing.nit:1227 */
6837 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6838 /* syntax/typing.nit:1228 */
6839 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6840 /* syntax/typing.nit:1235 */
6841 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6842 if (UNTAG_Bool(REGB0)) {
6843 } else {
6844 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6845 if (UNTAG_Bool(REGB1)) {
6846 REGB1 = TAG_Bool(false);
6847 REGB0 = REGB1;
6848 } else {
6849 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6850 REGB0 = REGB1;
6851 }
6852 }
6853 if (UNTAG_Bool(REGB0)) {
6854 /* syntax/typing.nit:1236 */
6855 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6856 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6857 } else {
6858 /* syntax/typing.nit:1238 */
6859 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6860 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6861 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6862 if (UNTAG_Bool(REGB0)) {
6863 /* syntax/typing.nit:1239 */
6864 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6865 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6866 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6867 /* syntax/typing.nit:1240 */
6868 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6869 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6870 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6871 fra.me.REG[5] = fra.me.REG[6];
6872 } else {
6873 /* syntax/typing.nit:1242 */
6874 REGB0 = TAG_Int(3);
6875 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6876 if (!once_value_1) {
6877 fra.me.REG[7] = BOX_NativeString("Error: class ");
6878 REGB0 = TAG_Int(13);
6879 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6880 once_value_1 = fra.me.REG[7];
6881 register_static_object(&once_value_1);
6882 } else fra.me.REG[7] = once_value_1;
6883 fra.me.REG[7] = fra.me.REG[7];
6884 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6885 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6886 if (UNTAG_Bool(REGB0)) {
6887 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1242);
6888 }
6889 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6890 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6891 if (!once_value_2) {
6892 fra.me.REG[3] = BOX_NativeString(", not found.");
6893 REGB0 = TAG_Int(12);
6894 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6895 once_value_2 = fra.me.REG[3];
6896 register_static_object(&once_value_2);
6897 } else fra.me.REG[3] = once_value_2;
6898 fra.me.REG[3] = fra.me.REG[3];
6899 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6900 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6901 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6902 /* syntax/typing.nit:1243 */
6903 goto label3;
6904 }
6905 }
6906 /* syntax/typing.nit:1247 */
6907 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6908 if (UNTAG_Bool(REGB0)) {
6909 /* syntax/typing.nit:1248 */
6910 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6911 /* syntax/typing.nit:1250 */
6912 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6913 /* syntax/typing.nit:1252 */
6914 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6915 if (UNTAG_Bool(REGB0)) {
6916 } else {
6917 /* syntax/typing.nit:1255 */
6918 REGB0 = TAG_Int(3);
6919 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6920 if (!once_value_4) {
6921 fra.me.REG[7] = BOX_NativeString("Error: property ");
6922 REGB0 = TAG_Int(16);
6923 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6924 once_value_4 = fra.me.REG[7];
6925 register_static_object(&once_value_4);
6926 } else fra.me.REG[7] = once_value_4;
6927 fra.me.REG[7] = fra.me.REG[7];
6928 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6929 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6930 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6931 if (!once_value_5) {
6932 fra.me.REG[7] = BOX_NativeString(" is not a method.");
6933 REGB0 = TAG_Int(17);
6934 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6935 once_value_5 = fra.me.REG[7];
6936 register_static_object(&once_value_5);
6937 } else fra.me.REG[7] = once_value_5;
6938 fra.me.REG[7] = fra.me.REG[7];
6939 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6940 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6941 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6942 /* syntax/typing.nit:1256 */
6943 goto label3;
6944 }
6945 } else {
6946 /* syntax/typing.nit:1259 */
6947 REGB0 = TAG_Int(3);
6948 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6949 if (!once_value_6) {
6950 fra.me.REG[7] = BOX_NativeString("Error: property ");
6951 REGB0 = TAG_Int(16);
6952 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6953 once_value_6 = fra.me.REG[7];
6954 register_static_object(&once_value_6);
6955 } else fra.me.REG[7] = once_value_6;
6956 fra.me.REG[7] = fra.me.REG[7];
6957 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6958 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6960 if (!once_value_7) {
6961 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
6962 REGB0 = TAG_Int(27);
6963 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6964 once_value_7 = fra.me.REG[4];
6965 register_static_object(&once_value_7);
6966 } else fra.me.REG[4] = once_value_7;
6967 fra.me.REG[4] = fra.me.REG[4];
6968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6969 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6970 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6971 /* syntax/typing.nit:1260 */
6972 goto label3;
6973 }
6974 /* syntax/typing.nit:1263 */
6975 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
6976 /* syntax/typing.nit:1264 */
6977 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6978 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6979 if (UNTAG_Bool(REGB0)) {
6980 } else {
6981 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1264);
6982 }
6983 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
6984 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6985 label3: while(0);
6986 stack_frame_head = fra.me.prev;
6987 return;
6988 }
6989 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
6990 struct {struct stack_frame_t me;} fra;
6991 val_t tmp;
6992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6993 fra.me.file = LOCATE_syntax___typing;
6994 fra.me.line = 1269;
6995 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
6996 fra.me.has_broke = 0;
6997 fra.me.REG_size = 1;
6998 fra.me.nitni_local_ref_head = NULL;
6999 fra.me.REG[0] = NIT_NULL;
7000 fra.me.REG[0] = p0;
7001 /* syntax/typing.nit:1269 */
7002 fra.me.REG[0] = NIT_NULL;
7003 goto label1;
7004 label1: while(0);
7005 stack_frame_head = fra.me.prev;
7006 return fra.me.REG[0];
7007 }
7008 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
7009 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7010 val_t REGB0;
7011 val_t tmp;
7012 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7013 fra.me.file = LOCATE_syntax___typing;
7014 fra.me.line = 1270;
7015 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
7016 fra.me.has_broke = 0;
7017 fra.me.REG_size = 2;
7018 fra.me.nitni_local_ref_head = NULL;
7019 fra.me.REG[0] = NIT_NULL;
7020 fra.me.REG[1] = NIT_NULL;
7021 fra.me.REG[0] = p0;
7022 /* syntax/typing.nit:1270 */
7023 fra.me.REG[1] = fra.me.REG[0];
7024 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7025 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7026 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
7027 if (UNTAG_Bool(REGB0)) {
7028 } else {
7029 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1270);
7030 }
7031 goto label1;
7032 label1: while(0);
7033 stack_frame_head = fra.me.prev;
7034 return fra.me.REG[1];
7035 }
7036 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
7037 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7038 val_t REGB0;
7039 val_t tmp;
7040 static val_t once_value_1; /* Once value */
7041 static val_t once_value_2; /* Once value */
7042 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7043 fra.me.file = LOCATE_syntax___typing;
7044 fra.me.line = 1274;
7045 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
7046 fra.me.has_broke = 0;
7047 fra.me.REG_size = 4;
7048 fra.me.nitni_local_ref_head = NULL;
7049 fra.me.REG[0] = NIT_NULL;
7050 fra.me.REG[1] = NIT_NULL;
7051 fra.me.REG[2] = NIT_NULL;
7052 fra.me.REG[3] = NIT_NULL;
7053 fra.me.REG[0] = p0;
7054 fra.me.REG[1] = p1;
7055 /* syntax/typing.nit:1276 */
7056 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7057 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
7058 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
7059 /* syntax/typing.nit:1277 */
7060 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
7061 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7062 if (UNTAG_Bool(REGB0)) {
7063 /* syntax/typing.nit:1278 */
7064 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7065 REGB0 = TAG_Bool(true);
7066 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
7067 } else {
7068 /* syntax/typing.nit:1280 */
7069 REGB0 = TAG_Int(3);
7070 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7071 if (!once_value_1) {
7072 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
7073 REGB0 = TAG_Int(35);
7074 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7075 once_value_1 = fra.me.REG[3];
7076 register_static_object(&once_value_1);
7077 } else fra.me.REG[3] = once_value_1;
7078 fra.me.REG[3] = fra.me.REG[3];
7079 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7080 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7081 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7082 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7083 if (!once_value_2) {
7084 fra.me.REG[3] = BOX_NativeString(".");
7085 REGB0 = TAG_Int(1);
7086 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7087 once_value_2 = fra.me.REG[3];
7088 register_static_object(&once_value_2);
7089 } else fra.me.REG[3] = once_value_2;
7090 fra.me.REG[3] = fra.me.REG[3];
7091 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7092 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7093 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7094 /* syntax/typing.nit:1281 */
7095 goto label3;
7096 }
7097 label3: while(0);
7098 stack_frame_head = fra.me.prev;
7099 return;
7100 }
7101 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
7102 struct {struct stack_frame_t me;} fra;
7103 val_t tmp;
7104 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7105 fra.me.file = LOCATE_syntax___typing;
7106 fra.me.line = 1287;
7107 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
7108 fra.me.has_broke = 0;
7109 fra.me.REG_size = 1;
7110 fra.me.nitni_local_ref_head = NULL;
7111 fra.me.REG[0] = NIT_NULL;
7112 fra.me.REG[0] = p0;
7113 /* syntax/typing.nit:1287 */
7114 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7115 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7116 goto label1;
7117 label1: while(0);
7118 stack_frame_head = fra.me.prev;
7119 return fra.me.REG[0];
7120 }
7121 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
7122 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7123 val_t REGB0;
7124 val_t tmp;
7125 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7126 fra.me.file = LOCATE_syntax___typing;
7127 fra.me.line = 1288;
7128 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
7129 fra.me.has_broke = 0;
7130 fra.me.REG_size = 2;
7131 fra.me.nitni_local_ref_head = NULL;
7132 fra.me.REG[0] = NIT_NULL;
7133 fra.me.REG[1] = NIT_NULL;
7134 fra.me.REG[0] = p0;
7135 /* syntax/typing.nit:1288 */
7136 fra.me.REG[1] = fra.me.REG[0];
7137 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7138 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7139 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
7140 if (UNTAG_Bool(REGB0)) {
7141 } else {
7142 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1288);
7143 }
7144 goto label1;
7145 label1: while(0);
7146 stack_frame_head = fra.me.prev;
7147 return fra.me.REG[1];
7148 }
7149 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
7150 struct {struct stack_frame_t me;} fra;
7151 val_t tmp;
7152 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7153 fra.me.file = LOCATE_syntax___typing;
7154 fra.me.line = 1292;
7155 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
7156 fra.me.has_broke = 0;
7157 fra.me.REG_size = 1;
7158 fra.me.nitni_local_ref_head = NULL;
7159 fra.me.REG[0] = NIT_NULL;
7160 fra.me.REG[0] = p0;
7161 /* syntax/typing.nit:1292 */
7162 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7163 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7164 goto label1;
7165 label1: while(0);
7166 stack_frame_head = fra.me.prev;
7167 return fra.me.REG[0];
7168 }
7169 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
7170 struct {struct stack_frame_t me;} fra;
7171 val_t REGB0;
7172 val_t tmp;
7173 static val_t once_value_1; /* Once value */
7174 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7175 fra.me.file = LOCATE_syntax___typing;
7176 fra.me.line = 1293;
7177 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
7178 fra.me.has_broke = 0;
7179 fra.me.REG_size = 1;
7180 fra.me.nitni_local_ref_head = NULL;
7181 fra.me.REG[0] = NIT_NULL;
7182 fra.me.REG[0] = p0;
7183 /* syntax/typing.nit:1293 */
7184 if (!once_value_1) {
7185 fra.me.REG[0] = BOX_NativeString("init");
7186 REGB0 = TAG_Int(4);
7187 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
7188 once_value_1 = fra.me.REG[0];
7189 register_static_object(&once_value_1);
7190 } else fra.me.REG[0] = once_value_1;
7191 fra.me.REG[0] = fra.me.REG[0];
7192 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7193 goto label2;
7194 label2: while(0);
7195 stack_frame_head = fra.me.prev;
7196 return fra.me.REG[0];
7197 }
7198 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
7199 struct {struct stack_frame_t me;} fra;
7200 val_t tmp;
7201 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7202 fra.me.file = LOCATE_syntax___typing;
7203 fra.me.line = 1297;
7204 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
7205 fra.me.has_broke = 0;
7206 fra.me.REG_size = 0;
7207 fra.me.nitni_local_ref_head = NULL;
7208 /* syntax/typing.nit:1297 */
7209 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1297);
7210 stack_frame_head = fra.me.prev;
7211 return NIT_NULL;
7212 }
7213 val_t syntax___typing___ACastExternCall___to_type(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 = 1298;
7219 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
7220 fra.me.has_broke = 0;
7221 fra.me.REG_size = 0;
7222 fra.me.nitni_local_ref_head = NULL;
7223 /* syntax/typing.nit:1298 */
7224 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1298);
7225 stack_frame_head = fra.me.prev;
7226 return NIT_NULL;
7227 }
7228 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
7229 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7230 val_t REGB0;
7231 val_t REGB1;
7232 val_t tmp;
7233 static val_t once_value_1; /* Once value */
7234 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7235 fra.me.file = LOCATE_syntax___typing;
7236 fra.me.line = 1300;
7237 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
7238 fra.me.has_broke = 0;
7239 fra.me.REG_size = 4;
7240 fra.me.nitni_local_ref_head = NULL;
7241 fra.me.REG[0] = NIT_NULL;
7242 fra.me.REG[1] = NIT_NULL;
7243 fra.me.REG[2] = NIT_NULL;
7244 fra.me.REG[3] = NIT_NULL;
7245 fra.me.REG[0] = p0;
7246 fra.me.REG[1] = p1;
7247 /* syntax/typing.nit:1302 */
7248 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7249 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7250 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
7251 if (UNTAG_Bool(REGB0)) {
7252 } else {
7253 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7254 REGB0 = REGB1;
7255 }
7256 if (UNTAG_Bool(REGB0)) {
7257 /* syntax/typing.nit:1304 */
7258 if (!once_value_1) {
7259 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
7260 REGB0 = TAG_Int(44);
7261 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7262 once_value_1 = fra.me.REG[3];
7263 register_static_object(&once_value_1);
7264 } else fra.me.REG[3] = once_value_1;
7265 fra.me.REG[3] = fra.me.REG[3];
7266 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7267 }
7268 /* syntax/typing.nit:1307 */
7269 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7270 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7271 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
7272 /* syntax/typing.nit:1308 */
7273 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7274 /* syntax/typing.nit:1309 */
7275 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7276 if (UNTAG_Bool(REGB0)) {
7277 } else {
7278 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1309);
7279 }
7280 /* syntax/typing.nit:1310 */
7281 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
7282 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7283 stack_frame_head = fra.me.prev;
7284 return;
7285 }
7286 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
7287 struct {struct stack_frame_t me;} fra;
7288 val_t tmp;
7289 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7290 fra.me.file = LOCATE_syntax___typing;
7291 fra.me.line = 1315;
7292 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
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:1315 */
7299 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
7300 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7301 goto label1;
7302 label1: while(0);
7303 stack_frame_head = fra.me.prev;
7304 return fra.me.REG[0];
7305 }
7306 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
7307 struct {struct stack_frame_t me;} fra;
7308 val_t tmp;
7309 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7310 fra.me.file = LOCATE_syntax___typing;
7311 fra.me.line = 1316;
7312 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
7313 fra.me.has_broke = 0;
7314 fra.me.REG_size = 1;
7315 fra.me.nitni_local_ref_head = NULL;
7316 fra.me.REG[0] = NIT_NULL;
7317 fra.me.REG[0] = p0;
7318 /* syntax/typing.nit:1316 */
7319 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
7320 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7321 goto label1;
7322 label1: while(0);
7323 stack_frame_head = fra.me.prev;
7324 return fra.me.REG[0];
7325 }
7326 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7327 struct {struct stack_frame_t me;} fra;
7328 val_t tmp;
7329 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7330 fra.me.file = LOCATE_syntax___typing;
7331 fra.me.line = 1320;
7332 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7333 fra.me.has_broke = 0;
7334 fra.me.REG_size = 1;
7335 fra.me.nitni_local_ref_head = NULL;
7336 fra.me.REG[0] = NIT_NULL;
7337 fra.me.REG[0] = p0;
7338 /* syntax/typing.nit:1320 */
7339 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7340 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7341 goto label1;
7342 label1: while(0);
7343 stack_frame_head = fra.me.prev;
7344 return fra.me.REG[0];
7345 }
7346 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7347 struct {struct stack_frame_t me;} fra;
7348 val_t tmp;
7349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7350 fra.me.file = LOCATE_syntax___typing;
7351 fra.me.line = 1321;
7352 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7353 fra.me.has_broke = 0;
7354 fra.me.REG_size = 1;
7355 fra.me.nitni_local_ref_head = NULL;
7356 fra.me.REG[0] = NIT_NULL;
7357 fra.me.REG[0] = p0;
7358 /* syntax/typing.nit:1321 */
7359 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7360 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7361 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7362 goto label1;
7363 label1: while(0);
7364 stack_frame_head = fra.me.prev;
7365 return fra.me.REG[0];
7366 }
7367 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7368 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7369 val_t REGB0;
7370 val_t tmp;
7371 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7372 fra.me.file = LOCATE_syntax___typing;
7373 fra.me.line = 1325;
7374 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7375 fra.me.has_broke = 0;
7376 fra.me.REG_size = 2;
7377 fra.me.nitni_local_ref_head = NULL;
7378 fra.me.REG[0] = NIT_NULL;
7379 fra.me.REG[1] = NIT_NULL;
7380 fra.me.REG[0] = p0;
7381 /* syntax/typing.nit:1327 */
7382 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7383 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7384 /* syntax/typing.nit:1328 */
7385 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7386 if (UNTAG_Bool(REGB0)) {
7387 /* syntax/typing.nit:1330 */
7388 fra.me.REG[1] = fra.me.REG[0];
7389 goto label1;
7390 } else {
7391 /* syntax/typing.nit:1332 */
7392 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7393 fra.me.REG[1] = fra.me.REG[0];
7394 goto label1;
7395 }
7396 label1: while(0);
7397 stack_frame_head = fra.me.prev;
7398 return fra.me.REG[1];
7399 }
7400 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7401 struct {struct stack_frame_t me;} fra;
7402 val_t tmp;
7403 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7404 fra.me.file = LOCATE_syntax___typing;
7405 fra.me.line = 1335;
7406 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7407 fra.me.has_broke = 0;
7408 fra.me.REG_size = 1;
7409 fra.me.nitni_local_ref_head = NULL;
7410 fra.me.REG[0] = NIT_NULL;
7411 fra.me.REG[0] = p0;
7412 /* syntax/typing.nit:1335 */
7413 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7414 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7415 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7416 goto label1;
7417 label1: while(0);
7418 stack_frame_head = fra.me.prev;
7419 return fra.me.REG[0];
7420 }
7421 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7422 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7423 val_t REGB0;
7424 val_t tmp;
7425 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7426 fra.me.file = LOCATE_syntax___typing;
7427 fra.me.line = 1339;
7428 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7429 fra.me.has_broke = 0;
7430 fra.me.REG_size = 2;
7431 fra.me.nitni_local_ref_head = NULL;
7432 fra.me.REG[0] = NIT_NULL;
7433 fra.me.REG[1] = NIT_NULL;
7434 fra.me.REG[0] = p0;
7435 /* syntax/typing.nit:1339 */
7436 fra.me.REG[1] = fra.me.REG[0];
7437 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7438 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7439 if (UNTAG_Bool(REGB0)) {
7440 } else {
7441 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1339);
7442 }
7443 goto label1;
7444 label1: while(0);
7445 stack_frame_head = fra.me.prev;
7446 return fra.me.REG[1];
7447 }
7448 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7449 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7450 val_t REGB0;
7451 val_t tmp;
7452 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7453 fra.me.file = LOCATE_syntax___typing;
7454 fra.me.line = 1342;
7455 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7456 fra.me.has_broke = 0;
7457 fra.me.REG_size = 2;
7458 fra.me.nitni_local_ref_head = NULL;
7459 fra.me.REG[0] = NIT_NULL;
7460 fra.me.REG[1] = NIT_NULL;
7461 fra.me.REG[0] = p0;
7462 /* syntax/typing.nit:1342 */
7463 fra.me.REG[1] = fra.me.REG[0];
7464 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7465 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7466 if (UNTAG_Bool(REGB0)) {
7467 } else {
7468 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1342);
7469 }
7470 goto label1;
7471 label1: while(0);
7472 stack_frame_head = fra.me.prev;
7473 return fra.me.REG[1];
7474 }
7475 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7476 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7477 val_t REGB0;
7478 val_t REGB1;
7479 val_t REGB2;
7480 val_t tmp;
7481 static val_t once_value_2; /* Once value */
7482 static val_t once_value_3; /* Once value */
7483 static val_t once_value_4; /* Once value */
7484 static val_t once_value_5; /* Once value */
7485 static val_t once_value_6; /* Once value */
7486 static val_t once_value_7; /* Once value */
7487 static val_t once_value_8; /* Once value */
7488 static val_t once_value_9; /* Once value */
7489 static val_t once_value_10; /* Once value */
7490 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7491 fra.me.file = LOCATE_syntax___typing;
7492 fra.me.line = 1345;
7493 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7494 fra.me.has_broke = 0;
7495 fra.me.REG_size = 7;
7496 fra.me.nitni_local_ref_head = NULL;
7497 fra.me.REG[0] = NIT_NULL;
7498 fra.me.REG[1] = NIT_NULL;
7499 fra.me.REG[2] = NIT_NULL;
7500 fra.me.REG[3] = NIT_NULL;
7501 fra.me.REG[4] = NIT_NULL;
7502 fra.me.REG[5] = NIT_NULL;
7503 fra.me.REG[6] = NIT_NULL;
7504 fra.me.REG[0] = p0;
7505 fra.me.REG[1] = p1;
7506 /* syntax/typing.nit:1348 */
7507 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7508 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7509 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7510 if (UNTAG_Bool(REGB0)) {
7511 goto label1;
7512 }
7513 /* syntax/typing.nit:1349 */
7514 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7515 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7516 /* syntax/typing.nit:1350 */
7517 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7518 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7519 /* syntax/typing.nit:1351 */
7520 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7521 if (UNTAG_Bool(REGB0)) {
7522 /* syntax/typing.nit:1352 */
7523 REGB0 = TAG_Int(3);
7524 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7525 if (!once_value_2) {
7526 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7527 REGB0 = TAG_Int(18);
7528 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7529 once_value_2 = fra.me.REG[5];
7530 register_static_object(&once_value_2);
7531 } else fra.me.REG[5] = once_value_2;
7532 fra.me.REG[5] = fra.me.REG[5];
7533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7534 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7535 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7536 if (!once_value_3) {
7537 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7538 REGB0 = TAG_Int(19);
7539 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7540 once_value_3 = fra.me.REG[5];
7541 register_static_object(&once_value_3);
7542 } else fra.me.REG[5] = once_value_3;
7543 fra.me.REG[5] = fra.me.REG[5];
7544 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7545 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7546 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7547 /* syntax/typing.nit:1353 */
7548 goto label1;
7549 }
7550 /* syntax/typing.nit:1355 */
7551 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7552 /* syntax/typing.nit:1356 */
7553 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7554 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7555 if (UNTAG_Bool(REGB0)) {
7556 /* syntax/typing.nit:1357 */
7557 REGB0 = TAG_Int(5);
7558 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7559 if (!once_value_4) {
7560 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7561 REGB0 = TAG_Int(17);
7562 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7563 once_value_4 = fra.me.REG[6];
7564 register_static_object(&once_value_4);
7565 } else fra.me.REG[6] = once_value_4;
7566 fra.me.REG[6] = fra.me.REG[6];
7567 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7568 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7569 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7570 if (!once_value_5) {
7571 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7572 REGB0 = TAG_Int(19);
7573 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7574 once_value_5 = fra.me.REG[6];
7575 register_static_object(&once_value_5);
7576 } else fra.me.REG[6] = once_value_5;
7577 fra.me.REG[6] = fra.me.REG[6];
7578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7579 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7580 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7581 if (!once_value_6) {
7582 fra.me.REG[6] = BOX_NativeString(".");
7583 REGB0 = TAG_Int(1);
7584 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7585 once_value_6 = fra.me.REG[6];
7586 register_static_object(&once_value_6);
7587 } else fra.me.REG[6] = once_value_6;
7588 fra.me.REG[6] = fra.me.REG[6];
7589 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7590 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7591 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7592 /* syntax/typing.nit:1358 */
7593 goto label1;
7594 }
7595 /* syntax/typing.nit:1360 */
7596 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7597 /* syntax/typing.nit:1361 */
7598 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7599 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7600 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7601 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7602 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7603 REGB1 = TAG_Int(3);
7604 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7605 if (UNTAG_Bool(REGB2)) {
7606 } else {
7607 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7608 }
7609 /* ../lib/standard/kernel.nit:232 */
7610 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7611 /* syntax/typing.nit:1361 */
7612 if (UNTAG_Bool(REGB1)) {
7613 /* syntax/typing.nit:1362 */
7614 REGB1 = TAG_Int(7);
7615 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7616 if (!once_value_7) {
7617 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7618 REGB1 = TAG_Int(17);
7619 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7620 once_value_7 = fra.me.REG[5];
7621 register_static_object(&once_value_7);
7622 } else fra.me.REG[5] = once_value_7;
7623 fra.me.REG[5] = fra.me.REG[5];
7624 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7625 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7626 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7627 if (!once_value_8) {
7628 fra.me.REG[3] = BOX_NativeString(" from ");
7629 REGB1 = TAG_Int(6);
7630 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7631 once_value_8 = fra.me.REG[3];
7632 register_static_object(&once_value_8);
7633 } else fra.me.REG[3] = once_value_8;
7634 fra.me.REG[3] = fra.me.REG[3];
7635 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7636 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7637 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7638 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7639 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7640 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7641 if (!once_value_9) {
7642 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7643 REGB1 = TAG_Int(17);
7644 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7645 once_value_9 = fra.me.REG[3];
7646 register_static_object(&once_value_9);
7647 } else fra.me.REG[3] = once_value_9;
7648 fra.me.REG[3] = fra.me.REG[3];
7649 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7650 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7651 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7652 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7653 if (!once_value_10) {
7654 fra.me.REG[3] = BOX_NativeString("");
7655 REGB1 = TAG_Int(0);
7656 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7657 once_value_10 = fra.me.REG[3];
7658 register_static_object(&once_value_10);
7659 } else fra.me.REG[3] = once_value_10;
7660 fra.me.REG[3] = fra.me.REG[3];
7661 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7662 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7663 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7664 }
7665 /* syntax/typing.nit:1364 */
7666 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7667 /* syntax/typing.nit:1365 */
7668 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7669 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7670 /* syntax/typing.nit:1366 */
7671 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7672 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7673 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7674 if (UNTAG_Bool(REGB1)) {
7675 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7676 if (UNTAG_Bool(REGB1)) {
7677 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1366);
7678 }
7679 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7680 fra.me.REG[2] = fra.me.REG[4];
7681 }
7682 /* syntax/typing.nit:1367 */
7683 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7684 label1: while(0);
7685 stack_frame_head = fra.me.prev;
7686 return;
7687 }
7688 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7689 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7690 val_t REGB0;
7691 val_t REGB1;
7692 val_t tmp;
7693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7694 fra.me.file = LOCATE_syntax___typing;
7695 fra.me.line = 1372;
7696 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7697 fra.me.has_broke = 0;
7698 fra.me.REG_size = 2;
7699 fra.me.nitni_local_ref_head = NULL;
7700 fra.me.REG[0] = NIT_NULL;
7701 fra.me.REG[1] = NIT_NULL;
7702 fra.me.REG[0] = p0;
7703 fra.me.REG[1] = p1;
7704 /* syntax/typing.nit:1374 */
7705 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7706 /* syntax/typing.nit:1375 */
7707 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7708 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7709 if (UNTAG_Bool(REGB0)) {
7710 } else {
7711 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7712 if (UNTAG_Bool(REGB1)) {
7713 REGB1 = TAG_Bool(false);
7714 REGB0 = REGB1;
7715 } else {
7716 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7717 REGB0 = REGB1;
7718 }
7719 }
7720 if (UNTAG_Bool(REGB0)) {
7721 goto label1;
7722 }
7723 /* syntax/typing.nit:1376 */
7724 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7725 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7726 /* syntax/typing.nit:1377 */
7727 REGB0 = TAG_Bool(true);
7728 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7729 label1: while(0);
7730 stack_frame_head = fra.me.prev;
7731 return;
7732 }
7733 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7734 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7735 val_t REGB0;
7736 val_t REGB1;
7737 val_t tmp;
7738 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7739 fra.me.file = LOCATE_syntax___typing;
7740 fra.me.line = 1382;
7741 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7742 fra.me.has_broke = 0;
7743 fra.me.REG_size = 4;
7744 fra.me.nitni_local_ref_head = NULL;
7745 fra.me.REG[0] = NIT_NULL;
7746 fra.me.REG[1] = NIT_NULL;
7747 fra.me.REG[2] = NIT_NULL;
7748 fra.me.REG[3] = NIT_NULL;
7749 fra.me.REG[0] = p0;
7750 fra.me.REG[1] = p1;
7751 /* syntax/typing.nit:1384 */
7752 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7753 /* syntax/typing.nit:1385 */
7754 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7755 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7756 if (UNTAG_Bool(REGB0)) {
7757 } else {
7758 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7759 if (UNTAG_Bool(REGB1)) {
7760 REGB1 = TAG_Bool(false);
7761 REGB0 = REGB1;
7762 } else {
7763 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7764 REGB0 = REGB1;
7765 }
7766 }
7767 if (UNTAG_Bool(REGB0)) {
7768 goto label1;
7769 }
7770 /* syntax/typing.nit:1386 */
7771 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7772 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7773 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]);
7774 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7775 if (UNTAG_Bool(REGB0)) {
7776 goto label1;
7777 }
7778 /* syntax/typing.nit:1387 */
7779 REGB0 = TAG_Bool(true);
7780 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7781 label1: while(0);
7782 stack_frame_head = fra.me.prev;
7783 return;
7784 }
7785 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7786 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7787 val_t REGB0;
7788 val_t REGB1;
7789 val_t tmp;
7790 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7791 fra.me.file = LOCATE_syntax___typing;
7792 fra.me.line = 1392;
7793 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7794 fra.me.has_broke = 0;
7795 fra.me.REG_size = 4;
7796 fra.me.nitni_local_ref_head = NULL;
7797 fra.me.REG[0] = NIT_NULL;
7798 fra.me.REG[1] = NIT_NULL;
7799 fra.me.REG[2] = NIT_NULL;
7800 fra.me.REG[3] = NIT_NULL;
7801 fra.me.REG[0] = p0;
7802 fra.me.REG[1] = p1;
7803 /* syntax/typing.nit:1394 */
7804 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7805 /* syntax/typing.nit:1395 */
7806 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7807 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7808 if (UNTAG_Bool(REGB0)) {
7809 } else {
7810 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7811 if (UNTAG_Bool(REGB1)) {
7812 REGB1 = TAG_Bool(false);
7813 REGB0 = REGB1;
7814 } else {
7815 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7816 REGB0 = REGB1;
7817 }
7818 }
7819 if (UNTAG_Bool(REGB0)) {
7820 goto label1;
7821 }
7822 /* syntax/typing.nit:1396 */
7823 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7824 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]);
7825 /* syntax/typing.nit:1397 */
7826 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7827 if (UNTAG_Bool(REGB0)) {
7828 } else {
7829 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7830 if (UNTAG_Bool(REGB1)) {
7831 REGB1 = TAG_Bool(false);
7832 REGB0 = REGB1;
7833 } else {
7834 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7835 REGB0 = REGB1;
7836 }
7837 }
7838 if (UNTAG_Bool(REGB0)) {
7839 goto label1;
7840 }
7841 /* syntax/typing.nit:1398 */
7842 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7843 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7844 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]);
7845 /* syntax/typing.nit:1399 */
7846 REGB0 = TAG_Bool(true);
7847 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7848 label1: while(0);
7849 stack_frame_head = fra.me.prev;
7850 return;
7851 }
7852 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7853 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7854 val_t REGB0;
7855 val_t REGB1;
7856 val_t tmp;
7857 static val_t once_value_2; /* Once value */
7858 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7859 fra.me.file = LOCATE_syntax___typing;
7860 fra.me.line = 1404;
7861 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
7862 fra.me.has_broke = 0;
7863 fra.me.REG_size = 3;
7864 fra.me.nitni_local_ref_head = NULL;
7865 fra.me.REG[0] = NIT_NULL;
7866 fra.me.REG[1] = NIT_NULL;
7867 fra.me.REG[2] = NIT_NULL;
7868 fra.me.REG[0] = p0;
7869 fra.me.REG[1] = p1;
7870 /* syntax/typing.nit:1406 */
7871 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7872 /* syntax/typing.nit:1407 */
7873 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7874 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7875 if (UNTAG_Bool(REGB0)) {
7876 } else {
7877 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7878 if (UNTAG_Bool(REGB1)) {
7879 REGB1 = TAG_Bool(false);
7880 REGB0 = REGB1;
7881 } else {
7882 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7883 REGB0 = REGB1;
7884 }
7885 }
7886 if (UNTAG_Bool(REGB0)) {
7887 goto label1;
7888 }
7889 /* syntax/typing.nit:1408 */
7890 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7891 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
7892 if (UNTAG_Bool(REGB0)) {
7893 /* syntax/typing.nit:1409 */
7894 if (!once_value_2) {
7895 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
7896 REGB0 = TAG_Int(37);
7897 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7898 once_value_2 = fra.me.REG[2];
7899 register_static_object(&once_value_2);
7900 } else fra.me.REG[2] = once_value_2;
7901 fra.me.REG[2] = fra.me.REG[2];
7902 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7903 }
7904 /* syntax/typing.nit:1411 */
7905 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
7906 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7907 /* syntax/typing.nit:1412 */
7908 REGB0 = TAG_Bool(true);
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 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
7915 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7916 val_t REGB0;
7917 val_t tmp;
7918 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7919 fra.me.file = LOCATE_syntax___typing;
7920 fra.me.line = 1417;
7921 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
7922 fra.me.has_broke = 0;
7923 fra.me.REG_size = 2;
7924 fra.me.nitni_local_ref_head = NULL;
7925 fra.me.REG[0] = NIT_NULL;
7926 fra.me.REG[1] = NIT_NULL;
7927 fra.me.REG[0] = p0;
7928 /* syntax/typing.nit:1417 */
7929 fra.me.REG[1] = fra.me.REG[0];
7930 /* syntax/typing.nit:1418 */
7931 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
7932 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7933 if (UNTAG_Bool(REGB0)) {
7934 } else {
7935 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1418);
7936 }
7937 goto label1;
7938 label1: while(0);
7939 stack_frame_head = fra.me.prev;
7940 return fra.me.REG[1];
7941 }
7942 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
7943 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7944 val_t REGB0;
7945 val_t REGB1;
7946 val_t tmp;
7947 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7948 fra.me.file = LOCATE_syntax___typing;
7949 fra.me.line = 1421;
7950 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
7951 fra.me.has_broke = 0;
7952 fra.me.REG_size = 4;
7953 fra.me.nitni_local_ref_head = NULL;
7954 fra.me.REG[0] = NIT_NULL;
7955 fra.me.REG[1] = NIT_NULL;
7956 fra.me.REG[2] = NIT_NULL;
7957 fra.me.REG[3] = NIT_NULL;
7958 fra.me.REG[0] = p0;
7959 /* syntax/typing.nit:1424 */
7960 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
7961 /* syntax/typing.nit:1425 */
7962 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7963 if (UNTAG_Bool(REGB0)) {
7964 } else {
7965 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7966 if (UNTAG_Bool(REGB1)) {
7967 REGB1 = TAG_Bool(false);
7968 REGB0 = REGB1;
7969 } else {
7970 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7971 REGB0 = REGB1;
7972 }
7973 }
7974 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7975 if (UNTAG_Bool(REGB0)) {
7976 /* syntax/typing.nit:1426 */
7977 fra.me.REG[2] = fra.me.REG[1];
7978 goto label1;
7979 } else {
7980 /* syntax/typing.nit:1428 */
7981 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7982 fra.me.REG[1] = fra.me.REG[3];
7983 /* syntax/typing.nit:1429 */
7984 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7985 if (UNTAG_Bool(REGB0)) {
7986 } else {
7987 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7988 if (UNTAG_Bool(REGB1)) {
7989 REGB1 = TAG_Bool(false);
7990 REGB0 = REGB1;
7991 } else {
7992 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7993 REGB0 = REGB1;
7994 }
7995 }
7996 if (UNTAG_Bool(REGB0)) {
7997 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
7998 fra.me.REG[1] = fra.me.REG[3];
7999 }
8000 /* syntax/typing.nit:1430 */
8001 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
8002 /* syntax/typing.nit:1431 */
8003 fra.me.REG[2] = fra.me.REG[1];
8004 goto label1;
8005 }
8006 label1: while(0);
8007 stack_frame_head = fra.me.prev;
8008 return fra.me.REG[2];
8009 }
8010 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
8011 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
8012 val_t REGB0;
8013 val_t tmp;
8014 static val_t once_value_1; /* Once value */
8015 static val_t once_value_2; /* Once value */
8016 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8017 fra.me.file = LOCATE_syntax___typing;
8018 fra.me.line = 1437;
8019 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
8020 fra.me.has_broke = 0;
8021 fra.me.REG_size = 3;
8022 fra.me.nitni_local_ref_head = NULL;
8023 fra.me.REG[0] = NIT_NULL;
8024 fra.me.REG[1] = NIT_NULL;
8025 fra.me.REG[2] = NIT_NULL;
8026 fra.me.REG[0] = p0;
8027 /* syntax/typing.nit:1439 */
8028 REGB0 = TAG_Int(3);
8029 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8030 if (!once_value_1) {
8031 fra.me.REG[2] = BOX_NativeString("");
8032 REGB0 = TAG_Int(0);
8033 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8034 once_value_1 = fra.me.REG[2];
8035 register_static_object(&once_value_1);
8036 } else fra.me.REG[2] = once_value_1;
8037 fra.me.REG[2] = fra.me.REG[2];
8038 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8039 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
8040 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8042 if (!once_value_2) {
8043 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
8044 REGB0 = TAG_Int(25);
8045 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8046 once_value_2 = fra.me.REG[2];
8047 register_static_object(&once_value_2);
8048 } else fra.me.REG[2] = once_value_2;
8049 fra.me.REG[2] = fra.me.REG[2];
8050 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8051 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
8052 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8053 /* syntax/typing.nit:1440 */
8054 fra.me.REG[1] = NIT_NULL;
8055 goto label3;
8056 label3: while(0);
8057 stack_frame_head = fra.me.prev;
8058 return fra.me.REG[1];
8059 }
8060 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8061 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8062 val_t REGB0;
8063 val_t REGB1;
8064 val_t REGB2;
8065 val_t REGB3;
8066 val_t REGB4;
8067 val_t REGB5;
8068 val_t REGB6;
8069 val_t REGB7;
8070 val_t REGB8;
8071 val_t REGB9;
8072 val_t REGB10;
8073 val_t REGB11;
8074 val_t tmp;
8075 static val_t once_value_1; /* Once value */
8076 static val_t once_value_2; /* Once value */
8077 static val_t once_value_3; /* Once value */
8078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8079 fra.me.file = LOCATE_syntax___typing;
8080 fra.me.line = 1443;
8081 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
8082 fra.me.has_broke = 0;
8083 fra.me.REG_size = 7;
8084 fra.me.nitni_local_ref_head = NULL;
8085 fra.me.REG[0] = NIT_NULL;
8086 fra.me.REG[1] = NIT_NULL;
8087 fra.me.REG[2] = NIT_NULL;
8088 fra.me.REG[3] = NIT_NULL;
8089 fra.me.REG[4] = NIT_NULL;
8090 fra.me.REG[5] = NIT_NULL;
8091 fra.me.REG[6] = NIT_NULL;
8092 fra.me.REG[0] = p0;
8093 fra.me.REG[1] = p1;
8094 fra.me.REG[2] = p2;
8095 fra.me.REG[3] = p3;
8096 fra.me.REG[4] = p4;
8097 /* syntax/typing.nit:1446 */
8098 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
8099 /* syntax/typing.nit:1447 */
8100 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
8101 /* syntax/typing.nit:1449 */
8102 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8103 if (UNTAG_Bool(REGB2)) {
8104 } else {
8105 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8106 if (UNTAG_Bool(REGB3)) {
8107 REGB3 = TAG_Bool(false);
8108 REGB2 = REGB3;
8109 } else {
8110 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8111 REGB2 = REGB3;
8112 }
8113 }
8114 if (UNTAG_Bool(REGB2)) {
8115 REGB2 = TAG_Int(0);
8116 } else {
8117 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8118 if (UNTAG_Bool(REGB3)) {
8119 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1449);
8120 }
8121 /* ../lib/standard/collection/array.nit:24 */
8122 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8123 if (UNTAG_Bool(REGB3)) {
8124 } else {
8125 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8126 }
8127 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8128 /* syntax/typing.nit:1449 */
8129 REGB2 = REGB3;
8130 }
8131 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8132 if (UNTAG_Bool(REGB3)) {
8133 } else {
8134 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8135 }
8136 /* ../lib/standard/kernel.nit:234 */
8137 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8138 /* syntax/typing.nit:1450 */
8139 if (UNTAG_Bool(REGB3)) {
8140 REGB3 = TAG_Bool(true);
8141 } else {
8142 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8143 if (UNTAG_Bool(REGB4)) {
8144 } else {
8145 /* ../lib/standard/kernel.nit:227 */
8146 REGB5 = TAG_Bool((REGB1)==(REGB2));
8147 /* syntax/typing.nit:1450 */
8148 REGB4 = REGB5;
8149 }
8150 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
8151 if (UNTAG_Bool(REGB4)) {
8152 REGB4 = TAG_Int(1);
8153 /* ../lib/standard/kernel.nit:236 */
8154 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
8155 /* syntax/typing.nit:1450 */
8156 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
8157 if (UNTAG_Bool(REGB5)) {
8158 } else {
8159 /* ../lib/standard/kernel.nit:227 */
8160 REGB4 = TAG_Bool((REGB0)==(REGB4));
8161 /* syntax/typing.nit:1450 */
8162 REGB5 = REGB4;
8163 }
8164 } else {
8165 REGB4 = TAG_Bool(false);
8166 REGB5 = REGB4;
8167 }
8168 REGB3 = REGB5;
8169 }
8170 if (UNTAG_Bool(REGB3)) {
8171 /* syntax/typing.nit:1451 */
8172 REGB3 = TAG_Int(5);
8173 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
8174 if (!once_value_1) {
8175 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
8176 REGB3 = TAG_Int(37);
8177 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
8178 once_value_1 = fra.me.REG[6];
8179 register_static_object(&once_value_1);
8180 } else fra.me.REG[6] = once_value_1;
8181 fra.me.REG[6] = fra.me.REG[6];
8182 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
8183 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8184 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8185 if (!once_value_2) {
8186 fra.me.REG[3] = BOX_NativeString("");
8187 REGB3 = TAG_Int(0);
8188 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8189 once_value_2 = fra.me.REG[3];
8190 register_static_object(&once_value_2);
8191 } else fra.me.REG[3] = once_value_2;
8192 fra.me.REG[3] = fra.me.REG[3];
8193 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8194 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8195 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8196 if (!once_value_3) {
8197 fra.me.REG[3] = BOX_NativeString("'.");
8198 REGB3 = TAG_Int(2);
8199 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8200 once_value_3 = fra.me.REG[3];
8201 register_static_object(&once_value_3);
8202 } else fra.me.REG[3] = once_value_3;
8203 fra.me.REG[3] = fra.me.REG[3];
8204 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8205 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8206 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8207 /* syntax/typing.nit:1452 */
8208 REGB3 = TAG_Bool(false);
8209 goto label4;
8210 }
8211 /* syntax/typing.nit:1454 */
8212 REGB5 = TAG_Int(0);
8213 /* syntax/typing.nit:1455 */
8214 REGB4 = TAG_Int(0);
8215 /* ../lib/standard/kernel.nit:347 */
8216 REGB6 = REGB1;
8217 /* ../lib/standard/kernel.nit:352 */
8218 while(1) {
8219 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
8220 if (UNTAG_Bool(REGB7)) {
8221 } else {
8222 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8223 }
8224 /* ../lib/standard/kernel.nit:232 */
8225 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
8226 /* ../lib/standard/kernel.nit:352 */
8227 if (UNTAG_Bool(REGB7)) {
8228 /* syntax/typing.nit:1455 */
8229 REGB7 = REGB4;
8230 /* syntax/typing.nit:1457 */
8231 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
8232 /* syntax/typing.nit:1458 */
8233 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
8234 if (UNTAG_Bool(REGB8)) {
8235 } else {
8236 /* ../lib/standard/kernel.nit:227 */
8237 REGB7 = TAG_Bool((REGB7)==(REGB0));
8238 /* syntax/typing.nit:1458 */
8239 REGB8 = REGB7;
8240 }
8241 if (UNTAG_Bool(REGB8)) {
8242 /* syntax/typing.nit:1459 */
8243 REGB8 = TAG_Int(0);
8244 /* ../lib/standard/kernel.nit:237 */
8245 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
8246 /* ../lib/standard/kernel.nit:341 */
8247 while(1) {
8248 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8249 if (UNTAG_Bool(REGB9)) {
8250 } else {
8251 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8252 }
8253 /* ../lib/standard/kernel.nit:231 */
8254 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
8255 /* ../lib/standard/kernel.nit:341 */
8256 if (UNTAG_Bool(REGB9)) {
8257 /* syntax/typing.nit:1460 */
8258 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8259 if (UNTAG_Bool(REGB9)) {
8260 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1460);
8261 }
8262 /* ../lib/standard/collection/array.nit:278 */
8263 fra.me.REG[0] = fra.me.REG[4];
8264 REGB9 = REGB5;
8265 /* ../lib/standard/collection/array.nit:280 */
8266 REGB10 = TAG_Int(0);
8267 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8268 if (UNTAG_Bool(REGB11)) {
8269 } else {
8270 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8271 }
8272 /* ../lib/standard/kernel.nit:233 */
8273 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
8274 /* ../lib/standard/collection/array.nit:280 */
8275 if (UNTAG_Bool(REGB10)) {
8276 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
8277 if (UNTAG_Bool(REGB10)) {
8278 } else {
8279 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8280 }
8281 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
8282 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8283 if (UNTAG_Bool(REGB11)) {
8284 } else {
8285 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8286 }
8287 /* ../lib/standard/kernel.nit:232 */
8288 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
8289 } else {
8290 /* ../lib/standard/collection/array.nit:280 */
8291 REGB11 = TAG_Bool(false);
8292 REGB10 = REGB11;
8293 }
8294 if (UNTAG_Bool(REGB10)) {
8295 } else {
8296 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8297 }
8298 /* ../lib/standard/collection/array.nit:281 */
8299 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
8300 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8301 if (UNTAG_Bool(REGB10)) {
8302 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8303 }
8304 /* ../lib/standard/collection/array.nit:718 */
8305 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
8306 /* ../lib/standard/collection/array.nit:281 */
8307 goto label5;
8308 label5: while(0);
8309 /* syntax/typing.nit:1461 */
8310 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8311 /* syntax/typing.nit:1462 */
8312 REGB9 = TAG_Int(1);
8313 /* ../lib/standard/kernel.nit:235 */
8314 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
8315 /* syntax/typing.nit:1462 */
8316 REGB5 = REGB9;
8317 /* ../lib/standard/kernel.nit:343 */
8318 REGB9 = TAG_Int(1);
8319 /* ../lib/standard/kernel.nit:235 */
8320 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
8321 /* ../lib/standard/kernel.nit:343 */
8322 REGB8 = REGB9;
8323 } else {
8324 /* ../lib/standard/kernel.nit:341 */
8325 goto label6;
8326 }
8327 }
8328 label6: while(0);
8329 } else {
8330 /* syntax/typing.nit:1465 */
8331 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8332 if (UNTAG_Bool(REGB8)) {
8333 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1465);
8334 }
8335 /* ../lib/standard/collection/array.nit:278 */
8336 fra.me.REG[3] = fra.me.REG[4];
8337 REGB8 = REGB5;
8338 /* ../lib/standard/collection/array.nit:280 */
8339 REGB7 = TAG_Int(0);
8340 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8341 if (UNTAG_Bool(REGB9)) {
8342 } else {
8343 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8344 }
8345 /* ../lib/standard/kernel.nit:233 */
8346 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8347 /* ../lib/standard/collection/array.nit:280 */
8348 if (UNTAG_Bool(REGB7)) {
8349 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8350 if (UNTAG_Bool(REGB7)) {
8351 } else {
8352 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8353 }
8354 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8355 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8356 if (UNTAG_Bool(REGB9)) {
8357 } else {
8358 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8359 }
8360 /* ../lib/standard/kernel.nit:232 */
8361 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8362 } else {
8363 /* ../lib/standard/collection/array.nit:280 */
8364 REGB9 = TAG_Bool(false);
8365 REGB7 = REGB9;
8366 }
8367 if (UNTAG_Bool(REGB7)) {
8368 } else {
8369 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8370 }
8371 /* ../lib/standard/collection/array.nit:281 */
8372 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8373 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8374 if (UNTAG_Bool(REGB7)) {
8375 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8376 }
8377 /* ../lib/standard/collection/array.nit:718 */
8378 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8379 /* ../lib/standard/collection/array.nit:281 */
8380 goto label7;
8381 label7: while(0);
8382 /* syntax/typing.nit:1465 */
8383 fra.me.REG[0] = fra.me.REG[3];
8384 /* syntax/typing.nit:1466 */
8385 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8386 /* syntax/typing.nit:1467 */
8387 REGB8 = TAG_Int(1);
8388 /* ../lib/standard/kernel.nit:235 */
8389 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8390 /* syntax/typing.nit:1467 */
8391 REGB5 = REGB8;
8392 }
8393 /* ../lib/standard/kernel.nit:354 */
8394 REGB8 = TAG_Int(1);
8395 /* ../lib/standard/kernel.nit:235 */
8396 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8397 /* ../lib/standard/kernel.nit:354 */
8398 REGB4 = REGB8;
8399 } else {
8400 /* ../lib/standard/kernel.nit:352 */
8401 goto label8;
8402 }
8403 }
8404 label8: while(0);
8405 /* syntax/typing.nit:1470 */
8406 REGB4 = TAG_Bool(true);
8407 REGB3 = REGB4;
8408 goto label4;
8409 label4: while(0);
8410 stack_frame_head = fra.me.prev;
8411 return REGB3;
8412 }
8413 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8414 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8415 val_t REGB0;
8416 val_t REGB1;
8417 val_t REGB2;
8418 val_t REGB3;
8419 val_t REGB4;
8420 val_t REGB5;
8421 val_t tmp;
8422 static val_t once_value_2; /* Once value */
8423 static val_t once_value_3; /* Once value */
8424 static val_t once_value_4; /* Once value */
8425 static val_t once_value_5; /* Once value */
8426 static val_t once_value_6; /* Once value */
8427 static val_t once_value_7; /* Once value */
8428 static val_t once_value_8; /* Once value */
8429 static val_t once_value_11; /* Once value */
8430 static val_t once_value_12; /* Once value */
8431 static val_t once_value_13; /* Once value */
8432 static val_t once_value_14; /* Once value */
8433 static val_t once_value_15; /* Once value */
8434 static val_t once_value_16; /* Once value */
8435 static val_t once_value_18; /* Once value */
8436 static val_t once_value_19; /* Once value */
8437 static val_t once_value_20; /* Once value */
8438 static val_t once_value_21; /* Once value */
8439 static val_t once_value_22; /* Once value */
8440 static val_t once_value_24; /* Once value */
8441 static val_t once_value_25; /* Once value */
8442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8443 fra.me.file = LOCATE_syntax___typing;
8444 fra.me.line = 1473;
8445 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8446 fra.me.has_broke = 0;
8447 fra.me.REG_size = 17;
8448 fra.me.nitni_local_ref_head = NULL;
8449 fra.me.REG[0] = NIT_NULL;
8450 fra.me.REG[1] = NIT_NULL;
8451 fra.me.REG[2] = NIT_NULL;
8452 fra.me.REG[3] = NIT_NULL;
8453 fra.me.REG[4] = NIT_NULL;
8454 fra.me.REG[5] = NIT_NULL;
8455 fra.me.REG[6] = NIT_NULL;
8456 fra.me.REG[7] = NIT_NULL;
8457 fra.me.REG[8] = NIT_NULL;
8458 fra.me.REG[9] = NIT_NULL;
8459 fra.me.REG[10] = NIT_NULL;
8460 fra.me.REG[11] = NIT_NULL;
8461 fra.me.REG[12] = NIT_NULL;
8462 fra.me.REG[13] = NIT_NULL;
8463 fra.me.REG[14] = NIT_NULL;
8464 fra.me.REG[15] = NIT_NULL;
8465 fra.me.REG[16] = NIT_NULL;
8466 fra.me.REG[0] = p0;
8467 fra.me.REG[1] = p1;
8468 fra.me.REG[2] = p2;
8469 fra.me.REG[3] = p3;
8470 fra.me.REG[4] = p4;
8471 /* syntax/typing.nit:1476 */
8472 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8473 /* syntax/typing.nit:1477 */
8474 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8475 /* syntax/typing.nit:1478 */
8476 REGB0 = TAG_Int(0);
8477 /* ../lib/standard/collection/array.nit:266 */
8478 fra.me.REG[7] = fra.me.REG[6];
8479 /* ../lib/standard/collection/array.nit:269 */
8480 REGB1 = TAG_Int(0);
8481 /* ../lib/standard/collection/array.nit:270 */
8482 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8483 if (UNTAG_Bool(REGB2)) {
8484 } else {
8485 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8486 }
8487 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8488 /* ../lib/standard/collection/array.nit:271 */
8489 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8490 /* ../lib/standard/collection/array.nit:272 */
8491 while(1) {
8492 /* ../lib/standard/collection/array.nit:24 */
8493 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8494 if (UNTAG_Bool(REGB2)) {
8495 } else {
8496 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8497 }
8498 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8499 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8500 if (UNTAG_Bool(REGB3)) {
8501 } else {
8502 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8503 }
8504 /* ../lib/standard/kernel.nit:232 */
8505 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8506 /* ../lib/standard/collection/array.nit:272 */
8507 if (UNTAG_Bool(REGB2)) {
8508 /* ../lib/standard/collection/array.nit:273 */
8509 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8510 if (UNTAG_Bool(REGB2)) {
8511 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8512 }
8513 /* ../lib/standard/collection/array.nit:718 */
8514 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8515 /* syntax/typing.nit:1480 */
8516 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8517 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8518 if (UNTAG_Bool(REGB2)) {
8519 REGB2 = TAG_Int(1);
8520 /* ../lib/standard/kernel.nit:235 */
8521 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8522 /* syntax/typing.nit:1480 */
8523 REGB0 = REGB2;
8524 }
8525 /* ../lib/standard/collection/array.nit:274 */
8526 REGB2 = TAG_Int(1);
8527 /* ../lib/standard/kernel.nit:235 */
8528 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8529 /* ../lib/standard/collection/array.nit:274 */
8530 REGB1 = REGB2;
8531 } else {
8532 /* ../lib/standard/collection/array.nit:272 */
8533 goto label1;
8534 }
8535 }
8536 label1: while(0);
8537 /* syntax/typing.nit:1482 */
8538 REGB1 = TAG_Int(0);
8539 /* syntax/typing.nit:1483 */
8540 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8541 if (UNTAG_Bool(REGB2)) {
8542 } else {
8543 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8544 if (UNTAG_Bool(REGB3)) {
8545 REGB3 = TAG_Bool(false);
8546 REGB2 = REGB3;
8547 } else {
8548 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8549 REGB2 = REGB3;
8550 }
8551 }
8552 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8553 if (UNTAG_Bool(REGB2)) {
8554 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8555 if (UNTAG_Bool(REGB2)) {
8556 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1483);
8557 }
8558 /* ../lib/standard/collection/array.nit:24 */
8559 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8560 if (UNTAG_Bool(REGB2)) {
8561 } else {
8562 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8563 }
8564 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8565 /* syntax/typing.nit:1483 */
8566 REGB1 = REGB2;
8567 }
8568 /* ../lib/standard/collection/array.nit:24 */
8569 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8570 if (UNTAG_Bool(REGB2)) {
8571 } else {
8572 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8573 }
8574 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8575 /* syntax/typing.nit:1484 */
8576 REGB3 = TAG_Int(0);
8577 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8578 if (UNTAG_Bool(REGB4)) {
8579 } else {
8580 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8581 }
8582 /* ../lib/standard/kernel.nit:234 */
8583 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8584 /* syntax/typing.nit:1484 */
8585 if (UNTAG_Bool(REGB3)) {
8586 /* syntax/typing.nit:1485 */
8587 REGB3 = TAG_Int(0);
8588 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8589 if (UNTAG_Bool(REGB2)) {
8590 } else {
8591 /* ../lib/standard/kernel.nit:227 */
8592 REGB3 = TAG_Bool((REGB1)==(REGB3));
8593 /* syntax/typing.nit:1485 */
8594 REGB2 = REGB3;
8595 }
8596 if (UNTAG_Bool(REGB2)) {
8597 REGB2 = TAG_Int(0);
8598 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8599 if (UNTAG_Bool(REGB3)) {
8600 } else {
8601 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8602 }
8603 /* ../lib/standard/kernel.nit:234 */
8604 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8605 } else {
8606 /* syntax/typing.nit:1485 */
8607 REGB3 = TAG_Bool(false);
8608 REGB2 = REGB3;
8609 }
8610 if (UNTAG_Bool(REGB2)) {
8611 /* syntax/typing.nit:1486 */
8612 REGB2 = TAG_Int(5);
8613 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8614 if (!once_value_2) {
8615 fra.me.REG[7] = BOX_NativeString("Error: ");
8616 REGB2 = TAG_Int(7);
8617 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8618 once_value_2 = fra.me.REG[7];
8619 register_static_object(&once_value_2);
8620 } else fra.me.REG[7] = once_value_2;
8621 fra.me.REG[7] = fra.me.REG[7];
8622 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8623 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8624 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8625 if (!once_value_3) {
8626 fra.me.REG[7] = BOX_NativeString(" requires ");
8627 REGB2 = TAG_Int(10);
8628 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8629 once_value_3 = fra.me.REG[7];
8630 register_static_object(&once_value_3);
8631 } else fra.me.REG[7] = once_value_3;
8632 fra.me.REG[7] = fra.me.REG[7];
8633 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8634 /* ../lib/standard/collection/array.nit:24 */
8635 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8636 if (UNTAG_Bool(REGB2)) {
8637 } else {
8638 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8639 }
8640 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8641 /* syntax/typing.nit:1486 */
8642 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8643 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8644 if (!once_value_4) {
8645 fra.me.REG[7] = BOX_NativeString(" blocks.");
8646 REGB2 = TAG_Int(8);
8647 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8648 once_value_4 = fra.me.REG[7];
8649 register_static_object(&once_value_4);
8650 } else fra.me.REG[7] = once_value_4;
8651 fra.me.REG[7] = fra.me.REG[7];
8652 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8653 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8654 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8655 } else {
8656 /* ../lib/standard/collection/array.nit:24 */
8657 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8658 if (UNTAG_Bool(REGB2)) {
8659 } else {
8660 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8661 }
8662 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8663 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8664 if (UNTAG_Bool(REGB3)) {
8665 } else {
8666 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8667 }
8668 /* ../lib/standard/kernel.nit:234 */
8669 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8670 /* syntax/typing.nit:1487 */
8671 if (UNTAG_Bool(REGB2)) {
8672 REGB2 = TAG_Bool(true);
8673 } else {
8674 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8675 if (UNTAG_Bool(REGB3)) {
8676 } else {
8677 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8678 }
8679 /* ../lib/standard/kernel.nit:232 */
8680 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8681 /* syntax/typing.nit:1487 */
8682 REGB2 = REGB0;
8683 }
8684 if (UNTAG_Bool(REGB2)) {
8685 /* syntax/typing.nit:1488 */
8686 REGB2 = TAG_Int(7);
8687 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8688 if (!once_value_5) {
8689 fra.me.REG[7] = BOX_NativeString("Error: ");
8690 REGB2 = TAG_Int(7);
8691 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8692 once_value_5 = fra.me.REG[7];
8693 register_static_object(&once_value_5);
8694 } else fra.me.REG[7] = once_value_5;
8695 fra.me.REG[7] = fra.me.REG[7];
8696 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8697 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8699 if (!once_value_6) {
8700 fra.me.REG[7] = BOX_NativeString(" requires ");
8701 REGB2 = TAG_Int(10);
8702 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8703 once_value_6 = fra.me.REG[7];
8704 register_static_object(&once_value_6);
8705 } else fra.me.REG[7] = once_value_6;
8706 fra.me.REG[7] = fra.me.REG[7];
8707 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8708 /* ../lib/standard/collection/array.nit:24 */
8709 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8710 if (UNTAG_Bool(REGB2)) {
8711 } else {
8712 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8713 }
8714 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8715 /* syntax/typing.nit:1488 */
8716 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8717 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8718 if (!once_value_7) {
8719 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8720 REGB2 = TAG_Int(9);
8721 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8722 once_value_7 = fra.me.REG[7];
8723 register_static_object(&once_value_7);
8724 } else fra.me.REG[7] = once_value_7;
8725 fra.me.REG[7] = fra.me.REG[7];
8726 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8727 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8728 if (UNTAG_Bool(REGB2)) {
8729 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1488);
8730 }
8731 /* ../lib/standard/collection/array.nit:24 */
8732 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8733 if (UNTAG_Bool(REGB2)) {
8734 } else {
8735 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8736 }
8737 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8738 /* syntax/typing.nit:1488 */
8739 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8740 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8741 if (!once_value_8) {
8742 fra.me.REG[7] = BOX_NativeString(" found.");
8743 REGB2 = TAG_Int(7);
8744 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8745 once_value_8 = fra.me.REG[7];
8746 register_static_object(&once_value_8);
8747 } else fra.me.REG[7] = once_value_8;
8748 fra.me.REG[7] = fra.me.REG[7];
8749 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8750 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8751 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8752 } else {
8753 /* syntax/typing.nit:1491 */
8754 fra.me.REG[8] = NIT_NULL;
8755 /* syntax/typing.nit:1492 */
8756 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8757 if (UNTAG_Bool(REGB2)) {
8758 } else {
8759 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8760 if (UNTAG_Bool(REGB0)) {
8761 REGB0 = TAG_Bool(false);
8762 REGB2 = REGB0;
8763 } else {
8764 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8765 REGB2 = REGB0;
8766 }
8767 }
8768 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8769 if (UNTAG_Bool(REGB2)) {
8770 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8771 fra.me.REG[8] = fra.me.REG[7];
8772 }
8773 /* syntax/typing.nit:1495 */
8774 REGB2 = TAG_Int(0);
8775 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8776 if (UNTAG_Bool(REGB0)) {
8777 } else {
8778 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8779 }
8780 /* ../lib/standard/kernel.nit:234 */
8781 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8782 /* syntax/typing.nit:1495 */
8783 if (UNTAG_Bool(REGB2)) {
8784 REGB2 = TAG_Int(1);
8785 /* ../lib/standard/kernel.nit:237 */
8786 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8787 /* syntax/typing.nit:1495 */
8788 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8789 if (UNTAG_Bool(REGB0)) {
8790 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1495);
8791 }
8792 /* ../lib/standard/collection/array.nit:278 */
8793 fra.me.REG[7] = fra.me.REG[4];
8794 /* ../lib/standard/collection/array.nit:280 */
8795 REGB0 = TAG_Int(0);
8796 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8797 if (UNTAG_Bool(REGB3)) {
8798 } else {
8799 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8800 }
8801 /* ../lib/standard/kernel.nit:233 */
8802 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8803 /* ../lib/standard/collection/array.nit:280 */
8804 if (UNTAG_Bool(REGB0)) {
8805 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8806 if (UNTAG_Bool(REGB0)) {
8807 } else {
8808 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8809 }
8810 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8811 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8812 if (UNTAG_Bool(REGB3)) {
8813 } else {
8814 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8815 }
8816 /* ../lib/standard/kernel.nit:232 */
8817 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8818 } else {
8819 /* ../lib/standard/collection/array.nit:280 */
8820 REGB3 = TAG_Bool(false);
8821 REGB0 = REGB3;
8822 }
8823 if (UNTAG_Bool(REGB0)) {
8824 } else {
8825 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8826 }
8827 /* ../lib/standard/collection/array.nit:281 */
8828 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8829 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8830 if (UNTAG_Bool(REGB0)) {
8831 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8832 }
8833 /* ../lib/standard/collection/array.nit:718 */
8834 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8835 /* ../lib/standard/collection/array.nit:281 */
8836 goto label9;
8837 label9: while(0);
8838 /* syntax/typing.nit:1495 */
8839 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8840 if (UNTAG_Bool(REGB2)) {
8841 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1495);
8842 }
8843 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8844 } else {
8845 fra.me.REG[7] = NIT_NULL;
8846 }
8847 /* syntax/typing.nit:1498 */
8848 REGB2 = TAG_Int(0);
8849 /* ../lib/standard/kernel.nit:347 */
8850 REGB0 = REGB1;
8851 /* ../lib/standard/kernel.nit:352 */
8852 while(1) {
8853 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8854 if (UNTAG_Bool(REGB3)) {
8855 } else {
8856 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8857 }
8858 /* ../lib/standard/kernel.nit:232 */
8859 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8860 /* ../lib/standard/kernel.nit:352 */
8861 if (UNTAG_Bool(REGB3)) {
8862 /* syntax/typing.nit:1498 */
8863 REGB3 = REGB2;
8864 /* syntax/typing.nit:1499 */
8865 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8866 if (UNTAG_Bool(REGB4)) {
8867 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1499);
8868 }
8869 /* ../lib/standard/collection/array.nit:278 */
8870 fra.me.REG[9] = fra.me.REG[4];
8871 /* ../lib/standard/collection/array.nit:280 */
8872 REGB4 = TAG_Int(0);
8873 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8874 if (UNTAG_Bool(REGB5)) {
8875 } else {
8876 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8877 }
8878 /* ../lib/standard/kernel.nit:233 */
8879 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
8880 /* ../lib/standard/collection/array.nit:280 */
8881 if (UNTAG_Bool(REGB4)) {
8882 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
8883 if (UNTAG_Bool(REGB4)) {
8884 } else {
8885 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8886 }
8887 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
8888 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8889 if (UNTAG_Bool(REGB5)) {
8890 } else {
8891 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8892 }
8893 /* ../lib/standard/kernel.nit:232 */
8894 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
8895 } else {
8896 /* ../lib/standard/collection/array.nit:280 */
8897 REGB5 = TAG_Bool(false);
8898 REGB4 = REGB5;
8899 }
8900 if (UNTAG_Bool(REGB4)) {
8901 } else {
8902 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8903 }
8904 /* ../lib/standard/collection/array.nit:281 */
8905 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
8906 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
8907 if (UNTAG_Bool(REGB4)) {
8908 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8909 }
8910 /* ../lib/standard/collection/array.nit:718 */
8911 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
8912 /* ../lib/standard/collection/array.nit:281 */
8913 goto label10;
8914 label10: while(0);
8915 /* syntax/typing.nit:1500 */
8916 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8917 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
8918 /* syntax/typing.nit:1501 */
8919 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
8920 /* syntax/typing.nit:1502 */
8921 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8922 if (UNTAG_Bool(REGB3)) {
8923 } else {
8924 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8925 if (UNTAG_Bool(REGB4)) {
8926 REGB4 = TAG_Bool(false);
8927 REGB3 = REGB4;
8928 } else {
8929 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
8930 REGB3 = REGB4;
8931 }
8932 }
8933 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
8934 if (UNTAG_Bool(REGB3)) {
8935 /* syntax/typing.nit:1503 */
8936 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
8937 /* syntax/typing.nit:1504 */
8938 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8939 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
8940 /* syntax/typing.nit:1505 */
8941 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
8942 /* syntax/typing.nit:1506 */
8943 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8944 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
8945 } else {
8946 /* ../lib/standard/collection/array.nit:24 */
8947 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8948 if (UNTAG_Bool(REGB3)) {
8949 } else {
8950 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8951 }
8952 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8953 /* syntax/typing.nit:1507 */
8954 REGB4 = TAG_Int(1);
8955 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
8956 if (UNTAG_Bool(REGB5)) {
8957 } else {
8958 /* ../lib/standard/kernel.nit:227 */
8959 REGB4 = TAG_Bool((REGB3)==(REGB4));
8960 /* syntax/typing.nit:1507 */
8961 REGB5 = REGB4;
8962 }
8963 if (UNTAG_Bool(REGB5)) {
8964 /* syntax/typing.nit:1508 */
8965 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8966 REGB5 = TAG_Int(7);
8967 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8968 if (!once_value_11) {
8969 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
8970 REGB5 = TAG_Int(26);
8971 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8972 once_value_11 = fra.me.REG[13];
8973 register_static_object(&once_value_11);
8974 } else fra.me.REG[13] = once_value_11;
8975 fra.me.REG[13] = fra.me.REG[13];
8976 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8977 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8978 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8979 if (!once_value_12) {
8980 fra.me.REG[13] = BOX_NativeString("' in ");
8981 REGB5 = TAG_Int(5);
8982 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8983 once_value_12 = fra.me.REG[13];
8984 register_static_object(&once_value_12);
8985 } else fra.me.REG[13] = once_value_12;
8986 fra.me.REG[13] = fra.me.REG[13];
8987 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8988 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8989 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8990 if (!once_value_13) {
8991 fra.me.REG[13] = BOX_NativeString("; only closure is !");
8992 REGB5 = TAG_Int(19);
8993 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8994 once_value_13 = fra.me.REG[13];
8995 register_static_object(&once_value_13);
8996 } else fra.me.REG[13] = once_value_13;
8997 fra.me.REG[13] = fra.me.REG[13];
8998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8999 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
9000 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9001 if (UNTAG_Bool(REGB5)) {
9002 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1508);
9003 }
9004 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
9005 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9006 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9007 if (!once_value_14) {
9008 fra.me.REG[13] = BOX_NativeString(".");
9009 REGB5 = TAG_Int(1);
9010 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9011 once_value_14 = fra.me.REG[13];
9012 register_static_object(&once_value_14);
9013 } else fra.me.REG[13] = once_value_14;
9014 fra.me.REG[13] = fra.me.REG[13];
9015 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9016 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
9017 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
9018 } else {
9019 /* syntax/typing.nit:1510 */
9020 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
9021 /* ../lib/standard/collection/array.nit:266 */
9022 fra.me.REG[11] = fra.me.REG[6];
9023 /* ../lib/standard/collection/array.nit:269 */
9024 REGB5 = TAG_Int(0);
9025 /* ../lib/standard/collection/array.nit:270 */
9026 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9027 if (UNTAG_Bool(REGB4)) {
9028 } else {
9029 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
9030 }
9031 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9032 /* ../lib/standard/collection/array.nit:271 */
9033 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
9034 /* ../lib/standard/collection/array.nit:272 */
9035 while(1) {
9036 /* ../lib/standard/collection/array.nit:24 */
9037 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9038 if (UNTAG_Bool(REGB4)) {
9039 } else {
9040 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9041 }
9042 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9043 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
9044 if (UNTAG_Bool(REGB3)) {
9045 } else {
9046 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9047 }
9048 /* ../lib/standard/kernel.nit:232 */
9049 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
9050 /* ../lib/standard/collection/array.nit:272 */
9051 if (UNTAG_Bool(REGB4)) {
9052 /* ../lib/standard/collection/array.nit:273 */
9053 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9054 if (UNTAG_Bool(REGB4)) {
9055 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
9056 }
9057 /* ../lib/standard/collection/array.nit:718 */
9058 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
9059 /* syntax/typing.nit:1512 */
9060 REGB4 = TAG_Int(3);
9061 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
9062 if (!once_value_15) {
9063 fra.me.REG[16] = BOX_NativeString("!");
9064 REGB4 = TAG_Int(1);
9065 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
9066 once_value_15 = fra.me.REG[16];
9067 register_static_object(&once_value_15);
9068 } else fra.me.REG[16] = once_value_15;
9069 fra.me.REG[16] = fra.me.REG[16];
9070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
9071 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
9072 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
9073 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9074 if (!once_value_16) {
9075 fra.me.REG[14] = BOX_NativeString("");
9076 REGB4 = TAG_Int(0);
9077 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
9078 once_value_16 = fra.me.REG[14];
9079 register_static_object(&once_value_16);
9080 } else fra.me.REG[14] = once_value_16;
9081 fra.me.REG[14] = fra.me.REG[14];
9082 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9083 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
9084 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
9085 /* ../lib/standard/collection/array.nit:274 */
9086 REGB4 = TAG_Int(1);
9087 /* ../lib/standard/kernel.nit:235 */
9088 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
9089 /* ../lib/standard/collection/array.nit:274 */
9090 REGB5 = REGB4;
9091 } else {
9092 /* ../lib/standard/collection/array.nit:272 */
9093 goto label17;
9094 }
9095 }
9096 label17: while(0);
9097 /* syntax/typing.nit:1514 */
9098 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9099 REGB5 = TAG_Int(7);
9100 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9101 if (!once_value_18) {
9102 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
9103 REGB5 = TAG_Int(26);
9104 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
9105 once_value_18 = fra.me.REG[11];
9106 register_static_object(&once_value_18);
9107 } else fra.me.REG[11] = once_value_18;
9108 fra.me.REG[11] = fra.me.REG[11];
9109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
9110 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9111 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9112 if (!once_value_19) {
9113 fra.me.REG[10] = BOX_NativeString("' in ");
9114 REGB5 = TAG_Int(5);
9115 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9116 once_value_19 = fra.me.REG[10];
9117 register_static_object(&once_value_19);
9118 } else fra.me.REG[10] = once_value_19;
9119 fra.me.REG[10] = fra.me.REG[10];
9120 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9121 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9122 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9123 if (!once_value_20) {
9124 fra.me.REG[10] = BOX_NativeString("; only closures are ");
9125 REGB5 = TAG_Int(20);
9126 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9127 once_value_20 = fra.me.REG[10];
9128 register_static_object(&once_value_20);
9129 } else fra.me.REG[10] = once_value_20;
9130 fra.me.REG[10] = fra.me.REG[10];
9131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9132 if (!once_value_21) {
9133 fra.me.REG[10] = BOX_NativeString(",");
9134 REGB5 = TAG_Int(1);
9135 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9136 once_value_21 = fra.me.REG[10];
9137 register_static_object(&once_value_21);
9138 } else fra.me.REG[10] = once_value_21;
9139 fra.me.REG[10] = fra.me.REG[10];
9140 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
9141 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9142 if (!once_value_22) {
9143 fra.me.REG[10] = BOX_NativeString(".");
9144 REGB5 = TAG_Int(1);
9145 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9146 once_value_22 = fra.me.REG[10];
9147 register_static_object(&once_value_22);
9148 } else fra.me.REG[10] = once_value_22;
9149 fra.me.REG[10] = fra.me.REG[10];
9150 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9151 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9152 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
9153 }
9154 }
9155 /* ../lib/standard/kernel.nit:354 */
9156 REGB5 = TAG_Int(1);
9157 /* ../lib/standard/kernel.nit:235 */
9158 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
9159 /* ../lib/standard/kernel.nit:354 */
9160 REGB2 = REGB5;
9161 } else {
9162 /* ../lib/standard/kernel.nit:352 */
9163 goto label23;
9164 }
9165 }
9166 label23: while(0);
9167 /* syntax/typing.nit:1519 */
9168 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9169 if (UNTAG_Bool(REGB2)) {
9170 } else {
9171 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9172 if (UNTAG_Bool(REGB0)) {
9173 REGB0 = TAG_Bool(false);
9174 REGB2 = REGB0;
9175 } else {
9176 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
9177 REGB2 = REGB0;
9178 }
9179 }
9180 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
9181 if (UNTAG_Bool(REGB2)) {
9182 /* syntax/typing.nit:1520 */
9183 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]);
9184 fra.me.REG[5] = fra.me.REG[8];
9185 }
9186 }
9187 }
9188 } else {
9189 /* syntax/typing.nit:1523 */
9190 REGB2 = TAG_Int(0);
9191 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
9192 if (UNTAG_Bool(REGB0)) {
9193 } else {
9194 /* ../lib/standard/kernel.nit:227 */
9195 REGB2 = TAG_Bool((REGB1)==(REGB2));
9196 /* syntax/typing.nit:1523 */
9197 REGB0 = REGB2;
9198 }
9199 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9200 if (UNTAG_Bool(REGB0)) {
9201 /* syntax/typing.nit:1524 */
9202 REGB0 = TAG_Int(3);
9203 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9204 if (!once_value_24) {
9205 fra.me.REG[6] = BOX_NativeString("Error: ");
9206 REGB0 = TAG_Int(7);
9207 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
9208 once_value_24 = fra.me.REG[6];
9209 register_static_object(&once_value_24);
9210 } else fra.me.REG[6] = once_value_24;
9211 fra.me.REG[6] = fra.me.REG[6];
9212 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
9213 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9214 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9215 if (!once_value_25) {
9216 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
9217 REGB0 = TAG_Int(25);
9218 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9219 once_value_25 = fra.me.REG[3];
9220 register_static_object(&once_value_25);
9221 } else fra.me.REG[3] = once_value_25;
9222 fra.me.REG[3] = fra.me.REG[3];
9223 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9224 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9225 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9226 }
9227 }
9228 /* syntax/typing.nit:1526 */
9229 goto label26;
9230 label26: while(0);
9231 stack_frame_head = fra.me.prev;
9232 return fra.me.REG[5];
9233 }
9234 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){
9235 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9236 val_t REGB0;
9237 val_t REGB1;
9238 val_t REGB2;
9239 val_t tmp;
9240 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9241 fra.me.file = LOCATE_syntax___typing;
9242 fra.me.line = 1531;
9243 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
9244 fra.me.has_broke = 0;
9245 fra.me.REG_size = 7;
9246 fra.me.nitni_local_ref_head = NULL;
9247 fra.me.REG[0] = NIT_NULL;
9248 fra.me.REG[1] = NIT_NULL;
9249 fra.me.REG[2] = NIT_NULL;
9250 fra.me.REG[3] = NIT_NULL;
9251 fra.me.REG[4] = NIT_NULL;
9252 fra.me.REG[5] = NIT_NULL;
9253 fra.me.REG[6] = NIT_NULL;
9254 fra.me.REG[0] = p0;
9255 fra.me.REG[1] = p1;
9256 fra.me.REG[2] = p2;
9257 REGB0 = p3;
9258 REGB1 = p4;
9259 fra.me.REG[3] = p5;
9260 fra.me.REG[4] = p6;
9261 fra.me.REG[5] = p7;
9262 /* syntax/typing.nit:1534 */
9263 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]);
9264 /* syntax/typing.nit:1535 */
9265 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9266 if (UNTAG_Bool(REGB0)) {
9267 } else {
9268 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9269 if (UNTAG_Bool(REGB2)) {
9270 REGB2 = TAG_Bool(false);
9271 REGB0 = REGB2;
9272 } else {
9273 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9274 REGB0 = REGB2;
9275 }
9276 }
9277 if (UNTAG_Bool(REGB0)) {
9278 goto label1;
9279 }
9280 /* syntax/typing.nit:1536 */
9281 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);
9282 /* syntax/typing.nit:1537 */
9283 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9284 if (UNTAG_Bool(REGB1)) {
9285 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1537);
9286 }
9287 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9288 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]);
9289 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9290 if (UNTAG_Bool(REGB1)) {
9291 goto label1;
9292 }
9293 /* syntax/typing.nit:1538 */
9294 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9295 if (UNTAG_Bool(REGB1)) {
9296 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1538);
9297 }
9298 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9299 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]);
9300 /* syntax/typing.nit:1539 */
9301 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9302 if (UNTAG_Bool(REGB1)) {
9303 } else {
9304 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9305 if (UNTAG_Bool(REGB0)) {
9306 REGB0 = TAG_Bool(false);
9307 REGB1 = REGB0;
9308 } else {
9309 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9310 REGB1 = REGB0;
9311 }
9312 }
9313 if (UNTAG_Bool(REGB1)) {
9314 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9315 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9316 if (UNTAG_Bool(REGB1)) {
9317 } else {
9318 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9319 if (UNTAG_Bool(REGB0)) {
9320 REGB0 = TAG_Bool(false);
9321 REGB1 = REGB0;
9322 } else {
9323 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9324 REGB1 = REGB0;
9325 }
9326 }
9327 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9328 } else {
9329 REGB0 = TAG_Bool(false);
9330 REGB1 = REGB0;
9331 }
9332 if (UNTAG_Bool(REGB1)) {
9333 goto label1;
9334 }
9335 /* syntax/typing.nit:1540 */
9336 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
9337 /* syntax/typing.nit:1541 */
9338 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9339 /* syntax/typing.nit:1542 */
9340 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
9341 label1: while(0);
9342 stack_frame_head = fra.me.prev;
9343 return;
9344 }
9345 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9346 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9347 val_t REGB0;
9348 val_t REGB1;
9349 val_t REGB2;
9350 val_t REGB3;
9351 val_t tmp;
9352 static val_t once_value_1; /* Once value */
9353 static val_t once_value_2; /* Once value */
9354 static val_t once_value_3; /* Once value */
9355 static val_t once_value_4; /* Once value */
9356 static val_t once_value_5; /* Once value */
9357 static val_t once_value_6; /* Once value */
9358 static val_t once_value_8; /* Once value */
9359 static val_t once_value_9; /* Once value */
9360 static val_t once_value_10; /* Once value */
9361 static val_t once_value_11; /* Once value */
9362 static val_t once_value_12; /* Once value */
9363 static val_t once_value_13; /* Once value */
9364 static val_t once_value_14; /* Once value */
9365 static val_t once_value_15; /* Once value */
9366 static val_t once_value_16; /* Once value */
9367 static val_t once_value_17; /* Once value */
9368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9369 fra.me.file = LOCATE_syntax___typing;
9370 fra.me.line = 1545;
9371 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9372 fra.me.has_broke = 0;
9373 fra.me.REG_size = 10;
9374 fra.me.nitni_local_ref_head = NULL;
9375 fra.me.REG[0] = NIT_NULL;
9376 fra.me.REG[1] = NIT_NULL;
9377 fra.me.REG[2] = NIT_NULL;
9378 fra.me.REG[3] = NIT_NULL;
9379 fra.me.REG[4] = NIT_NULL;
9380 fra.me.REG[5] = NIT_NULL;
9381 fra.me.REG[6] = NIT_NULL;
9382 fra.me.REG[7] = NIT_NULL;
9383 fra.me.REG[8] = NIT_NULL;
9384 fra.me.REG[9] = NIT_NULL;
9385 fra.me.REG[0] = p0;
9386 fra.me.REG[1] = p1;
9387 fra.me.REG[2] = p2;
9388 REGB0 = p3;
9389 fra.me.REG[3] = p4;
9390 /* syntax/typing.nit:1547 */
9391 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9392 if (UNTAG_Bool(REGB1)) {
9393 /* syntax/typing.nit:1548 */
9394 if (!once_value_1) {
9395 if (!once_value_2) {
9396 fra.me.REG[4] = BOX_NativeString("==");
9397 REGB1 = TAG_Int(2);
9398 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
9399 once_value_2 = fra.me.REG[4];
9400 register_static_object(&once_value_2);
9401 } else fra.me.REG[4] = once_value_2;
9402 fra.me.REG[4] = fra.me.REG[4];
9403 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9404 once_value_1 = fra.me.REG[4];
9405 register_static_object(&once_value_1);
9406 } else fra.me.REG[4] = once_value_1;
9407 fra.me.REG[4] = fra.me.REG[4];
9408 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9409 if (UNTAG_Bool(REGB1)) {
9410 } else {
9411 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9412 REGB1 = REGB2;
9413 }
9414 if (UNTAG_Bool(REGB1)) {
9415 REGB1 = TAG_Bool(true);
9416 } else {
9417 if (!once_value_3) {
9418 if (!once_value_4) {
9419 fra.me.REG[4] = BOX_NativeString("!=");
9420 REGB2 = TAG_Int(2);
9421 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
9422 once_value_4 = fra.me.REG[4];
9423 register_static_object(&once_value_4);
9424 } else fra.me.REG[4] = once_value_4;
9425 fra.me.REG[4] = fra.me.REG[4];
9426 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9427 once_value_3 = fra.me.REG[4];
9428 register_static_object(&once_value_3);
9429 } else fra.me.REG[4] = once_value_3;
9430 fra.me.REG[4] = fra.me.REG[4];
9431 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9432 if (UNTAG_Bool(REGB2)) {
9433 } else {
9434 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9435 REGB2 = REGB3;
9436 }
9437 REGB1 = REGB2;
9438 }
9439 if (UNTAG_Bool(REGB1)) {
9440 /* syntax/typing.nit:1550 */
9441 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9442 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9443 fra.me.REG[2] = fra.me.REG[4];
9444 } else {
9445 /* syntax/typing.nit:1552 */
9446 REGB1 = TAG_Int(3);
9447 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9448 if (!once_value_5) {
9449 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9450 REGB1 = TAG_Int(15);
9451 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9452 once_value_5 = fra.me.REG[5];
9453 register_static_object(&once_value_5);
9454 } else fra.me.REG[5] = once_value_5;
9455 fra.me.REG[5] = fra.me.REG[5];
9456 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9457 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9458 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9459 if (!once_value_6) {
9460 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9461 REGB1 = TAG_Int(17);
9462 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9463 once_value_6 = fra.me.REG[5];
9464 register_static_object(&once_value_6);
9465 } else fra.me.REG[5] = once_value_6;
9466 fra.me.REG[5] = fra.me.REG[5];
9467 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9468 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9469 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9470 /* syntax/typing.nit:1553 */
9471 fra.me.REG[4] = NIT_NULL;
9472 goto label7;
9473 }
9474 }
9475 /* syntax/typing.nit:1556 */
9476 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9477 /* syntax/typing.nit:1557 */
9478 fra.me.REG[6] = NIT_NULL;
9479 /* syntax/typing.nit:1558 */
9480 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9481 if (UNTAG_Bool(REGB1)) {
9482 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9483 fra.me.REG[6] = fra.me.REG[7];
9484 }
9485 /* syntax/typing.nit:1559 */
9486 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9487 if (UNTAG_Bool(REGB1)) {
9488 } else {
9489 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9490 if (UNTAG_Bool(REGB2)) {
9491 REGB2 = TAG_Bool(false);
9492 REGB1 = REGB2;
9493 } else {
9494 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9495 REGB1 = REGB2;
9496 }
9497 }
9498 if (UNTAG_Bool(REGB1)) {
9499 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9500 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9501 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
9502 } else {
9503 REGB2 = TAG_Bool(false);
9504 REGB1 = REGB2;
9505 }
9506 if (UNTAG_Bool(REGB1)) {
9507 /* syntax/typing.nit:1560 */
9508 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9509 /* ../lib/standard/collection/array.nit:24 */
9510 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9511 if (UNTAG_Bool(REGB1)) {
9512 } else {
9513 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9514 }
9515 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9516 /* syntax/typing.nit:1561 */
9517 REGB2 = TAG_Int(1);
9518 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9519 if (UNTAG_Bool(REGB3)) {
9520 } else {
9521 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9522 }
9523 /* ../lib/standard/kernel.nit:234 */
9524 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9525 /* syntax/typing.nit:1561 */
9526 if (UNTAG_Bool(REGB2)) {
9527 /* syntax/typing.nit:1562 */
9528 REGB2 = TAG_Int(5);
9529 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9530 if (!once_value_8) {
9531 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9532 REGB2 = TAG_Int(29);
9533 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9534 once_value_8 = fra.me.REG[9];
9535 register_static_object(&once_value_8);
9536 } else fra.me.REG[9] = once_value_8;
9537 fra.me.REG[9] = fra.me.REG[9];
9538 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9539 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9540 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9541 if (!once_value_9) {
9542 fra.me.REG[9] = BOX_NativeString("' for ");
9543 REGB2 = TAG_Int(6);
9544 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9545 once_value_9 = fra.me.REG[9];
9546 register_static_object(&once_value_9);
9547 } else fra.me.REG[9] = once_value_9;
9548 fra.me.REG[9] = fra.me.REG[9];
9549 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9550 if (!once_value_10) {
9551 fra.me.REG[9] = BOX_NativeString(", ");
9552 REGB2 = TAG_Int(2);
9553 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9554 once_value_10 = fra.me.REG[9];
9555 register_static_object(&once_value_10);
9556 } else fra.me.REG[9] = once_value_10;
9557 fra.me.REG[9] = fra.me.REG[9];
9558 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9559 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9560 if (!once_value_11) {
9561 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9562 REGB2 = TAG_Int(27);
9563 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9564 once_value_11 = fra.me.REG[9];
9565 register_static_object(&once_value_11);
9566 } else fra.me.REG[9] = once_value_11;
9567 fra.me.REG[9] = fra.me.REG[9];
9568 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9569 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9570 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9571 /* syntax/typing.nit:1563 */
9572 fra.me.REG[4] = NIT_NULL;
9573 goto label7;
9574 } else {
9575 /* ../lib/standard/collection/array.nit:24 */
9576 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9577 if (UNTAG_Bool(REGB2)) {
9578 } else {
9579 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9580 }
9581 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9582 /* syntax/typing.nit:1564 */
9583 REGB1 = TAG_Int(1);
9584 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9585 if (UNTAG_Bool(REGB3)) {
9586 } else {
9587 /* ../lib/standard/kernel.nit:227 */
9588 REGB1 = TAG_Bool((REGB2)==(REGB1));
9589 /* syntax/typing.nit:1564 */
9590 REGB3 = REGB1;
9591 }
9592 if (UNTAG_Bool(REGB3)) {
9593 /* syntax/typing.nit:1565 */
9594 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9595 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9596 if (UNTAG_Bool(REGB3)) {
9597 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1565);
9598 }
9599 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9600 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9601 /* syntax/typing.nit:1566 */
9602 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9603 if (UNTAG_Bool(REGB3)) {
9604 } else {
9605 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1566);
9606 }
9607 /* syntax/typing.nit:1567 */
9608 fra.me.REG[6] = fra.me.REG[7];
9609 }
9610 }
9611 }
9612 /* syntax/typing.nit:1571 */
9613 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9614 if (UNTAG_Bool(REGB3)) {
9615 } else {
9616 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9617 if (UNTAG_Bool(REGB1)) {
9618 REGB1 = TAG_Bool(false);
9619 REGB3 = REGB1;
9620 } else {
9621 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9622 REGB3 = REGB1;
9623 }
9624 }
9625 if (UNTAG_Bool(REGB3)) {
9626 /* syntax/typing.nit:1572 */
9627 if (UNTAG_Bool(REGB0)) {
9628 /* syntax/typing.nit:1573 */
9629 REGB0 = TAG_Int(5);
9630 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9631 if (!once_value_12) {
9632 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9633 REGB0 = TAG_Int(27);
9634 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9635 once_value_12 = fra.me.REG[5];
9636 register_static_object(&once_value_12);
9637 } else fra.me.REG[5] = once_value_12;
9638 fra.me.REG[5] = fra.me.REG[5];
9639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9640 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9641 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9642 if (!once_value_13) {
9643 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9644 REGB0 = TAG_Int(13);
9645 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9646 once_value_13 = fra.me.REG[5];
9647 register_static_object(&once_value_13);
9648 } else fra.me.REG[5] = once_value_13;
9649 fra.me.REG[5] = fra.me.REG[5];
9650 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9651 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9652 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9653 if (!once_value_14) {
9654 fra.me.REG[5] = BOX_NativeString(".");
9655 REGB0 = TAG_Int(1);
9656 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9657 once_value_14 = fra.me.REG[5];
9658 register_static_object(&once_value_14);
9659 } else fra.me.REG[5] = once_value_14;
9660 fra.me.REG[5] = fra.me.REG[5];
9661 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9662 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9663 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9664 } else {
9665 /* syntax/typing.nit:1575 */
9666 REGB0 = TAG_Int(5);
9667 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9668 if (!once_value_15) {
9669 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9670 REGB0 = TAG_Int(15);
9671 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9672 once_value_15 = fra.me.REG[5];
9673 register_static_object(&once_value_15);
9674 } else fra.me.REG[5] = once_value_15;
9675 fra.me.REG[5] = fra.me.REG[5];
9676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9677 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9678 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9679 if (!once_value_16) {
9680 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9681 REGB0 = TAG_Int(20);
9682 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9683 once_value_16 = fra.me.REG[3];
9684 register_static_object(&once_value_16);
9685 } else fra.me.REG[3] = once_value_16;
9686 fra.me.REG[3] = fra.me.REG[3];
9687 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9688 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9690 if (!once_value_17) {
9691 fra.me.REG[2] = BOX_NativeString(".");
9692 REGB0 = TAG_Int(1);
9693 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9694 once_value_17 = fra.me.REG[2];
9695 register_static_object(&once_value_17);
9696 } else fra.me.REG[2] = once_value_17;
9697 fra.me.REG[2] = fra.me.REG[2];
9698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9699 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9700 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9701 }
9702 /* syntax/typing.nit:1577 */
9703 fra.me.REG[4] = NIT_NULL;
9704 goto label7;
9705 }
9706 /* syntax/typing.nit:1579 */
9707 fra.me.REG[4] = fra.me.REG[6];
9708 goto label7;
9709 label7: while(0);
9710 stack_frame_head = fra.me.prev;
9711 return fra.me.REG[4];
9712 }
9713 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9714 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9715 val_t REGB0;
9716 val_t tmp;
9717 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9718 fra.me.file = LOCATE_syntax___typing;
9719 fra.me.line = 1582;
9720 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9721 fra.me.has_broke = 0;
9722 fra.me.REG_size = 6;
9723 fra.me.nitni_local_ref_head = NULL;
9724 fra.me.REG[0] = NIT_NULL;
9725 fra.me.REG[1] = NIT_NULL;
9726 fra.me.REG[2] = NIT_NULL;
9727 fra.me.REG[3] = NIT_NULL;
9728 fra.me.REG[4] = NIT_NULL;
9729 fra.me.REG[5] = NIT_NULL;
9730 fra.me.REG[0] = p0;
9731 fra.me.REG[1] = p1;
9732 fra.me.REG[2] = p2;
9733 fra.me.REG[3] = p3;
9734 REGB0 = p4;
9735 /* syntax/typing.nit:1585 */
9736 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9737 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9738 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);
9739 /* syntax/typing.nit:1586 */
9740 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9741 /* syntax/typing.nit:1587 */
9742 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9743 if (UNTAG_Bool(REGB0)) {
9744 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9745 fra.me.REG[2] = fra.me.REG[3];
9746 }
9747 /* syntax/typing.nit:1588 */
9748 goto label1;
9749 label1: while(0);
9750 stack_frame_head = fra.me.prev;
9751 return fra.me.REG[2];
9752 }
9753 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9754 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9755 val_t REGB0;
9756 val_t tmp;
9757 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9758 fra.me.file = LOCATE_syntax___typing;
9759 fra.me.line = 1591;
9760 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9761 fra.me.has_broke = 0;
9762 fra.me.REG_size = 2;
9763 fra.me.nitni_local_ref_head = NULL;
9764 fra.me.REG[0] = NIT_NULL;
9765 fra.me.REG[1] = NIT_NULL;
9766 fra.me.REG[0] = p0;
9767 /* syntax/typing.nit:1591 */
9768 fra.me.REG[1] = fra.me.REG[0];
9769 /* syntax/typing.nit:1592 */
9770 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9771 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9772 if (UNTAG_Bool(REGB0)) {
9773 } else {
9774 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1592);
9775 }
9776 goto label1;
9777 label1: while(0);
9778 stack_frame_head = fra.me.prev;
9779 return fra.me.REG[1];
9780 }
9781 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9782 struct {struct stack_frame_t me;} fra;
9783 val_t tmp;
9784 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9785 fra.me.file = LOCATE_syntax___typing;
9786 fra.me.line = 1595;
9787 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9788 fra.me.has_broke = 0;
9789 fra.me.REG_size = 1;
9790 fra.me.nitni_local_ref_head = NULL;
9791 fra.me.REG[0] = NIT_NULL;
9792 fra.me.REG[0] = p0;
9793 /* syntax/typing.nit:1595 */
9794 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9795 stack_frame_head = fra.me.prev;
9796 return fra.me.REG[0];
9797 }
9798 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9799 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
9800 val_t REGB0;
9801 val_t REGB1;
9802 val_t REGB2;
9803 val_t tmp;
9804 static val_t once_value_1; /* Once value */
9805 static val_t once_value_2; /* Once value */
9806 static val_t once_value_3; /* Once value */
9807 static val_t once_value_4; /* Once value */
9808 static val_t once_value_5; /* Once value */
9809 static val_t once_value_6; /* Once value */
9810 static val_t once_value_7; /* Once value */
9811 static val_t once_value_8; /* Once value */
9812 static val_t once_value_9; /* Once value */
9813 static val_t once_value_10; /* Once value */
9814 static val_t once_value_11; /* Once value */
9815 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9816 fra.me.file = LOCATE_syntax___typing;
9817 fra.me.line = 1602;
9818 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9819 fra.me.has_broke = 0;
9820 fra.me.REG_size = 11;
9821 fra.me.nitni_local_ref_head = NULL;
9822 fra.me.REG[0] = NIT_NULL;
9823 fra.me.REG[1] = NIT_NULL;
9824 fra.me.REG[2] = NIT_NULL;
9825 fra.me.REG[3] = NIT_NULL;
9826 fra.me.REG[4] = NIT_NULL;
9827 fra.me.REG[5] = NIT_NULL;
9828 fra.me.REG[6] = NIT_NULL;
9829 fra.me.REG[7] = NIT_NULL;
9830 fra.me.REG[8] = NIT_NULL;
9831 fra.me.REG[9] = NIT_NULL;
9832 fra.me.REG[10] = NIT_NULL;
9833 fra.me.REG[0] = p0;
9834 fra.me.REG[1] = p1;
9835 fra.me.REG[2] = p2;
9836 /* syntax/typing.nit:1602 */
9837 fra.me.REG[3] = fra.me.REG[0];
9838 /* syntax/typing.nit:1604 */
9839 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9840 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9841 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9842 if (UNTAG_Bool(REGB0)) {
9843 } else {
9844 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9845 if (UNTAG_Bool(REGB1)) {
9846 REGB1 = TAG_Bool(false);
9847 REGB0 = REGB1;
9848 } else {
9849 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9850 REGB0 = REGB1;
9851 }
9852 }
9853 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9854 if (UNTAG_Bool(REGB0)) {
9855 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9856 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
9857 if (UNTAG_Bool(REGB0)) {
9858 } else {
9859 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9860 REGB0 = REGB1;
9861 }
9862 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9863 } else {
9864 REGB1 = TAG_Bool(false);
9865 REGB0 = REGB1;
9866 }
9867 if (UNTAG_Bool(REGB0)) {
9868 /* syntax/typing.nit:1605 */
9869 REGB0 = TAG_Int(3);
9870 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9871 if (!once_value_1) {
9872 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
9873 REGB0 = TAG_Int(30);
9874 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9875 once_value_1 = fra.me.REG[4];
9876 register_static_object(&once_value_1);
9877 } else fra.me.REG[4] = once_value_1;
9878 fra.me.REG[4] = fra.me.REG[4];
9879 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9880 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9882 if (!once_value_2) {
9883 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
9884 REGB0 = TAG_Int(29);
9885 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9886 once_value_2 = fra.me.REG[4];
9887 register_static_object(&once_value_2);
9888 } else fra.me.REG[4] = once_value_2;
9889 fra.me.REG[4] = fra.me.REG[4];
9890 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9891 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9892 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
9893 }
9894 /* syntax/typing.nit:1607 */
9895 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9896 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9897 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
9898 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
9899 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
9900 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9901 /* syntax/typing.nit:1608 */
9902 fra.me.REG[5] = NIT_NULL;
9903 /* syntax/typing.nit:1609 */
9904 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
9905 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
9906 if (UNTAG_Bool(REGB0)) {
9907 } else {
9908 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1609);
9909 }
9910 /* syntax/typing.nit:1610 */
9911 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
9912 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9913 if (UNTAG_Bool(REGB0)) {
9914 /* syntax/typing.nit:1611 */
9915 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
9916 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
9917 if (UNTAG_Bool(REGB0)) {
9918 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1611);
9919 }
9920 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
9921 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
9922 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
9923 fra.me.REG[5] = fra.me.REG[0];
9924 }
9925 /* syntax/typing.nit:1613 */
9926 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9927 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
9928 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
9929 /* syntax/typing.nit:1614 */
9930 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9931 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
9932 if (UNTAG_Bool(REGB0)) {
9933 } else {
9934 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
9935 REGB0 = REGB1;
9936 }
9937 if (UNTAG_Bool(REGB0)) {
9938 /* syntax/typing.nit:1615 */
9939 REGB0 = TAG_Bool(true);
9940 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
9941 } else {
9942 /* syntax/typing.nit:1616 */
9943 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
9944 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9945 if (UNTAG_Bool(REGB0)) {
9946 /* syntax/typing.nit:1617 */
9947 REGB0 = TAG_Int(5);
9948 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9949 if (!once_value_3) {
9950 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
9951 REGB0 = TAG_Int(28);
9952 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9953 once_value_3 = fra.me.REG[8];
9954 register_static_object(&once_value_3);
9955 } else fra.me.REG[8] = once_value_3;
9956 fra.me.REG[8] = fra.me.REG[8];
9957 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9958 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9960 if (!once_value_4) {
9961 fra.me.REG[8] = BOX_NativeString(" must be one in ");
9962 REGB0 = TAG_Int(16);
9963 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9964 once_value_4 = fra.me.REG[8];
9965 register_static_object(&once_value_4);
9966 } else fra.me.REG[8] = once_value_4;
9967 fra.me.REG[8] = fra.me.REG[8];
9968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9969 if (!once_value_5) {
9970 fra.me.REG[8] = BOX_NativeString(", ");
9971 REGB0 = TAG_Int(2);
9972 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9973 once_value_5 = fra.me.REG[8];
9974 register_static_object(&once_value_5);
9975 } else fra.me.REG[8] = once_value_5;
9976 fra.me.REG[8] = fra.me.REG[8];
9977 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
9978 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9979 if (!once_value_6) {
9980 fra.me.REG[8] = BOX_NativeString(".");
9981 REGB0 = TAG_Int(1);
9982 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9983 once_value_6 = fra.me.REG[8];
9984 register_static_object(&once_value_6);
9985 } else fra.me.REG[8] = once_value_6;
9986 fra.me.REG[8] = fra.me.REG[8];
9987 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9988 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9989 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
9990 } else {
9991 /* syntax/typing.nit:1618 */
9992 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
9993 if (UNTAG_Bool(REGB0)) {
9994 } else {
9995 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9996 REGB0 = REGB1;
9997 }
9998 if (UNTAG_Bool(REGB0)) {
9999 /* syntax/typing.nit:1619 */
10000 REGB0 = TAG_Int(3);
10001 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10002 if (!once_value_7) {
10003 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
10004 REGB0 = TAG_Int(54);
10005 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10006 once_value_7 = fra.me.REG[8];
10007 register_static_object(&once_value_7);
10008 } else fra.me.REG[8] = once_value_7;
10009 fra.me.REG[8] = fra.me.REG[8];
10010 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10011 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10012 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10013 if (!once_value_8) {
10014 fra.me.REG[8] = BOX_NativeString(" is allowed.");
10015 REGB0 = TAG_Int(12);
10016 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10017 once_value_8 = fra.me.REG[8];
10018 register_static_object(&once_value_8);
10019 } else fra.me.REG[8] = once_value_8;
10020 fra.me.REG[8] = fra.me.REG[8];
10021 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10022 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10023 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10024 } else {
10025 /* ../lib/standard/collection/array.nit:269 */
10026 REGB0 = TAG_Int(0);
10027 /* ../lib/standard/collection/array.nit:270 */
10028 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10029 if (UNTAG_Bool(REGB1)) {
10030 } else {
10031 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
10032 }
10033 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10034 /* ../lib/standard/collection/array.nit:271 */
10035 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
10036 /* ../lib/standard/collection/array.nit:272 */
10037 while(1) {
10038 /* ../lib/standard/collection/array.nit:24 */
10039 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10040 if (UNTAG_Bool(REGB1)) {
10041 } else {
10042 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
10043 }
10044 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10045 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
10046 if (UNTAG_Bool(REGB2)) {
10047 } else {
10048 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
10049 }
10050 /* ../lib/standard/kernel.nit:232 */
10051 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
10052 /* ../lib/standard/collection/array.nit:272 */
10053 if (UNTAG_Bool(REGB1)) {
10054 /* ../lib/standard/collection/array.nit:273 */
10055 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10056 if (UNTAG_Bool(REGB1)) {
10057 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
10058 }
10059 /* ../lib/standard/collection/array.nit:718 */
10060 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
10061 /* syntax/typing.nit:1622 */
10062 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[5]));
10063 if (UNTAG_Bool(REGB1)) {
10064 } else {
10065 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
10066 REGB1 = REGB2;
10067 }
10068 if (UNTAG_Bool(REGB1)) {
10069 /* syntax/typing.nit:1623 */
10070 fra.me.REG[5] = NIT_NULL;
10071 } else {
10072 /* syntax/typing.nit:1624 */
10073 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[4]));
10074 if (UNTAG_Bool(REGB1)) {
10075 } else {
10076 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
10077 REGB1 = REGB2;
10078 }
10079 if (UNTAG_Bool(REGB1)) {
10080 /* syntax/typing.nit:1625 */
10081 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10082 if (UNTAG_Bool(REGB1)) {
10083 } else {
10084 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10085 if (UNTAG_Bool(REGB2)) {
10086 REGB2 = TAG_Bool(false);
10087 REGB1 = REGB2;
10088 } else {
10089 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10090 REGB1 = REGB2;
10091 }
10092 }
10093 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10094 if (UNTAG_Bool(REGB1)) {
10095 /* syntax/typing.nit:1626 */
10096 REGB1 = TAG_Int(5);
10097 fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10098 if (!once_value_9) {
10099 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
10100 REGB1 = TAG_Int(22);
10101 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
10102 once_value_9 = fra.me.REG[10];
10103 register_static_object(&once_value_9);
10104 } else fra.me.REG[10] = once_value_9;
10105 fra.me.REG[10] = fra.me.REG[10];
10106 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
10107 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
10108 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
10109 if (!once_value_10) {
10110 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
10111 REGB1 = TAG_Int(39);
10112 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
10113 once_value_10 = fra.me.REG[8];
10114 register_static_object(&once_value_10);
10115 } else fra.me.REG[8] = once_value_10;
10116 fra.me.REG[8] = fra.me.REG[8];
10117 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
10118 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10119 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
10120 if (!once_value_11) {
10121 fra.me.REG[8] = BOX_NativeString("");
10122 REGB1 = TAG_Int(0);
10123 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
10124 once_value_11 = fra.me.REG[8];
10125 register_static_object(&once_value_11);
10126 } else fra.me.REG[8] = once_value_11;
10127 fra.me.REG[8] = fra.me.REG[8];
10128 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
10129 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
10130 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[9]);
10131 }
10132 /* syntax/typing.nit:1628 */
10133 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
10134 /* syntax/typing.nit:1629 */
10135 goto label12;
10136 }
10137 }
10138 /* ../lib/standard/collection/array.nit:274 */
10139 REGB1 = TAG_Int(1);
10140 /* ../lib/standard/kernel.nit:235 */
10141 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
10142 /* ../lib/standard/collection/array.nit:274 */
10143 REGB0 = REGB1;
10144 } else {
10145 /* ../lib/standard/collection/array.nit:272 */
10146 goto label13;
10147 }
10148 }
10149 label13: while(0);
10150 label12: while(0);
10151 }
10152 }
10153 }
10154 stack_frame_head = fra.me.prev;
10155 return;
10156 }
10157 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
10158 struct {struct stack_frame_t me;} fra;
10159 val_t tmp;
10160 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10161 fra.me.file = LOCATE_syntax___typing;
10162 fra.me.line = 1638;
10163 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
10164 fra.me.has_broke = 0;
10165 fra.me.REG_size = 1;
10166 fra.me.nitni_local_ref_head = NULL;
10167 fra.me.REG[0] = NIT_NULL;
10168 fra.me.REG[0] = p0;
10169 /* syntax/typing.nit:1638 */
10170 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10171 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
10172 goto label1;
10173 label1: while(0);
10174 stack_frame_head = fra.me.prev;
10175 return fra.me.REG[0];
10176 }
10177 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
10178 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10179 val_t REGB0;
10180 val_t REGB1;
10181 val_t tmp;
10182 static val_t once_value_2; /* Once value */
10183 static val_t once_value_3; /* Once value */
10184 static val_t once_value_4; /* Once value */
10185 static val_t once_value_5; /* Once value */
10186 static val_t once_value_6; /* Once value */
10187 static val_t once_value_7; /* Once value */
10188 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10189 fra.me.file = LOCATE_syntax___typing;
10190 fra.me.line = 1639;
10191 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
10192 fra.me.has_broke = 0;
10193 fra.me.REG_size = 5;
10194 fra.me.nitni_local_ref_head = NULL;
10195 fra.me.REG[0] = NIT_NULL;
10196 fra.me.REG[1] = NIT_NULL;
10197 fra.me.REG[2] = NIT_NULL;
10198 fra.me.REG[3] = NIT_NULL;
10199 fra.me.REG[4] = NIT_NULL;
10200 fra.me.REG[0] = p0;
10201 fra.me.REG[1] = p1;
10202 /* syntax/typing.nit:1641 */
10203 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10204 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
10205 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10206 if (UNTAG_Bool(REGB0)) {
10207 goto label1;
10208 }
10209 /* syntax/typing.nit:1642 */
10210 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10211 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
10212 /* syntax/typing.nit:1643 */
10213 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10214 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
10215 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
10216 if (UNTAG_Bool(REGB0)) {
10217 /* syntax/typing.nit:1644 */
10218 REGB0 = TAG_Int(3);
10219 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10220 if (!once_value_2) {
10221 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
10222 REGB0 = TAG_Int(41);
10223 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10224 once_value_2 = fra.me.REG[4];
10225 register_static_object(&once_value_2);
10226 } else fra.me.REG[4] = once_value_2;
10227 fra.me.REG[4] = fra.me.REG[4];
10228 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10229 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10230 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10231 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10232 if (!once_value_3) {
10233 fra.me.REG[4] = BOX_NativeString(".");
10234 REGB0 = TAG_Int(1);
10235 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10236 once_value_3 = fra.me.REG[4];
10237 register_static_object(&once_value_3);
10238 } else fra.me.REG[4] = once_value_3;
10239 fra.me.REG[4] = fra.me.REG[4];
10240 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10241 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10242 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10243 /* syntax/typing.nit:1645 */
10244 goto label1;
10245 }
10246 /* syntax/typing.nit:1648 */
10247 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10248 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10249 if (UNTAG_Bool(REGB0)) {
10250 } else {
10251 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10252 if (UNTAG_Bool(REGB1)) {
10253 REGB1 = TAG_Bool(false);
10254 REGB0 = REGB1;
10255 } else {
10256 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10257 REGB0 = REGB1;
10258 }
10259 }
10260 if (UNTAG_Bool(REGB0)) {
10261 /* syntax/typing.nit:1649 */
10262 if (!once_value_4) {
10263 if (!once_value_5) {
10264 fra.me.REG[3] = BOX_NativeString("init");
10265 REGB0 = TAG_Int(4);
10266 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10267 once_value_5 = fra.me.REG[3];
10268 register_static_object(&once_value_5);
10269 } else fra.me.REG[3] = once_value_5;
10270 fra.me.REG[3] = fra.me.REG[3];
10271 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10272 once_value_4 = fra.me.REG[3];
10273 register_static_object(&once_value_4);
10274 } else fra.me.REG[3] = once_value_4;
10275 fra.me.REG[3] = fra.me.REG[3];
10276 } else {
10277 /* syntax/typing.nit:1651 */
10278 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10279 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10280 if (UNTAG_Bool(REGB0)) {
10281 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1651);
10282 }
10283 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10284 fra.me.REG[3] = fra.me.REG[4];
10285 }
10286 /* syntax/typing.nit:1654 */
10287 REGB0 = TAG_Bool(false);
10288 REGB1 = TAG_Bool(false);
10289 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10290 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);
10291 /* syntax/typing.nit:1655 */
10292 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
10293 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10294 if (UNTAG_Bool(REGB1)) {
10295 } else {
10296 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10297 if (UNTAG_Bool(REGB0)) {
10298 REGB0 = TAG_Bool(false);
10299 REGB1 = REGB0;
10300 } else {
10301 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10302 REGB1 = REGB0;
10303 }
10304 }
10305 if (UNTAG_Bool(REGB1)) {
10306 goto label1;
10307 }
10308 /* syntax/typing.nit:1657 */
10309 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10310 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10311 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10312 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10313 if (UNTAG_Bool(REGB1)) {
10314 /* syntax/typing.nit:1658 */
10315 REGB1 = TAG_Int(3);
10316 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10317 if (!once_value_6) {
10318 fra.me.REG[3] = BOX_NativeString("Error: ");
10319 REGB1 = TAG_Int(7);
10320 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10321 once_value_6 = fra.me.REG[3];
10322 register_static_object(&once_value_6);
10323 } else fra.me.REG[3] = once_value_6;
10324 fra.me.REG[3] = fra.me.REG[3];
10325 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10326 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10327 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10329 if (!once_value_7) {
10330 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
10331 REGB1 = TAG_Int(22);
10332 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10333 once_value_7 = fra.me.REG[3];
10334 register_static_object(&once_value_7);
10335 } else fra.me.REG[3] = once_value_7;
10336 fra.me.REG[3] = fra.me.REG[3];
10337 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10338 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10339 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10340 /* syntax/typing.nit:1659 */
10341 goto label1;
10342 }
10343 /* syntax/typing.nit:1661 */
10344 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10345 /* syntax/typing.nit:1662 */
10346 REGB1 = TAG_Bool(true);
10347 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
10348 label1: while(0);
10349 stack_frame_head = fra.me.prev;
10350 return;
10351 }
10352 val_t syntax___typing___ASendExpr___name(val_t p0){
10353 struct {struct stack_frame_t me;} fra;
10354 val_t tmp;
10355 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10356 fra.me.file = LOCATE_syntax___typing;
10357 fra.me.line = 1668;
10358 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10359 fra.me.has_broke = 0;
10360 fra.me.REG_size = 0;
10361 fra.me.nitni_local_ref_head = NULL;
10362 /* syntax/typing.nit:1668 */
10363 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1668);
10364 stack_frame_head = fra.me.prev;
10365 return NIT_NULL;
10366 }
10367 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10368 struct {struct stack_frame_t me;} fra;
10369 val_t tmp;
10370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10371 fra.me.file = LOCATE_syntax___typing;
10372 fra.me.line = 1671;
10373 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10374 fra.me.has_broke = 0;
10375 fra.me.REG_size = 1;
10376 fra.me.nitni_local_ref_head = NULL;
10377 fra.me.REG[0] = NIT_NULL;
10378 fra.me.REG[0] = p0;
10379 /* syntax/typing.nit:1672 */
10380 fra.me.REG[0] = NIT_NULL;
10381 goto label1;
10382 label1: while(0);
10383 stack_frame_head = fra.me.prev;
10384 return fra.me.REG[0];
10385 }
10386 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10387 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10388 val_t tmp;
10389 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10390 fra.me.file = LOCATE_syntax___typing;
10391 fra.me.line = 1674;
10392 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10393 fra.me.has_broke = 0;
10394 fra.me.REG_size = 2;
10395 fra.me.nitni_local_ref_head = NULL;
10396 fra.me.REG[0] = NIT_NULL;
10397 fra.me.REG[1] = NIT_NULL;
10398 fra.me.REG[0] = p0;
10399 fra.me.REG[1] = p1;
10400 /* syntax/typing.nit:1676 */
10401 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10402 stack_frame_head = fra.me.prev;
10403 return;
10404 }
10405 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10406 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10407 val_t REGB0;
10408 val_t REGB1;
10409 val_t tmp;
10410 static val_t once_value_2; /* Once value */
10411 static val_t once_value_3; /* Once value */
10412 static val_t once_value_4; /* Once value */
10413 static val_t once_value_5; /* Once value */
10414 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10415 fra.me.file = LOCATE_syntax___typing;
10416 fra.me.line = 1679;
10417 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10418 fra.me.has_broke = 0;
10419 fra.me.REG_size = 7;
10420 fra.me.nitni_local_ref_head = NULL;
10421 fra.me.REG[0] = NIT_NULL;
10422 fra.me.REG[1] = NIT_NULL;
10423 fra.me.REG[2] = NIT_NULL;
10424 fra.me.REG[3] = NIT_NULL;
10425 fra.me.REG[4] = NIT_NULL;
10426 fra.me.REG[5] = NIT_NULL;
10427 fra.me.REG[6] = NIT_NULL;
10428 fra.me.REG[0] = p0;
10429 fra.me.REG[1] = p1;
10430 /* syntax/typing.nit:1679 */
10431 fra.me.REG[2] = fra.me.REG[0];
10432 /* syntax/typing.nit:1681 */
10433 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10434 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10435 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10436 if (UNTAG_Bool(REGB0)) {
10437 goto label1;
10438 }
10439 /* syntax/typing.nit:1682 */
10440 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10441 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10442 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10443 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10444 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10445 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10446 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10447 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10448 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10449 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]);
10450 /* syntax/typing.nit:1683 */
10451 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10452 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10453 if (UNTAG_Bool(REGB1)) {
10454 } else {
10455 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10456 if (UNTAG_Bool(REGB0)) {
10457 REGB0 = TAG_Bool(false);
10458 REGB1 = REGB0;
10459 } else {
10460 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10461 REGB1 = REGB0;
10462 }
10463 }
10464 if (UNTAG_Bool(REGB1)) {
10465 goto label1;
10466 }
10467 /* syntax/typing.nit:1684 */
10468 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10469 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10470 if (UNTAG_Bool(REGB1)) {
10471 } else {
10472 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1684);
10473 }
10474 /* syntax/typing.nit:1686 */
10475 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10476 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10477 if (UNTAG_Bool(REGB1)) {
10478 /* syntax/typing.nit:1687 */
10479 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10480 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10481 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10482 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10483 if (UNTAG_Bool(REGB1)) {
10484 /* syntax/typing.nit:1688 */
10485 REGB1 = TAG_Int(3);
10486 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10487 if (!once_value_2) {
10488 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10489 REGB1 = TAG_Int(33);
10490 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10491 once_value_2 = fra.me.REG[5];
10492 register_static_object(&once_value_2);
10493 } else fra.me.REG[5] = once_value_2;
10494 fra.me.REG[5] = fra.me.REG[5];
10495 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10496 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10497 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10498 if (!once_value_3) {
10499 fra.me.REG[5] = BOX_NativeString(" in a method.");
10500 REGB1 = TAG_Int(13);
10501 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10502 once_value_3 = fra.me.REG[5];
10503 register_static_object(&once_value_3);
10504 } else fra.me.REG[5] = once_value_3;
10505 fra.me.REG[5] = fra.me.REG[5];
10506 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10507 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10508 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10509 } else {
10510 /* syntax/typing.nit:1689 */
10511 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10512 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10513 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10514 if (UNTAG_Bool(REGB1)) {
10515 /* syntax/typing.nit:1690 */
10516 REGB1 = TAG_Int(3);
10517 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10518 if (!once_value_4) {
10519 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10520 REGB1 = TAG_Int(19);
10521 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10522 once_value_4 = fra.me.REG[5];
10523 register_static_object(&once_value_4);
10524 } else fra.me.REG[5] = once_value_4;
10525 fra.me.REG[5] = fra.me.REG[5];
10526 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10527 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10528 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10529 if (!once_value_5) {
10530 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10531 REGB1 = TAG_Int(26);
10532 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10533 once_value_5 = fra.me.REG[5];
10534 register_static_object(&once_value_5);
10535 } else fra.me.REG[5] = once_value_5;
10536 fra.me.REG[5] = fra.me.REG[5];
10537 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10538 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10539 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10540 } else {
10541 /* syntax/typing.nit:1692 */
10542 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10543 }
10544 }
10545 }
10546 /* syntax/typing.nit:1696 */
10547 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10548 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10549 /* syntax/typing.nit:1697 */
10550 REGB1 = TAG_Bool(true);
10551 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10552 label1: while(0);
10553 stack_frame_head = fra.me.prev;
10554 return;
10555 }
10556 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10557 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10558 val_t REGB0;
10559 val_t tmp;
10560 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10561 fra.me.file = LOCATE_syntax___typing;
10562 fra.me.line = 1702;
10563 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10564 fra.me.has_broke = 0;
10565 fra.me.REG_size = 2;
10566 fra.me.nitni_local_ref_head = NULL;
10567 fra.me.REG[0] = NIT_NULL;
10568 fra.me.REG[1] = NIT_NULL;
10569 fra.me.REG[0] = p0;
10570 /* syntax/typing.nit:1702 */
10571 fra.me.REG[1] = fra.me.REG[0];
10572 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10573 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10574 if (UNTAG_Bool(REGB0)) {
10575 } else {
10576 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1702);
10577 }
10578 goto label1;
10579 label1: while(0);
10580 stack_frame_head = fra.me.prev;
10581 return fra.me.REG[1];
10582 }
10583 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10584 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10585 val_t REGB0;
10586 val_t REGB1;
10587 val_t REGB2;
10588 val_t tmp;
10589 static val_t once_value_2; /* Once value */
10590 static val_t once_value_3; /* Once value */
10591 static val_t once_value_4; /* Once value */
10592 static val_t once_value_5; /* Once value */
10593 static val_t once_value_6; /* Once value */
10594 static val_t once_value_7; /* Once value */
10595 static val_t once_value_8; /* Once value */
10596 static val_t once_value_9; /* Once value */
10597 static val_t once_value_10; /* Once value */
10598 static val_t once_value_11; /* Once value */
10599 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10600 fra.me.file = LOCATE_syntax___typing;
10601 fra.me.line = 1704;
10602 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10603 fra.me.has_broke = 0;
10604 fra.me.REG_size = 7;
10605 fra.me.nitni_local_ref_head = NULL;
10606 fra.me.REG[0] = NIT_NULL;
10607 fra.me.REG[1] = NIT_NULL;
10608 fra.me.REG[2] = NIT_NULL;
10609 fra.me.REG[3] = NIT_NULL;
10610 fra.me.REG[4] = NIT_NULL;
10611 fra.me.REG[5] = NIT_NULL;
10612 fra.me.REG[6] = NIT_NULL;
10613 fra.me.REG[0] = p0;
10614 fra.me.REG[1] = p1;
10615 /* syntax/typing.nit:1704 */
10616 fra.me.REG[2] = fra.me.REG[0];
10617 /* syntax/typing.nit:1706 */
10618 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10619 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10620 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10621 if (UNTAG_Bool(REGB0)) {
10622 goto label1;
10623 }
10624 /* syntax/typing.nit:1707 */
10625 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10626 /* syntax/typing.nit:1708 */
10627 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10628 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10629 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10630 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10631 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10632 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10633 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10634 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);
10635 /* syntax/typing.nit:1709 */
10636 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10637 /* syntax/typing.nit:1710 */
10638 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10639 if (UNTAG_Bool(REGB1)) {
10640 } else {
10641 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10642 if (UNTAG_Bool(REGB0)) {
10643 REGB0 = TAG_Bool(false);
10644 REGB1 = REGB0;
10645 } else {
10646 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10647 REGB1 = REGB0;
10648 }
10649 }
10650 if (UNTAG_Bool(REGB1)) {
10651 goto label1;
10652 }
10653 /* syntax/typing.nit:1711 */
10654 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10655 if (UNTAG_Bool(REGB1)) {
10656 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1711);
10657 }
10658 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10659 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10660 if (UNTAG_Bool(REGB1)) {
10661 /* syntax/typing.nit:1712 */
10662 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10663 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10664 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10665 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10666 if (UNTAG_Bool(REGB1)) {
10667 /* syntax/typing.nit:1713 */
10668 REGB1 = TAG_Int(3);
10669 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10670 if (!once_value_2) {
10671 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10672 REGB1 = TAG_Int(33);
10673 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10674 once_value_2 = fra.me.REG[6];
10675 register_static_object(&once_value_2);
10676 } else fra.me.REG[6] = once_value_2;
10677 fra.me.REG[6] = fra.me.REG[6];
10678 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10679 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10680 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10681 if (!once_value_3) {
10682 fra.me.REG[6] = BOX_NativeString(" in a method.");
10683 REGB1 = TAG_Int(13);
10684 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10685 once_value_3 = fra.me.REG[6];
10686 register_static_object(&once_value_3);
10687 } else fra.me.REG[6] = once_value_3;
10688 fra.me.REG[6] = fra.me.REG[6];
10689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10690 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10691 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10692 } else {
10693 /* syntax/typing.nit:1714 */
10694 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10695 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10696 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10697 if (UNTAG_Bool(REGB1)) {
10698 /* syntax/typing.nit:1715 */
10699 REGB1 = TAG_Int(3);
10700 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10701 if (!once_value_4) {
10702 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10703 REGB1 = TAG_Int(19);
10704 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10705 once_value_4 = fra.me.REG[6];
10706 register_static_object(&once_value_4);
10707 } else fra.me.REG[6] = once_value_4;
10708 fra.me.REG[6] = fra.me.REG[6];
10709 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10710 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10711 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10712 if (!once_value_5) {
10713 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10714 REGB1 = TAG_Int(26);
10715 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10716 once_value_5 = fra.me.REG[6];
10717 register_static_object(&once_value_5);
10718 } else fra.me.REG[6] = once_value_5;
10719 fra.me.REG[6] = fra.me.REG[6];
10720 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10721 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10722 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10723 }
10724 }
10725 }
10726 /* syntax/typing.nit:1718 */
10727 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10728 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10729 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10730 if (UNTAG_Bool(REGB1)) {
10731 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1718);
10732 }
10733 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10734 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10735 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*/;
10736 if (UNTAG_Bool(REGB1)) {
10737 } else {
10738 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1718);
10739 }
10740 /* syntax/typing.nit:1719 */
10741 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10742 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10743 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10744 if (UNTAG_Bool(REGB1)) {
10745 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10746 fra.me.REG[4] = fra.me.REG[0];
10747 }
10748 /* syntax/typing.nit:1721 */
10749 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]);
10750 /* syntax/typing.nit:1722 */
10751 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10752 if (UNTAG_Bool(REGB1)) {
10753 } else {
10754 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10755 if (UNTAG_Bool(REGB0)) {
10756 REGB0 = TAG_Bool(false);
10757 REGB1 = REGB0;
10758 } else {
10759 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10760 REGB1 = REGB0;
10761 }
10762 }
10763 if (UNTAG_Bool(REGB1)) {
10764 goto label1;
10765 }
10766 /* syntax/typing.nit:1723 */
10767 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10768 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10769 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]);
10770 /* syntax/typing.nit:1725 */
10771 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10772 /* syntax/typing.nit:1726 */
10773 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10774 fra.me.REG[3] = fra.me.REG[0];
10775 /* syntax/typing.nit:1727 */
10776 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10777 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10778 /* syntax/typing.nit:1729 */
10779 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10780 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10781 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10782 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10783 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10784 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10785 REGB2 = TAG_Int(3);
10786 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10787 if (!once_value_6) {
10788 fra.me.REG[6] = BOX_NativeString("");
10789 REGB2 = TAG_Int(0);
10790 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10791 once_value_6 = fra.me.REG[6];
10792 register_static_object(&once_value_6);
10793 } else fra.me.REG[6] = once_value_6;
10794 fra.me.REG[6] = fra.me.REG[6];
10795 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10796 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10797 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10798 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10799 if (!once_value_7) {
10800 fra.me.REG[6] = BOX_NativeString("=");
10801 REGB2 = TAG_Int(1);
10802 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10803 once_value_7 = fra.me.REG[6];
10804 register_static_object(&once_value_7);
10805 } else fra.me.REG[6] = once_value_7;
10806 fra.me.REG[6] = fra.me.REG[6];
10807 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10808 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10809 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10810 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);
10811 /* syntax/typing.nit:1730 */
10812 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10813 if (UNTAG_Bool(REGB0)) {
10814 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1730);
10815 }
10816 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10817 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10818 if (UNTAG_Bool(REGB0)) {
10819 /* syntax/typing.nit:1731 */
10820 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10821 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10822 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10823 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10824 if (UNTAG_Bool(REGB0)) {
10825 /* syntax/typing.nit:1732 */
10826 REGB0 = TAG_Int(3);
10827 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10828 if (!once_value_8) {
10829 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
10830 REGB0 = TAG_Int(33);
10831 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10832 once_value_8 = fra.me.REG[4];
10833 register_static_object(&once_value_8);
10834 } else fra.me.REG[4] = once_value_8;
10835 fra.me.REG[4] = fra.me.REG[4];
10836 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10837 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10839 if (!once_value_9) {
10840 fra.me.REG[4] = BOX_NativeString(" in a method.");
10841 REGB0 = TAG_Int(13);
10842 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10843 once_value_9 = fra.me.REG[4];
10844 register_static_object(&once_value_9);
10845 } else fra.me.REG[4] = once_value_9;
10846 fra.me.REG[4] = fra.me.REG[4];
10847 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10848 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10849 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10850 } else {
10851 /* syntax/typing.nit:1733 */
10852 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10853 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10854 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10855 if (UNTAG_Bool(REGB0)) {
10856 /* syntax/typing.nit:1734 */
10857 REGB0 = TAG_Int(3);
10858 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10859 if (!once_value_10) {
10860 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
10861 REGB0 = TAG_Int(19);
10862 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10863 once_value_10 = fra.me.REG[4];
10864 register_static_object(&once_value_10);
10865 } else fra.me.REG[4] = once_value_10;
10866 fra.me.REG[4] = fra.me.REG[4];
10867 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10868 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10869 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10870 if (!once_value_11) {
10871 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10872 REGB0 = TAG_Int(26);
10873 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
10874 once_value_11 = fra.me.REG[5];
10875 register_static_object(&once_value_11);
10876 } else fra.me.REG[5] = once_value_11;
10877 fra.me.REG[5] = fra.me.REG[5];
10878 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10879 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10880 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10881 }
10882 }
10883 }
10884 /* syntax/typing.nit:1738 */
10885 REGB0 = TAG_Bool(true);
10886 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
10887 label1: while(0);
10888 stack_frame_head = fra.me.prev;
10889 return;
10890 }
10891 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
10892 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10893 val_t REGB0;
10894 val_t tmp;
10895 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10896 fra.me.file = LOCATE_syntax___typing;
10897 fra.me.line = 1743;
10898 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
10899 fra.me.has_broke = 0;
10900 fra.me.REG_size = 2;
10901 fra.me.nitni_local_ref_head = NULL;
10902 fra.me.REG[0] = NIT_NULL;
10903 fra.me.REG[1] = NIT_NULL;
10904 fra.me.REG[0] = p0;
10905 /* syntax/typing.nit:1743 */
10906 REGB0 = TAG_Int(1);
10907 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10908 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
10909 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10910 goto label1;
10911 label1: while(0);
10912 stack_frame_head = fra.me.prev;
10913 return fra.me.REG[1];
10914 }
10915 val_t syntax___typing___AEqExpr___name(val_t p0){
10916 struct {struct stack_frame_t me;} fra;
10917 val_t REGB0;
10918 val_t tmp;
10919 static val_t once_value_1; /* Once value */
10920 static val_t once_value_2; /* Once value */
10921 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10922 fra.me.file = LOCATE_syntax___typing;
10923 fra.me.line = 1746;
10924 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
10925 fra.me.has_broke = 0;
10926 fra.me.REG_size = 1;
10927 fra.me.nitni_local_ref_head = NULL;
10928 fra.me.REG[0] = NIT_NULL;
10929 fra.me.REG[0] = p0;
10930 /* syntax/typing.nit:1746 */
10931 if (!once_value_1) {
10932 if (!once_value_2) {
10933 fra.me.REG[0] = BOX_NativeString("==");
10934 REGB0 = TAG_Int(2);
10935 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10936 once_value_2 = fra.me.REG[0];
10937 register_static_object(&once_value_2);
10938 } else fra.me.REG[0] = once_value_2;
10939 fra.me.REG[0] = fra.me.REG[0];
10940 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10941 once_value_1 = fra.me.REG[0];
10942 register_static_object(&once_value_1);
10943 } else fra.me.REG[0] = once_value_1;
10944 fra.me.REG[0] = fra.me.REG[0];
10945 goto label3;
10946 label3: while(0);
10947 stack_frame_head = fra.me.prev;
10948 return fra.me.REG[0];
10949 }
10950 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
10951 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10952 val_t REGB0;
10953 val_t REGB1;
10954 val_t tmp;
10955 static val_t once_value_2; /* Once value */
10956 static val_t once_value_3; /* Once value */
10957 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10958 fra.me.file = LOCATE_syntax___typing;
10959 fra.me.line = 1747;
10960 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
10961 fra.me.has_broke = 0;
10962 fra.me.REG_size = 4;
10963 fra.me.nitni_local_ref_head = NULL;
10964 fra.me.REG[0] = NIT_NULL;
10965 fra.me.REG[1] = NIT_NULL;
10966 fra.me.REG[2] = NIT_NULL;
10967 fra.me.REG[3] = NIT_NULL;
10968 fra.me.REG[0] = p0;
10969 fra.me.REG[1] = p1;
10970 /* syntax/typing.nit:1747 */
10971 fra.me.REG[2] = fra.me.REG[0];
10972 fra.me.REG[3] = fra.me.REG[1];
10973 /* syntax/typing.nit:1749 */
10974 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10975 /* syntax/typing.nit:1750 */
10976 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10977 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10978 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10979 if (UNTAG_Bool(REGB0)) {
10980 REGB0 = TAG_Bool(true);
10981 } else {
10982 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10983 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10984 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10985 REGB0 = REGB1;
10986 }
10987 if (UNTAG_Bool(REGB0)) {
10988 goto label1;
10989 }
10990 /* syntax/typing.nit:1751 */
10991 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10992 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10993 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10994 if (UNTAG_Bool(REGB0)) {
10995 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10996 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10997 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10998 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10999 } else {
11000 REGB1 = TAG_Bool(false);
11001 REGB0 = REGB1;
11002 }
11003 if (UNTAG_Bool(REGB0)) {
11004 REGB0 = TAG_Bool(true);
11005 } else {
11006 /* syntax/typing.nit:1752 */
11007 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11008 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11009 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11010 /* syntax/typing.nit:1751 */
11011 REGB0 = REGB1;
11012 }
11013 if (UNTAG_Bool(REGB0)) {
11014 /* syntax/typing.nit:1752 */
11015 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11016 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11017 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11018 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11019 } else {
11020 /* syntax/typing.nit:1751 */
11021 REGB1 = TAG_Bool(false);
11022 REGB0 = REGB1;
11023 }
11024 if (UNTAG_Bool(REGB0)) {
11025 /* syntax/typing.nit:1753 */
11026 if (!once_value_2) {
11027 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11028 REGB0 = TAG_Int(59);
11029 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11030 once_value_2 = fra.me.REG[1];
11031 register_static_object(&once_value_2);
11032 } else fra.me.REG[1] = once_value_2;
11033 fra.me.REG[1] = fra.me.REG[1];
11034 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11035 }
11036 /* syntax/typing.nit:1756 */
11037 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11038 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11039 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11040 if (UNTAG_Bool(REGB0)) {
11041 /* syntax/typing.nit:1757 */
11042 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11043 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11044 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11045 if (UNTAG_Bool(REGB0)) {
11046 /* syntax/typing.nit:1758 */
11047 if (!once_value_3) {
11048 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11049 REGB0 = TAG_Int(45);
11050 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11051 once_value_3 = fra.me.REG[1];
11052 register_static_object(&once_value_3);
11053 } else fra.me.REG[1] = once_value_3;
11054 fra.me.REG[1] = fra.me.REG[1];
11055 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11056 } else {
11057 /* syntax/typing.nit:1760 */
11058 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11059 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11060 }
11061 } else {
11062 /* syntax/typing.nit:1762 */
11063 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11064 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11065 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11066 if (UNTAG_Bool(REGB0)) {
11067 /* syntax/typing.nit:1763 */
11068 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11069 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11070 }
11071 }
11072 label1: while(0);
11073 stack_frame_head = fra.me.prev;
11074 return;
11075 }
11076 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11077 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11078 val_t REGB0;
11079 val_t REGB1;
11080 val_t tmp;
11081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11082 fra.me.file = LOCATE_syntax___typing;
11083 fra.me.line = 1767;
11084 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
11085 fra.me.has_broke = 0;
11086 fra.me.REG_size = 5;
11087 fra.me.nitni_local_ref_head = NULL;
11088 fra.me.REG[0] = NIT_NULL;
11089 fra.me.REG[1] = NIT_NULL;
11090 fra.me.REG[2] = NIT_NULL;
11091 fra.me.REG[3] = NIT_NULL;
11092 fra.me.REG[4] = NIT_NULL;
11093 fra.me.REG[0] = p0;
11094 fra.me.REG[1] = p1;
11095 fra.me.REG[2] = p2;
11096 /* syntax/typing.nit:1769 */
11097 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11098 /* syntax/typing.nit:1770 */
11099 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11100 if (UNTAG_Bool(REGB0)) {
11101 } else {
11102 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11103 if (UNTAG_Bool(REGB1)) {
11104 REGB1 = TAG_Bool(false);
11105 REGB0 = REGB1;
11106 } else {
11107 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11108 REGB0 = REGB1;
11109 }
11110 }
11111 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11112 if (UNTAG_Bool(REGB0)) {
11113 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11114 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11115 } else {
11116 REGB1 = TAG_Bool(false);
11117 REGB0 = REGB1;
11118 }
11119 if (UNTAG_Bool(REGB0)) {
11120 /* syntax/typing.nit:1771 */
11121 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11122 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11123 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11124 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]);
11125 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11126 /* syntax/typing.nit:1772 */
11127 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11128 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11129 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]);
11130 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11131 }
11132 stack_frame_head = fra.me.prev;
11133 return;
11134 }
11135 val_t syntax___typing___ANeExpr___name(val_t p0){
11136 struct {struct stack_frame_t me;} fra;
11137 val_t REGB0;
11138 val_t tmp;
11139 static val_t once_value_1; /* Once value */
11140 static val_t once_value_2; /* Once value */
11141 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11142 fra.me.file = LOCATE_syntax___typing;
11143 fra.me.line = 1777;
11144 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
11145 fra.me.has_broke = 0;
11146 fra.me.REG_size = 1;
11147 fra.me.nitni_local_ref_head = NULL;
11148 fra.me.REG[0] = NIT_NULL;
11149 fra.me.REG[0] = p0;
11150 /* syntax/typing.nit:1777 */
11151 if (!once_value_1) {
11152 if (!once_value_2) {
11153 fra.me.REG[0] = BOX_NativeString("!=");
11154 REGB0 = TAG_Int(2);
11155 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11156 once_value_2 = fra.me.REG[0];
11157 register_static_object(&once_value_2);
11158 } else fra.me.REG[0] = once_value_2;
11159 fra.me.REG[0] = fra.me.REG[0];
11160 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11161 once_value_1 = fra.me.REG[0];
11162 register_static_object(&once_value_1);
11163 } else fra.me.REG[0] = once_value_1;
11164 fra.me.REG[0] = fra.me.REG[0];
11165 goto label3;
11166 label3: while(0);
11167 stack_frame_head = fra.me.prev;
11168 return fra.me.REG[0];
11169 }
11170 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
11171 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11172 val_t REGB0;
11173 val_t REGB1;
11174 val_t tmp;
11175 static val_t once_value_2; /* Once value */
11176 static val_t once_value_3; /* Once value */
11177 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11178 fra.me.file = LOCATE_syntax___typing;
11179 fra.me.line = 1778;
11180 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
11181 fra.me.has_broke = 0;
11182 fra.me.REG_size = 4;
11183 fra.me.nitni_local_ref_head = NULL;
11184 fra.me.REG[0] = NIT_NULL;
11185 fra.me.REG[1] = NIT_NULL;
11186 fra.me.REG[2] = NIT_NULL;
11187 fra.me.REG[3] = NIT_NULL;
11188 fra.me.REG[0] = p0;
11189 fra.me.REG[1] = p1;
11190 /* syntax/typing.nit:1778 */
11191 fra.me.REG[2] = fra.me.REG[0];
11192 fra.me.REG[3] = fra.me.REG[1];
11193 /* syntax/typing.nit:1780 */
11194 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11195 /* syntax/typing.nit:1781 */
11196 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11197 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11198 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11199 if (UNTAG_Bool(REGB0)) {
11200 REGB0 = TAG_Bool(true);
11201 } else {
11202 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11203 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11204 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11205 REGB0 = REGB1;
11206 }
11207 if (UNTAG_Bool(REGB0)) {
11208 goto label1;
11209 }
11210 /* syntax/typing.nit:1782 */
11211 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11212 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11213 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11214 if (UNTAG_Bool(REGB0)) {
11215 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11216 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11217 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11218 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11219 } else {
11220 REGB1 = TAG_Bool(false);
11221 REGB0 = REGB1;
11222 }
11223 if (UNTAG_Bool(REGB0)) {
11224 REGB0 = TAG_Bool(true);
11225 } else {
11226 /* syntax/typing.nit:1783 */
11227 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11228 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11229 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11230 /* syntax/typing.nit:1782 */
11231 REGB0 = REGB1;
11232 }
11233 if (UNTAG_Bool(REGB0)) {
11234 /* syntax/typing.nit:1783 */
11235 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11236 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11237 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11238 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11239 } else {
11240 /* syntax/typing.nit:1782 */
11241 REGB1 = TAG_Bool(false);
11242 REGB0 = REGB1;
11243 }
11244 if (UNTAG_Bool(REGB0)) {
11245 /* syntax/typing.nit:1784 */
11246 if (!once_value_2) {
11247 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11248 REGB0 = TAG_Int(59);
11249 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11250 once_value_2 = fra.me.REG[1];
11251 register_static_object(&once_value_2);
11252 } else fra.me.REG[1] = once_value_2;
11253 fra.me.REG[1] = fra.me.REG[1];
11254 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11255 }
11256 /* syntax/typing.nit:1787 */
11257 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11258 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11259 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11260 if (UNTAG_Bool(REGB0)) {
11261 /* syntax/typing.nit:1788 */
11262 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11263 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11264 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11265 if (UNTAG_Bool(REGB0)) {
11266 /* syntax/typing.nit:1789 */
11267 if (!once_value_3) {
11268 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11269 REGB0 = TAG_Int(45);
11270 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11271 once_value_3 = fra.me.REG[1];
11272 register_static_object(&once_value_3);
11273 } else fra.me.REG[1] = once_value_3;
11274 fra.me.REG[1] = fra.me.REG[1];
11275 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11276 } else {
11277 /* syntax/typing.nit:1791 */
11278 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11279 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11280 }
11281 } else {
11282 /* syntax/typing.nit:1793 */
11283 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11284 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11285 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11286 if (UNTAG_Bool(REGB0)) {
11287 /* syntax/typing.nit:1794 */
11288 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11289 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11290 }
11291 }
11292 label1: while(0);
11293 stack_frame_head = fra.me.prev;
11294 return;
11295 }
11296 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11297 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11298 val_t REGB0;
11299 val_t REGB1;
11300 val_t tmp;
11301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11302 fra.me.file = LOCATE_syntax___typing;
11303 fra.me.line = 1798;
11304 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
11305 fra.me.has_broke = 0;
11306 fra.me.REG_size = 5;
11307 fra.me.nitni_local_ref_head = NULL;
11308 fra.me.REG[0] = NIT_NULL;
11309 fra.me.REG[1] = NIT_NULL;
11310 fra.me.REG[2] = NIT_NULL;
11311 fra.me.REG[3] = NIT_NULL;
11312 fra.me.REG[4] = NIT_NULL;
11313 fra.me.REG[0] = p0;
11314 fra.me.REG[1] = p1;
11315 fra.me.REG[2] = p2;
11316 /* syntax/typing.nit:1800 */
11317 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11318 /* syntax/typing.nit:1801 */
11319 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11320 if (UNTAG_Bool(REGB0)) {
11321 } else {
11322 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11323 if (UNTAG_Bool(REGB1)) {
11324 REGB1 = TAG_Bool(false);
11325 REGB0 = REGB1;
11326 } else {
11327 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11328 REGB0 = REGB1;
11329 }
11330 }
11331 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11332 if (UNTAG_Bool(REGB0)) {
11333 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11334 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11335 } else {
11336 REGB1 = TAG_Bool(false);
11337 REGB0 = REGB1;
11338 }
11339 if (UNTAG_Bool(REGB0)) {
11340 /* syntax/typing.nit:1802 */
11341 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11342 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11343 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11344 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]);
11345 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11346 /* syntax/typing.nit:1803 */
11347 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11348 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11349 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]);
11350 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11351 }
11352 stack_frame_head = fra.me.prev;
11353 return;
11354 }
11355 val_t syntax___typing___ALtExpr___name(val_t p0){
11356 struct {struct stack_frame_t me;} fra;
11357 val_t REGB0;
11358 val_t tmp;
11359 static val_t once_value_1; /* Once value */
11360 static val_t once_value_2; /* Once value */
11361 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11362 fra.me.file = LOCATE_syntax___typing;
11363 fra.me.line = 1808;
11364 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11365 fra.me.has_broke = 0;
11366 fra.me.REG_size = 1;
11367 fra.me.nitni_local_ref_head = NULL;
11368 fra.me.REG[0] = NIT_NULL;
11369 fra.me.REG[0] = p0;
11370 /* syntax/typing.nit:1808 */
11371 if (!once_value_1) {
11372 if (!once_value_2) {
11373 fra.me.REG[0] = BOX_NativeString("<");
11374 REGB0 = TAG_Int(1);
11375 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11376 once_value_2 = fra.me.REG[0];
11377 register_static_object(&once_value_2);
11378 } else fra.me.REG[0] = once_value_2;
11379 fra.me.REG[0] = fra.me.REG[0];
11380 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11381 once_value_1 = fra.me.REG[0];
11382 register_static_object(&once_value_1);
11383 } else fra.me.REG[0] = once_value_1;
11384 fra.me.REG[0] = fra.me.REG[0];
11385 goto label3;
11386 label3: while(0);
11387 stack_frame_head = fra.me.prev;
11388 return fra.me.REG[0];
11389 }
11390 val_t syntax___typing___ALeExpr___name(val_t p0){
11391 struct {struct stack_frame_t me;} fra;
11392 val_t REGB0;
11393 val_t tmp;
11394 static val_t once_value_1; /* Once value */
11395 static val_t once_value_2; /* Once value */
11396 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11397 fra.me.file = LOCATE_syntax___typing;
11398 fra.me.line = 1811;
11399 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11400 fra.me.has_broke = 0;
11401 fra.me.REG_size = 1;
11402 fra.me.nitni_local_ref_head = NULL;
11403 fra.me.REG[0] = NIT_NULL;
11404 fra.me.REG[0] = p0;
11405 /* syntax/typing.nit:1811 */
11406 if (!once_value_1) {
11407 if (!once_value_2) {
11408 fra.me.REG[0] = BOX_NativeString("<=");
11409 REGB0 = TAG_Int(2);
11410 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11411 once_value_2 = fra.me.REG[0];
11412 register_static_object(&once_value_2);
11413 } else fra.me.REG[0] = once_value_2;
11414 fra.me.REG[0] = fra.me.REG[0];
11415 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11416 once_value_1 = fra.me.REG[0];
11417 register_static_object(&once_value_1);
11418 } else fra.me.REG[0] = once_value_1;
11419 fra.me.REG[0] = fra.me.REG[0];
11420 goto label3;
11421 label3: while(0);
11422 stack_frame_head = fra.me.prev;
11423 return fra.me.REG[0];
11424 }
11425 val_t syntax___typing___ALlExpr___name(val_t p0){
11426 struct {struct stack_frame_t me;} fra;
11427 val_t REGB0;
11428 val_t tmp;
11429 static val_t once_value_1; /* Once value */
11430 static val_t once_value_2; /* Once value */
11431 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11432 fra.me.file = LOCATE_syntax___typing;
11433 fra.me.line = 1814;
11434 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11435 fra.me.has_broke = 0;
11436 fra.me.REG_size = 1;
11437 fra.me.nitni_local_ref_head = NULL;
11438 fra.me.REG[0] = NIT_NULL;
11439 fra.me.REG[0] = p0;
11440 /* syntax/typing.nit:1814 */
11441 if (!once_value_1) {
11442 if (!once_value_2) {
11443 fra.me.REG[0] = BOX_NativeString("<<");
11444 REGB0 = TAG_Int(2);
11445 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11446 once_value_2 = fra.me.REG[0];
11447 register_static_object(&once_value_2);
11448 } else fra.me.REG[0] = once_value_2;
11449 fra.me.REG[0] = fra.me.REG[0];
11450 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11451 once_value_1 = fra.me.REG[0];
11452 register_static_object(&once_value_1);
11453 } else fra.me.REG[0] = once_value_1;
11454 fra.me.REG[0] = fra.me.REG[0];
11455 goto label3;
11456 label3: while(0);
11457 stack_frame_head = fra.me.prev;
11458 return fra.me.REG[0];
11459 }
11460 val_t syntax___typing___AGtExpr___name(val_t p0){
11461 struct {struct stack_frame_t me;} fra;
11462 val_t REGB0;
11463 val_t tmp;
11464 static val_t once_value_1; /* Once value */
11465 static val_t once_value_2; /* Once value */
11466 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11467 fra.me.file = LOCATE_syntax___typing;
11468 fra.me.line = 1817;
11469 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11470 fra.me.has_broke = 0;
11471 fra.me.REG_size = 1;
11472 fra.me.nitni_local_ref_head = NULL;
11473 fra.me.REG[0] = NIT_NULL;
11474 fra.me.REG[0] = p0;
11475 /* syntax/typing.nit:1817 */
11476 if (!once_value_1) {
11477 if (!once_value_2) {
11478 fra.me.REG[0] = BOX_NativeString(">");
11479 REGB0 = TAG_Int(1);
11480 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11481 once_value_2 = fra.me.REG[0];
11482 register_static_object(&once_value_2);
11483 } else fra.me.REG[0] = once_value_2;
11484 fra.me.REG[0] = fra.me.REG[0];
11485 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11486 once_value_1 = fra.me.REG[0];
11487 register_static_object(&once_value_1);
11488 } else fra.me.REG[0] = once_value_1;
11489 fra.me.REG[0] = fra.me.REG[0];
11490 goto label3;
11491 label3: while(0);
11492 stack_frame_head = fra.me.prev;
11493 return fra.me.REG[0];
11494 }
11495 val_t syntax___typing___AGeExpr___name(val_t p0){
11496 struct {struct stack_frame_t me;} fra;
11497 val_t REGB0;
11498 val_t tmp;
11499 static val_t once_value_1; /* Once value */
11500 static val_t once_value_2; /* Once value */
11501 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11502 fra.me.file = LOCATE_syntax___typing;
11503 fra.me.line = 1820;
11504 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11505 fra.me.has_broke = 0;
11506 fra.me.REG_size = 1;
11507 fra.me.nitni_local_ref_head = NULL;
11508 fra.me.REG[0] = NIT_NULL;
11509 fra.me.REG[0] = p0;
11510 /* syntax/typing.nit:1820 */
11511 if (!once_value_1) {
11512 if (!once_value_2) {
11513 fra.me.REG[0] = BOX_NativeString(">=");
11514 REGB0 = TAG_Int(2);
11515 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11516 once_value_2 = fra.me.REG[0];
11517 register_static_object(&once_value_2);
11518 } else fra.me.REG[0] = once_value_2;
11519 fra.me.REG[0] = fra.me.REG[0];
11520 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11521 once_value_1 = fra.me.REG[0];
11522 register_static_object(&once_value_1);
11523 } else fra.me.REG[0] = once_value_1;
11524 fra.me.REG[0] = fra.me.REG[0];
11525 goto label3;
11526 label3: while(0);
11527 stack_frame_head = fra.me.prev;
11528 return fra.me.REG[0];
11529 }
11530 val_t syntax___typing___AGgExpr___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 = 1823;
11539 fra.me.meth = LOCATE_syntax___typing___AGgExpr___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:1823 */
11546 if (!once_value_1) {
11547 if (!once_value_2) {
11548 fra.me.REG[0] = BOX_NativeString(">>");
11549 REGB0 = TAG_Int(2);
11550 fra.me.REG[0] = NEW_String_standard___string___String___with_native(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_standard___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 val_t syntax___typing___APlusExpr___name(val_t p0){
11566 struct {struct stack_frame_t me;} fra;
11567 val_t REGB0;
11568 val_t tmp;
11569 static val_t once_value_1; /* Once value */
11570 static val_t once_value_2; /* Once value */
11571 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11572 fra.me.file = LOCATE_syntax___typing;
11573 fra.me.line = 1826;
11574 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11575 fra.me.has_broke = 0;
11576 fra.me.REG_size = 1;
11577 fra.me.nitni_local_ref_head = NULL;
11578 fra.me.REG[0] = NIT_NULL;
11579 fra.me.REG[0] = p0;
11580 /* syntax/typing.nit:1826 */
11581 if (!once_value_1) {
11582 if (!once_value_2) {
11583 fra.me.REG[0] = BOX_NativeString("+");
11584 REGB0 = TAG_Int(1);
11585 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11586 once_value_2 = fra.me.REG[0];
11587 register_static_object(&once_value_2);
11588 } else fra.me.REG[0] = once_value_2;
11589 fra.me.REG[0] = fra.me.REG[0];
11590 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11591 once_value_1 = fra.me.REG[0];
11592 register_static_object(&once_value_1);
11593 } else fra.me.REG[0] = once_value_1;
11594 fra.me.REG[0] = fra.me.REG[0];
11595 goto label3;
11596 label3: while(0);
11597 stack_frame_head = fra.me.prev;
11598 return fra.me.REG[0];
11599 }
11600 val_t syntax___typing___AMinusExpr___name(val_t p0){
11601 struct {struct stack_frame_t me;} fra;
11602 val_t REGB0;
11603 val_t tmp;
11604 static val_t once_value_1; /* Once value */
11605 static val_t once_value_2; /* Once value */
11606 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11607 fra.me.file = LOCATE_syntax___typing;
11608 fra.me.line = 1829;
11609 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11610 fra.me.has_broke = 0;
11611 fra.me.REG_size = 1;
11612 fra.me.nitni_local_ref_head = NULL;
11613 fra.me.REG[0] = NIT_NULL;
11614 fra.me.REG[0] = p0;
11615 /* syntax/typing.nit:1829 */
11616 if (!once_value_1) {
11617 if (!once_value_2) {
11618 fra.me.REG[0] = BOX_NativeString("-");
11619 REGB0 = TAG_Int(1);
11620 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11621 once_value_2 = fra.me.REG[0];
11622 register_static_object(&once_value_2);
11623 } else fra.me.REG[0] = once_value_2;
11624 fra.me.REG[0] = fra.me.REG[0];
11625 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11626 once_value_1 = fra.me.REG[0];
11627 register_static_object(&once_value_1);
11628 } else fra.me.REG[0] = once_value_1;
11629 fra.me.REG[0] = fra.me.REG[0];
11630 goto label3;
11631 label3: while(0);
11632 stack_frame_head = fra.me.prev;
11633 return fra.me.REG[0];
11634 }
11635 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11636 struct {struct stack_frame_t me;} fra;
11637 val_t REGB0;
11638 val_t tmp;
11639 static val_t once_value_1; /* Once value */
11640 static val_t once_value_2; /* Once value */
11641 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11642 fra.me.file = LOCATE_syntax___typing;
11643 fra.me.line = 1832;
11644 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11645 fra.me.has_broke = 0;
11646 fra.me.REG_size = 1;
11647 fra.me.nitni_local_ref_head = NULL;
11648 fra.me.REG[0] = NIT_NULL;
11649 fra.me.REG[0] = p0;
11650 /* syntax/typing.nit:1832 */
11651 if (!once_value_1) {
11652 if (!once_value_2) {
11653 fra.me.REG[0] = BOX_NativeString("<=>");
11654 REGB0 = TAG_Int(3);
11655 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11656 once_value_2 = fra.me.REG[0];
11657 register_static_object(&once_value_2);
11658 } else fra.me.REG[0] = once_value_2;
11659 fra.me.REG[0] = fra.me.REG[0];
11660 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11661 once_value_1 = fra.me.REG[0];
11662 register_static_object(&once_value_1);
11663 } else fra.me.REG[0] = once_value_1;
11664 fra.me.REG[0] = fra.me.REG[0];
11665 goto label3;
11666 label3: while(0);
11667 stack_frame_head = fra.me.prev;
11668 return fra.me.REG[0];
11669 }
11670 val_t syntax___typing___AStarExpr___name(val_t p0){
11671 struct {struct stack_frame_t me;} fra;
11672 val_t REGB0;
11673 val_t tmp;
11674 static val_t once_value_1; /* Once value */
11675 static val_t once_value_2; /* Once value */
11676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11677 fra.me.file = LOCATE_syntax___typing;
11678 fra.me.line = 1835;
11679 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11680 fra.me.has_broke = 0;
11681 fra.me.REG_size = 1;
11682 fra.me.nitni_local_ref_head = NULL;
11683 fra.me.REG[0] = NIT_NULL;
11684 fra.me.REG[0] = p0;
11685 /* syntax/typing.nit:1835 */
11686 if (!once_value_1) {
11687 if (!once_value_2) {
11688 fra.me.REG[0] = BOX_NativeString("*");
11689 REGB0 = TAG_Int(1);
11690 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11691 once_value_2 = fra.me.REG[0];
11692 register_static_object(&once_value_2);
11693 } else fra.me.REG[0] = once_value_2;
11694 fra.me.REG[0] = fra.me.REG[0];
11695 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11696 once_value_1 = fra.me.REG[0];
11697 register_static_object(&once_value_1);
11698 } else fra.me.REG[0] = once_value_1;
11699 fra.me.REG[0] = fra.me.REG[0];
11700 goto label3;
11701 label3: while(0);
11702 stack_frame_head = fra.me.prev;
11703 return fra.me.REG[0];
11704 }
11705 val_t syntax___typing___ASlashExpr___name(val_t p0){
11706 struct {struct stack_frame_t me;} fra;
11707 val_t REGB0;
11708 val_t tmp;
11709 static val_t once_value_1; /* Once value */
11710 static val_t once_value_2; /* Once value */
11711 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11712 fra.me.file = LOCATE_syntax___typing;
11713 fra.me.line = 1838;
11714 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11715 fra.me.has_broke = 0;
11716 fra.me.REG_size = 1;
11717 fra.me.nitni_local_ref_head = NULL;
11718 fra.me.REG[0] = NIT_NULL;
11719 fra.me.REG[0] = p0;
11720 /* syntax/typing.nit:1838 */
11721 if (!once_value_1) {
11722 if (!once_value_2) {
11723 fra.me.REG[0] = BOX_NativeString("/");
11724 REGB0 = TAG_Int(1);
11725 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11726 once_value_2 = fra.me.REG[0];
11727 register_static_object(&once_value_2);
11728 } else fra.me.REG[0] = once_value_2;
11729 fra.me.REG[0] = fra.me.REG[0];
11730 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11731 once_value_1 = fra.me.REG[0];
11732 register_static_object(&once_value_1);
11733 } else fra.me.REG[0] = once_value_1;
11734 fra.me.REG[0] = fra.me.REG[0];
11735 goto label3;
11736 label3: while(0);
11737 stack_frame_head = fra.me.prev;
11738 return fra.me.REG[0];
11739 }
11740 val_t syntax___typing___APercentExpr___name(val_t p0){
11741 struct {struct stack_frame_t me;} fra;
11742 val_t REGB0;
11743 val_t tmp;
11744 static val_t once_value_1; /* Once value */
11745 static val_t once_value_2; /* Once value */
11746 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11747 fra.me.file = LOCATE_syntax___typing;
11748 fra.me.line = 1841;
11749 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11750 fra.me.has_broke = 0;
11751 fra.me.REG_size = 1;
11752 fra.me.nitni_local_ref_head = NULL;
11753 fra.me.REG[0] = NIT_NULL;
11754 fra.me.REG[0] = p0;
11755 /* syntax/typing.nit:1841 */
11756 if (!once_value_1) {
11757 if (!once_value_2) {
11758 fra.me.REG[0] = BOX_NativeString("%");
11759 REGB0 = TAG_Int(1);
11760 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11761 once_value_2 = fra.me.REG[0];
11762 register_static_object(&once_value_2);
11763 } else fra.me.REG[0] = once_value_2;
11764 fra.me.REG[0] = fra.me.REG[0];
11765 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11766 once_value_1 = fra.me.REG[0];
11767 register_static_object(&once_value_1);
11768 } else fra.me.REG[0] = once_value_1;
11769 fra.me.REG[0] = fra.me.REG[0];
11770 goto label3;
11771 label3: while(0);
11772 stack_frame_head = fra.me.prev;
11773 return fra.me.REG[0];
11774 }
11775 val_t syntax___typing___AUminusExpr___name(val_t p0){
11776 struct {struct stack_frame_t me;} fra;
11777 val_t REGB0;
11778 val_t tmp;
11779 static val_t once_value_1; /* Once value */
11780 static val_t once_value_2; /* Once value */
11781 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11782 fra.me.file = LOCATE_syntax___typing;
11783 fra.me.line = 1845;
11784 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11785 fra.me.has_broke = 0;
11786 fra.me.REG_size = 1;
11787 fra.me.nitni_local_ref_head = NULL;
11788 fra.me.REG[0] = NIT_NULL;
11789 fra.me.REG[0] = p0;
11790 /* syntax/typing.nit:1845 */
11791 if (!once_value_1) {
11792 if (!once_value_2) {
11793 fra.me.REG[0] = BOX_NativeString("unary -");
11794 REGB0 = TAG_Int(7);
11795 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11796 once_value_2 = fra.me.REG[0];
11797 register_static_object(&once_value_2);
11798 } else fra.me.REG[0] = once_value_2;
11799 fra.me.REG[0] = fra.me.REG[0];
11800 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11801 once_value_1 = fra.me.REG[0];
11802 register_static_object(&once_value_1);
11803 } else fra.me.REG[0] = once_value_1;
11804 fra.me.REG[0] = fra.me.REG[0];
11805 goto label3;
11806 label3: while(0);
11807 stack_frame_head = fra.me.prev;
11808 return fra.me.REG[0];
11809 }
11810 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11811 struct {struct stack_frame_t me;} fra;
11812 val_t tmp;
11813 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11814 fra.me.file = LOCATE_syntax___typing;
11815 fra.me.line = 1846;
11816 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
11817 fra.me.has_broke = 0;
11818 fra.me.REG_size = 1;
11819 fra.me.nitni_local_ref_head = NULL;
11820 fra.me.REG[0] = NIT_NULL;
11821 fra.me.REG[0] = p0;
11822 /* syntax/typing.nit:1846 */
11823 fra.me.REG[0] = NIT_NULL;
11824 goto label1;
11825 label1: while(0);
11826 stack_frame_head = fra.me.prev;
11827 return fra.me.REG[0];
11828 }
11829 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
11830 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
11831 val_t REGB0;
11832 val_t REGB1;
11833 val_t tmp;
11834 static val_t once_value_1; /* Once value */
11835 static val_t once_value_2; /* Once value */
11836 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11837 fra.me.file = LOCATE_syntax___typing;
11838 fra.me.line = 1850;
11839 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
11840 fra.me.has_broke = 0;
11841 fra.me.REG_size = 9;
11842 fra.me.nitni_local_ref_head = NULL;
11843 fra.me.REG[0] = NIT_NULL;
11844 fra.me.REG[1] = NIT_NULL;
11845 fra.me.REG[2] = NIT_NULL;
11846 fra.me.REG[3] = NIT_NULL;
11847 fra.me.REG[4] = NIT_NULL;
11848 fra.me.REG[5] = NIT_NULL;
11849 fra.me.REG[6] = NIT_NULL;
11850 fra.me.REG[7] = NIT_NULL;
11851 fra.me.REG[8] = NIT_NULL;
11852 fra.me.REG[0] = p0;
11853 fra.me.REG[1] = p1;
11854 /* syntax/typing.nit:1850 */
11855 fra.me.REG[2] = fra.me.REG[0];
11856 fra.me.REG[3] = fra.me.REG[1];
11857 /* syntax/typing.nit:1852 */
11858 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11859 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
11860 if (UNTAG_Bool(REGB0)) {
11861 /* syntax/typing.nit:1853 */
11862 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11863 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11864 /* syntax/typing.nit:1854 */
11865 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
11866 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
11867 /* syntax/typing.nit:1855 */
11868 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11869 if (UNTAG_Bool(REGB0)) {
11870 } else {
11871 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11872 if (UNTAG_Bool(REGB1)) {
11873 REGB1 = TAG_Bool(false);
11874 REGB0 = REGB1;
11875 } else {
11876 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
11877 REGB0 = REGB1;
11878 }
11879 }
11880 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11881 if (UNTAG_Bool(REGB0)) {
11882 /* syntax/typing.nit:1857 */
11883 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*/;
11884 if (UNTAG_Bool(REGB0)) {
11885 /* syntax/typing.nit:1858 */
11886 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11887 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11888 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
11889 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
11890 /* syntax/typing.nit:1859 */
11891 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11892 } else {
11893 /* syntax/typing.nit:1861 */
11894 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11895 fra.me.REG[7] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[7])(fra.me.REG[7]);
11896 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
11897 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11898 if (UNTAG_Bool(REGB0)) {
11899 REGB0 = TAG_Bool(true);
11900 } else {
11901 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11902 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AParExprs, ID_parser___parser_nodes___AParExprs)) /*cast AParExprs*/;
11903 REGB0 = REGB1;
11904 }
11905 if (UNTAG_Bool(REGB0)) {
11906 /* syntax/typing.nit:1862 */
11907 REGB0 = TAG_Int(3);
11908 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11909 if (!once_value_1) {
11910 fra.me.REG[6] = BOX_NativeString("Error: ");
11911 REGB0 = TAG_Int(7);
11912 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
11913 once_value_1 = fra.me.REG[6];
11914 register_static_object(&once_value_1);
11915 } else fra.me.REG[6] = once_value_1;
11916 fra.me.REG[6] = fra.me.REG[6];
11917 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11918 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11919 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11920 if (!once_value_2) {
11921 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
11922 REGB0 = TAG_Int(29);
11923 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11924 once_value_2 = fra.me.REG[4];
11925 register_static_object(&once_value_2);
11926 } else fra.me.REG[4] = once_value_2;
11927 fra.me.REG[4] = fra.me.REG[4];
11928 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11929 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
11930 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
11931 /* syntax/typing.nit:1863 */
11932 goto label3;
11933 }
11934 /* syntax/typing.nit:1865 */
11935 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
11936 fra.me.REG[8] = fra.me.REG[7];
11937 /* syntax/typing.nit:1866 */
11938 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11939 }
11940 /* syntax/typing.nit:1868 */
11941 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
11942 /* syntax/typing.nit:1869 */
11943 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
11944 /* syntax/typing.nit:1870 */
11945 goto label3;
11946 }
11947 }
11948 /* syntax/typing.nit:1874 */
11949 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11950 label3: while(0);
11951 stack_frame_head = fra.me.prev;
11952 return;
11953 }
11954 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
11955 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11956 val_t REGB0;
11957 val_t tmp;
11958 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11959 fra.me.file = LOCATE_syntax___typing;
11960 fra.me.line = 1877;
11961 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
11962 fra.me.has_broke = 0;
11963 fra.me.REG_size = 2;
11964 fra.me.nitni_local_ref_head = NULL;
11965 fra.me.REG[0] = NIT_NULL;
11966 fra.me.REG[1] = NIT_NULL;
11967 fra.me.REG[0] = p0;
11968 /* syntax/typing.nit:1879 */
11969 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11970 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11971 if (UNTAG_Bool(REGB0)) {
11972 /* syntax/typing.nit:1880 */
11973 fra.me.REG[1] = NIT_NULL;
11974 goto label1;
11975 } else {
11976 /* syntax/typing.nit:1882 */
11977 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11978 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11979 fra.me.REG[1] = fra.me.REG[0];
11980 goto label1;
11981 }
11982 label1: while(0);
11983 stack_frame_head = fra.me.prev;
11984 return fra.me.REG[1];
11985 }
11986 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
11987 struct {struct stack_frame_t me;} fra;
11988 val_t tmp;
11989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11990 fra.me.file = LOCATE_syntax___typing;
11991 fra.me.line = 1886;
11992 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
11993 fra.me.has_broke = 0;
11994 fra.me.REG_size = 0;
11995 fra.me.nitni_local_ref_head = NULL;
11996 /* syntax/typing.nit:1886 */
11997 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1886);
11998 stack_frame_head = fra.me.prev;
11999 return NIT_NULL;
12000 }
12001 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
12002 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12003 val_t tmp;
12004 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12005 fra.me.file = LOCATE_syntax___typing;
12006 fra.me.line = 1891;
12007 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
12008 fra.me.has_broke = 0;
12009 fra.me.REG_size = 2;
12010 fra.me.nitni_local_ref_head = NULL;
12011 fra.me.REG[0] = NIT_NULL;
12012 fra.me.REG[1] = NIT_NULL;
12013 fra.me.REG[0] = p0;
12014 fra.me.REG[1] = p1;
12015 /* syntax/typing.nit:1893 */
12016 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12017 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
12018 goto label1;
12019 label1: while(0);
12020 stack_frame_head = fra.me.prev;
12021 return fra.me.REG[0];
12022 }
12023 val_t syntax___typing___ACallExpr___name(val_t p0){
12024 struct {struct stack_frame_t me;} fra;
12025 val_t tmp;
12026 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12027 fra.me.file = LOCATE_syntax___typing;
12028 fra.me.line = 1896;
12029 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
12030 fra.me.has_broke = 0;
12031 fra.me.REG_size = 1;
12032 fra.me.nitni_local_ref_head = NULL;
12033 fra.me.REG[0] = NIT_NULL;
12034 fra.me.REG[0] = p0;
12035 /* syntax/typing.nit:1896 */
12036 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12037 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12038 goto label1;
12039 label1: while(0);
12040 stack_frame_head = fra.me.prev;
12041 return fra.me.REG[0];
12042 }
12043 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
12044 struct {struct stack_frame_t me;} fra;
12045 val_t tmp;
12046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12047 fra.me.file = LOCATE_syntax___typing;
12048 fra.me.line = 1897;
12049 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
12050 fra.me.has_broke = 0;
12051 fra.me.REG_size = 1;
12052 fra.me.nitni_local_ref_head = NULL;
12053 fra.me.REG[0] = NIT_NULL;
12054 fra.me.REG[0] = p0;
12055 /* syntax/typing.nit:1897 */
12056 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12057 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12058 goto label1;
12059 label1: while(0);
12060 stack_frame_head = fra.me.prev;
12061 return fra.me.REG[0];
12062 }
12063 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
12064 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12065 val_t tmp;
12066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12067 fra.me.file = LOCATE_syntax___typing;
12068 fra.me.line = 1901;
12069 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
12070 fra.me.has_broke = 0;
12071 fra.me.REG_size = 3;
12072 fra.me.nitni_local_ref_head = NULL;
12073 fra.me.REG[0] = NIT_NULL;
12074 fra.me.REG[1] = NIT_NULL;
12075 fra.me.REG[2] = NIT_NULL;
12076 fra.me.REG[0] = p0;
12077 fra.me.REG[1] = p1;
12078 /* syntax/typing.nit:1903 */
12079 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12080 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
12081 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12082 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12083 goto label1;
12084 label1: while(0);
12085 stack_frame_head = fra.me.prev;
12086 return fra.me.REG[0];
12087 }
12088 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
12089 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12090 val_t REGB0;
12091 val_t tmp;
12092 static val_t once_value_1; /* Once value */
12093 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12094 fra.me.file = LOCATE_syntax___typing;
12095 fra.me.line = 1906;
12096 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
12097 fra.me.has_broke = 0;
12098 fra.me.REG_size = 2;
12099 fra.me.nitni_local_ref_head = NULL;
12100 fra.me.REG[0] = NIT_NULL;
12101 fra.me.REG[1] = NIT_NULL;
12102 fra.me.REG[0] = p0;
12103 /* syntax/typing.nit:1906 */
12104 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12105 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
12106 if (!once_value_1) {
12107 fra.me.REG[1] = BOX_NativeString("=");
12108 REGB0 = TAG_Int(1);
12109 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
12110 once_value_1 = fra.me.REG[1];
12111 register_static_object(&once_value_1);
12112 } else fra.me.REG[1] = once_value_1;
12113 fra.me.REG[1] = fra.me.REG[1];
12114 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12115 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
12116 goto label2;
12117 label2: while(0);
12118 stack_frame_head = fra.me.prev;
12119 return fra.me.REG[1];
12120 }
12121 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
12122 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12123 val_t tmp;
12124 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12125 fra.me.file = LOCATE_syntax___typing;
12126 fra.me.line = 1907;
12127 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
12128 fra.me.has_broke = 0;
12129 fra.me.REG_size = 2;
12130 fra.me.nitni_local_ref_head = NULL;
12131 fra.me.REG[0] = NIT_NULL;
12132 fra.me.REG[1] = NIT_NULL;
12133 fra.me.REG[0] = p0;
12134 /* syntax/typing.nit:1908 */
12135 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12136 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12137 /* syntax/typing.nit:1909 */
12138 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12139 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12140 /* syntax/typing.nit:1910 */
12141 goto label1;
12142 label1: while(0);
12143 stack_frame_head = fra.me.prev;
12144 return fra.me.REG[1];
12145 }
12146 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
12147 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12148 val_t tmp;
12149 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12150 fra.me.file = LOCATE_syntax___typing;
12151 fra.me.line = 1915;
12152 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
12153 fra.me.has_broke = 0;
12154 fra.me.REG_size = 3;
12155 fra.me.nitni_local_ref_head = NULL;
12156 fra.me.REG[0] = NIT_NULL;
12157 fra.me.REG[1] = NIT_NULL;
12158 fra.me.REG[2] = NIT_NULL;
12159 fra.me.REG[0] = p0;
12160 fra.me.REG[1] = p1;
12161 /* syntax/typing.nit:1917 */
12162 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12163 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
12164 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12165 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12166 goto label1;
12167 label1: while(0);
12168 stack_frame_head = fra.me.prev;
12169 return fra.me.REG[0];
12170 }
12171 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
12172 struct {struct stack_frame_t me;} fra;
12173 val_t tmp;
12174 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12175 fra.me.file = LOCATE_syntax___typing;
12176 fra.me.line = 1920;
12177 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
12178 fra.me.has_broke = 0;
12179 fra.me.REG_size = 1;
12180 fra.me.nitni_local_ref_head = NULL;
12181 fra.me.REG[0] = NIT_NULL;
12182 fra.me.REG[0] = p0;
12183 /* syntax/typing.nit:1920 */
12184 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12185 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12186 goto label1;
12187 label1: while(0);
12188 stack_frame_head = fra.me.prev;
12189 return fra.me.REG[0];
12190 }
12191 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
12192 struct {struct stack_frame_t me;} fra;
12193 val_t tmp;
12194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12195 fra.me.file = LOCATE_syntax___typing;
12196 fra.me.line = 1921;
12197 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
12198 fra.me.has_broke = 0;
12199 fra.me.REG_size = 1;
12200 fra.me.nitni_local_ref_head = NULL;
12201 fra.me.REG[0] = NIT_NULL;
12202 fra.me.REG[0] = p0;
12203 /* syntax/typing.nit:1921 */
12204 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12205 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12206 goto label1;
12207 label1: while(0);
12208 stack_frame_head = fra.me.prev;
12209 return fra.me.REG[0];
12210 }
12211 val_t syntax___typing___ABraExpr___name(val_t p0){
12212 struct {struct stack_frame_t me;} fra;
12213 val_t REGB0;
12214 val_t tmp;
12215 static val_t once_value_1; /* Once value */
12216 static val_t once_value_2; /* Once value */
12217 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12218 fra.me.file = LOCATE_syntax___typing;
12219 fra.me.line = 1925;
12220 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
12221 fra.me.has_broke = 0;
12222 fra.me.REG_size = 1;
12223 fra.me.nitni_local_ref_head = NULL;
12224 fra.me.REG[0] = NIT_NULL;
12225 fra.me.REG[0] = p0;
12226 /* syntax/typing.nit:1925 */
12227 if (!once_value_1) {
12228 if (!once_value_2) {
12229 fra.me.REG[0] = BOX_NativeString("[]");
12230 REGB0 = TAG_Int(2);
12231 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12232 once_value_2 = fra.me.REG[0];
12233 register_static_object(&once_value_2);
12234 } else fra.me.REG[0] = once_value_2;
12235 fra.me.REG[0] = fra.me.REG[0];
12236 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12237 once_value_1 = fra.me.REG[0];
12238 register_static_object(&once_value_1);
12239 } else fra.me.REG[0] = once_value_1;
12240 fra.me.REG[0] = fra.me.REG[0];
12241 goto label3;
12242 label3: while(0);
12243 stack_frame_head = fra.me.prev;
12244 return fra.me.REG[0];
12245 }
12246 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
12247 struct {struct stack_frame_t me;} fra;
12248 val_t tmp;
12249 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12250 fra.me.file = LOCATE_syntax___typing;
12251 fra.me.line = 1926;
12252 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
12253 fra.me.has_broke = 0;
12254 fra.me.REG_size = 1;
12255 fra.me.nitni_local_ref_head = NULL;
12256 fra.me.REG[0] = NIT_NULL;
12257 fra.me.REG[0] = p0;
12258 /* syntax/typing.nit:1926 */
12259 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12260 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12261 goto label1;
12262 label1: while(0);
12263 stack_frame_head = fra.me.prev;
12264 return fra.me.REG[0];
12265 }
12266 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
12267 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12268 val_t REGB0;
12269 val_t tmp;
12270 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12271 fra.me.file = LOCATE_syntax___typing;
12272 fra.me.line = 1927;
12273 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
12274 fra.me.has_broke = 0;
12275 fra.me.REG_size = 2;
12276 fra.me.nitni_local_ref_head = NULL;
12277 fra.me.REG[0] = NIT_NULL;
12278 fra.me.REG[1] = NIT_NULL;
12279 fra.me.REG[0] = p0;
12280 /* syntax/typing.nit:1929 */
12281 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12282 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12283 if (UNTAG_Bool(REGB0)) {
12284 /* syntax/typing.nit:1930 */
12285 fra.me.REG[1] = NIT_NULL;
12286 goto label1;
12287 } else {
12288 /* syntax/typing.nit:1932 */
12289 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12290 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12291 fra.me.REG[1] = fra.me.REG[0];
12292 goto label1;
12293 }
12294 label1: while(0);
12295 stack_frame_head = fra.me.prev;
12296 return fra.me.REG[1];
12297 }
12298 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
12299 struct {struct stack_frame_t me;} fra;
12300 val_t REGB0;
12301 val_t tmp;
12302 static val_t once_value_1; /* Once value */
12303 static val_t once_value_2; /* Once value */
12304 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12305 fra.me.file = LOCATE_syntax___typing;
12306 fra.me.line = 1938;
12307 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
12308 fra.me.has_broke = 0;
12309 fra.me.REG_size = 1;
12310 fra.me.nitni_local_ref_head = NULL;
12311 fra.me.REG[0] = NIT_NULL;
12312 fra.me.REG[0] = p0;
12313 /* syntax/typing.nit:1938 */
12314 if (!once_value_1) {
12315 if (!once_value_2) {
12316 fra.me.REG[0] = BOX_NativeString("[]=");
12317 REGB0 = TAG_Int(3);
12318 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12319 once_value_2 = fra.me.REG[0];
12320 register_static_object(&once_value_2);
12321 } else fra.me.REG[0] = once_value_2;
12322 fra.me.REG[0] = fra.me.REG[0];
12323 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12324 once_value_1 = fra.me.REG[0];
12325 register_static_object(&once_value_1);
12326 } else fra.me.REG[0] = once_value_1;
12327 fra.me.REG[0] = fra.me.REG[0];
12328 goto label3;
12329 label3: while(0);
12330 stack_frame_head = fra.me.prev;
12331 return fra.me.REG[0];
12332 }
12333 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
12334 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12335 val_t tmp;
12336 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12337 fra.me.file = LOCATE_syntax___typing;
12338 fra.me.line = 1939;
12339 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
12340 fra.me.has_broke = 0;
12341 fra.me.REG_size = 2;
12342 fra.me.nitni_local_ref_head = NULL;
12343 fra.me.REG[0] = NIT_NULL;
12344 fra.me.REG[1] = NIT_NULL;
12345 fra.me.REG[0] = p0;
12346 /* syntax/typing.nit:1940 */
12347 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12348 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12349 /* syntax/typing.nit:1941 */
12350 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12351 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12352 /* syntax/typing.nit:1942 */
12353 goto label1;
12354 label1: while(0);
12355 stack_frame_head = fra.me.prev;
12356 return fra.me.REG[1];
12357 }
12358 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
12359 struct {struct stack_frame_t me;} fra;
12360 val_t REGB0;
12361 val_t tmp;
12362 static val_t once_value_1; /* Once value */
12363 static val_t once_value_2; /* Once value */
12364 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12365 fra.me.file = LOCATE_syntax___typing;
12366 fra.me.line = 1947;
12367 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
12368 fra.me.has_broke = 0;
12369 fra.me.REG_size = 1;
12370 fra.me.nitni_local_ref_head = NULL;
12371 fra.me.REG[0] = NIT_NULL;
12372 fra.me.REG[0] = p0;
12373 /* syntax/typing.nit:1947 */
12374 if (!once_value_1) {
12375 if (!once_value_2) {
12376 fra.me.REG[0] = BOX_NativeString("[]");
12377 REGB0 = TAG_Int(2);
12378 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12379 once_value_2 = fra.me.REG[0];
12380 register_static_object(&once_value_2);
12381 } else fra.me.REG[0] = once_value_2;
12382 fra.me.REG[0] = fra.me.REG[0];
12383 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12384 once_value_1 = fra.me.REG[0];
12385 register_static_object(&once_value_1);
12386 } else fra.me.REG[0] = once_value_1;
12387 fra.me.REG[0] = fra.me.REG[0];
12388 goto label3;
12389 label3: while(0);
12390 stack_frame_head = fra.me.prev;
12391 return fra.me.REG[0];
12392 }
12393 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
12394 struct {struct stack_frame_t me;} fra;
12395 val_t tmp;
12396 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12397 fra.me.file = LOCATE_syntax___typing;
12398 fra.me.line = 1948;
12399 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
12400 fra.me.has_broke = 0;
12401 fra.me.REG_size = 1;
12402 fra.me.nitni_local_ref_head = NULL;
12403 fra.me.REG[0] = NIT_NULL;
12404 fra.me.REG[0] = p0;
12405 /* syntax/typing.nit:1948 */
12406 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12407 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12408 goto label1;
12409 label1: while(0);
12410 stack_frame_head = fra.me.prev;
12411 return fra.me.REG[0];
12412 }
12413 val_t syntax___typing___AInitExpr___name(val_t p0){
12414 struct {struct stack_frame_t me;} fra;
12415 val_t REGB0;
12416 val_t tmp;
12417 static val_t once_value_1; /* Once value */
12418 static val_t once_value_2; /* Once value */
12419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12420 fra.me.file = LOCATE_syntax___typing;
12421 fra.me.line = 1952;
12422 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12423 fra.me.has_broke = 0;
12424 fra.me.REG_size = 1;
12425 fra.me.nitni_local_ref_head = NULL;
12426 fra.me.REG[0] = NIT_NULL;
12427 fra.me.REG[0] = p0;
12428 /* syntax/typing.nit:1952 */
12429 if (!once_value_1) {
12430 if (!once_value_2) {
12431 fra.me.REG[0] = BOX_NativeString("init");
12432 REGB0 = TAG_Int(4);
12433 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12434 once_value_2 = fra.me.REG[0];
12435 register_static_object(&once_value_2);
12436 } else fra.me.REG[0] = once_value_2;
12437 fra.me.REG[0] = fra.me.REG[0];
12438 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12439 once_value_1 = fra.me.REG[0];
12440 register_static_object(&once_value_1);
12441 } else fra.me.REG[0] = once_value_1;
12442 fra.me.REG[0] = fra.me.REG[0];
12443 goto label3;
12444 label3: while(0);
12445 stack_frame_head = fra.me.prev;
12446 return fra.me.REG[0];
12447 }
12448 val_t syntax___typing___AInitExpr___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 = 1953;
12454 fra.me.meth = LOCATE_syntax___typing___AInitExpr___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:1953 */
12461 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___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 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12469 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12470 val_t REGB0;
12471 val_t tmp;
12472 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12473 fra.me.file = LOCATE_syntax___typing;
12474 fra.me.line = 1958;
12475 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12476 fra.me.has_broke = 0;
12477 fra.me.REG_size = 2;
12478 fra.me.nitni_local_ref_head = NULL;
12479 fra.me.REG[0] = NIT_NULL;
12480 fra.me.REG[1] = NIT_NULL;
12481 fra.me.REG[0] = p0;
12482 /* syntax/typing.nit:1958 */
12483 fra.me.REG[1] = fra.me.REG[0];
12484 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12485 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12486 if (UNTAG_Bool(REGB0)) {
12487 } else {
12488 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1958);
12489 }
12490 goto label1;
12491 label1: while(0);
12492 stack_frame_head = fra.me.prev;
12493 return fra.me.REG[1];
12494 }
12495 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12496 struct {struct stack_frame_t me;} fra;
12497 val_t tmp;
12498 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12499 fra.me.file = LOCATE_syntax___typing;
12500 fra.me.line = 1959;
12501 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12502 fra.me.has_broke = 0;
12503 fra.me.REG_size = 1;
12504 fra.me.nitni_local_ref_head = NULL;
12505 fra.me.REG[0] = NIT_NULL;
12506 fra.me.REG[0] = p0;
12507 /* syntax/typing.nit:1959 */
12508 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12509 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12510 goto label1;
12511 label1: while(0);
12512 stack_frame_head = fra.me.prev;
12513 return fra.me.REG[0];
12514 }
12515 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12516 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12517 val_t REGB0;
12518 val_t REGB1;
12519 val_t tmp;
12520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12521 fra.me.file = LOCATE_syntax___typing;
12522 fra.me.line = 1961;
12523 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12524 fra.me.has_broke = 0;
12525 fra.me.REG_size = 5;
12526 fra.me.nitni_local_ref_head = NULL;
12527 fra.me.REG[0] = NIT_NULL;
12528 fra.me.REG[1] = NIT_NULL;
12529 fra.me.REG[2] = NIT_NULL;
12530 fra.me.REG[3] = NIT_NULL;
12531 fra.me.REG[4] = NIT_NULL;
12532 fra.me.REG[0] = p0;
12533 fra.me.REG[1] = p1;
12534 /* syntax/typing.nit:1963 */
12535 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12536 /* syntax/typing.nit:1964 */
12537 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12538 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12539 if (UNTAG_Bool(REGB0)) {
12540 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12541 }
12542 /* syntax/typing.nit:1965 */
12543 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12544 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12545 /* syntax/typing.nit:1966 */
12546 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12547 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12548 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12549 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]);
12550 /* syntax/typing.nit:1967 */
12551 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12552 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12553 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12554 if (UNTAG_Bool(REGB1)) {
12555 /* syntax/typing.nit:1968 */
12556 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12557 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12558 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12559 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12560 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]);
12561 }
12562 /* syntax/typing.nit:1970 */
12563 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12564 if (UNTAG_Bool(REGB0)) {
12565 goto label1;
12566 }
12567 /* syntax/typing.nit:1971 */
12568 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12569 /* syntax/typing.nit:1972 */
12570 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12571 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12572 /* syntax/typing.nit:1973 */
12573 REGB0 = TAG_Bool(true);
12574 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12575 label1: while(0);
12576 stack_frame_head = fra.me.prev;
12577 return;
12578 }
12579 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12580 struct {struct stack_frame_t me;} fra;
12581 val_t tmp;
12582 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12583 fra.me.file = LOCATE_syntax___typing;
12584 fra.me.line = 1978;
12585 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12586 fra.me.has_broke = 0;
12587 fra.me.REG_size = 0;
12588 fra.me.nitni_local_ref_head = NULL;
12589 /* syntax/typing.nit:1978 */
12590 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1978);
12591 stack_frame_head = fra.me.prev;
12592 return NIT_NULL;
12593 }
12594 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12595 struct {struct stack_frame_t me;} fra;
12596 val_t tmp;
12597 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12598 fra.me.file = LOCATE_syntax___typing;
12599 fra.me.line = 1981;
12600 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12601 fra.me.has_broke = 0;
12602 fra.me.REG_size = 1;
12603 fra.me.nitni_local_ref_head = NULL;
12604 fra.me.REG[0] = NIT_NULL;
12605 fra.me.REG[0] = p0;
12606 /* syntax/typing.nit:1981 */
12607 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12608 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12609 goto label1;
12610 label1: while(0);
12611 stack_frame_head = fra.me.prev;
12612 return fra.me.REG[0];
12613 }
12614 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12615 struct {struct stack_frame_t me;} fra;
12616 val_t tmp;
12617 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12618 fra.me.file = LOCATE_syntax___typing;
12619 fra.me.line = 1984;
12620 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12621 fra.me.has_broke = 0;
12622 fra.me.REG_size = 1;
12623 fra.me.nitni_local_ref_head = NULL;
12624 fra.me.REG[0] = NIT_NULL;
12625 fra.me.REG[0] = p0;
12626 /* syntax/typing.nit:1984 */
12627 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12628 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12629 goto label1;
12630 label1: while(0);
12631 stack_frame_head = fra.me.prev;
12632 return fra.me.REG[0];
12633 }
12634 val_t syntax___typing___AClosureDef___closure(val_t p0){
12635 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12636 val_t REGB0;
12637 val_t tmp;
12638 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12639 fra.me.file = LOCATE_syntax___typing;
12640 fra.me.line = 1989;
12641 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12642 fra.me.has_broke = 0;
12643 fra.me.REG_size = 2;
12644 fra.me.nitni_local_ref_head = NULL;
12645 fra.me.REG[0] = NIT_NULL;
12646 fra.me.REG[1] = NIT_NULL;
12647 fra.me.REG[0] = p0;
12648 /* syntax/typing.nit:1989 */
12649 fra.me.REG[1] = fra.me.REG[0];
12650 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12651 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12652 if (UNTAG_Bool(REGB0)) {
12653 } else {
12654 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1989);
12655 }
12656 goto label1;
12657 label1: while(0);
12658 stack_frame_head = fra.me.prev;
12659 return fra.me.REG[1];
12660 }
12661 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12662 struct {struct stack_frame_t me;} fra;
12663 val_t tmp;
12664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12665 fra.me.file = LOCATE_syntax___typing;
12666 fra.me.line = 1991;
12667 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12668 fra.me.has_broke = 0;
12669 fra.me.REG_size = 1;
12670 fra.me.nitni_local_ref_head = NULL;
12671 fra.me.REG[0] = NIT_NULL;
12672 fra.me.REG[0] = p0;
12673 /* syntax/typing.nit:1991 */
12674 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12675 stack_frame_head = fra.me.prev;
12676 return fra.me.REG[0];
12677 }
12678 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12679 struct {struct stack_frame_t me; val_t MORE_REG[2];} 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 = 1995;
12685 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12686 fra.me.has_broke = 0;
12687 fra.me.REG_size = 3;
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[2] = NIT_NULL;
12692 fra.me.REG[0] = p0;
12693 fra.me.REG[1] = p1;
12694 /* syntax/typing.nit:1995 */
12695 fra.me.REG[2] = fra.me.REG[0];
12696 /* syntax/typing.nit:1998 */
12697 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12698 if (UNTAG_Bool(REGB0)) {
12699 } else {
12700 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1998);
12701 }
12702 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12703 if (UNTAG_Bool(REGB0)) {
12704 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12705 }
12706 stack_frame_head = fra.me.prev;
12707 return;
12708 }
12709 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12710 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12711 val_t REGB0;
12712 val_t REGB1;
12713 val_t REGB2;
12714 val_t REGB3;
12715 val_t tmp;
12716 static val_t once_value_1; /* Once value */
12717 static val_t once_value_2; /* Once value */
12718 static val_t once_value_3; /* Once value */
12719 static val_t once_value_6; /* Once value */
12720 static val_t once_value_7; /* Once value */
12721 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12722 fra.me.file = LOCATE_syntax___typing;
12723 fra.me.line = 2001;
12724 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12725 fra.me.has_broke = 0;
12726 fra.me.REG_size = 8;
12727 fra.me.nitni_local_ref_head = NULL;
12728 fra.me.REG[0] = NIT_NULL;
12729 fra.me.REG[1] = NIT_NULL;
12730 fra.me.REG[2] = NIT_NULL;
12731 fra.me.REG[3] = NIT_NULL;
12732 fra.me.REG[4] = NIT_NULL;
12733 fra.me.REG[5] = NIT_NULL;
12734 fra.me.REG[6] = NIT_NULL;
12735 fra.me.REG[7] = NIT_NULL;
12736 fra.me.REG[0] = p0;
12737 fra.me.REG[1] = p1;
12738 fra.me.REG[2] = p2;
12739 /* syntax/typing.nit:2003 */
12740 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12741 /* syntax/typing.nit:2005 */
12742 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12743 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12744 /* syntax/typing.nit:2006 */
12745 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12746 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12747 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12748 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12749 if (UNTAG_Bool(REGB2)) {
12750 } else {
12751 /* ../lib/standard/kernel.nit:227 */
12752 REGB1 = TAG_Bool((REGB0)==(REGB1));
12753 /* syntax/typing.nit:2006 */
12754 REGB2 = REGB1;
12755 }
12756 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12757 if (UNTAG_Bool(REGB2)) {
12758 /* syntax/typing.nit:2007 */
12759 REGB2 = TAG_Int(5);
12760 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12761 if (!once_value_1) {
12762 fra.me.REG[5] = BOX_NativeString("Error: ");
12763 REGB2 = TAG_Int(7);
12764 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12765 once_value_1 = fra.me.REG[5];
12766 register_static_object(&once_value_1);
12767 } else fra.me.REG[5] = once_value_1;
12768 fra.me.REG[5] = fra.me.REG[5];
12769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12770 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12771 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12772 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12773 if (!once_value_2) {
12774 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12775 REGB2 = TAG_Int(36);
12776 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12777 once_value_2 = fra.me.REG[5];
12778 register_static_object(&once_value_2);
12779 } else fra.me.REG[5] = once_value_2;
12780 fra.me.REG[5] = fra.me.REG[5];
12781 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12782 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12783 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
12784 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12785 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12786 if (!once_value_3) {
12787 fra.me.REG[5] = BOX_NativeString(" found.");
12788 REGB2 = TAG_Int(7);
12789 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12790 once_value_3 = fra.me.REG[5];
12791 register_static_object(&once_value_3);
12792 } else fra.me.REG[5] = once_value_3;
12793 fra.me.REG[5] = fra.me.REG[5];
12794 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12795 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12796 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12797 /* syntax/typing.nit:2008 */
12798 goto label4;
12799 }
12800 /* syntax/typing.nit:2011 */
12801 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12802 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
12803 /* syntax/typing.nit:2013 */
12804 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12805 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
12806 /* syntax/typing.nit:2014 */
12807 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12808 /* syntax/typing.nit:2015 */
12809 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12810 /* syntax/typing.nit:2016 */
12811 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12812 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
12813 /* syntax/typing.nit:2017 */
12814 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
12815 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
12816 /* syntax/typing.nit:2018 */
12817 REGB2 = TAG_Int(0);
12818 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12819 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
12820 /* ../lib/standard/kernel.nit:352 */
12821 while(1) {
12822 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
12823 if (UNTAG_Bool(REGB0)) {
12824 } else {
12825 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
12826 }
12827 /* ../lib/standard/kernel.nit:232 */
12828 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
12829 /* ../lib/standard/kernel.nit:352 */
12830 if (UNTAG_Bool(REGB0)) {
12831 /* syntax/typing.nit:2018 */
12832 REGB0 = REGB2;
12833 /* syntax/typing.nit:2019 */
12834 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12835 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
12836 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12837 if (UNTAG_Bool(REGB3)) {
12838 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2019);
12839 }
12840 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
12841 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12842 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
12843 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
12844 /* syntax/typing.nit:2020 */
12845 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
12846 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12847 if (UNTAG_Bool(REGB3)) {
12848 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2020);
12849 }
12850 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12851 /* syntax/typing.nit:2021 */
12852 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
12853 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12854 /* syntax/typing.nit:2022 */
12855 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12856 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12857 /* ../lib/standard/kernel.nit:354 */
12858 REGB0 = TAG_Int(1);
12859 /* ../lib/standard/kernel.nit:235 */
12860 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
12861 /* ../lib/standard/kernel.nit:354 */
12862 REGB2 = REGB0;
12863 } else {
12864 /* ../lib/standard/kernel.nit:352 */
12865 goto label5;
12866 }
12867 }
12868 label5: while(0);
12869 /* syntax/typing.nit:2025 */
12870 REGB2 = TAG_Bool(true);
12871 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
12872 /* syntax/typing.nit:2026 */
12873 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12874 /* syntax/typing.nit:2028 */
12875 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12876 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
12877 REGB1 = TAG_Bool(false);
12878 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
12879 if (UNTAG_Bool(REGB0)) {
12880 } else {
12881 /* ../lib/standard/kernel.nit:195 */
12882 REGB1 = TAG_Bool((REGB2)==(REGB1));
12883 /* syntax/typing.nit:2028 */
12884 REGB0 = REGB1;
12885 }
12886 if (UNTAG_Bool(REGB0)) {
12887 /* syntax/typing.nit:2029 */
12888 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12889 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12890 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
12891 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12892 if (UNTAG_Bool(REGB0)) {
12893 } else {
12894 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12895 if (UNTAG_Bool(REGB1)) {
12896 REGB1 = TAG_Bool(false);
12897 REGB0 = REGB1;
12898 } else {
12899 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12900 REGB0 = REGB1;
12901 }
12902 }
12903 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12904 if (UNTAG_Bool(REGB0)) {
12905 /* syntax/typing.nit:2030 */
12906 if (!once_value_6) {
12907 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
12908 REGB0 = TAG_Int(77);
12909 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12910 once_value_6 = fra.me.REG[3];
12911 register_static_object(&once_value_6);
12912 } else fra.me.REG[3] = once_value_6;
12913 fra.me.REG[3] = fra.me.REG[3];
12914 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12915 } else {
12916 /* syntax/typing.nit:2031 */
12917 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12918 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12919 if (UNTAG_Bool(REGB0)) {
12920 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
12921 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12922 if (UNTAG_Bool(REGB0)) {
12923 } else {
12924 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12925 if (UNTAG_Bool(REGB1)) {
12926 REGB1 = TAG_Bool(false);
12927 REGB0 = REGB1;
12928 } else {
12929 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
12930 REGB0 = REGB1;
12931 }
12932 }
12933 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12934 } else {
12935 REGB1 = TAG_Bool(false);
12936 REGB0 = REGB1;
12937 }
12938 if (UNTAG_Bool(REGB0)) {
12939 /* syntax/typing.nit:2032 */
12940 if (!once_value_7) {
12941 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
12942 REGB0 = TAG_Int(80);
12943 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
12944 once_value_7 = fra.me.REG[2];
12945 register_static_object(&once_value_7);
12946 } else fra.me.REG[2] = once_value_7;
12947 fra.me.REG[2] = fra.me.REG[2];
12948 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
12949 }
12950 }
12951 }
12952 /* syntax/typing.nit:2035 */
12953 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
12954 /* syntax/typing.nit:2036 */
12955 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
12956 /* syntax/typing.nit:2037 */
12957 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12958 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
12959 label4: while(0);
12960 stack_frame_head = fra.me.prev;
12961 return;
12962 }
12963 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
12964 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
12965 val_t REGB0;
12966 val_t REGB1;
12967 val_t tmp;
12968 static val_t once_value_2; /* Once value */
12969 static val_t once_value_3; /* Once value */
12970 static val_t once_value_4; /* Once value */
12971 static val_t once_value_5; /* Once value */
12972 static val_t once_value_6; /* Once value */
12973 static val_t once_value_7; /* Once value */
12974 static val_t once_value_8; /* Once value */
12975 static val_t once_value_9; /* Once value */
12976 static val_t once_value_10; /* Once value */
12977 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12978 fra.me.file = LOCATE_syntax___typing;
12979 fra.me.line = 2043;
12980 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
12981 fra.me.has_broke = 0;
12982 fra.me.REG_size = 6;
12983 fra.me.nitni_local_ref_head = NULL;
12984 fra.me.REG[0] = NIT_NULL;
12985 fra.me.REG[1] = NIT_NULL;
12986 fra.me.REG[2] = NIT_NULL;
12987 fra.me.REG[3] = NIT_NULL;
12988 fra.me.REG[4] = NIT_NULL;
12989 fra.me.REG[5] = NIT_NULL;
12990 fra.me.REG[0] = p0;
12991 fra.me.REG[1] = p1;
12992 fra.me.REG[2] = p2;
12993 fra.me.REG[3] = p3;
12994 /* syntax/typing.nit:2045 */
12995 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12996 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12997 if (UNTAG_Bool(REGB0)) {
12998 goto label1;
12999 }
13000 /* syntax/typing.nit:2046 */
13001 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13002 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13003 if (UNTAG_Bool(REGB0)) {
13004 goto label1;
13005 }
13006 /* syntax/typing.nit:2047 */
13007 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13008 /* syntax/typing.nit:2048 */
13009 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13010 /* syntax/typing.nit:2049 */
13011 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13012 if (UNTAG_Bool(REGB0)) {
13013 } else {
13014 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13015 REGB0 = REGB1;
13016 }
13017 if (UNTAG_Bool(REGB0)) {
13018 /* syntax/typing.nit:2050 */
13019 REGB0 = TAG_Int(3);
13020 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13021 if (!once_value_2) {
13022 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13023 REGB0 = TAG_Int(33);
13024 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13025 once_value_2 = fra.me.REG[5];
13026 register_static_object(&once_value_2);
13027 } else fra.me.REG[5] = once_value_2;
13028 fra.me.REG[5] = fra.me.REG[5];
13029 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13030 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13031 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13032 if (!once_value_3) {
13033 fra.me.REG[5] = BOX_NativeString(".");
13034 REGB0 = TAG_Int(1);
13035 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13036 once_value_3 = fra.me.REG[5];
13037 register_static_object(&once_value_3);
13038 } else fra.me.REG[5] = once_value_3;
13039 fra.me.REG[5] = fra.me.REG[5];
13040 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13041 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13042 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13043 } else {
13044 /* syntax/typing.nit:2051 */
13045 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13046 if (UNTAG_Bool(REGB0)) {
13047 /* syntax/typing.nit:2052 */
13048 REGB0 = TAG_Int(5);
13049 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13050 if (!once_value_4) {
13051 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13052 REGB0 = TAG_Int(33);
13053 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13054 once_value_4 = fra.me.REG[5];
13055 register_static_object(&once_value_4);
13056 } else fra.me.REG[5] = once_value_4;
13057 fra.me.REG[5] = fra.me.REG[5];
13058 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13059 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13060 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13061 if (!once_value_5) {
13062 fra.me.REG[5] = BOX_NativeString(" since it is a ");
13063 REGB0 = TAG_Int(15);
13064 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13065 once_value_5 = fra.me.REG[5];
13066 register_static_object(&once_value_5);
13067 } else fra.me.REG[5] = once_value_5;
13068 fra.me.REG[5] = fra.me.REG[5];
13069 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13070 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13071 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13072 if (!once_value_6) {
13073 fra.me.REG[5] = BOX_NativeString(".");
13074 REGB0 = TAG_Int(1);
13075 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13076 once_value_6 = fra.me.REG[5];
13077 register_static_object(&once_value_6);
13078 } else fra.me.REG[5] = once_value_6;
13079 fra.me.REG[5] = fra.me.REG[5];
13080 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13081 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13082 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13083 } else {
13084 /* syntax/typing.nit:2053 */
13085 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13086 if (UNTAG_Bool(REGB0)) {
13087 /* syntax/typing.nit:2055 */
13088 REGB0 = TAG_Int(3);
13089 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13090 if (!once_value_7) {
13091 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
13092 REGB0 = TAG_Int(50);
13093 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13094 once_value_7 = fra.me.REG[5];
13095 register_static_object(&once_value_7);
13096 } else fra.me.REG[5] = once_value_7;
13097 fra.me.REG[5] = fra.me.REG[5];
13098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13099 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13100 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13101 if (!once_value_8) {
13102 fra.me.REG[5] = BOX_NativeString(".");
13103 REGB0 = TAG_Int(1);
13104 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13105 once_value_8 = fra.me.REG[5];
13106 register_static_object(&once_value_8);
13107 } else fra.me.REG[5] = once_value_8;
13108 fra.me.REG[5] = fra.me.REG[5];
13109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13110 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13111 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13112 } else {
13113 /* syntax/typing.nit:2056 */
13114 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13115 if (UNTAG_Bool(REGB0)) {
13116 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
13117 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13118 if (UNTAG_Bool(REGB0)) {
13119 } else {
13120 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13121 REGB0 = REGB1;
13122 }
13123 } else {
13124 REGB1 = TAG_Bool(false);
13125 REGB0 = REGB1;
13126 }
13127 if (UNTAG_Bool(REGB0)) {
13128 /* syntax/typing.nit:2057 */
13129 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
13130 if (UNTAG_Bool(REGB0)) {
13131 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
13132 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
13133 } else {
13134 REGB1 = TAG_Bool(false);
13135 REGB0 = REGB1;
13136 }
13137 if (UNTAG_Bool(REGB0)) {
13138 } else {
13139 /* syntax/typing.nit:2063 */
13140 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
13141 if (UNTAG_Bool(REGB0)) {
13142 /* syntax/typing.nit:2064 */
13143 if (!once_value_9) {
13144 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
13145 REGB0 = TAG_Int(26);
13146 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13147 once_value_9 = fra.me.REG[3];
13148 register_static_object(&once_value_9);
13149 } else fra.me.REG[3] = once_value_9;
13150 fra.me.REG[3] = fra.me.REG[3];
13151 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13152 } else {
13153 /* syntax/typing.nit:2066 */
13154 if (!once_value_10) {
13155 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
13156 REGB0 = TAG_Int(32);
13157 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13158 once_value_10 = fra.me.REG[3];
13159 register_static_object(&once_value_10);
13160 } else fra.me.REG[3] = once_value_10;
13161 fra.me.REG[3] = fra.me.REG[3];
13162 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13163 }
13164 }
13165 }
13166 }
13167 }
13168 }
13169 label1: while(0);
13170 stack_frame_head = fra.me.prev;
13171 return;
13172 }
13173 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
13174 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13175 val_t REGB0;
13176 val_t REGB1;
13177 val_t tmp;
13178 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13179 fra.me.file = LOCATE_syntax___typing;
13180 fra.me.line = 2074;
13181 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
13182 fra.me.has_broke = 0;
13183 fra.me.REG_size = 5;
13184 fra.me.nitni_local_ref_head = NULL;
13185 fra.me.REG[0] = NIT_NULL;
13186 fra.me.REG[1] = NIT_NULL;
13187 fra.me.REG[2] = NIT_NULL;
13188 fra.me.REG[3] = NIT_NULL;
13189 fra.me.REG[4] = NIT_NULL;
13190 fra.me.REG[0] = p0;
13191 fra.me.REG[1] = p1;
13192 /* syntax/typing.nit:2076 */
13193 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13194 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13195 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]);
13196 /* syntax/typing.nit:2077 */
13197 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13198 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13199 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13200 if (UNTAG_Bool(REGB0)) {
13201 goto label1;
13202 }
13203 /* syntax/typing.nit:2078 */
13204 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13205 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
13206 /* syntax/typing.nit:2079 */
13207 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13208 if (UNTAG_Bool(REGB0)) {
13209 } else {
13210 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13211 if (UNTAG_Bool(REGB1)) {
13212 REGB1 = TAG_Bool(false);
13213 REGB0 = REGB1;
13214 } else {
13215 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13216 REGB0 = REGB1;
13217 }
13218 }
13219 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13220 if (UNTAG_Bool(REGB0)) {
13221 /* syntax/typing.nit:2080 */
13222 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13223 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13224 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
13225 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]);
13226 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
13227 }
13228 /* syntax/typing.nit:2082 */
13229 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
13230 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13231 /* syntax/typing.nit:2083 */
13232 REGB0 = TAG_Bool(true);
13233 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13234 label1: while(0);
13235 stack_frame_head = fra.me.prev;
13236 return;
13237 }
13238 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
13239 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
13240 val_t REGB0;
13241 val_t REGB1;
13242 val_t tmp;
13243 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13244 fra.me.file = LOCATE_syntax___typing;
13245 fra.me.line = 2089;
13246 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
13247 fra.me.has_broke = 0;
13248 fra.me.REG_size = 4;
13249 fra.me.nitni_local_ref_head = NULL;
13250 fra.me.REG[0] = NIT_NULL;
13251 fra.me.REG[1] = NIT_NULL;
13252 fra.me.REG[2] = NIT_NULL;
13253 fra.me.REG[3] = NIT_NULL;
13254 fra.me.REG[0] = p0;
13255 fra.me.REG[1] = p1;
13256 /* syntax/typing.nit:2091 */
13257 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13258 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13259 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]);
13260 /* syntax/typing.nit:2092 */
13261 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13262 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13263 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13264 if (UNTAG_Bool(REGB0)) {
13265 goto label1;
13266 }
13267 /* syntax/typing.nit:2093 */
13268 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13269 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13270 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
13271 /* syntax/typing.nit:2094 */
13272 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
13273 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13274 if (UNTAG_Bool(REGB0)) {
13275 } else {
13276 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13277 if (UNTAG_Bool(REGB1)) {
13278 REGB1 = TAG_Bool(false);
13279 REGB0 = REGB1;
13280 } else {
13281 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13282 REGB0 = REGB1;
13283 }
13284 }
13285 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13286 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13287 label1: while(0);
13288 stack_frame_head = fra.me.prev;
13289 return;
13290 }
13291 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
13292 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13293 val_t REGB0;
13294 val_t tmp;
13295 static val_t once_value_2; /* Once value */
13296 static val_t once_value_3; /* Once value */
13297 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13298 fra.me.file = LOCATE_syntax___typing;
13299 fra.me.line = 2099;
13300 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
13301 fra.me.has_broke = 0;
13302 fra.me.REG_size = 5;
13303 fra.me.nitni_local_ref_head = NULL;
13304 fra.me.REG[0] = NIT_NULL;
13305 fra.me.REG[1] = NIT_NULL;
13306 fra.me.REG[2] = NIT_NULL;
13307 fra.me.REG[3] = NIT_NULL;
13308 fra.me.REG[4] = NIT_NULL;
13309 fra.me.REG[0] = p0;
13310 fra.me.REG[1] = p1;
13311 /* syntax/typing.nit:2101 */
13312 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13313 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13314 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13315 if (UNTAG_Bool(REGB0)) {
13316 goto label1;
13317 }
13318 /* syntax/typing.nit:2102 */
13319 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13320 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13321 /* syntax/typing.nit:2103 */
13322 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13323 if (UNTAG_Bool(REGB0)) {
13324 /* syntax/typing.nit:2104 */
13325 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13326 if (!once_value_2) {
13327 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
13328 REGB0 = TAG_Int(43);
13329 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13330 once_value_2 = fra.me.REG[4];
13331 register_static_object(&once_value_2);
13332 } else fra.me.REG[4] = once_value_2;
13333 fra.me.REG[4] = fra.me.REG[4];
13334 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
13335 /* syntax/typing.nit:2105 */
13336 goto label1;
13337 } else {
13338 /* syntax/typing.nit:2106 */
13339 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13340 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13341 if (UNTAG_Bool(REGB0)) {
13342 /* syntax/typing.nit:2107 */
13343 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13344 if (!once_value_3) {
13345 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
13346 REGB0 = TAG_Int(45);
13347 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13348 once_value_3 = fra.me.REG[4];
13349 register_static_object(&once_value_3);
13350 } else fra.me.REG[4] = once_value_3;
13351 fra.me.REG[4] = fra.me.REG[4];
13352 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
13353 }
13354 }
13355 /* syntax/typing.nit:2109 */
13356 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13357 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
13358 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
13359 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
13360 /* syntax/typing.nit:2110 */
13361 REGB0 = TAG_Bool(true);
13362 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13363 label1: while(0);
13364 stack_frame_head = fra.me.prev;
13365 return;
13366 }
13367 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
13368 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
13369 val_t REGB0;
13370 val_t tmp;
13371 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13372 fra.me.file = LOCATE_syntax___typing;
13373 fra.me.line = 2115;
13374 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
13375 fra.me.has_broke = 0;
13376 fra.me.REG_size = 2;
13377 fra.me.nitni_local_ref_head = NULL;
13378 fra.me.REG[0] = NIT_NULL;
13379 fra.me.REG[1] = NIT_NULL;
13380 fra.me.REG[0] = p0;
13381 fra.me.REG[1] = p1;
13382 /* syntax/typing.nit:2117 */
13383 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13384 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
13385 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13386 if (UNTAG_Bool(REGB0)) {
13387 goto label1;
13388 }
13389 /* syntax/typing.nit:2118 */
13390 REGB0 = TAG_Bool(true);
13391 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13392 /* syntax/typing.nit:2119 */
13393 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13394 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
13395 if (UNTAG_Bool(REGB0)) {
13396 goto label1;
13397 }
13398 /* syntax/typing.nit:2120 */
13399 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13400 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
13401 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13402 /* syntax/typing.nit:2121 */
13403 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13404 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[1]);
13405 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13406 /* syntax/typing.nit:2122 */
13407 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13408 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[1]);
13409 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13410 label1: while(0);
13411 stack_frame_head = fra.me.prev;
13412 return;
13413 }
13414 val_t syntax___typing___AProxyExpr___is_self(val_t p0){
13415 struct {struct stack_frame_t me;} fra;
13416 val_t REGB0;
13417 val_t tmp;
13418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13419 fra.me.file = LOCATE_syntax___typing;
13420 fra.me.line = 2125;
13421 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___is_self;
13422 fra.me.has_broke = 0;
13423 fra.me.REG_size = 1;
13424 fra.me.nitni_local_ref_head = NULL;
13425 fra.me.REG[0] = NIT_NULL;
13426 fra.me.REG[0] = p0;
13427 /* syntax/typing.nit:2125 */
13428 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13429 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
13430 goto label1;
13431 label1: while(0);
13432 stack_frame_head = fra.me.prev;
13433 return REGB0;
13434 }
13435 val_t syntax___typing___AProxyExpr___its_variable(val_t p0){
13436 struct {struct stack_frame_t me;} fra;
13437 val_t tmp;
13438 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13439 fra.me.file = LOCATE_syntax___typing;
13440 fra.me.line = 2127;
13441 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___its_variable;
13442 fra.me.has_broke = 0;
13443 fra.me.REG_size = 1;
13444 fra.me.nitni_local_ref_head = NULL;
13445 fra.me.REG[0] = NIT_NULL;
13446 fra.me.REG[0] = p0;
13447 /* syntax/typing.nit:2127 */
13448 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13449 fra.me.REG[0] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[0])(fra.me.REG[0]);
13450 goto label1;
13451 label1: while(0);
13452 stack_frame_head = fra.me.prev;
13453 return fra.me.REG[0];
13454 }
13455 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
13456 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13457 val_t REGB0;
13458 val_t REGB1;
13459 val_t REGB2;
13460 val_t tmp;
13461 static val_t once_value_1; /* Once value */
13462 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13463 fra.me.file = LOCATE_syntax___typing;
13464 fra.me.line = 2131;
13465 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
13466 fra.me.has_broke = 0;
13467 fra.me.REG_size = 5;
13468 fra.me.nitni_local_ref_head = NULL;
13469 fra.me.REG[0] = NIT_NULL;
13470 fra.me.REG[1] = NIT_NULL;
13471 fra.me.REG[2] = NIT_NULL;
13472 fra.me.REG[3] = NIT_NULL;
13473 fra.me.REG[4] = NIT_NULL;
13474 fra.me.REG[0] = p0;
13475 fra.me.REG[1] = p1;
13476 /* syntax/typing.nit:2131 */
13477 fra.me.REG[2] = fra.me.REG[0];
13478 fra.me.REG[3] = fra.me.REG[1];
13479 /* syntax/typing.nit:2133 */
13480 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13481 REGB1 = TAG_Int(0);
13482 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13483 if (UNTAG_Bool(REGB2)) {
13484 } else {
13485 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13486 }
13487 /* ../lib/standard/kernel.nit:234 */
13488 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13489 /* syntax/typing.nit:2133 */
13490 if (UNTAG_Bool(REGB1)) {
13491 /* syntax/typing.nit:2134 */
13492 if (!once_value_1) {
13493 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13494 REGB1 = TAG_Int(34);
13495 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
13496 once_value_1 = fra.me.REG[4];
13497 register_static_object(&once_value_1);
13498 } else fra.me.REG[4] = once_value_1;
13499 fra.me.REG[4] = fra.me.REG[4];
13500 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13501 }
13502 /* syntax/typing.nit:2136 */
13503 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13504 REGB0 = TAG_Int(1);
13505 /* ../lib/standard/kernel.nit:235 */
13506 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13507 /* syntax/typing.nit:2136 */
13508 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13509 /* syntax/typing.nit:2138 */
13510 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13511 /* syntax/typing.nit:2140 */
13512 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13513 REGB1 = TAG_Int(1);
13514 /* ../lib/standard/kernel.nit:237 */
13515 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13516 /* syntax/typing.nit:2140 */
13517 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13518 stack_frame_head = fra.me.prev;
13519 return;
13520 }
13521 void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
13522 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13523 val_t REGB0;
13524 val_t REGB1;
13525 val_t tmp;
13526 static val_t once_value_2; /* Once value */
13527 static val_t once_value_3; /* Once value */
13528 static val_t once_value_4; /* Once value */
13529 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13530 fra.me.file = LOCATE_syntax___typing;
13531 fra.me.line = 2145;
13532 fra.me.meth = LOCATE_syntax___typing___ADebugTypeExpr___after_typing;
13533 fra.me.has_broke = 0;
13534 fra.me.REG_size = 6;
13535 fra.me.nitni_local_ref_head = NULL;
13536 fra.me.REG[0] = NIT_NULL;
13537 fra.me.REG[1] = NIT_NULL;
13538 fra.me.REG[2] = NIT_NULL;
13539 fra.me.REG[3] = NIT_NULL;
13540 fra.me.REG[4] = NIT_NULL;
13541 fra.me.REG[5] = NIT_NULL;
13542 fra.me.REG[0] = p0;
13543 fra.me.REG[1] = p1;
13544 /* syntax/typing.nit:2147 */
13545 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13546 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13547 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13548 if (UNTAG_Bool(REGB0)) {
13549 goto label1;
13550 }
13551 /* syntax/typing.nit:2148 */
13552 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13553 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
13554 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13555 if (UNTAG_Bool(REGB0)) {
13556 goto label1;
13557 }
13558 /* syntax/typing.nit:2149 */
13559 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13560 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13561 /* syntax/typing.nit:2150 */
13562 fra.me.REG[3] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13563 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13564 /* syntax/typing.nit:2151 */
13565 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13566 if (UNTAG_Bool(REGB0)) {
13567 } else {
13568 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13569 REGB0 = REGB1;
13570 }
13571 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13572 if (UNTAG_Bool(REGB0)) {
13573 /* syntax/typing.nit:2152 */
13574 REGB0 = TAG_Int(5);
13575 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13576 if (!once_value_2) {
13577 fra.me.REG[5] = BOX_NativeString("Warning: Expression is a ");
13578 REGB0 = TAG_Int(25);
13579 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13580 once_value_2 = fra.me.REG[5];
13581 register_static_object(&once_value_2);
13582 } else fra.me.REG[5] = once_value_2;
13583 fra.me.REG[5] = fra.me.REG[5];
13584 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13585 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13586 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13587 if (!once_value_3) {
13588 fra.me.REG[2] = BOX_NativeString(", expected ");
13589 REGB0 = TAG_Int(11);
13590 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
13591 once_value_3 = fra.me.REG[2];
13592 register_static_object(&once_value_3);
13593 } else fra.me.REG[2] = once_value_3;
13594 fra.me.REG[2] = fra.me.REG[2];
13595 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13596 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13597 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13598 if (!once_value_4) {
13599 fra.me.REG[3] = BOX_NativeString(".");
13600 REGB0 = TAG_Int(1);
13601 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13602 once_value_4 = fra.me.REG[3];
13603 register_static_object(&once_value_4);
13604 } else fra.me.REG[3] = once_value_4;
13605 fra.me.REG[3] = fra.me.REG[3];
13606 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13607 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13608 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13609 }
13610 label1: while(0);
13611 stack_frame_head = fra.me.prev;
13612 return;
13613 }