Merge branch 'alexis/various-fixes' into wip
[nit.git] / c_src / typing._sep.c
1 /* This C file is generated by NIT to compile module typing. */
2 #include "typing._sep.h"
3 void typing___MMSrcModule___do_typing(val_t 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_typing;
8 fra.me.line = 25;
9 fra.me.meth = LOCATE_typing___MMSrcModule___do_typing;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 2;
12 fra.me.REG[0] = NIT_NULL;
13 fra.me.REG[1] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 fra.me.REG[1] = p1;
16 fra.me.REG[1] = NEW_TypingVisitor_typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
17 fra.me.REG[0] = CALL_syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
18 /* ./syntax//typing.nit:30 */
19 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
20 stack_frame_head = fra.me.prev;
21 return;
22 }
23 void typing___TypingVisitor___visit(val_t p0, val_t p1){
24 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
25 val_t REGB0;
26 val_t REGB1;
27 val_t tmp;
28 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
29 fra.me.file = LOCATE_typing;
30 fra.me.line = 41;
31 fra.me.meth = LOCATE_typing___TypingVisitor___visit;
32 fra.me.has_broke = 0;
33 fra.me.REG_size = 2;
34 fra.me.REG[0] = NIT_NULL;
35 fra.me.REG[1] = NIT_NULL;
36 fra.me.REG[0] = p0;
37 fra.me.REG[1] = p1;
38 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
39 /* ./syntax//typing.nit:43 */
40 if (UNTAG_Bool(REGB0)) {
41 } else {
42 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
43 if (UNTAG_Bool(REGB1)) {
44 REGB1 = TAG_Bool(false);
45 REGB0 = REGB1;
46 } else {
47 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
48 REGB0 = REGB1;
49 }
50 }
51 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
52 if (UNTAG_Bool(REGB0)) {
53 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
54 if (UNTAG_Bool(REGB0)) {
55 fprintf(stderr, "Reciever is null");
56 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 43);
57 nit_exit(1);
58 }
59 CALL_typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
60 }
61 stack_frame_head = fra.me.prev;
62 return;
63 }
64 val_t typing___TypingVisitor___variable_ctx(val_t p0){
65 struct {struct stack_frame_t me;} fra;
66 val_t REGB0;
67 val_t tmp;
68 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
69 fra.me.file = LOCATE_typing;
70 fra.me.line = 46;
71 fra.me.meth = LOCATE_typing___TypingVisitor___variable_ctx;
72 fra.me.has_broke = 0;
73 fra.me.REG_size = 1;
74 fra.me.REG[0] = NIT_NULL;
75 fra.me.REG[0] = p0;
76 fra.me.REG[0] = ATTR_typing___TypingVisitor____variable_ctx(fra.me.REG[0]);
77 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
78 /* ./syntax//typing.nit:47 */
79 if (UNTAG_Bool(REGB0)) {
80 } else {
81 fprintf(stderr, "Cast failed");
82 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 47);
83 nit_exit(1);
84 }
85 goto label1;
86 label1: while(0);
87 stack_frame_head = fra.me.prev;
88 return fra.me.REG[0];
89 }
90 void typing___TypingVisitor___variable_ctx__eq(val_t p0, val_t p1){
91 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
92 val_t tmp;
93 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
94 fra.me.file = LOCATE_typing;
95 fra.me.line = 48;
96 fra.me.meth = LOCATE_typing___TypingVisitor___variable_ctx__eq;
97 fra.me.has_broke = 0;
98 fra.me.REG_size = 2;
99 fra.me.REG[0] = NIT_NULL;
100 fra.me.REG[1] = NIT_NULL;
101 fra.me.REG[0] = p0;
102 fra.me.REG[1] = p1;
103 /* ./syntax//typing.nit:48 */
104 ATTR_typing___TypingVisitor____variable_ctx(fra.me.REG[0]) = fra.me.REG[1];
105 stack_frame_head = fra.me.prev;
106 return;
107 }
108 val_t typing___TypingVisitor___base_variable_ctx(val_t p0){
109 struct {struct stack_frame_t me;} fra;
110 val_t REGB0;
111 val_t tmp;
112 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
113 fra.me.file = LOCATE_typing;
114 fra.me.line = 50;
115 fra.me.meth = LOCATE_typing___TypingVisitor___base_variable_ctx;
116 fra.me.has_broke = 0;
117 fra.me.REG_size = 1;
118 fra.me.REG[0] = NIT_NULL;
119 fra.me.REG[0] = p0;
120 fra.me.REG[0] = ATTR_typing___TypingVisitor____base_variable_ctx(fra.me.REG[0]);
121 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
122 /* ./syntax//typing.nit:51 */
123 if (UNTAG_Bool(REGB0)) {
124 } else {
125 fprintf(stderr, "Cast failed");
126 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 51);
127 nit_exit(1);
128 }
129 goto label1;
130 label1: while(0);
131 stack_frame_head = fra.me.prev;
132 return fra.me.REG[0];
133 }
134 void typing___TypingVisitor___base_variable_ctx__eq(val_t p0, val_t p1){
135 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
136 val_t tmp;
137 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
138 fra.me.file = LOCATE_typing;
139 fra.me.line = 52;
140 fra.me.meth = LOCATE_typing___TypingVisitor___base_variable_ctx__eq;
141 fra.me.has_broke = 0;
142 fra.me.REG_size = 2;
143 fra.me.REG[0] = NIT_NULL;
144 fra.me.REG[1] = NIT_NULL;
145 fra.me.REG[0] = p0;
146 fra.me.REG[1] = p1;
147 /* ./syntax//typing.nit:52 */
148 ATTR_typing___TypingVisitor____base_variable_ctx(fra.me.REG[0]) = fra.me.REG[1];
149 stack_frame_head = fra.me.prev;
150 return;
151 }
152 val_t typing___TypingVisitor___escapable_ctx(val_t p0){
153 struct {struct stack_frame_t me;} fra;
154 val_t REGB0;
155 val_t tmp;
156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
157 fra.me.file = LOCATE_typing;
158 fra.me.line = 54;
159 fra.me.meth = LOCATE_typing___TypingVisitor___escapable_ctx;
160 fra.me.has_broke = 0;
161 fra.me.REG_size = 1;
162 fra.me.REG[0] = NIT_NULL;
163 fra.me.REG[0] = p0;
164 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____escapable_ctx(fra.me.REG[0])!=NIT_NULL);
165 /* ./syntax//typing.nit:54 */
166 if (UNTAG_Bool(REGB0)) {
167 } else {
168 fprintf(stderr, "Uninitialized attribute %s", "_escapable_ctx");
169 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 54);
170 nit_exit(1);
171 }
172 fra.me.REG[0] = ATTR_typing___TypingVisitor____escapable_ctx(fra.me.REG[0]);
173 stack_frame_head = fra.me.prev;
174 return fra.me.REG[0];
175 }
176 void typing___TypingVisitor___escapable_ctx__eq(val_t p0, val_t p1){
177 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
178 val_t tmp;
179 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
180 fra.me.file = LOCATE_typing;
181 fra.me.line = 54;
182 fra.me.meth = LOCATE_typing___TypingVisitor___escapable_ctx__eq;
183 fra.me.has_broke = 0;
184 fra.me.REG_size = 2;
185 fra.me.REG[0] = NIT_NULL;
186 fra.me.REG[1] = NIT_NULL;
187 fra.me.REG[0] = p0;
188 fra.me.REG[1] = p1;
189 /* ./syntax//typing.nit:54 */
190 ATTR_typing___TypingVisitor____escapable_ctx(fra.me.REG[0]) = fra.me.REG[1];
191 stack_frame_head = fra.me.prev;
192 return;
193 }
194 val_t typing___TypingVisitor___self_var(val_t p0){
195 struct {struct stack_frame_t me;} fra;
196 val_t REGB0;
197 val_t tmp;
198 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
199 fra.me.file = LOCATE_typing;
200 fra.me.line = 57;
201 fra.me.meth = LOCATE_typing___TypingVisitor___self_var;
202 fra.me.has_broke = 0;
203 fra.me.REG_size = 1;
204 fra.me.REG[0] = NIT_NULL;
205 fra.me.REG[0] = p0;
206 fra.me.REG[0] = ATTR_typing___TypingVisitor____self_var(fra.me.REG[0]);
207 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
208 /* ./syntax//typing.nit:58 */
209 if (UNTAG_Bool(REGB0)) {
210 } else {
211 fprintf(stderr, "Cast failed");
212 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 58);
213 nit_exit(1);
214 }
215 goto label1;
216 label1: while(0);
217 stack_frame_head = fra.me.prev;
218 return fra.me.REG[0];
219 }
220 void typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
221 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
222 val_t tmp;
223 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
224 fra.me.file = LOCATE_typing;
225 fra.me.line = 59;
226 fra.me.meth = LOCATE_typing___TypingVisitor___self_var__eq;
227 fra.me.has_broke = 0;
228 fra.me.REG_size = 2;
229 fra.me.REG[0] = NIT_NULL;
230 fra.me.REG[1] = NIT_NULL;
231 fra.me.REG[0] = p0;
232 fra.me.REG[1] = p1;
233 /* ./syntax//typing.nit:59 */
234 ATTR_typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
235 stack_frame_head = fra.me.prev;
236 return;
237 }
238 val_t typing___TypingVisitor___top_block(val_t p0){
239 struct {struct stack_frame_t me;} fra;
240 val_t tmp;
241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
242 fra.me.file = LOCATE_typing;
243 fra.me.line = 61;
244 fra.me.meth = LOCATE_typing___TypingVisitor___top_block;
245 fra.me.has_broke = 0;
246 fra.me.REG_size = 1;
247 fra.me.REG[0] = NIT_NULL;
248 fra.me.REG[0] = p0;
249 fra.me.REG[0] = ATTR_typing___TypingVisitor____top_block(fra.me.REG[0]);
250 /* ./syntax//typing.nit:61 */
251 stack_frame_head = fra.me.prev;
252 return fra.me.REG[0];
253 }
254 void typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
255 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
256 val_t tmp;
257 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
258 fra.me.file = LOCATE_typing;
259 fra.me.line = 61;
260 fra.me.meth = LOCATE_typing___TypingVisitor___top_block__eq;
261 fra.me.has_broke = 0;
262 fra.me.REG_size = 2;
263 fra.me.REG[0] = NIT_NULL;
264 fra.me.REG[1] = NIT_NULL;
265 fra.me.REG[0] = p0;
266 fra.me.REG[1] = p1;
267 /* ./syntax//typing.nit:61 */
268 ATTR_typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
269 stack_frame_head = fra.me.prev;
270 return;
271 }
272 val_t typing___TypingVisitor___explicit_super_init_calls(val_t p0){
273 struct {struct stack_frame_t me;} fra;
274 val_t tmp;
275 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
276 fra.me.file = LOCATE_typing;
277 fra.me.line = 64;
278 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_super_init_calls;
279 fra.me.has_broke = 0;
280 fra.me.REG_size = 1;
281 fra.me.REG[0] = NIT_NULL;
282 fra.me.REG[0] = p0;
283 fra.me.REG[0] = ATTR_typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
284 /* ./syntax//typing.nit:64 */
285 stack_frame_head = fra.me.prev;
286 return fra.me.REG[0];
287 }
288 void typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
289 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
290 val_t tmp;
291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
292 fra.me.file = LOCATE_typing;
293 fra.me.line = 64;
294 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_super_init_calls__eq;
295 fra.me.has_broke = 0;
296 fra.me.REG_size = 2;
297 fra.me.REG[0] = NIT_NULL;
298 fra.me.REG[1] = NIT_NULL;
299 fra.me.REG[0] = p0;
300 fra.me.REG[1] = p1;
301 /* ./syntax//typing.nit:64 */
302 ATTR_typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
303 stack_frame_head = fra.me.prev;
304 return;
305 }
306 val_t typing___TypingVisitor___explicit_other_init_call(val_t p0){
307 struct {struct stack_frame_t me;} fra;
308 val_t REGB0;
309 val_t tmp;
310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
311 fra.me.file = LOCATE_typing;
312 fra.me.line = 67;
313 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_other_init_call;
314 fra.me.has_broke = 0;
315 fra.me.REG_size = 1;
316 fra.me.REG[0] = NIT_NULL;
317 fra.me.REG[0] = p0;
318 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
319 /* ./syntax//typing.nit:67 */
320 if (UNTAG_Bool(REGB0)) {
321 } else {
322 fprintf(stderr, "Uninitialized attribute %s", "_explicit_other_init_call");
323 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 67);
324 nit_exit(1);
325 }
326 REGB0 = ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
327 stack_frame_head = fra.me.prev;
328 return REGB0;
329 }
330 void typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
331 struct {struct stack_frame_t me;} fra;
332 val_t REGB0;
333 val_t tmp;
334 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
335 fra.me.file = LOCATE_typing;
336 fra.me.line = 67;
337 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_other_init_call__eq;
338 fra.me.has_broke = 0;
339 fra.me.REG_size = 1;
340 fra.me.REG[0] = NIT_NULL;
341 fra.me.REG[0] = p0;
342 REGB0 = p1;
343 /* ./syntax//typing.nit:67 */
344 ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
345 stack_frame_head = fra.me.prev;
346 return;
347 }
348 void typing___TypingVisitor___use_if_true_variable_ctx(val_t p0, val_t p1){
349 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
350 val_t REGB0;
351 val_t REGB1;
352 val_t tmp;
353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
354 fra.me.file = LOCATE_typing;
355 fra.me.line = 70;
356 fra.me.meth = LOCATE_typing___TypingVisitor___use_if_true_variable_ctx;
357 fra.me.has_broke = 0;
358 fra.me.REG_size = 2;
359 fra.me.REG[0] = NIT_NULL;
360 fra.me.REG[1] = NIT_NULL;
361 fra.me.REG[0] = p0;
362 fra.me.REG[1] = p1;
363 fra.me.REG[1] = CALL_typing___AExpr___if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
364 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
365 /* ./syntax//typing.nit:74 */
366 if (UNTAG_Bool(REGB0)) {
367 } else {
368 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
369 if (UNTAG_Bool(REGB1)) {
370 REGB1 = TAG_Bool(false);
371 REGB0 = REGB1;
372 } else {
373 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
374 REGB0 = REGB1;
375 }
376 }
377 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
378 if (UNTAG_Bool(REGB0)) {
379 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
380 }
381 stack_frame_head = fra.me.prev;
382 return;
383 }
384 void typing___TypingVisitor___use_if_false_variable_ctx(val_t p0, val_t p1){
385 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
386 val_t REGB0;
387 val_t REGB1;
388 val_t tmp;
389 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
390 fra.me.file = LOCATE_typing;
391 fra.me.line = 77;
392 fra.me.meth = LOCATE_typing___TypingVisitor___use_if_false_variable_ctx;
393 fra.me.has_broke = 0;
394 fra.me.REG_size = 2;
395 fra.me.REG[0] = NIT_NULL;
396 fra.me.REG[1] = NIT_NULL;
397 fra.me.REG[0] = p0;
398 fra.me.REG[1] = p1;
399 fra.me.REG[1] = CALL_typing___AExpr___if_false_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
400 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
401 /* ./syntax//typing.nit:81 */
402 if (UNTAG_Bool(REGB0)) {
403 } else {
404 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
405 if (UNTAG_Bool(REGB1)) {
406 REGB1 = TAG_Bool(false);
407 REGB0 = REGB1;
408 } else {
409 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
410 REGB0 = REGB1;
411 }
412 }
413 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
414 if (UNTAG_Bool(REGB0)) {
415 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
416 }
417 stack_frame_head = fra.me.prev;
418 return;
419 }
420 val_t typing___TypingVisitor___once_count(val_t p0){
421 struct {struct stack_frame_t me;} fra;
422 val_t REGB0;
423 val_t tmp;
424 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
425 fra.me.file = LOCATE_typing;
426 fra.me.line = 84;
427 fra.me.meth = LOCATE_typing___TypingVisitor___once_count;
428 fra.me.has_broke = 0;
429 fra.me.REG_size = 1;
430 fra.me.REG[0] = NIT_NULL;
431 fra.me.REG[0] = p0;
432 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
433 /* ./syntax//typing.nit:84 */
434 if (UNTAG_Bool(REGB0)) {
435 } else {
436 fprintf(stderr, "Uninitialized attribute %s", "_once_count");
437 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 84);
438 nit_exit(1);
439 }
440 REGB0 = ATTR_typing___TypingVisitor____once_count(fra.me.REG[0]);
441 stack_frame_head = fra.me.prev;
442 return REGB0;
443 }
444 void typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
445 struct {struct stack_frame_t me;} fra;
446 val_t REGB0;
447 val_t tmp;
448 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
449 fra.me.file = LOCATE_typing;
450 fra.me.line = 84;
451 fra.me.meth = LOCATE_typing___TypingVisitor___once_count__eq;
452 fra.me.has_broke = 0;
453 fra.me.REG_size = 1;
454 fra.me.REG[0] = NIT_NULL;
455 fra.me.REG[0] = p0;
456 REGB0 = p1;
457 /* ./syntax//typing.nit:84 */
458 ATTR_typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
459 stack_frame_head = fra.me.prev;
460 return;
461 }
462 void typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
463 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_TypingVisitor].i;
464 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
465 val_t tmp;
466 if (init_table[itpos0]) return;
467 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
468 fra.me.file = LOCATE_typing;
469 fra.me.line = 87;
470 fra.me.meth = LOCATE_typing___TypingVisitor___init;
471 fra.me.has_broke = 0;
472 fra.me.REG_size = 3;
473 fra.me.REG[0] = NIT_NULL;
474 fra.me.REG[1] = NIT_NULL;
475 fra.me.REG[2] = NIT_NULL;
476 fra.me.REG[0] = p0;
477 fra.me.REG[1] = p1;
478 fra.me.REG[2] = p2;
479 /* ./syntax//typing.nit:87 */
480 CALL_syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
481 stack_frame_head = fra.me.prev;
482 init_table[itpos0] = 1;
483 return;
484 }
485 val_t typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
486 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
487 val_t REGB0;
488 val_t REGB1;
489 val_t REGB2;
490 val_t REGB3;
491 val_t REGB4;
492 val_t tmp;
493 static val_t once_value_3; /* Once value */
494 static val_t once_value_4; /* Once value */
495 static val_t once_value_6; /* Once value */
496 static val_t once_value_7; /* Once value */
497 static val_t once_value_8; /* Once value */
498 static val_t once_value_10; /* Once value */
499 static val_t once_value_11; /* Once value */
500 static val_t once_value_12; /* Once value */
501 static val_t once_value_13; /* Once value */
502 static val_t once_value_14; /* Once value */
503 static val_t once_value_15; /* Once value */
504 static val_t once_value_16; /* Once value */
505 static val_t once_value_18; /* Once value */
506 static val_t once_value_19; /* Once value */
507 static val_t once_value_20; /* Once value */
508 static val_t once_value_21; /* Once value */
509 static val_t once_value_22; /* Once value */
510 static val_t once_value_23; /* Once value */
511 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
512 fra.me.file = LOCATE_typing;
513 fra.me.line = 89;
514 fra.me.meth = LOCATE_typing___TypingVisitor___get_default_constructor_for;
515 fra.me.has_broke = 0;
516 fra.me.REG_size = 11;
517 fra.me.REG[0] = NIT_NULL;
518 fra.me.REG[1] = NIT_NULL;
519 fra.me.REG[2] = NIT_NULL;
520 fra.me.REG[3] = NIT_NULL;
521 fra.me.REG[4] = NIT_NULL;
522 fra.me.REG[5] = NIT_NULL;
523 fra.me.REG[6] = NIT_NULL;
524 fra.me.REG[7] = NIT_NULL;
525 fra.me.REG[8] = NIT_NULL;
526 fra.me.REG[9] = NIT_NULL;
527 fra.me.REG[10] = NIT_NULL;
528 fra.me.REG[0] = p0;
529 fra.me.REG[1] = p1;
530 fra.me.REG[2] = p2;
531 fra.me.REG[3] = p3;
532 fra.me.REG[4] = NEW_Array_array___Array___init();
533 fra.me.REG[5] = NEW_Array_array___Array___init();
534 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
535 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
536 /* ./syntax//typing.nit:96 */
537 if (UNTAG_Bool(REGB0)) {
538 fprintf(stderr, "Reciever is null");
539 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 96);
540 nit_exit(1);
541 }
542 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
543 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
544 fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
545 /* ./syntax//typing.nit:97 */
546 while(1) {
547 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
548 if (UNTAG_Bool(REGB1)) {
549 fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
550 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
551 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
552 /* ./syntax//typing.nit:98 */
553 if (UNTAG_Bool(REGB1)) {
554 goto label1;
555 }
556 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
557 fra.me.REG[8] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
558 fra.me.REG[8] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
559 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
560 /* ./syntax//typing.nit:101 */
561 if (UNTAG_Bool(REGB1)) {
562 } else {
563 fprintf(stderr, "Assert failed");
564 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 101);
565 nit_exit(1);
566 }
567 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
568 fra.me.REG[9] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[7])(fra.me.REG[7]);
569 fra.me.REG[10] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
570 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[9],fra.me.REG[10]));
571 /* ./syntax//typing.nit:103 */
572 if (UNTAG_Bool(REGB2)) {
573 } else {
574 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
575 REGB2 = REGB3;
576 }
577 if (UNTAG_Bool(REGB2)) {
578 REGB2 = TAG_Int(0);
579 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
580 /* ./syntax//typing.nit:104 */
581 if (UNTAG_Bool(REGB3)) {
582 } else {
583 REGB2 = TAG_Bool((REGB1)==(REGB2));
584 REGB3 = REGB2;
585 /* ./syntax//typing.nit:104 */
586 }
587 if (UNTAG_Bool(REGB3)) {
588 REGB3 = TAG_Bool(true);
589 } else {
590 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
591 if (UNTAG_Bool(REGB2)) {
592 } else {
593 REGB4 = TAG_Bool((REGB0)==(REGB1));
594 REGB2 = REGB4;
595 /* ./syntax//typing.nit:104 */
596 }
597 if (UNTAG_Bool(REGB2)) {
598 fra.me.REG[10] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
599 REGB2 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
600 if (UNTAG_Bool(REGB2)) {
601 fprintf(stderr, "Reciever is null");
602 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 104);
603 nit_exit(1);
604 }
605 REGB2 = CALL_static_type___MMSignature_____l(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
606 } else {
607 REGB4 = TAG_Bool(false);
608 REGB2 = REGB4;
609 }
610 REGB3 = REGB2;
611 }
612 if (UNTAG_Bool(REGB3)) {
613 fra.me.REG[8] = fra.me.REG[7];
614 /* ./syntax//typing.nit:105 */
615 goto label2;
616 } else {
617 /* ./syntax//typing.nit:107 */
618 array___Array___add(fra.me.REG[5], fra.me.REG[7]);
619 }
620 } else {
621 REGB3 = TAG_Int(0);
622 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
623 /* ./syntax//typing.nit:109 */
624 if (UNTAG_Bool(REGB2)) {
625 } else {
626 REGB3 = TAG_Bool((REGB1)==(REGB3));
627 REGB2 = REGB3;
628 /* ./syntax//typing.nit:109 */
629 }
630 if (UNTAG_Bool(REGB2)) {
631 fra.me.REG[10] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[7])(fra.me.REG[7]);
632 if (!once_value_3) {
633 if (!once_value_4) {
634 fra.me.REG[9] = BOX_NativeString("init");
635 REGB2 = TAG_Int(4);
636 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
637 once_value_4 = fra.me.REG[9];
638 register_static_object(&once_value_4);
639 } else fra.me.REG[9] = once_value_4;
640 fra.me.REG[9] = CALL_symbol___String___to_symbol(fra.me.REG[9])(fra.me.REG[9]);
641 once_value_3 = fra.me.REG[9];
642 register_static_object(&once_value_3);
643 } else fra.me.REG[9] = once_value_3;
644 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[10],fra.me.REG[9]));
645 if (UNTAG_Bool(REGB2)) {
646 } else {
647 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[9]);
648 REGB2 = REGB3;
649 }
650 } else {
651 REGB3 = TAG_Bool(false);
652 REGB2 = REGB3;
653 }
654 if (UNTAG_Bool(REGB2)) {
655 /* ./syntax//typing.nit:110 */
656 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
657 /* ./syntax//typing.nit:111 */
658 array___Array___add(fra.me.REG[5], fra.me.REG[7]);
659 } else {
660 /* ./syntax//typing.nit:113 */
661 array___Array___add(fra.me.REG[5], fra.me.REG[7]);
662 }
663 }
664 label1: while(0);
665 } else {
666 /* ./syntax//typing.nit:97 */
667 goto label5;
668 }
669 CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
670 }
671 label5: while(0);
672 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
673 /* ./../lib/standard//collection//array.nit:23 */
674 if (UNTAG_Bool(REGB0)) {
675 } else {
676 fprintf(stderr, "Uninitialized attribute %s", "_length");
677 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
678 nit_exit(1);
679 }
680 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
681 REGB2 = TAG_Int(1);
682 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
683 /* ./syntax//typing.nit:116 */
684 if (UNTAG_Bool(REGB3)) {
685 } else {
686 REGB2 = TAG_Bool((REGB0)==(REGB2));
687 REGB3 = REGB2;
688 /* ./syntax//typing.nit:116 */
689 }
690 if (UNTAG_Bool(REGB3)) {
691 fra.me.REG[6] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
692 fra.me.REG[8] = fra.me.REG[6];
693 /* ./syntax//typing.nit:117 */
694 goto label2;
695 } else {
696 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
697 /* ./../lib/standard//collection//array.nit:23 */
698 if (UNTAG_Bool(REGB3)) {
699 } else {
700 fprintf(stderr, "Uninitialized attribute %s", "_length");
701 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
702 nit_exit(1);
703 }
704 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
705 REGB2 = TAG_Int(0);
706 REGB2 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
707 /* ./syntax//typing.nit:118 */
708 if (UNTAG_Bool(REGB2)) {
709 fra.me.REG[6] = NEW_Array_array___Array___init();
710 fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
711 /* ./syntax//typing.nit:120 */
712 while(1) {
713 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
714 if (UNTAG_Bool(REGB2)) {
715 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
716 REGB2 = TAG_Int(5);
717 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB2);
718 /* ./syntax//typing.nit:121 */
719 if (!once_value_6) {
720 fra.me.REG[9] = BOX_NativeString("");
721 REGB2 = TAG_Int(0);
722 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
723 once_value_6 = fra.me.REG[9];
724 register_static_object(&once_value_6);
725 } else fra.me.REG[9] = once_value_6;
726 array___Array___add(fra.me.REG[7], fra.me.REG[9]);
727 fra.me.REG[9] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
728 array___Array___add(fra.me.REG[7], fra.me.REG[9]);
729 if (!once_value_7) {
730 fra.me.REG[9] = BOX_NativeString("");
731 REGB2 = TAG_Int(0);
732 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
733 once_value_7 = fra.me.REG[9];
734 register_static_object(&once_value_7);
735 } else fra.me.REG[9] = once_value_7;
736 array___Array___add(fra.me.REG[7], fra.me.REG[9]);
737 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
738 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
739 array___Array___add(fra.me.REG[7], fra.me.REG[3]);
740 if (!once_value_8) {
741 fra.me.REG[3] = BOX_NativeString("");
742 REGB2 = TAG_Int(0);
743 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB2);
744 once_value_8 = fra.me.REG[3];
745 register_static_object(&once_value_8);
746 } else fra.me.REG[3] = once_value_8;
747 array___Array___add(fra.me.REG[7], fra.me.REG[3]);
748 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
749 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
750 } else {
751 /* ./syntax//typing.nit:120 */
752 goto label9;
753 }
754 CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
755 }
756 label9: while(0);
757 REGB2 = TAG_Int(5);
758 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
759 /* ./syntax//typing.nit:123 */
760 if (!once_value_10) {
761 fra.me.REG[7] = BOX_NativeString("Error: Conflicting default constructor to call for ");
762 REGB2 = TAG_Int(51);
763 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
764 once_value_10 = fra.me.REG[7];
765 register_static_object(&once_value_10);
766 } else fra.me.REG[7] = once_value_10;
767 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
768 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
769 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
770 if (!once_value_11) {
771 fra.me.REG[7] = BOX_NativeString(": ");
772 REGB2 = TAG_Int(2);
773 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
774 once_value_11 = fra.me.REG[7];
775 register_static_object(&once_value_11);
776 } else fra.me.REG[7] = once_value_11;
777 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
778 if (!once_value_12) {
779 fra.me.REG[7] = BOX_NativeString(", ");
780 REGB2 = TAG_Int(2);
781 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
782 once_value_12 = fra.me.REG[7];
783 register_static_object(&once_value_12);
784 } else fra.me.REG[7] = once_value_12;
785 fra.me.REG[7] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
786 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
787 if (!once_value_13) {
788 fra.me.REG[7] = BOX_NativeString(".");
789 REGB2 = TAG_Int(1);
790 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
791 once_value_13 = fra.me.REG[7];
792 register_static_object(&once_value_13);
793 } else fra.me.REG[7] = once_value_13;
794 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
795 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
796 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
797 fra.me.REG[8] = NIT_NULL;
798 /* ./syntax//typing.nit:124 */
799 goto label2;
800 } else {
801 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
802 /* ./../lib/standard//collection//array.nit:23 */
803 if (UNTAG_Bool(REGB2)) {
804 } else {
805 fprintf(stderr, "Uninitialized attribute %s", "_length");
806 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
807 nit_exit(1);
808 }
809 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
810 REGB3 = TAG_Int(0);
811 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
812 /* ./syntax//typing.nit:125 */
813 if (UNTAG_Bool(REGB3)) {
814 fra.me.REG[4] = NEW_Array_array___Array___init();
815 fra.me.REG[5] = CALL_abstract_collection___Collection___iterator(fra.me.REG[5])(fra.me.REG[5]);
816 /* ./syntax//typing.nit:127 */
817 while(1) {
818 REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[5])(fra.me.REG[5]);
819 if (UNTAG_Bool(REGB3)) {
820 fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[5])(fra.me.REG[5]);
821 REGB3 = TAG_Int(5);
822 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB3);
823 /* ./syntax//typing.nit:128 */
824 if (!once_value_14) {
825 fra.me.REG[3] = BOX_NativeString("");
826 REGB3 = TAG_Int(0);
827 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
828 once_value_14 = fra.me.REG[3];
829 register_static_object(&once_value_14);
830 } else fra.me.REG[3] = once_value_14;
831 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
832 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[7])(fra.me.REG[7]);
833 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
834 if (!once_value_15) {
835 fra.me.REG[3] = BOX_NativeString("");
836 REGB3 = TAG_Int(0);
837 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
838 once_value_15 = fra.me.REG[3];
839 register_static_object(&once_value_15);
840 } else fra.me.REG[3] = once_value_15;
841 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
842 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
843 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
844 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
845 if (!once_value_16) {
846 fra.me.REG[7] = BOX_NativeString("");
847 REGB3 = TAG_Int(0);
848 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB3);
849 once_value_16 = fra.me.REG[7];
850 register_static_object(&once_value_16);
851 } else fra.me.REG[7] = once_value_16;
852 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
853 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
854 array___Array___add(fra.me.REG[4], fra.me.REG[6]);
855 } else {
856 /* ./syntax//typing.nit:127 */
857 goto label17;
858 }
859 CALL_abstract_collection___Iterator___next(fra.me.REG[5])(fra.me.REG[5]);
860 }
861 label17: while(0);
862 REGB3 = TAG_Int(5);
863 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB3);
864 /* ./syntax//typing.nit:130 */
865 if (!once_value_18) {
866 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constrctor in ");
867 REGB3 = TAG_Int(54);
868 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
869 once_value_18 = fra.me.REG[6];
870 register_static_object(&once_value_18);
871 } else fra.me.REG[6] = once_value_18;
872 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
873 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
874 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
875 if (!once_value_19) {
876 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
877 REGB3 = TAG_Int(27);
878 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
879 once_value_19 = fra.me.REG[6];
880 register_static_object(&once_value_19);
881 } else fra.me.REG[6] = once_value_19;
882 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
883 if (!once_value_20) {
884 fra.me.REG[6] = BOX_NativeString(", ");
885 REGB3 = TAG_Int(2);
886 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
887 once_value_20 = fra.me.REG[6];
888 register_static_object(&once_value_20);
889 } else fra.me.REG[6] = once_value_20;
890 fra.me.REG[6] = CALL_string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
891 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
892 if (!once_value_21) {
893 fra.me.REG[6] = BOX_NativeString(".");
894 REGB3 = TAG_Int(1);
895 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
896 once_value_21 = fra.me.REG[6];
897 register_static_object(&once_value_21);
898 } else fra.me.REG[6] = once_value_21;
899 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
900 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
901 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
902 fra.me.REG[8] = NIT_NULL;
903 /* ./syntax//typing.nit:131 */
904 goto label2;
905 } else {
906 REGB3 = TAG_Int(3);
907 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB3);
908 /* ./syntax//typing.nit:133 */
909 if (!once_value_22) {
910 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constrctor in ");
911 REGB3 = TAG_Int(54);
912 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
913 once_value_22 = fra.me.REG[6];
914 register_static_object(&once_value_22);
915 } else fra.me.REG[6] = once_value_22;
916 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
917 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
918 array___Array___add(fra.me.REG[5], fra.me.REG[2]);
919 if (!once_value_23) {
920 fra.me.REG[2] = BOX_NativeString(".");
921 REGB3 = TAG_Int(1);
922 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB3);
923 once_value_23 = fra.me.REG[2];
924 register_static_object(&once_value_23);
925 } else fra.me.REG[2] = once_value_23;
926 array___Array___add(fra.me.REG[5], fra.me.REG[2]);
927 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
928 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
929 fra.me.REG[8] = NIT_NULL;
930 /* ./syntax//typing.nit:134 */
931 goto label2;
932 }
933 }
934 }
935 label2: while(0);
936 stack_frame_head = fra.me.prev;
937 return fra.me.REG[8];
938 }
939 val_t typing___VarVariable___is_typed(val_t p0){
940 struct {struct stack_frame_t me;} fra;
941 val_t REGB0;
942 val_t tmp;
943 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
944 fra.me.file = LOCATE_typing;
945 fra.me.line = 140;
946 fra.me.meth = LOCATE_typing___VarVariable___is_typed;
947 fra.me.has_broke = 0;
948 fra.me.REG_size = 1;
949 fra.me.REG[0] = NIT_NULL;
950 fra.me.REG[0] = p0;
951 REGB0 = TAG_Bool(ATTR_typing___VarVariable____is_typed(fra.me.REG[0])!=NIT_NULL);
952 /* ./syntax//typing.nit:140 */
953 if (UNTAG_Bool(REGB0)) {
954 } else {
955 fprintf(stderr, "Uninitialized attribute %s", "_is_typed");
956 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 140);
957 nit_exit(1);
958 }
959 REGB0 = ATTR_typing___VarVariable____is_typed(fra.me.REG[0]);
960 stack_frame_head = fra.me.prev;
961 return REGB0;
962 }
963 void typing___ANode___accept_typing(val_t p0, val_t p1){
964 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
965 val_t tmp;
966 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
967 fra.me.file = LOCATE_typing;
968 fra.me.line = 146;
969 fra.me.meth = LOCATE_typing___ANode___accept_typing;
970 fra.me.has_broke = 0;
971 fra.me.REG_size = 2;
972 fra.me.REG[0] = NIT_NULL;
973 fra.me.REG[1] = NIT_NULL;
974 fra.me.REG[0] = p0;
975 fra.me.REG[1] = p1;
976 /* ./syntax//typing.nit:148 */
977 CALL_syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
978 /* ./syntax//typing.nit:149 */
979 CALL_typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
980 stack_frame_head = fra.me.prev;
981 return;
982 }
983 void typing___ANode___after_typing(val_t p0, val_t p1){
984 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
985 val_t tmp;
986 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
987 fra.me.file = LOCATE_typing;
988 fra.me.line = 151;
989 fra.me.meth = LOCATE_typing___ANode___after_typing;
990 fra.me.has_broke = 0;
991 fra.me.REG_size = 2;
992 fra.me.REG[0] = NIT_NULL;
993 fra.me.REG[1] = NIT_NULL;
994 fra.me.REG[0] = p0;
995 fra.me.REG[1] = p1;
996 /* ./syntax//typing.nit:151 */
997 stack_frame_head = fra.me.prev;
998 return;
999 }
1000 void typing___AClassdef___accept_typing(val_t p0, val_t p1){
1001 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1002 val_t REGB0;
1003 val_t tmp;
1004 static val_t once_value_1; /* Once value */
1005 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1006 fra.me.file = LOCATE_typing;
1007 fra.me.line = 155;
1008 fra.me.meth = LOCATE_typing___AClassdef___accept_typing;
1009 fra.me.has_broke = 0;
1010 fra.me.REG_size = 5;
1011 fra.me.REG[0] = NIT_NULL;
1012 fra.me.REG[1] = NIT_NULL;
1013 fra.me.REG[2] = NIT_NULL;
1014 fra.me.REG[3] = NIT_NULL;
1015 fra.me.REG[4] = NIT_NULL;
1016 fra.me.REG[0] = p0;
1017 fra.me.REG[1] = p1;
1018 fra.me.REG[2] = fra.me.REG[0];
1019 fra.me.REG[3] = fra.me.REG[1];
1020 fra.me.REG[4] = NEW_RootVariableContext_control_flow___RootVariableContext___init(fra.me.REG[3], fra.me.REG[2]);
1021 /* ./syntax//typing.nit:157 */
1022 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1023 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1024 /* ./syntax//typing.nit:158 */
1025 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1026 /* ./syntax//typing.nit:159 */
1027 if (!once_value_1) {
1028 fra.me.REG[4] = BOX_NativeString("self");
1029 REGB0 = TAG_Int(4);
1030 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1031 once_value_1 = fra.me.REG[4];
1032 register_static_object(&once_value_1);
1033 } else fra.me.REG[4] = once_value_1;
1034 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1035 fra.me.REG[4] = NEW_ParamVariable_syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1036 CALL_typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1037 fra.me.REG[3] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1038 fra.me.REG[2] = CALL_syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1039 fra.me.REG[2] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1040 /* ./syntax//typing.nit:160 */
1041 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1042 /* ./syntax//typing.nit:161 */
1043 CALL_SUPER_typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1044 stack_frame_head = fra.me.prev;
1045 return;
1046 }
1047 val_t typing___APropdef___self_var(val_t p0){
1048 struct {struct stack_frame_t me;} fra;
1049 val_t REGB0;
1050 val_t tmp;
1051 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1052 fra.me.file = LOCATE_typing;
1053 fra.me.line = 166;
1054 fra.me.meth = LOCATE_typing___APropdef___self_var;
1055 fra.me.has_broke = 0;
1056 fra.me.REG_size = 1;
1057 fra.me.REG[0] = NIT_NULL;
1058 fra.me.REG[0] = p0;
1059 fra.me.REG[0] = ATTR_typing___APropdef____self_var(fra.me.REG[0]);
1060 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1061 /* ./syntax//typing.nit:166 */
1062 if (UNTAG_Bool(REGB0)) {
1063 } else {
1064 fprintf(stderr, "Cast failed");
1065 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 166);
1066 nit_exit(1);
1067 }
1068 goto label1;
1069 label1: while(0);
1070 stack_frame_head = fra.me.prev;
1071 return fra.me.REG[0];
1072 }
1073 void typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1074 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1075 val_t REGB0;
1076 val_t REGB1;
1077 val_t tmp;
1078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1079 fra.me.file = LOCATE_typing;
1080 fra.me.line = 171;
1081 fra.me.meth = LOCATE_typing___AAttrPropdef___accept_typing;
1082 fra.me.has_broke = 0;
1083 fra.me.REG_size = 6;
1084 fra.me.REG[0] = NIT_NULL;
1085 fra.me.REG[1] = NIT_NULL;
1086 fra.me.REG[2] = NIT_NULL;
1087 fra.me.REG[3] = NIT_NULL;
1088 fra.me.REG[4] = NIT_NULL;
1089 fra.me.REG[5] = NIT_NULL;
1090 fra.me.REG[0] = p0;
1091 fra.me.REG[1] = p1;
1092 fra.me.REG[2] = fra.me.REG[0];
1093 fra.me.REG[3] = fra.me.REG[1];
1094 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1095 fra.me.REG[5] = CALL_control_flow___VariableContext___sub(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1096 /* ./syntax//typing.nit:174 */
1097 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1098 fra.me.REG[5] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1099 /* ./syntax//typing.nit:175 */
1100 ATTR_typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[5];
1101 /* ./syntax//typing.nit:176 */
1102 CALL_SUPER_typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1103 fra.me.REG[1] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1104 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1105 /* ./syntax//typing.nit:177 */
1106 if (UNTAG_Bool(REGB0)) {
1107 } else {
1108 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1109 if (UNTAG_Bool(REGB1)) {
1110 REGB1 = TAG_Bool(false);
1111 REGB0 = REGB1;
1112 } else {
1113 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1114 REGB0 = REGB1;
1115 }
1116 }
1117 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1118 if (UNTAG_Bool(REGB0)) {
1119 fra.me.REG[1] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1120 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
1121 /* ./syntax//typing.nit:178 */
1122 if (UNTAG_Bool(REGB0)) {
1123 } else {
1124 fprintf(stderr, "Cast failed");
1125 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 178);
1126 nit_exit(1);
1127 }
1128 fra.me.REG[2] = CALL_syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1129 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1130 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1131 if (UNTAG_Bool(REGB0)) {
1132 fprintf(stderr, "Reciever is null");
1133 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 178);
1134 nit_exit(1);
1135 }
1136 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1137 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMType, ID_MMType)) /*cast MMType*/;
1138 if (UNTAG_Bool(REGB0)) {
1139 } else {
1140 fprintf(stderr, "Cast failed");
1141 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 178);
1142 nit_exit(1);
1143 }
1144 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1145 }
1146 /* ./syntax//typing.nit:180 */
1147 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1148 stack_frame_head = fra.me.prev;
1149 return;
1150 }
1151 void typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1152 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1153 val_t tmp;
1154 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1155 fra.me.file = LOCATE_typing;
1156 fra.me.line = 185;
1157 fra.me.meth = LOCATE_typing___AMethPropdef___accept_typing;
1158 fra.me.has_broke = 0;
1159 fra.me.REG_size = 6;
1160 fra.me.REG[0] = NIT_NULL;
1161 fra.me.REG[1] = NIT_NULL;
1162 fra.me.REG[2] = NIT_NULL;
1163 fra.me.REG[3] = NIT_NULL;
1164 fra.me.REG[4] = NIT_NULL;
1165 fra.me.REG[5] = NIT_NULL;
1166 fra.me.REG[0] = p0;
1167 fra.me.REG[1] = p1;
1168 fra.me.REG[2] = fra.me.REG[0];
1169 fra.me.REG[3] = fra.me.REG[1];
1170 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1171 fra.me.REG[5] = CALL_control_flow___VariableContext___sub(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1172 /* ./syntax//typing.nit:188 */
1173 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1174 fra.me.REG[5] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1175 /* ./syntax//typing.nit:189 */
1176 ATTR_typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[5];
1177 /* ./syntax//typing.nit:190 */
1178 CALL_SUPER_typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1179 /* ./syntax//typing.nit:191 */
1180 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1181 stack_frame_head = fra.me.prev;
1182 return;
1183 }
1184 void typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1185 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1186 val_t REGB0;
1187 val_t REGB1;
1188 val_t REGB2;
1189 val_t tmp;
1190 static val_t once_value_1; /* Once value */
1191 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1192 fra.me.file = LOCATE_typing;
1193 fra.me.line = 196;
1194 fra.me.meth = LOCATE_typing___AConcreteMethPropdef___after_typing;
1195 fra.me.has_broke = 0;
1196 fra.me.REG_size = 4;
1197 fra.me.REG[0] = NIT_NULL;
1198 fra.me.REG[1] = NIT_NULL;
1199 fra.me.REG[2] = NIT_NULL;
1200 fra.me.REG[3] = NIT_NULL;
1201 fra.me.REG[0] = p0;
1202 fra.me.REG[1] = p1;
1203 fra.me.REG[2] = fra.me.REG[0];
1204 fra.me.REG[3] = fra.me.REG[1];
1205 /* ./syntax//typing.nit:198 */
1206 CALL_SUPER_typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1207 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1208 REGB0 = CALL_control_flow___VariableContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1209 REGB1 = TAG_Bool(false);
1210 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1211 /* ./syntax//typing.nit:199 */
1212 if (UNTAG_Bool(REGB2)) {
1213 } else {
1214 REGB1 = TAG_Bool((REGB0)==(REGB1));
1215 REGB2 = REGB1;
1216 /* ./syntax//typing.nit:199 */
1217 }
1218 if (UNTAG_Bool(REGB2)) {
1219 fra.me.REG[1] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1220 fra.me.REG[1] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1221 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1222 if (UNTAG_Bool(REGB2)) {
1223 fprintf(stderr, "Reciever is null");
1224 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 199);
1225 nit_exit(1);
1226 }
1227 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1228 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1229 if (UNTAG_Bool(REGB2)) {
1230 } else {
1231 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1232 if (UNTAG_Bool(REGB1)) {
1233 REGB1 = TAG_Bool(false);
1234 REGB2 = REGB1;
1235 } else {
1236 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1237 REGB2 = REGB1;
1238 }
1239 }
1240 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1241 } else {
1242 REGB1 = TAG_Bool(false);
1243 REGB2 = REGB1;
1244 }
1245 if (UNTAG_Bool(REGB2)) {
1246 /* ./syntax//typing.nit:200 */
1247 if (!once_value_1) {
1248 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1249 REGB2 = TAG_Int(78);
1250 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
1251 once_value_1 = fra.me.REG[1];
1252 register_static_object(&once_value_1);
1253 } else fra.me.REG[1] = once_value_1;
1254 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1255 }
1256 stack_frame_head = fra.me.prev;
1257 return;
1258 }
1259 void typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1260 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1261 val_t REGB0;
1262 val_t tmp;
1263 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1264 fra.me.file = LOCATE_typing;
1265 fra.me.line = 206;
1266 fra.me.meth = LOCATE_typing___AConcreteInitPropdef___accept_typing;
1267 fra.me.has_broke = 0;
1268 fra.me.REG_size = 5;
1269 fra.me.REG[0] = NIT_NULL;
1270 fra.me.REG[1] = NIT_NULL;
1271 fra.me.REG[2] = NIT_NULL;
1272 fra.me.REG[3] = NIT_NULL;
1273 fra.me.REG[4] = NIT_NULL;
1274 fra.me.REG[0] = p0;
1275 fra.me.REG[1] = p1;
1276 fra.me.REG[2] = fra.me.REG[0];
1277 fra.me.REG[3] = fra.me.REG[1];
1278 fra.me.REG[4] = CALL_parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1279 /* ./syntax//typing.nit:208 */
1280 CALL_typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1281 fra.me.REG[2] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1282 /* ./syntax//typing.nit:209 */
1283 CALL_typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1284 REGB0 = TAG_Bool(false);
1285 /* ./syntax//typing.nit:210 */
1286 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1287 /* ./syntax//typing.nit:211 */
1288 CALL_SUPER_typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1289 stack_frame_head = fra.me.prev;
1290 return;
1291 }
1292 void typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1293 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1294 val_t REGB0;
1295 val_t REGB1;
1296 val_t REGB2;
1297 val_t REGB3;
1298 val_t REGB4;
1299 val_t REGB5;
1300 val_t tmp;
1301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1302 fra.me.file = LOCATE_typing;
1303 fra.me.line = 214;
1304 fra.me.meth = LOCATE_typing___AConcreteInitPropdef___after_typing;
1305 fra.me.has_broke = 0;
1306 fra.me.REG_size = 7;
1307 fra.me.REG[0] = NIT_NULL;
1308 fra.me.REG[1] = NIT_NULL;
1309 fra.me.REG[2] = NIT_NULL;
1310 fra.me.REG[3] = NIT_NULL;
1311 fra.me.REG[4] = NIT_NULL;
1312 fra.me.REG[5] = NIT_NULL;
1313 fra.me.REG[6] = NIT_NULL;
1314 fra.me.REG[0] = p0;
1315 fra.me.REG[1] = p1;
1316 fra.me.REG[2] = fra.me.REG[0];
1317 fra.me.REG[3] = fra.me.REG[1];
1318 /* ./syntax//typing.nit:216 */
1319 CALL_SUPER_typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1320 REGB0 = CALL_typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1321 /* ./syntax//typing.nit:217 */
1322 if (UNTAG_Bool(REGB0)) {
1323 REGB0 = TAG_Bool(true);
1324 } else {
1325 fra.me.REG[1] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1326 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1327 fra.me.REG[1] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1328 fra.me.REG[0] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1329 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
1330 if (UNTAG_Bool(REGB1)) {
1331 } else {
1332 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1333 REGB1 = REGB2;
1334 }
1335 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1336 REGB0 = REGB1;
1337 }
1338 if (UNTAG_Bool(REGB0)) {
1339 } else {
1340 REGB0 = TAG_Int(0);
1341 fra.me.REG[0] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1342 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1343 /* ./../lib/standard//collection//array.nit:23 */
1344 if (UNTAG_Bool(REGB1)) {
1345 } else {
1346 fprintf(stderr, "Uninitialized attribute %s", "_length");
1347 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
1348 nit_exit(1);
1349 }
1350 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1351 fra.me.REG[0] = NIT_NULL;
1352 fra.me.REG[1] = NIT_NULL;
1353 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1354 /* ./syntax//typing.nit:224 */
1355 if (UNTAG_Bool(REGB2)) {
1356 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1357 REGB2 = REGB0;
1358 REGB3 = TAG_Int(0);
1359 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1360 /* ./../lib/standard//collection//array.nit:233 */
1361 if (UNTAG_Bool(REGB3)) {
1362 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1363 if (UNTAG_Bool(REGB3)) {
1364 } else {
1365 fprintf(stderr, "Uninitialized attribute %s", "_length");
1366 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1367 nit_exit(1);
1368 }
1369 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1370 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1371 /* ./../lib/standard//collection//array.nit:233 */
1372 } else {
1373 REGB4 = TAG_Bool(false);
1374 REGB3 = REGB4;
1375 }
1376 if (UNTAG_Bool(REGB3)) {
1377 } else {
1378 fprintf(stderr, "Assert %s failed", "'index'");
1379 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1380 nit_exit(1);
1381 }
1382 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
1383 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1384 /* ./../lib/standard//collection//array.nit:234 */
1385 if (UNTAG_Bool(REGB3)) {
1386 fprintf(stderr, "Reciever is null");
1387 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
1388 nit_exit(1);
1389 }
1390 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
1391 /* ./../lib/standard//collection//array.nit:234 */
1392 goto label1;
1393 label1: while(0);
1394 fra.me.REG[0] = fra.me.REG[4];
1395 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1396 /* ./syntax//typing.nit:226 */
1397 if (UNTAG_Bool(REGB2)) {
1398 fprintf(stderr, "Reciever is null");
1399 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 226);
1400 nit_exit(1);
1401 }
1402 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1403 fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1404 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1405 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[3])(fra.me.REG[3]);
1406 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1407 fra.me.REG[1] = fra.me.REG[5];
1408 }
1409 REGB2 = TAG_Int(0);
1410 /* ./syntax//typing.nit:229 */
1411 while(1) {
1412 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1413 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1414 fra.me.REG[5] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
1415 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1416 /* ./../lib/standard//collection//array.nit:23 */
1417 if (UNTAG_Bool(REGB3)) {
1418 } else {
1419 fprintf(stderr, "Uninitialized attribute %s", "_length");
1420 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
1421 nit_exit(1);
1422 }
1423 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
1424 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1425 /* ./syntax//typing.nit:229 */
1426 if (UNTAG_Bool(REGB3)) {
1427 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1428 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1429 fra.me.REG[5] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
1430 REGB3 = REGB2;
1431 REGB4 = TAG_Int(0);
1432 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1433 /* ./../lib/standard//collection//array.nit:233 */
1434 if (UNTAG_Bool(REGB4)) {
1435 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1436 if (UNTAG_Bool(REGB4)) {
1437 } else {
1438 fprintf(stderr, "Uninitialized attribute %s", "_length");
1439 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1440 nit_exit(1);
1441 }
1442 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
1443 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1444 /* ./../lib/standard//collection//array.nit:233 */
1445 } else {
1446 REGB5 = TAG_Bool(false);
1447 REGB4 = REGB5;
1448 }
1449 if (UNTAG_Bool(REGB4)) {
1450 } else {
1451 fprintf(stderr, "Assert %s failed", "'index'");
1452 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1453 nit_exit(1);
1454 }
1455 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[5]);
1456 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1457 /* ./../lib/standard//collection//array.nit:234 */
1458 if (UNTAG_Bool(REGB4)) {
1459 fprintf(stderr, "Reciever is null");
1460 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
1461 nit_exit(1);
1462 }
1463 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1464 /* ./../lib/standard//collection//array.nit:234 */
1465 goto label2;
1466 label2: while(0);
1467 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1468 REGB3 = CALL_abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
1469 /* ./syntax//typing.nit:231 */
1470 if (UNTAG_Bool(REGB3)) {
1471 REGB3 = TAG_Bool(true);
1472 } else {
1473 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1474 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[4])(fra.me.REG[4]);
1475 REGB3 = REGB4;
1476 }
1477 if (UNTAG_Bool(REGB3)) {
1478 REGB3 = TAG_Bool(true);
1479 } else {
1480 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1481 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1482 REGB3 = REGB4;
1483 }
1484 if (UNTAG_Bool(REGB3)) {
1485 REGB3 = TAG_Int(1);
1486 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1487 REGB2 = REGB3;
1488 /* ./syntax//typing.nit:232 */
1489 } else {
1490 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1491 /* ./syntax//typing.nit:233 */
1492 if (UNTAG_Bool(REGB3)) {
1493 } else {
1494 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1495 if (UNTAG_Bool(REGB4)) {
1496 REGB4 = TAG_Bool(false);
1497 REGB3 = REGB4;
1498 } else {
1499 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1500 REGB3 = REGB4;
1501 }
1502 }
1503 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1504 if (UNTAG_Bool(REGB3)) {
1505 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1506 REGB3 = CALL_partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1507 if (UNTAG_Bool(REGB3)) {
1508 REGB3 = TAG_Bool(true);
1509 } else {
1510 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1511 if (UNTAG_Bool(REGB4)) {
1512 fprintf(stderr, "Reciever is null");
1513 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 233);
1514 nit_exit(1);
1515 }
1516 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1517 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1518 REGB3 = REGB4;
1519 }
1520 } else {
1521 REGB4 = TAG_Bool(false);
1522 REGB3 = REGB4;
1523 }
1524 if (UNTAG_Bool(REGB3)) {
1525 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[5],fra.me.REG[1]));
1526 /* ./syntax//typing.nit:234 */
1527 if (UNTAG_Bool(REGB3)) {
1528 } else {
1529 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1530 REGB3 = REGB4;
1531 }
1532 if (UNTAG_Bool(REGB3)) {
1533 REGB3 = TAG_Int(1);
1534 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1535 REGB2 = REGB3;
1536 /* ./syntax//typing.nit:234 */
1537 }
1538 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1539 REGB3 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1540 /* ./syntax//typing.nit:235 */
1541 if (UNTAG_Bool(REGB3)) {
1542 } else {
1543 fprintf(stderr, "Cast failed");
1544 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 235);
1545 nit_exit(1);
1546 }
1547 array___Array___add(fra.me.REG[4], fra.me.REG[0]);
1548 REGB3 = TAG_Int(1);
1549 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1550 REGB0 = REGB3;
1551 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1552 /* ./syntax//typing.nit:237 */
1553 if (UNTAG_Bool(REGB3)) {
1554 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1555 REGB3 = REGB0;
1556 REGB4 = TAG_Int(0);
1557 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1558 /* ./../lib/standard//collection//array.nit:233 */
1559 if (UNTAG_Bool(REGB4)) {
1560 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1561 if (UNTAG_Bool(REGB4)) {
1562 } else {
1563 fprintf(stderr, "Uninitialized attribute %s", "_length");
1564 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1565 nit_exit(1);
1566 }
1567 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1568 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1569 /* ./../lib/standard//collection//array.nit:233 */
1570 } else {
1571 REGB5 = TAG_Bool(false);
1572 REGB4 = REGB5;
1573 }
1574 if (UNTAG_Bool(REGB4)) {
1575 } else {
1576 fprintf(stderr, "Assert %s failed", "'index'");
1577 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
1578 nit_exit(1);
1579 }
1580 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
1581 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1582 /* ./../lib/standard//collection//array.nit:234 */
1583 if (UNTAG_Bool(REGB4)) {
1584 fprintf(stderr, "Reciever is null");
1585 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
1586 nit_exit(1);
1587 }
1588 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
1589 /* ./../lib/standard//collection//array.nit:234 */
1590 goto label3;
1591 label3: while(0);
1592 fra.me.REG[0] = fra.me.REG[4];
1593 REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1594 /* ./syntax//typing.nit:239 */
1595 if (UNTAG_Bool(REGB3)) {
1596 fprintf(stderr, "Reciever is null");
1597 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 239);
1598 nit_exit(1);
1599 }
1600 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1601 fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1602 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1603 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[3])(fra.me.REG[3]);
1604 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
1605 fra.me.REG[1] = fra.me.REG[6];
1606 } else {
1607 fra.me.REG[0] = NIT_NULL;
1608 fra.me.REG[1] = NIT_NULL;
1609 /* ./syntax//typing.nit:242 */
1610 }
1611 } else {
1612 fra.me.REG[6] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1613 fra.me.REG[6] = CALL_typing___TypingVisitor___get_default_constructor_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[5], fra.me.REG[6]);
1614 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1615 /* ./syntax//typing.nit:246 */
1616 if (UNTAG_Bool(REGB3)) {
1617 } else {
1618 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1619 if (UNTAG_Bool(REGB4)) {
1620 REGB4 = TAG_Bool(false);
1621 REGB3 = REGB4;
1622 } else {
1623 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1624 REGB3 = REGB4;
1625 }
1626 }
1627 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1628 if (UNTAG_Bool(REGB3)) {
1629 fra.me.REG[5] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1630 /* ./syntax//typing.nit:247 */
1631 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
1632 }
1633 REGB3 = TAG_Int(1);
1634 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1635 REGB2 = REGB3;
1636 /* ./syntax//typing.nit:249 */
1637 }
1638 }
1639 } else {
1640 /* ./syntax//typing.nit:229 */
1641 goto label4;
1642 }
1643 }
1644 label4: while(0);
1645 }
1646 stack_frame_head = fra.me.prev;
1647 return;
1648 }
1649 void typing___AParam___after_typing(val_t p0, val_t p1){
1650 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1651 val_t tmp;
1652 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1653 fra.me.file = LOCATE_typing;
1654 fra.me.line = 257;
1655 fra.me.meth = LOCATE_typing___AParam___after_typing;
1656 fra.me.has_broke = 0;
1657 fra.me.REG_size = 2;
1658 fra.me.REG[0] = NIT_NULL;
1659 fra.me.REG[1] = NIT_NULL;
1660 fra.me.REG[0] = p0;
1661 fra.me.REG[1] = p1;
1662 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
1663 fra.me.REG[0] = CALL_syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1664 /* ./syntax//typing.nit:259 */
1665 CALL_control_flow___VariableContext___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1666 stack_frame_head = fra.me.prev;
1667 return;
1668 }
1669 void typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
1670 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1671 val_t REGB0;
1672 val_t REGB1;
1673 val_t REGB2;
1674 val_t tmp;
1675 static val_t once_value_1; /* Once value */
1676 static val_t once_value_2; /* Once value */
1677 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1678 fra.me.file = LOCATE_typing;
1679 fra.me.line = 267;
1680 fra.me.meth = LOCATE_typing___AClosureDecl___accept_typing;
1681 fra.me.has_broke = 0;
1682 fra.me.REG_size = 10;
1683 fra.me.REG[0] = NIT_NULL;
1684 fra.me.REG[1] = NIT_NULL;
1685 fra.me.REG[2] = NIT_NULL;
1686 fra.me.REG[3] = NIT_NULL;
1687 fra.me.REG[4] = NIT_NULL;
1688 fra.me.REG[5] = NIT_NULL;
1689 fra.me.REG[6] = NIT_NULL;
1690 fra.me.REG[7] = NIT_NULL;
1691 fra.me.REG[8] = NIT_NULL;
1692 fra.me.REG[9] = NIT_NULL;
1693 fra.me.REG[0] = p0;
1694 fra.me.REG[1] = p1;
1695 fra.me.REG[2] = fra.me.REG[0];
1696 fra.me.REG[3] = fra.me.REG[1];
1697 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1698 fra.me.REG[5] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1699 /* ./syntax//typing.nit:270 */
1700 CALL_control_flow___VariableContext___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1701 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1702 fra.me.REG[4] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1703 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1704 /* ./syntax//typing.nit:274 */
1705 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1706 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1707 fra.me.REG[6] = CALL_control_flow___VariableContext___sub(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
1708 /* ./syntax//typing.nit:275 */
1709 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1710 fra.me.REG[6] = NIT_NULL;
1711 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
1712 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
1713 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1714 /* ./syntax//typing.nit:278 */
1715 if (UNTAG_Bool(REGB0)) {
1716 fprintf(stderr, "Reciever is null");
1717 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 278);
1718 nit_exit(1);
1719 }
1720 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
1721 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1722 /* ./syntax//typing.nit:279 */
1723 if (UNTAG_Bool(REGB0)) {
1724 } else {
1725 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1726 if (UNTAG_Bool(REGB1)) {
1727 REGB1 = TAG_Bool(false);
1728 REGB0 = REGB1;
1729 } else {
1730 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1731 REGB0 = REGB1;
1732 }
1733 }
1734 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1735 if (UNTAG_Bool(REGB0)) {
1736 fra.me.REG[8] = NEW_Array_array___Array___init();
1737 fra.me.REG[6] = fra.me.REG[8];
1738 }
1739 fra.me.REG[8] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1740 fra.me.REG[8] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
1741 fra.me.REG[8] = NEW_EscapableClosure_escape___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
1742 /* ./syntax//typing.nit:281 */
1743 ATTR_typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
1744 fra.me.REG[9] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1745 /* ./syntax//typing.nit:282 */
1746 CALL_escape___EscapableContext___push(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
1747 /* ./syntax//typing.nit:284 */
1748 CALL_SUPER_typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1749 fra.me.REG[1] = CALL_parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1750 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1751 /* ./syntax//typing.nit:286 */
1752 if (UNTAG_Bool(REGB0)) {
1753 } else {
1754 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1755 if (UNTAG_Bool(REGB1)) {
1756 REGB1 = TAG_Bool(false);
1757 REGB0 = REGB1;
1758 } else {
1759 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1760 REGB0 = REGB1;
1761 }
1762 }
1763 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1764 if (UNTAG_Bool(REGB0)) {
1765 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1766 REGB0 = CALL_control_flow___VariableContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1767 REGB1 = TAG_Bool(false);
1768 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1769 /* ./syntax//typing.nit:287 */
1770 if (UNTAG_Bool(REGB2)) {
1771 } else {
1772 REGB1 = TAG_Bool((REGB0)==(REGB1));
1773 REGB2 = REGB1;
1774 /* ./syntax//typing.nit:287 */
1775 }
1776 if (UNTAG_Bool(REGB2)) {
1777 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1778 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
1779 fra.me.REG[1] = CALL_static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
1780 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1781 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1782 /* ./syntax//typing.nit:288 */
1783 if (UNTAG_Bool(REGB2)) {
1784 } else {
1785 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1786 if (UNTAG_Bool(REGB1)) {
1787 REGB1 = TAG_Bool(false);
1788 REGB2 = REGB1;
1789 } else {
1790 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1791 REGB2 = REGB1;
1792 }
1793 }
1794 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1795 if (UNTAG_Bool(REGB2)) {
1796 /* ./syntax//typing.nit:289 */
1797 if (!once_value_1) {
1798 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
1799 REGB2 = TAG_Int(77);
1800 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
1801 once_value_1 = fra.me.REG[1];
1802 register_static_object(&once_value_1);
1803 } else fra.me.REG[1] = once_value_1;
1804 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1805 } else {
1806 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1807 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
1808 REGB2 = CALL_static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
1809 /* ./syntax//typing.nit:290 */
1810 if (UNTAG_Bool(REGB2)) {
1811 fra.me.REG[8] = CALL_escape___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
1812 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
1813 if (UNTAG_Bool(REGB2)) {
1814 } else {
1815 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
1816 if (UNTAG_Bool(REGB1)) {
1817 REGB1 = TAG_Bool(false);
1818 REGB2 = REGB1;
1819 } else {
1820 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
1821 REGB2 = REGB1;
1822 }
1823 }
1824 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1825 } else {
1826 REGB1 = TAG_Bool(false);
1827 REGB2 = REGB1;
1828 }
1829 if (UNTAG_Bool(REGB2)) {
1830 /* ./syntax//typing.nit:291 */
1831 if (!once_value_2) {
1832 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
1833 REGB2 = TAG_Int(80);
1834 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
1835 once_value_2 = fra.me.REG[8];
1836 register_static_object(&once_value_2);
1837 } else fra.me.REG[8] = once_value_2;
1838 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
1839 }
1840 }
1841 }
1842 }
1843 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1844 /* ./syntax//typing.nit:295 */
1845 if (UNTAG_Bool(REGB2)) {
1846 } else {
1847 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1848 if (UNTAG_Bool(REGB1)) {
1849 REGB1 = TAG_Bool(false);
1850 REGB2 = REGB1;
1851 } else {
1852 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1853 REGB2 = REGB1;
1854 }
1855 }
1856 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
1857 if (UNTAG_Bool(REGB2)) {
1858 fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
1859 while(1) {
1860 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
1861 if (UNTAG_Bool(REGB2)) {
1862 fra.me.REG[8] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
1863 /* ./syntax//typing.nit:296 */
1864 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8], fra.me.REG[7]);
1865 } else {
1866 /* ./syntax//typing.nit:295 */
1867 goto label3;
1868 }
1869 CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
1870 }
1871 label3: while(0);
1872 }
1873 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1874 /* ./syntax//typing.nit:299 */
1875 CALL_control_flow___VariableContext___merge(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1876 /* ./syntax//typing.nit:300 */
1877 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1878 /* ./syntax//typing.nit:301 */
1879 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1880 fra.me.REG[3] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[3])(fra.me.REG[3]);
1881 /* ./syntax//typing.nit:302 */
1882 CALL_escape___EscapableContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1883 stack_frame_head = fra.me.prev;
1884 return;
1885 }
1886 val_t typing___AClosureDecl___escapable(val_t p0){
1887 struct {struct stack_frame_t me;} fra;
1888 val_t tmp;
1889 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1890 fra.me.file = LOCATE_typing;
1891 fra.me.line = 264;
1892 fra.me.meth = LOCATE_typing___AClosureDecl___escapable;
1893 fra.me.has_broke = 0;
1894 fra.me.REG_size = 1;
1895 fra.me.REG[0] = NIT_NULL;
1896 fra.me.REG[0] = p0;
1897 fra.me.REG[0] = ATTR_typing___AClosureDecl____escapable(fra.me.REG[0]);
1898 /* ./syntax//typing.nit:264 */
1899 stack_frame_head = fra.me.prev;
1900 return fra.me.REG[0];
1901 }
1902 val_t typing___AType___is_typed(val_t p0){
1903 struct {struct stack_frame_t me;} fra;
1904 val_t REGB0;
1905 val_t REGB1;
1906 val_t tmp;
1907 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1908 fra.me.file = LOCATE_typing;
1909 fra.me.line = 308;
1910 fra.me.meth = LOCATE_typing___AType___is_typed;
1911 fra.me.has_broke = 0;
1912 fra.me.REG_size = 1;
1913 fra.me.REG[0] = NIT_NULL;
1914 fra.me.REG[0] = p0;
1915 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
1916 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1917 /* ./syntax//typing.nit:308 */
1918 if (UNTAG_Bool(REGB0)) {
1919 } else {
1920 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1921 if (UNTAG_Bool(REGB1)) {
1922 REGB1 = TAG_Bool(false);
1923 REGB0 = REGB1;
1924 } else {
1925 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1926 REGB0 = REGB1;
1927 }
1928 }
1929 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1930 goto label1;
1931 label1: while(0);
1932 stack_frame_head = fra.me.prev;
1933 return REGB0;
1934 }
1935 val_t typing___AType___stype(val_t p0){
1936 struct {struct stack_frame_t me;} fra;
1937 val_t REGB0;
1938 val_t tmp;
1939 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1940 fra.me.file = LOCATE_typing;
1941 fra.me.line = 307;
1942 fra.me.meth = LOCATE_typing___AType___stype;
1943 fra.me.has_broke = 0;
1944 fra.me.REG_size = 1;
1945 fra.me.REG[0] = NIT_NULL;
1946 fra.me.REG[0] = p0;
1947 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
1948 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1949 /* ./syntax//typing.nit:307 */
1950 if (UNTAG_Bool(REGB0)) {
1951 } else {
1952 fprintf(stderr, "Cast failed");
1953 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 307);
1954 nit_exit(1);
1955 }
1956 goto label1;
1957 label1: while(0);
1958 stack_frame_head = fra.me.prev;
1959 return fra.me.REG[0];
1960 }
1961 void typing___AType___after_typing(val_t p0, val_t p1){
1962 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1963 val_t tmp;
1964 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1965 fra.me.file = LOCATE_typing;
1966 fra.me.line = 311;
1967 fra.me.meth = LOCATE_typing___AType___after_typing;
1968 fra.me.has_broke = 0;
1969 fra.me.REG_size = 2;
1970 fra.me.REG[0] = NIT_NULL;
1971 fra.me.REG[1] = NIT_NULL;
1972 fra.me.REG[0] = p0;
1973 fra.me.REG[1] = p1;
1974 fra.me.REG[1] = CALL_syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1975 /* ./syntax//typing.nit:313 */
1976 ATTR_typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
1977 stack_frame_head = fra.me.prev;
1978 return;
1979 }
1980 val_t typing___AExpr___is_typed(val_t p0){
1981 struct {struct stack_frame_t me;} fra;
1982 val_t REGB0;
1983 val_t tmp;
1984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1985 fra.me.file = LOCATE_typing;
1986 fra.me.line = 318;
1987 fra.me.meth = LOCATE_typing___AExpr___is_typed;
1988 fra.me.has_broke = 0;
1989 fra.me.REG_size = 1;
1990 fra.me.REG[0] = NIT_NULL;
1991 fra.me.REG[0] = p0;
1992 REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
1993 /* ./syntax//typing.nit:318 */
1994 if (UNTAG_Bool(REGB0)) {
1995 } else {
1996 fprintf(stderr, "Uninitialized attribute %s", "_is_typed");
1997 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 318);
1998 nit_exit(1);
1999 }
2000 REGB0 = ATTR_typing___AExpr____is_typed(fra.me.REG[0]);
2001 stack_frame_head = fra.me.prev;
2002 return REGB0;
2003 }
2004 val_t typing___AExpr___is_statement(val_t p0){
2005 struct {struct stack_frame_t me;} fra;
2006 val_t REGB0;
2007 val_t REGB1;
2008 val_t tmp;
2009 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2010 fra.me.file = LOCATE_typing;
2011 fra.me.line = 319;
2012 fra.me.meth = LOCATE_typing___AExpr___is_statement;
2013 fra.me.has_broke = 0;
2014 fra.me.REG_size = 1;
2015 fra.me.REG[0] = NIT_NULL;
2016 fra.me.REG[0] = p0;
2017 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2018 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2019 /* ./syntax//typing.nit:319 */
2020 if (UNTAG_Bool(REGB0)) {
2021 } else {
2022 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2023 if (UNTAG_Bool(REGB1)) {
2024 REGB1 = TAG_Bool(false);
2025 REGB0 = REGB1;
2026 } else {
2027 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2028 REGB0 = REGB1;
2029 }
2030 }
2031 goto label1;
2032 label1: while(0);
2033 stack_frame_head = fra.me.prev;
2034 return REGB0;
2035 }
2036 val_t typing___AExpr___stype(val_t p0){
2037 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2038 val_t REGB0;
2039 val_t tmp;
2040 static val_t once_value_1; /* Once value */
2041 static val_t once_value_2; /* Once value */
2042 static val_t once_value_3; /* Once value */
2043 static val_t once_value_4; /* Once value */
2044 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2045 fra.me.file = LOCATE_typing;
2046 fra.me.line = 320;
2047 fra.me.meth = LOCATE_typing___AExpr___stype;
2048 fra.me.has_broke = 0;
2049 fra.me.REG_size = 3;
2050 fra.me.REG[0] = NIT_NULL;
2051 fra.me.REG[1] = NIT_NULL;
2052 fra.me.REG[2] = NIT_NULL;
2053 fra.me.REG[0] = p0;
2054 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[0])(fra.me.REG[0]);
2055 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2056 /* ./syntax//typing.nit:322 */
2057 if (UNTAG_Bool(REGB0)) {
2058 REGB0 = TAG_Int(3);
2059 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2060 /* ./syntax//typing.nit:323 */
2061 if (!once_value_1) {
2062 fra.me.REG[2] = BOX_NativeString("");
2063 REGB0 = TAG_Int(0);
2064 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2065 once_value_1 = fra.me.REG[2];
2066 register_static_object(&once_value_1);
2067 } else fra.me.REG[2] = once_value_1;
2068 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2069 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2070 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2071 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2072 if (!once_value_2) {
2073 fra.me.REG[2] = BOX_NativeString(": not is_typed");
2074 REGB0 = TAG_Int(14);
2075 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2076 once_value_2 = fra.me.REG[2];
2077 register_static_object(&once_value_2);
2078 } else fra.me.REG[2] = once_value_2;
2079 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2080 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2081 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2082 /* ./syntax//typing.nit:324 */
2083 fprintf(stderr, "Aborted");
2084 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 324);
2085 nit_exit(1);
2086 }
2087 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[0])(fra.me.REG[0]);
2088 /* ./syntax//typing.nit:326 */
2089 if (UNTAG_Bool(REGB0)) {
2090 REGB0 = TAG_Int(3);
2091 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2092 /* ./syntax//typing.nit:327 */
2093 if (!once_value_3) {
2094 fra.me.REG[2] = BOX_NativeString("");
2095 REGB0 = TAG_Int(0);
2096 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2097 once_value_3 = fra.me.REG[2];
2098 register_static_object(&once_value_3);
2099 } else fra.me.REG[2] = once_value_3;
2100 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2101 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2102 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2103 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2104 if (!once_value_4) {
2105 fra.me.REG[2] = BOX_NativeString(": is_statement");
2106 REGB0 = TAG_Int(14);
2107 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2108 once_value_4 = fra.me.REG[2];
2109 register_static_object(&once_value_4);
2110 } else fra.me.REG[2] = once_value_4;
2111 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
2112 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2113 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2114 /* ./syntax//typing.nit:328 */
2115 fprintf(stderr, "Aborted");
2116 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 328);
2117 nit_exit(1);
2118 }
2119 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2120 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2121 /* ./syntax//typing.nit:330 */
2122 if (UNTAG_Bool(REGB0)) {
2123 } else {
2124 fprintf(stderr, "Cast failed");
2125 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 330);
2126 nit_exit(1);
2127 }
2128 goto label5;
2129 label5: while(0);
2130 stack_frame_head = fra.me.prev;
2131 return fra.me.REG[0];
2132 }
2133 void typing___AExpr___after_typing(val_t p0, val_t p1){
2134 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2135 val_t REGB0;
2136 val_t tmp;
2137 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2138 fra.me.file = LOCATE_typing;
2139 fra.me.line = 334;
2140 fra.me.meth = LOCATE_typing___AExpr___after_typing;
2141 fra.me.has_broke = 0;
2142 fra.me.REG_size = 2;
2143 fra.me.REG[0] = NIT_NULL;
2144 fra.me.REG[1] = NIT_NULL;
2145 fra.me.REG[0] = p0;
2146 fra.me.REG[1] = p1;
2147 REGB0 = TAG_Bool(true);
2148 /* ./syntax//typing.nit:337 */
2149 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2150 stack_frame_head = fra.me.prev;
2151 return;
2152 }
2153 val_t typing___AExpr___is_implicit_self(val_t p0){
2154 struct {struct stack_frame_t me;} fra;
2155 val_t REGB0;
2156 val_t tmp;
2157 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2158 fra.me.file = LOCATE_typing;
2159 fra.me.line = 340;
2160 fra.me.meth = LOCATE_typing___AExpr___is_implicit_self;
2161 fra.me.has_broke = 0;
2162 fra.me.REG_size = 1;
2163 fra.me.REG[0] = NIT_NULL;
2164 fra.me.REG[0] = p0;
2165 REGB0 = TAG_Bool(false);
2166 /* ./syntax//typing.nit:341 */
2167 goto label1;
2168 label1: while(0);
2169 stack_frame_head = fra.me.prev;
2170 return REGB0;
2171 }
2172 val_t typing___AExpr___is_self(val_t p0){
2173 struct {struct stack_frame_t me;} fra;
2174 val_t REGB0;
2175 val_t tmp;
2176 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2177 fra.me.file = LOCATE_typing;
2178 fra.me.line = 343;
2179 fra.me.meth = LOCATE_typing___AExpr___is_self;
2180 fra.me.has_broke = 0;
2181 fra.me.REG_size = 1;
2182 fra.me.REG[0] = NIT_NULL;
2183 fra.me.REG[0] = p0;
2184 REGB0 = TAG_Bool(false);
2185 /* ./syntax//typing.nit:344 */
2186 goto label1;
2187 label1: while(0);
2188 stack_frame_head = fra.me.prev;
2189 return REGB0;
2190 }
2191 val_t typing___AExpr___its_variable(val_t p0){
2192 struct {struct stack_frame_t me;} fra;
2193 val_t tmp;
2194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2195 fra.me.file = LOCATE_typing;
2196 fra.me.line = 346;
2197 fra.me.meth = LOCATE_typing___AExpr___its_variable;
2198 fra.me.has_broke = 0;
2199 fra.me.REG_size = 1;
2200 fra.me.REG[0] = NIT_NULL;
2201 fra.me.REG[0] = p0;
2202 fra.me.REG[0] = NIT_NULL;
2203 /* ./syntax//typing.nit:347 */
2204 goto label1;
2205 label1: while(0);
2206 stack_frame_head = fra.me.prev;
2207 return fra.me.REG[0];
2208 }
2209 val_t typing___AExpr___if_true_variable_ctx(val_t p0){
2210 struct {struct stack_frame_t me;} fra;
2211 val_t tmp;
2212 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2213 fra.me.file = LOCATE_typing;
2214 fra.me.line = 349;
2215 fra.me.meth = LOCATE_typing___AExpr___if_true_variable_ctx;
2216 fra.me.has_broke = 0;
2217 fra.me.REG_size = 1;
2218 fra.me.REG[0] = NIT_NULL;
2219 fra.me.REG[0] = p0;
2220 fra.me.REG[0] = ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]);
2221 /* ./syntax//typing.nit:349 */
2222 stack_frame_head = fra.me.prev;
2223 return fra.me.REG[0];
2224 }
2225 val_t typing___AExpr___if_false_variable_ctx(val_t p0){
2226 struct {struct stack_frame_t me;} fra;
2227 val_t tmp;
2228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2229 fra.me.file = LOCATE_typing;
2230 fra.me.line = 352;
2231 fra.me.meth = LOCATE_typing___AExpr___if_false_variable_ctx;
2232 fra.me.has_broke = 0;
2233 fra.me.REG_size = 1;
2234 fra.me.REG[0] = NIT_NULL;
2235 fra.me.REG[0] = p0;
2236 fra.me.REG[0] = ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[0]);
2237 /* ./syntax//typing.nit:352 */
2238 stack_frame_head = fra.me.prev;
2239 return fra.me.REG[0];
2240 }
2241 val_t typing___AVardeclExpr___variable(val_t p0){
2242 struct {struct stack_frame_t me;} fra;
2243 val_t REGB0;
2244 val_t tmp;
2245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2246 fra.me.file = LOCATE_typing;
2247 fra.me.line = 358;
2248 fra.me.meth = LOCATE_typing___AVardeclExpr___variable;
2249 fra.me.has_broke = 0;
2250 fra.me.REG_size = 1;
2251 fra.me.REG[0] = NIT_NULL;
2252 fra.me.REG[0] = p0;
2253 fra.me.REG[0] = ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]);
2254 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2255 /* ./syntax//typing.nit:358 */
2256 if (UNTAG_Bool(REGB0)) {
2257 } else {
2258 fprintf(stderr, "Cast failed");
2259 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 358);
2260 nit_exit(1);
2261 }
2262 goto label1;
2263 label1: while(0);
2264 stack_frame_head = fra.me.prev;
2265 return fra.me.REG[0];
2266 }
2267 void typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2268 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2269 val_t REGB0;
2270 val_t REGB1;
2271 val_t tmp;
2272 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2273 fra.me.file = LOCATE_typing;
2274 fra.me.line = 360;
2275 fra.me.meth = LOCATE_typing___AVardeclExpr___after_typing;
2276 fra.me.has_broke = 0;
2277 fra.me.REG_size = 5;
2278 fra.me.REG[0] = NIT_NULL;
2279 fra.me.REG[1] = NIT_NULL;
2280 fra.me.REG[2] = NIT_NULL;
2281 fra.me.REG[3] = NIT_NULL;
2282 fra.me.REG[4] = NIT_NULL;
2283 fra.me.REG[0] = p0;
2284 fra.me.REG[1] = p1;
2285 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2286 fra.me.REG[2] = CALL_syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2287 fra.me.REG[3] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2288 fra.me.REG[3] = NEW_VarVariable_syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2289 /* ./syntax//typing.nit:363 */
2290 ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2291 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2292 /* ./syntax//typing.nit:364 */
2293 CALL_control_flow___VariableContext___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2294 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2295 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2296 /* ./syntax//typing.nit:366 */
2297 if (UNTAG_Bool(REGB0)) {
2298 } else {
2299 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2300 if (UNTAG_Bool(REGB1)) {
2301 REGB1 = TAG_Bool(false);
2302 REGB0 = REGB1;
2303 } else {
2304 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2305 REGB0 = REGB1;
2306 }
2307 }
2308 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2309 if (UNTAG_Bool(REGB0)) {
2310 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2311 CALL_control_flow___VariableContext___mark_is_set(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2312 }
2313 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2314 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2315 /* ./syntax//typing.nit:368 */
2316 if (UNTAG_Bool(REGB0)) {
2317 } else {
2318 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2319 if (UNTAG_Bool(REGB1)) {
2320 REGB1 = TAG_Bool(false);
2321 REGB0 = REGB1;
2322 } else {
2323 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2324 REGB0 = REGB1;
2325 }
2326 }
2327 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2328 if (UNTAG_Bool(REGB0)) {
2329 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2330 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2331 /* ./syntax//typing.nit:369 */
2332 if (UNTAG_Bool(REGB0)) {
2333 fprintf(stderr, "Reciever is null");
2334 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 369);
2335 nit_exit(1);
2336 }
2337 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2338 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2339 if (UNTAG_Bool(REGB0)) {
2340 goto label1;
2341 }
2342 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2343 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2344 /* ./syntax//typing.nit:370 */
2345 if (UNTAG_Bool(REGB0)) {
2346 fprintf(stderr, "Reciever is null");
2347 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 370);
2348 nit_exit(1);
2349 }
2350 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2351 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2352 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2353 /* ./syntax//typing.nit:371 */
2354 if (UNTAG_Bool(REGB0)) {
2355 } else {
2356 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2357 if (UNTAG_Bool(REGB1)) {
2358 REGB1 = TAG_Bool(false);
2359 REGB0 = REGB1;
2360 } else {
2361 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2362 REGB0 = REGB1;
2363 }
2364 }
2365 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2366 if (UNTAG_Bool(REGB0)) {
2367 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2368 /* ./syntax//typing.nit:372 */
2369 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2370 }
2371 } else {
2372 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2373 /* ./syntax//typing.nit:374 */
2374 if (UNTAG_Bool(REGB0)) {
2375 } else {
2376 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2377 if (UNTAG_Bool(REGB1)) {
2378 REGB1 = TAG_Bool(false);
2379 REGB0 = REGB1;
2380 } else {
2381 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2382 REGB0 = REGB1;
2383 }
2384 }
2385 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2386 if (UNTAG_Bool(REGB0)) {
2387 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2388 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2389 /* ./syntax//typing.nit:375 */
2390 if (UNTAG_Bool(REGB0)) {
2391 goto label1;
2392 }
2393 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2394 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2395 /* ./syntax//typing.nit:376 */
2396 if (UNTAG_Bool(REGB0)) {
2397 fprintf(stderr, "Reciever is null");
2398 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 376);
2399 nit_exit(1);
2400 }
2401 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2402 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2403 }
2404 }
2405 REGB0 = TAG_Bool(true);
2406 /* ./syntax//typing.nit:378 */
2407 ATTR_typing___VarVariable____is_typed(fra.me.REG[3]) = REGB0;
2408 REGB0 = TAG_Bool(true);
2409 /* ./syntax//typing.nit:379 */
2410 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2411 label1: while(0);
2412 stack_frame_head = fra.me.prev;
2413 return;
2414 }
2415 void typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2416 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2417 val_t REGB0;
2418 val_t REGB1;
2419 val_t tmp;
2420 static val_t once_value_1; /* Once value */
2421 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2422 fra.me.file = LOCATE_typing;
2423 fra.me.line = 384;
2424 fra.me.meth = LOCATE_typing___ABlockExpr___accept_typing;
2425 fra.me.has_broke = 0;
2426 fra.me.REG_size = 6;
2427 fra.me.REG[0] = NIT_NULL;
2428 fra.me.REG[1] = NIT_NULL;
2429 fra.me.REG[2] = NIT_NULL;
2430 fra.me.REG[3] = NIT_NULL;
2431 fra.me.REG[4] = NIT_NULL;
2432 fra.me.REG[5] = NIT_NULL;
2433 fra.me.REG[0] = p0;
2434 fra.me.REG[1] = p1;
2435 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2436 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2437 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
2438 /* ./syntax//typing.nit:387 */
2439 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2440 fra.me.REG[3] = CALL_parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2441 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
2442 /* ./syntax//typing.nit:389 */
2443 while(1) {
2444 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
2445 if (UNTAG_Bool(REGB0)) {
2446 fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
2447 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2448 REGB0 = CALL_control_flow___VariableContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
2449 /* ./syntax//typing.nit:390 */
2450 if (UNTAG_Bool(REGB0)) {
2451 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2452 REGB0 = CALL_control_flow___VariableContext___already_unreash(fra.me.REG[5])(fra.me.REG[5]);
2453 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2454 } else {
2455 REGB1 = TAG_Bool(false);
2456 REGB0 = REGB1;
2457 }
2458 if (UNTAG_Bool(REGB0)) {
2459 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2460 REGB0 = TAG_Bool(true);
2461 /* ./syntax//typing.nit:391 */
2462 CALL_control_flow___VariableContext___already_unreash__eq(fra.me.REG[5])(fra.me.REG[5], REGB0);
2463 /* ./syntax//typing.nit:392 */
2464 if (!once_value_1) {
2465 fra.me.REG[5] = BOX_NativeString("Warning: unreachable statement.");
2466 REGB0 = TAG_Int(31);
2467 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
2468 once_value_1 = fra.me.REG[5];
2469 register_static_object(&once_value_1);
2470 } else fra.me.REG[5] = once_value_1;
2471 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
2472 }
2473 /* ./syntax//typing.nit:394 */
2474 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2475 } else {
2476 /* ./syntax//typing.nit:389 */
2477 goto label2;
2478 }
2479 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
2480 }
2481 label2: while(0);
2482 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2483 /* ./syntax//typing.nit:397 */
2484 CALL_control_flow___VariableContext___merge(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2485 /* ./syntax//typing.nit:398 */
2486 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2487 REGB0 = TAG_Bool(true);
2488 /* ./syntax//typing.nit:399 */
2489 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2490 stack_frame_head = fra.me.prev;
2491 return;
2492 }
2493 void typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2494 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2495 val_t REGB0;
2496 val_t REGB1;
2497 val_t tmp;
2498 static val_t once_value_1; /* Once value */
2499 static val_t once_value_2; /* Once value */
2500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2501 fra.me.file = LOCATE_typing;
2502 fra.me.line = 404;
2503 fra.me.meth = LOCATE_typing___AReturnExpr___after_typing;
2504 fra.me.has_broke = 0;
2505 fra.me.REG_size = 5;
2506 fra.me.REG[0] = NIT_NULL;
2507 fra.me.REG[1] = NIT_NULL;
2508 fra.me.REG[2] = NIT_NULL;
2509 fra.me.REG[3] = NIT_NULL;
2510 fra.me.REG[4] = NIT_NULL;
2511 fra.me.REG[0] = p0;
2512 fra.me.REG[1] = p1;
2513 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2514 REGB0 = TAG_Bool(true);
2515 /* ./syntax//typing.nit:406 */
2516 CALL_control_flow___VariableContext___unreash__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2517 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2518 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2519 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2520 /* ./syntax//typing.nit:407 */
2521 if (UNTAG_Bool(REGB0)) {
2522 fprintf(stderr, "Reciever is null");
2523 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 407);
2524 nit_exit(1);
2525 }
2526 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2527 fra.me.REG[3] = CALL_parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2528 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2529 /* ./syntax//typing.nit:409 */
2530 if (UNTAG_Bool(REGB0)) {
2531 } else {
2532 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2533 if (UNTAG_Bool(REGB1)) {
2534 REGB1 = TAG_Bool(false);
2535 REGB0 = REGB1;
2536 } else {
2537 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2538 REGB0 = REGB1;
2539 }
2540 }
2541 if (UNTAG_Bool(REGB0)) {
2542 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2543 if (UNTAG_Bool(REGB0)) {
2544 } else {
2545 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2546 if (UNTAG_Bool(REGB1)) {
2547 REGB1 = TAG_Bool(false);
2548 REGB0 = REGB1;
2549 } else {
2550 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2551 REGB0 = REGB1;
2552 }
2553 }
2554 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2555 } else {
2556 REGB1 = TAG_Bool(false);
2557 REGB0 = REGB1;
2558 }
2559 if (UNTAG_Bool(REGB0)) {
2560 /* ./syntax//typing.nit:410 */
2561 if (!once_value_1) {
2562 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2563 REGB0 = TAG_Int(42);
2564 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2565 once_value_1 = fra.me.REG[4];
2566 register_static_object(&once_value_1);
2567 } else fra.me.REG[4] = once_value_1;
2568 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2569 } else {
2570 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2571 /* ./syntax//typing.nit:411 */
2572 if (UNTAG_Bool(REGB0)) {
2573 } else {
2574 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2575 if (UNTAG_Bool(REGB1)) {
2576 REGB1 = TAG_Bool(false);
2577 REGB0 = REGB1;
2578 } else {
2579 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2580 REGB0 = REGB1;
2581 }
2582 }
2583 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2584 if (UNTAG_Bool(REGB0)) {
2585 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2586 if (UNTAG_Bool(REGB0)) {
2587 } else {
2588 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2589 if (UNTAG_Bool(REGB1)) {
2590 REGB1 = TAG_Bool(false);
2591 REGB0 = REGB1;
2592 } else {
2593 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2594 REGB0 = REGB1;
2595 }
2596 }
2597 } else {
2598 REGB1 = TAG_Bool(false);
2599 REGB0 = REGB1;
2600 }
2601 if (UNTAG_Bool(REGB0)) {
2602 /* ./syntax//typing.nit:412 */
2603 if (!once_value_2) {
2604 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
2605 REGB0 = TAG_Int(40);
2606 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2607 once_value_2 = fra.me.REG[4];
2608 register_static_object(&once_value_2);
2609 } else fra.me.REG[4] = once_value_2;
2610 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2611 } else {
2612 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2613 /* ./syntax//typing.nit:413 */
2614 if (UNTAG_Bool(REGB0)) {
2615 } else {
2616 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2617 if (UNTAG_Bool(REGB1)) {
2618 REGB1 = TAG_Bool(false);
2619 REGB0 = REGB1;
2620 } else {
2621 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2622 REGB0 = REGB1;
2623 }
2624 }
2625 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2626 if (UNTAG_Bool(REGB0)) {
2627 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2628 if (UNTAG_Bool(REGB0)) {
2629 } else {
2630 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2631 if (UNTAG_Bool(REGB1)) {
2632 REGB1 = TAG_Bool(false);
2633 REGB0 = REGB1;
2634 } else {
2635 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2636 REGB0 = REGB1;
2637 }
2638 }
2639 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2640 } else {
2641 REGB1 = TAG_Bool(false);
2642 REGB0 = REGB1;
2643 }
2644 if (UNTAG_Bool(REGB0)) {
2645 /* ./syntax//typing.nit:414 */
2646 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2647 }
2648 }
2649 }
2650 REGB0 = TAG_Bool(true);
2651 /* ./syntax//typing.nit:416 */
2652 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2653 stack_frame_head = fra.me.prev;
2654 return;
2655 }
2656 void typing___AContinueExpr___after_typing(val_t p0, val_t p1){
2657 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2658 val_t REGB0;
2659 val_t REGB1;
2660 val_t tmp;
2661 static val_t once_value_2; /* Once value */
2662 static val_t once_value_3; /* Once value */
2663 static val_t once_value_4; /* Once value */
2664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2665 fra.me.file = LOCATE_typing;
2666 fra.me.line = 421;
2667 fra.me.meth = LOCATE_typing___AContinueExpr___after_typing;
2668 fra.me.has_broke = 0;
2669 fra.me.REG_size = 4;
2670 fra.me.REG[0] = NIT_NULL;
2671 fra.me.REG[1] = NIT_NULL;
2672 fra.me.REG[2] = NIT_NULL;
2673 fra.me.REG[3] = NIT_NULL;
2674 fra.me.REG[0] = p0;
2675 fra.me.REG[1] = p1;
2676 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2677 REGB0 = TAG_Bool(true);
2678 /* ./syntax//typing.nit:423 */
2679 CALL_control_flow___VariableContext___unreash__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2680 fra.me.REG[2] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2681 fra.me.REG[2] = CALL_escape___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2682 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2683 /* ./syntax//typing.nit:425 */
2684 if (UNTAG_Bool(REGB0)) {
2685 } else {
2686 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2687 if (UNTAG_Bool(REGB1)) {
2688 REGB1 = TAG_Bool(false);
2689 REGB0 = REGB1;
2690 } else {
2691 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2692 REGB0 = REGB1;
2693 }
2694 }
2695 if (UNTAG_Bool(REGB0)) {
2696 goto label1;
2697 }
2698 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2699 /* ./syntax//typing.nit:427 */
2700 if (UNTAG_Bool(REGB0)) {
2701 fprintf(stderr, "Reciever is null");
2702 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 427);
2703 nit_exit(1);
2704 }
2705 REGB0 = CALL_escape___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
2706 if (UNTAG_Bool(REGB0)) {
2707 /* ./syntax//typing.nit:428 */
2708 if (!once_value_2) {
2709 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
2710 REGB0 = TAG_Int(39);
2711 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2712 once_value_2 = fra.me.REG[3];
2713 register_static_object(&once_value_2);
2714 } else fra.me.REG[3] = once_value_2;
2715 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2716 /* ./syntax//typing.nit:429 */
2717 goto label1;
2718 }
2719 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2720 /* ./syntax//typing.nit:432 */
2721 if (UNTAG_Bool(REGB0)) {
2722 fprintf(stderr, "Reciever is null");
2723 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 432);
2724 nit_exit(1);
2725 }
2726 fra.me.REG[2] = CALL_escape___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
2727 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2728 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2729 /* ./syntax//typing.nit:433 */
2730 if (UNTAG_Bool(REGB0)) {
2731 } else {
2732 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2733 if (UNTAG_Bool(REGB1)) {
2734 REGB1 = TAG_Bool(false);
2735 REGB0 = REGB1;
2736 } else {
2737 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2738 REGB0 = REGB1;
2739 }
2740 }
2741 if (UNTAG_Bool(REGB0)) {
2742 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2743 if (UNTAG_Bool(REGB0)) {
2744 } else {
2745 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2746 if (UNTAG_Bool(REGB1)) {
2747 REGB1 = TAG_Bool(false);
2748 REGB0 = REGB1;
2749 } else {
2750 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2751 REGB0 = REGB1;
2752 }
2753 }
2754 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2755 } else {
2756 REGB1 = TAG_Bool(false);
2757 REGB0 = REGB1;
2758 }
2759 if (UNTAG_Bool(REGB0)) {
2760 /* ./syntax//typing.nit:434 */
2761 if (!once_value_3) {
2762 fra.me.REG[3] = BOX_NativeString("Error: continue with a value required in this block.");
2763 REGB0 = TAG_Int(52);
2764 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2765 once_value_3 = fra.me.REG[3];
2766 register_static_object(&once_value_3);
2767 } else fra.me.REG[3] = once_value_3;
2768 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2769 } else {
2770 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2771 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2772 /* ./syntax//typing.nit:435 */
2773 if (UNTAG_Bool(REGB0)) {
2774 } else {
2775 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2776 if (UNTAG_Bool(REGB1)) {
2777 REGB1 = TAG_Bool(false);
2778 REGB0 = REGB1;
2779 } else {
2780 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2781 REGB0 = REGB1;
2782 }
2783 }
2784 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2785 if (UNTAG_Bool(REGB0)) {
2786 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2787 if (UNTAG_Bool(REGB0)) {
2788 } else {
2789 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2790 if (UNTAG_Bool(REGB1)) {
2791 REGB1 = TAG_Bool(false);
2792 REGB0 = REGB1;
2793 } else {
2794 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2795 REGB0 = REGB1;
2796 }
2797 }
2798 } else {
2799 REGB1 = TAG_Bool(false);
2800 REGB0 = REGB1;
2801 }
2802 if (UNTAG_Bool(REGB0)) {
2803 /* ./syntax//typing.nit:436 */
2804 if (!once_value_4) {
2805 fra.me.REG[3] = BOX_NativeString("Error: continue without value required in this block.");
2806 REGB0 = TAG_Int(53);
2807 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2808 once_value_4 = fra.me.REG[3];
2809 register_static_object(&once_value_4);
2810 } else fra.me.REG[3] = once_value_4;
2811 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2812 } else {
2813 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2814 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2815 /* ./syntax//typing.nit:437 */
2816 if (UNTAG_Bool(REGB0)) {
2817 } else {
2818 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2819 if (UNTAG_Bool(REGB1)) {
2820 REGB1 = TAG_Bool(false);
2821 REGB0 = REGB1;
2822 } else {
2823 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2824 REGB0 = REGB1;
2825 }
2826 }
2827 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2828 if (UNTAG_Bool(REGB0)) {
2829 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2830 if (UNTAG_Bool(REGB0)) {
2831 } else {
2832 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2833 if (UNTAG_Bool(REGB1)) {
2834 REGB1 = TAG_Bool(false);
2835 REGB0 = REGB1;
2836 } else {
2837 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2838 REGB0 = REGB1;
2839 }
2840 }
2841 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2842 } else {
2843 REGB1 = TAG_Bool(false);
2844 REGB0 = REGB1;
2845 }
2846 if (UNTAG_Bool(REGB0)) {
2847 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2848 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
2849 /* ./syntax//typing.nit:438 */
2850 if (UNTAG_Bool(REGB0)) {
2851 } else {
2852 fprintf(stderr, "Cast failed");
2853 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 438);
2854 nit_exit(1);
2855 }
2856 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2857 }
2858 }
2859 }
2860 REGB0 = TAG_Bool(true);
2861 /* ./syntax//typing.nit:440 */
2862 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2863 label1: while(0);
2864 stack_frame_head = fra.me.prev;
2865 return;
2866 }
2867 void typing___ABreakExpr___after_typing(val_t p0, val_t p1){
2868 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2869 val_t REGB0;
2870 val_t REGB1;
2871 val_t tmp;
2872 static val_t once_value_2; /* Once value */
2873 static val_t once_value_3; /* Once value */
2874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2875 fra.me.file = LOCATE_typing;
2876 fra.me.line = 445;
2877 fra.me.meth = LOCATE_typing___ABreakExpr___after_typing;
2878 fra.me.has_broke = 0;
2879 fra.me.REG_size = 4;
2880 fra.me.REG[0] = NIT_NULL;
2881 fra.me.REG[1] = NIT_NULL;
2882 fra.me.REG[2] = NIT_NULL;
2883 fra.me.REG[3] = NIT_NULL;
2884 fra.me.REG[0] = p0;
2885 fra.me.REG[1] = p1;
2886 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2887 REGB0 = TAG_Bool(true);
2888 /* ./syntax//typing.nit:447 */
2889 CALL_control_flow___VariableContext___unreash__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2890 fra.me.REG[2] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
2891 fra.me.REG[2] = CALL_escape___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2892 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2893 /* ./syntax//typing.nit:449 */
2894 if (UNTAG_Bool(REGB0)) {
2895 } else {
2896 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2897 if (UNTAG_Bool(REGB1)) {
2898 REGB1 = TAG_Bool(false);
2899 REGB0 = REGB1;
2900 } else {
2901 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2902 REGB0 = REGB1;
2903 }
2904 }
2905 if (UNTAG_Bool(REGB0)) {
2906 goto label1;
2907 }
2908 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2909 /* ./syntax//typing.nit:451 */
2910 if (UNTAG_Bool(REGB0)) {
2911 fprintf(stderr, "Reciever is null");
2912 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 451);
2913 nit_exit(1);
2914 }
2915 fra.me.REG[2] = CALL_escape___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
2916 fra.me.REG[3] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2917 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2918 /* ./syntax//typing.nit:452 */
2919 if (UNTAG_Bool(REGB0)) {
2920 } else {
2921 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2922 if (UNTAG_Bool(REGB1)) {
2923 REGB1 = TAG_Bool(false);
2924 REGB0 = REGB1;
2925 } else {
2926 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2927 REGB0 = REGB1;
2928 }
2929 }
2930 if (UNTAG_Bool(REGB0)) {
2931 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2932 if (UNTAG_Bool(REGB0)) {
2933 } else {
2934 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2935 if (UNTAG_Bool(REGB1)) {
2936 REGB1 = TAG_Bool(false);
2937 REGB0 = REGB1;
2938 } else {
2939 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2940 REGB0 = REGB1;
2941 }
2942 }
2943 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2944 } else {
2945 REGB1 = TAG_Bool(false);
2946 REGB0 = REGB1;
2947 }
2948 if (UNTAG_Bool(REGB0)) {
2949 /* ./syntax//typing.nit:453 */
2950 if (!once_value_2) {
2951 fra.me.REG[3] = BOX_NativeString("Error: break with a value required in this block.");
2952 REGB0 = TAG_Int(49);
2953 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2954 once_value_2 = fra.me.REG[3];
2955 register_static_object(&once_value_2);
2956 } else fra.me.REG[3] = once_value_2;
2957 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2958 } else {
2959 fra.me.REG[3] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2960 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2961 /* ./syntax//typing.nit:454 */
2962 if (UNTAG_Bool(REGB0)) {
2963 } else {
2964 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2965 if (UNTAG_Bool(REGB1)) {
2966 REGB1 = TAG_Bool(false);
2967 REGB0 = REGB1;
2968 } else {
2969 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2970 REGB0 = REGB1;
2971 }
2972 }
2973 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2974 if (UNTAG_Bool(REGB0)) {
2975 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2976 if (UNTAG_Bool(REGB0)) {
2977 } else {
2978 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2979 if (UNTAG_Bool(REGB1)) {
2980 REGB1 = TAG_Bool(false);
2981 REGB0 = REGB1;
2982 } else {
2983 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2984 REGB0 = REGB1;
2985 }
2986 }
2987 } else {
2988 REGB1 = TAG_Bool(false);
2989 REGB0 = REGB1;
2990 }
2991 if (UNTAG_Bool(REGB0)) {
2992 /* ./syntax//typing.nit:455 */
2993 if (!once_value_3) {
2994 fra.me.REG[3] = BOX_NativeString("Error: break without value required in this block.");
2995 REGB0 = TAG_Int(50);
2996 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2997 once_value_3 = fra.me.REG[3];
2998 register_static_object(&once_value_3);
2999 } else fra.me.REG[3] = once_value_3;
3000 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3001 } else {
3002 fra.me.REG[3] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3003 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3004 /* ./syntax//typing.nit:456 */
3005 if (UNTAG_Bool(REGB0)) {
3006 } else {
3007 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3008 if (UNTAG_Bool(REGB1)) {
3009 REGB1 = TAG_Bool(false);
3010 REGB0 = REGB1;
3011 } else {
3012 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3013 REGB0 = REGB1;
3014 }
3015 }
3016 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3017 if (UNTAG_Bool(REGB0)) {
3018 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3019 if (UNTAG_Bool(REGB0)) {
3020 } else {
3021 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3022 if (UNTAG_Bool(REGB1)) {
3023 REGB1 = TAG_Bool(false);
3024 REGB0 = REGB1;
3025 } else {
3026 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3027 REGB0 = REGB1;
3028 }
3029 }
3030 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3031 } else {
3032 REGB1 = TAG_Bool(false);
3033 REGB0 = REGB1;
3034 }
3035 if (UNTAG_Bool(REGB0)) {
3036 fra.me.REG[3] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3037 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3038 /* ./syntax//typing.nit:458 */
3039 if (UNTAG_Bool(REGB0)) {
3040 } else {
3041 fprintf(stderr, "Cast failed");
3042 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 458);
3043 nit_exit(1);
3044 }
3045 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3046 if (UNTAG_Bool(REGB0)) {
3047 fprintf(stderr, "Reciever is null");
3048 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 458);
3049 nit_exit(1);
3050 }
3051 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
3052 }
3053 }
3054 }
3055 REGB0 = TAG_Bool(true);
3056 /* ./syntax//typing.nit:460 */
3057 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3058 label1: while(0);
3059 stack_frame_head = fra.me.prev;
3060 return;
3061 }
3062 void typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3063 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3064 val_t REGB0;
3065 val_t tmp;
3066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3067 fra.me.file = LOCATE_typing;
3068 fra.me.line = 465;
3069 fra.me.meth = LOCATE_typing___AAbortExpr___after_typing;
3070 fra.me.has_broke = 0;
3071 fra.me.REG_size = 2;
3072 fra.me.REG[0] = NIT_NULL;
3073 fra.me.REG[1] = NIT_NULL;
3074 fra.me.REG[0] = p0;
3075 fra.me.REG[1] = p1;
3076 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3077 REGB0 = TAG_Bool(true);
3078 /* ./syntax//typing.nit:467 */
3079 CALL_control_flow___VariableContext___unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
3080 REGB0 = TAG_Bool(true);
3081 /* ./syntax//typing.nit:468 */
3082 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3083 stack_frame_head = fra.me.prev;
3084 return;
3085 }
3086 void typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3087 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3088 val_t REGB0;
3089 val_t tmp;
3090 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3091 fra.me.file = LOCATE_typing;
3092 fra.me.line = 476;
3093 fra.me.meth = LOCATE_typing___ADoExpr___accept_typing;
3094 fra.me.has_broke = 0;
3095 fra.me.REG_size = 7;
3096 fra.me.REG[0] = NIT_NULL;
3097 fra.me.REG[1] = NIT_NULL;
3098 fra.me.REG[2] = NIT_NULL;
3099 fra.me.REG[3] = NIT_NULL;
3100 fra.me.REG[4] = NIT_NULL;
3101 fra.me.REG[5] = NIT_NULL;
3102 fra.me.REG[6] = NIT_NULL;
3103 fra.me.REG[0] = p0;
3104 fra.me.REG[1] = p1;
3105 fra.me.REG[2] = fra.me.REG[0];
3106 fra.me.REG[3] = fra.me.REG[1];
3107 fra.me.REG[4] = NEW_BreakOnlyEscapableBlock_escape___BreakOnlyEscapableBlock___init(fra.me.REG[2]);
3108 /* ./syntax//typing.nit:479 */
3109 ATTR_typing___ADoExpr____escapable(fra.me.REG[2]) = fra.me.REG[4];
3110 fra.me.REG[5] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[3])(fra.me.REG[3]);
3111 fra.me.REG[6] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[2])(fra.me.REG[2]);
3112 /* ./syntax//typing.nit:480 */
3113 CALL_escape___EscapableContext___push(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
3114 /* ./syntax//typing.nit:482 */
3115 CALL_SUPER_typing___ADoExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3116 fra.me.REG[3] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[3])(fra.me.REG[3]);
3117 /* ./syntax//typing.nit:484 */
3118 CALL_escape___EscapableContext___pop(fra.me.REG[3])(fra.me.REG[3]);
3119 REGB0 = TAG_Bool(true);
3120 /* ./syntax//typing.nit:485 */
3121 ATTR_typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3122 stack_frame_head = fra.me.prev;
3123 return;
3124 }
3125 val_t typing___ADoExpr___escapable(val_t p0){
3126 struct {struct stack_frame_t me;} fra;
3127 val_t tmp;
3128 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3129 fra.me.file = LOCATE_typing;
3130 fra.me.line = 473;
3131 fra.me.meth = LOCATE_typing___ADoExpr___escapable;
3132 fra.me.has_broke = 0;
3133 fra.me.REG_size = 1;
3134 fra.me.REG[0] = NIT_NULL;
3135 fra.me.REG[0] = p0;
3136 fra.me.REG[0] = ATTR_typing___ADoExpr____escapable(fra.me.REG[0]);
3137 /* ./syntax//typing.nit:473 */
3138 stack_frame_head = fra.me.prev;
3139 return fra.me.REG[0];
3140 }
3141 void typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3142 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3143 val_t REGB0;
3144 val_t REGB1;
3145 val_t tmp;
3146 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3147 fra.me.file = LOCATE_typing;
3148 fra.me.line = 490;
3149 fra.me.meth = LOCATE_typing___AIfExpr___accept_typing;
3150 fra.me.has_broke = 0;
3151 fra.me.REG_size = 6;
3152 fra.me.REG[0] = NIT_NULL;
3153 fra.me.REG[1] = NIT_NULL;
3154 fra.me.REG[2] = NIT_NULL;
3155 fra.me.REG[3] = NIT_NULL;
3156 fra.me.REG[4] = NIT_NULL;
3157 fra.me.REG[5] = NIT_NULL;
3158 fra.me.REG[0] = p0;
3159 fra.me.REG[1] = p1;
3160 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3161 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3162 /* ./syntax//typing.nit:493 */
3163 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3164 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3165 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3166 /* ./syntax//typing.nit:494 */
3167 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3168 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3169 /* ./syntax//typing.nit:497 */
3170 CALL_typing___TypingVisitor___use_if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3171 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3172 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3173 /* ./syntax//typing.nit:500 */
3174 if (UNTAG_Bool(REGB0)) {
3175 } else {
3176 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3177 if (UNTAG_Bool(REGB1)) {
3178 REGB1 = TAG_Bool(false);
3179 REGB0 = REGB1;
3180 } else {
3181 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3182 REGB0 = REGB1;
3183 }
3184 }
3185 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3186 if (UNTAG_Bool(REGB0)) {
3187 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3188 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3189 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3190 /* ./syntax//typing.nit:501 */
3191 if (UNTAG_Bool(REGB0)) {
3192 } else {
3193 fprintf(stderr, "Cast failed");
3194 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 501);
3195 nit_exit(1);
3196 }
3197 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3198 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3199 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3200 /* ./syntax//typing.nit:502 */
3201 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3202 }
3203 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3204 /* ./syntax//typing.nit:509 */
3205 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3206 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3207 /* ./syntax//typing.nit:510 */
3208 CALL_typing___TypingVisitor___use_if_false_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3209 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3210 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3211 /* ./syntax//typing.nit:513 */
3212 if (UNTAG_Bool(REGB0)) {
3213 } else {
3214 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3215 if (UNTAG_Bool(REGB1)) {
3216 REGB1 = TAG_Bool(false);
3217 REGB0 = REGB1;
3218 } else {
3219 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3220 REGB0 = REGB1;
3221 }
3222 }
3223 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3224 if (UNTAG_Bool(REGB0)) {
3225 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3226 fra.me.REG[5] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3227 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3228 /* ./syntax//typing.nit:514 */
3229 if (UNTAG_Bool(REGB0)) {
3230 } else {
3231 fprintf(stderr, "Cast failed");
3232 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 514);
3233 nit_exit(1);
3234 }
3235 fra.me.REG[5] = CALL_control_flow___VariableContext___sub(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3236 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3237 fra.me.REG[5] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3238 /* ./syntax//typing.nit:515 */
3239 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3240 }
3241 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3242 fra.me.REG[4] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3243 /* ./syntax//typing.nit:519 */
3244 CALL_control_flow___VariableContext___merge2(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[5], fra.me.REG[4]);
3245 /* ./syntax//typing.nit:520 */
3246 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3247 REGB0 = TAG_Bool(true);
3248 /* ./syntax//typing.nit:521 */
3249 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3250 stack_frame_head = fra.me.prev;
3251 return;
3252 }
3253 void typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3254 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3255 val_t REGB0;
3256 val_t REGB1;
3257 val_t tmp;
3258 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3259 fra.me.file = LOCATE_typing;
3260 fra.me.line = 529;
3261 fra.me.meth = LOCATE_typing___AWhileExpr___accept_typing;
3262 fra.me.has_broke = 0;
3263 fra.me.REG_size = 6;
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[5] = NIT_NULL;
3270 fra.me.REG[0] = p0;
3271 fra.me.REG[1] = p1;
3272 fra.me.REG[2] = NEW_EscapableBlock_escape___EscapableBlock___init(fra.me.REG[0]);
3273 /* ./syntax//typing.nit:532 */
3274 ATTR_typing___AWhileExpr____escapable(fra.me.REG[0]) = fra.me.REG[2];
3275 fra.me.REG[3] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3276 fra.me.REG[4] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3277 /* ./syntax//typing.nit:533 */
3278 CALL_escape___EscapableContext___push(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
3279 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3280 fra.me.REG[2] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3281 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3282 /* ./syntax//typing.nit:536 */
3283 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3284 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3285 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3286 /* ./syntax//typing.nit:537 */
3287 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3288 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3289 /* ./syntax//typing.nit:540 */
3290 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3291 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3292 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3293 /* ./syntax//typing.nit:541 */
3294 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
3295 fra.me.REG[5] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3296 /* ./syntax//typing.nit:544 */
3297 CALL_typing___TypingVisitor___use_if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3298 fra.me.REG[5] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3299 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3300 /* ./syntax//typing.nit:547 */
3301 if (UNTAG_Bool(REGB0)) {
3302 } else {
3303 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3304 if (UNTAG_Bool(REGB1)) {
3305 REGB1 = TAG_Bool(false);
3306 REGB0 = REGB1;
3307 } else {
3308 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
3309 REGB0 = REGB1;
3310 }
3311 }
3312 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3313 if (UNTAG_Bool(REGB0)) {
3314 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3315 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3316 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3317 /* ./syntax//typing.nit:548 */
3318 if (UNTAG_Bool(REGB0)) {
3319 } else {
3320 fprintf(stderr, "Cast failed");
3321 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 548);
3322 nit_exit(1);
3323 }
3324 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3325 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3326 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3327 /* ./syntax//typing.nit:549 */
3328 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3329 }
3330 /* ./syntax//typing.nit:552 */
3331 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3332 /* ./syntax//typing.nit:553 */
3333 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3334 fra.me.REG[1] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3335 /* ./syntax//typing.nit:554 */
3336 CALL_escape___EscapableContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3337 REGB0 = TAG_Bool(true);
3338 /* ./syntax//typing.nit:555 */
3339 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3340 stack_frame_head = fra.me.prev;
3341 return;
3342 }
3343 val_t typing___AWhileExpr___escapable(val_t p0){
3344 struct {struct stack_frame_t me;} fra;
3345 val_t tmp;
3346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3347 fra.me.file = LOCATE_typing;
3348 fra.me.line = 526;
3349 fra.me.meth = LOCATE_typing___AWhileExpr___escapable;
3350 fra.me.has_broke = 0;
3351 fra.me.REG_size = 1;
3352 fra.me.REG[0] = NIT_NULL;
3353 fra.me.REG[0] = p0;
3354 fra.me.REG[0] = ATTR_typing___AWhileExpr____escapable(fra.me.REG[0]);
3355 /* ./syntax//typing.nit:526 */
3356 stack_frame_head = fra.me.prev;
3357 return fra.me.REG[0];
3358 }
3359 void typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3360 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3361 val_t REGB0;
3362 val_t REGB1;
3363 val_t tmp;
3364 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3365 fra.me.file = LOCATE_typing;
3366 fra.me.line = 563;
3367 fra.me.meth = LOCATE_typing___ALoopExpr___accept_typing;
3368 fra.me.has_broke = 0;
3369 fra.me.REG_size = 6;
3370 fra.me.REG[0] = NIT_NULL;
3371 fra.me.REG[1] = NIT_NULL;
3372 fra.me.REG[2] = NIT_NULL;
3373 fra.me.REG[3] = NIT_NULL;
3374 fra.me.REG[4] = NIT_NULL;
3375 fra.me.REG[5] = NIT_NULL;
3376 fra.me.REG[0] = p0;
3377 fra.me.REG[1] = p1;
3378 fra.me.REG[2] = NEW_EscapableBlock_escape___EscapableBlock___init(fra.me.REG[0]);
3379 /* ./syntax//typing.nit:566 */
3380 ATTR_typing___ALoopExpr____escapable(fra.me.REG[0]) = fra.me.REG[2];
3381 fra.me.REG[3] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3382 fra.me.REG[4] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3383 /* ./syntax//typing.nit:567 */
3384 CALL_escape___EscapableContext___push(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
3385 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3386 fra.me.REG[2] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3387 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3388 /* ./syntax//typing.nit:570 */
3389 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3390 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3391 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3392 /* ./syntax//typing.nit:571 */
3393 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3394 fra.me.REG[3] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3395 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3396 /* ./syntax//typing.nit:574 */
3397 if (UNTAG_Bool(REGB0)) {
3398 } else {
3399 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3400 if (UNTAG_Bool(REGB1)) {
3401 REGB1 = TAG_Bool(false);
3402 REGB0 = REGB1;
3403 } else {
3404 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3405 REGB0 = REGB1;
3406 }
3407 }
3408 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3409 if (UNTAG_Bool(REGB0)) {
3410 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3411 fra.me.REG[5] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3412 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3413 /* ./syntax//typing.nit:575 */
3414 if (UNTAG_Bool(REGB0)) {
3415 } else {
3416 fprintf(stderr, "Cast failed");
3417 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 575);
3418 nit_exit(1);
3419 }
3420 fra.me.REG[5] = CALL_control_flow___VariableContext___sub(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3421 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3422 fra.me.REG[5] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3423 /* ./syntax//typing.nit:576 */
3424 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3425 }
3426 /* ./syntax//typing.nit:579 */
3427 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3428 /* ./syntax//typing.nit:580 */
3429 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3430 fra.me.REG[1] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3431 /* ./syntax//typing.nit:581 */
3432 CALL_escape___EscapableContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3433 REGB0 = TAG_Bool(true);
3434 /* ./syntax//typing.nit:582 */
3435 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3436 stack_frame_head = fra.me.prev;
3437 return;
3438 }
3439 val_t typing___ALoopExpr___escapable(val_t p0){
3440 struct {struct stack_frame_t me;} fra;
3441 val_t tmp;
3442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3443 fra.me.file = LOCATE_typing;
3444 fra.me.line = 560;
3445 fra.me.meth = LOCATE_typing___ALoopExpr___escapable;
3446 fra.me.has_broke = 0;
3447 fra.me.REG_size = 1;
3448 fra.me.REG[0] = NIT_NULL;
3449 fra.me.REG[0] = p0;
3450 fra.me.REG[0] = ATTR_typing___ALoopExpr____escapable(fra.me.REG[0]);
3451 /* ./syntax//typing.nit:560 */
3452 stack_frame_head = fra.me.prev;
3453 return fra.me.REG[0];
3454 }
3455 val_t typing___AForExpr___variable(val_t p0){
3456 struct {struct stack_frame_t me;} fra;
3457 val_t REGB0;
3458 val_t tmp;
3459 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3460 fra.me.file = LOCATE_typing;
3461 fra.me.line = 588;
3462 fra.me.meth = LOCATE_typing___AForExpr___variable;
3463 fra.me.has_broke = 0;
3464 fra.me.REG_size = 1;
3465 fra.me.REG[0] = NIT_NULL;
3466 fra.me.REG[0] = p0;
3467 fra.me.REG[0] = ATTR_typing___AForExpr____variable(fra.me.REG[0]);
3468 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3469 /* ./syntax//typing.nit:588 */
3470 if (UNTAG_Bool(REGB0)) {
3471 } else {
3472 fprintf(stderr, "Cast failed");
3473 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 588);
3474 nit_exit(1);
3475 }
3476 goto label1;
3477 label1: while(0);
3478 stack_frame_head = fra.me.prev;
3479 return fra.me.REG[0];
3480 }
3481 void typing___AForExpr___accept_typing(val_t p0, val_t p1){
3482 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3483 val_t REGB0;
3484 val_t REGB1;
3485 val_t tmp;
3486 static val_t once_value_2; /* Once value */
3487 static val_t once_value_3; /* Once value */
3488 static val_t once_value_4; /* Once value */
3489 static val_t once_value_5; /* Once value */
3490 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3491 fra.me.file = LOCATE_typing;
3492 fra.me.line = 593;
3493 fra.me.meth = LOCATE_typing___AForExpr___accept_typing;
3494 fra.me.has_broke = 0;
3495 fra.me.REG_size = 7;
3496 fra.me.REG[0] = NIT_NULL;
3497 fra.me.REG[1] = NIT_NULL;
3498 fra.me.REG[2] = NIT_NULL;
3499 fra.me.REG[3] = NIT_NULL;
3500 fra.me.REG[4] = NIT_NULL;
3501 fra.me.REG[5] = NIT_NULL;
3502 fra.me.REG[6] = NIT_NULL;
3503 fra.me.REG[0] = p0;
3504 fra.me.REG[1] = p1;
3505 fra.me.REG[2] = NEW_EscapableBlock_escape___EscapableBlock___init(fra.me.REG[0]);
3506 /* ./syntax//typing.nit:596 */
3507 ATTR_typing___AForExpr____escapable(fra.me.REG[0]) = fra.me.REG[2];
3508 fra.me.REG[3] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3509 fra.me.REG[4] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3510 /* ./syntax//typing.nit:597 */
3511 CALL_escape___EscapableContext___push(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
3512 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3513 fra.me.REG[2] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3514 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3515 /* ./syntax//typing.nit:601 */
3516 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3517 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3518 fra.me.REG[3] = CALL_control_flow___VariableContext___sub(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
3519 /* ./syntax//typing.nit:602 */
3520 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3521 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3522 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3523 fra.me.REG[5] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3524 fra.me.REG[5] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[3], fra.me.REG[5]);
3525 /* ./syntax//typing.nit:604 */
3526 ATTR_typing___AForExpr____variable(fra.me.REG[0]) = fra.me.REG[5];
3527 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3528 /* ./syntax//typing.nit:605 */
3529 CALL_control_flow___VariableContext___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3530 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3531 /* ./syntax//typing.nit:608 */
3532 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3533 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3534 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___type_collection(fra.me.REG[1])(fra.me.REG[1]);
3535 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[6]);
3536 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3537 /* ./syntax//typing.nit:610 */
3538 if (UNTAG_Bool(REGB0)) {
3539 goto label1;
3540 }
3541 fra.me.REG[6] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3542 fra.me.REG[6] = CALL_syntax_base___AExpr___stype(fra.me.REG[6])(fra.me.REG[6]);
3543 /* ./syntax//typing.nit:614 */
3544 if (!once_value_2) {
3545 if (!once_value_3) {
3546 fra.me.REG[3] = BOX_NativeString("iterator");
3547 REGB0 = TAG_Int(8);
3548 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3549 once_value_3 = fra.me.REG[3];
3550 register_static_object(&once_value_3);
3551 } else fra.me.REG[3] = once_value_3;
3552 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3553 once_value_2 = fra.me.REG[3];
3554 register_static_object(&once_value_2);
3555 } else fra.me.REG[3] = once_value_2;
3556 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[3]);
3557 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3558 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
3559 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3560 /* ./syntax//typing.nit:615 */
3561 if (UNTAG_Bool(REGB0)) {
3562 } else {
3563 fprintf(stderr, "Cast failed");
3564 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 615);
3565 nit_exit(1);
3566 }
3567 /* ./syntax//typing.nit:616 */
3568 if (!once_value_4) {
3569 if (!once_value_5) {
3570 fra.me.REG[3] = BOX_NativeString("item");
3571 REGB0 = TAG_Int(4);
3572 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3573 once_value_5 = fra.me.REG[3];
3574 register_static_object(&once_value_5);
3575 } else fra.me.REG[3] = once_value_5;
3576 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3577 once_value_4 = fra.me.REG[3];
3578 register_static_object(&once_value_4);
3579 } else fra.me.REG[3] = once_value_4;
3580 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[3]);
3581 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
3582 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
3583 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3584 /* ./syntax//typing.nit:617 */
3585 if (UNTAG_Bool(REGB0)) {
3586 } else {
3587 fprintf(stderr, "Cast failed");
3588 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 617);
3589 nit_exit(1);
3590 }
3591 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3592 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
3593 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3594 /* ./syntax//typing.nit:618 */
3595 if (UNTAG_Bool(REGB0)) {
3596 fra.me.REG[3] = CALL_static_type___MMType___not_for_self(fra.me.REG[6])(fra.me.REG[6]);
3597 fra.me.REG[6] = fra.me.REG[3];
3598 }
3599 /* ./syntax//typing.nit:619 */
3600 CALL_syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3601 fra.me.REG[6] = CALL_parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3602 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
3603 /* ./syntax//typing.nit:622 */
3604 if (UNTAG_Bool(REGB0)) {
3605 } else {
3606 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
3607 if (UNTAG_Bool(REGB1)) {
3608 REGB1 = TAG_Bool(false);
3609 REGB0 = REGB1;
3610 } else {
3611 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
3612 REGB0 = REGB1;
3613 }
3614 }
3615 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3616 if (UNTAG_Bool(REGB0)) {
3617 fra.me.REG[6] = CALL_parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3618 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3619 }
3620 /* ./syntax//typing.nit:625 */
3621 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3622 /* ./syntax//typing.nit:626 */
3623 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3624 fra.me.REG[1] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3625 /* ./syntax//typing.nit:627 */
3626 CALL_escape___EscapableContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3627 REGB0 = TAG_Bool(true);
3628 /* ./syntax//typing.nit:628 */
3629 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3630 label1: while(0);
3631 stack_frame_head = fra.me.prev;
3632 return;
3633 }
3634 val_t typing___AForExpr___escapable(val_t p0){
3635 struct {struct stack_frame_t me;} fra;
3636 val_t tmp;
3637 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3638 fra.me.file = LOCATE_typing;
3639 fra.me.line = 590;
3640 fra.me.meth = LOCATE_typing___AForExpr___escapable;
3641 fra.me.has_broke = 0;
3642 fra.me.REG_size = 1;
3643 fra.me.REG[0] = NIT_NULL;
3644 fra.me.REG[0] = p0;
3645 fra.me.REG[0] = ATTR_typing___AForExpr____escapable(fra.me.REG[0]);
3646 /* ./syntax//typing.nit:590 */
3647 stack_frame_head = fra.me.prev;
3648 return fra.me.REG[0];
3649 }
3650 void typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
3651 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3652 val_t REGB0;
3653 val_t REGB1;
3654 val_t tmp;
3655 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3656 fra.me.file = LOCATE_typing;
3657 fra.me.line = 633;
3658 fra.me.meth = LOCATE_typing___AAssertExpr___accept_typing;
3659 fra.me.has_broke = 0;
3660 fra.me.REG_size = 4;
3661 fra.me.REG[0] = NIT_NULL;
3662 fra.me.REG[1] = NIT_NULL;
3663 fra.me.REG[2] = NIT_NULL;
3664 fra.me.REG[3] = NIT_NULL;
3665 fra.me.REG[0] = p0;
3666 fra.me.REG[1] = p1;
3667 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3668 /* ./syntax//typing.nit:636 */
3669 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3670 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3671 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3672 /* ./syntax//typing.nit:637 */
3673 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3674 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3675 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3676 /* ./syntax//typing.nit:640 */
3677 if (UNTAG_Bool(REGB0)) {
3678 } else {
3679 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3680 if (UNTAG_Bool(REGB1)) {
3681 REGB1 = TAG_Bool(false);
3682 REGB0 = REGB1;
3683 } else {
3684 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3685 REGB0 = REGB1;
3686 }
3687 }
3688 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3689 if (UNTAG_Bool(REGB0)) {
3690 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3691 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3692 /* ./syntax//typing.nit:642 */
3693 CALL_typing___TypingVisitor___use_if_false_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3694 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3695 /* ./syntax//typing.nit:643 */
3696 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3697 /* ./syntax//typing.nit:644 */
3698 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3699 }
3700 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3701 /* ./syntax//typing.nit:648 */
3702 CALL_typing___TypingVisitor___use_if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3703 REGB0 = TAG_Bool(true);
3704 /* ./syntax//typing.nit:649 */
3705 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3706 stack_frame_head = fra.me.prev;
3707 return;
3708 }
3709 val_t typing___AVarFormExpr___variable(val_t p0){
3710 struct {struct stack_frame_t me;} fra;
3711 val_t REGB0;
3712 val_t tmp;
3713 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3714 fra.me.file = LOCATE_typing;
3715 fra.me.line = 655;
3716 fra.me.meth = LOCATE_typing___AVarFormExpr___variable;
3717 fra.me.has_broke = 0;
3718 fra.me.REG_size = 1;
3719 fra.me.REG[0] = NIT_NULL;
3720 fra.me.REG[0] = p0;
3721 fra.me.REG[0] = ATTR_typing___AVarFormExpr____variable(fra.me.REG[0]);
3722 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3723 /* ./syntax//typing.nit:655 */
3724 if (UNTAG_Bool(REGB0)) {
3725 } else {
3726 fprintf(stderr, "Cast failed");
3727 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 655);
3728 nit_exit(1);
3729 }
3730 goto label1;
3731 label1: while(0);
3732 stack_frame_head = fra.me.prev;
3733 return fra.me.REG[0];
3734 }
3735 void typing___AVarExpr___after_typing(val_t p0, val_t p1){
3736 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3737 val_t REGB0;
3738 val_t REGB1;
3739 val_t tmp;
3740 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3741 fra.me.file = LOCATE_typing;
3742 fra.me.line = 661;
3743 fra.me.meth = LOCATE_typing___AVarExpr___after_typing;
3744 fra.me.has_broke = 0;
3745 fra.me.REG_size = 4;
3746 fra.me.REG[0] = NIT_NULL;
3747 fra.me.REG[1] = NIT_NULL;
3748 fra.me.REG[2] = NIT_NULL;
3749 fra.me.REG[3] = NIT_NULL;
3750 fra.me.REG[0] = p0;
3751 fra.me.REG[1] = p1;
3752 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3753 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3754 /* ./syntax//typing.nit:663 */
3755 CALL_control_flow___VariableContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
3756 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3757 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3758 fra.me.REG[3] = CALL_control_flow___VariableContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3759 /* ./syntax//typing.nit:664 */
3760 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
3761 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
3762 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3763 /* ./syntax//typing.nit:665 */
3764 if (UNTAG_Bool(REGB0)) {
3765 } else {
3766 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3767 if (UNTAG_Bool(REGB1)) {
3768 REGB1 = TAG_Bool(false);
3769 REGB0 = REGB1;
3770 } else {
3771 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3772 REGB0 = REGB1;
3773 }
3774 }
3775 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3776 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3777 stack_frame_head = fra.me.prev;
3778 return;
3779 }
3780 val_t typing___AVarExpr___its_variable(val_t p0){
3781 struct {struct stack_frame_t me;} fra;
3782 val_t tmp;
3783 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3784 fra.me.file = LOCATE_typing;
3785 fra.me.line = 659;
3786 fra.me.meth = LOCATE_typing___AVarExpr___its_variable;
3787 fra.me.has_broke = 0;
3788 fra.me.REG_size = 1;
3789 fra.me.REG[0] = NIT_NULL;
3790 fra.me.REG[0] = p0;
3791 fra.me.REG[0] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3792 /* ./syntax//typing.nit:659 */
3793 goto label1;
3794 label1: while(0);
3795 stack_frame_head = fra.me.prev;
3796 return fra.me.REG[0];
3797 }
3798 void typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
3799 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3800 val_t REGB0;
3801 val_t REGB1;
3802 val_t tmp;
3803 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3804 fra.me.file = LOCATE_typing;
3805 fra.me.line = 670;
3806 fra.me.meth = LOCATE_typing___AVarAssignExpr___after_typing;
3807 fra.me.has_broke = 0;
3808 fra.me.REG_size = 4;
3809 fra.me.REG[0] = NIT_NULL;
3810 fra.me.REG[1] = NIT_NULL;
3811 fra.me.REG[2] = NIT_NULL;
3812 fra.me.REG[3] = NIT_NULL;
3813 fra.me.REG[0] = p0;
3814 fra.me.REG[1] = p1;
3815 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3816 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3817 /* ./syntax//typing.nit:672 */
3818 CALL_control_flow___VariableContext___mark_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3819 fra.me.REG[3] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3820 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3821 fra.me.REG[2] = CALL_control_flow___VariableContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3822 fra.me.REG[3] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3823 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3824 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3825 /* ./syntax//typing.nit:676 */
3826 if (UNTAG_Bool(REGB0)) {
3827 goto label1;
3828 }
3829 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3830 /* ./syntax//typing.nit:677 */
3831 if (UNTAG_Bool(REGB0)) {
3832 } else {
3833 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3834 if (UNTAG_Bool(REGB1)) {
3835 REGB1 = TAG_Bool(false);
3836 REGB0 = REGB1;
3837 } else {
3838 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3839 REGB0 = REGB1;
3840 }
3841 }
3842 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3843 if (UNTAG_Bool(REGB0)) {
3844 fra.me.REG[3] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3845 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3846 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3847 } else {
3848 REGB1 = TAG_Bool(false);
3849 REGB0 = REGB1;
3850 }
3851 if (UNTAG_Bool(REGB0)) {
3852 goto label1;
3853 }
3854 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
3855 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3856 fra.me.REG[3] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3857 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
3858 /* ./syntax//typing.nit:680 */
3859 CALL_control_flow___VariableContext___stype__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3860 REGB0 = TAG_Bool(true);
3861 /* ./syntax//typing.nit:682 */
3862 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3863 label1: while(0);
3864 stack_frame_head = fra.me.prev;
3865 return;
3866 }
3867 val_t typing___AReassignFormExpr___assign_method(val_t p0){
3868 struct {struct stack_frame_t me;} fra;
3869 val_t REGB0;
3870 val_t tmp;
3871 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3872 fra.me.file = LOCATE_typing;
3873 fra.me.line = 709;
3874 fra.me.meth = LOCATE_typing___AReassignFormExpr___assign_method;
3875 fra.me.has_broke = 0;
3876 fra.me.REG_size = 1;
3877 fra.me.REG[0] = NIT_NULL;
3878 fra.me.REG[0] = p0;
3879 fra.me.REG[0] = ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]);
3880 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3881 /* ./syntax//typing.nit:709 */
3882 if (UNTAG_Bool(REGB0)) {
3883 } else {
3884 fprintf(stderr, "Cast failed");
3885 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 709);
3886 nit_exit(1);
3887 }
3888 goto label1;
3889 label1: while(0);
3890 stack_frame_head = fra.me.prev;
3891 return fra.me.REG[0];
3892 }
3893 val_t typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
3894 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3895 val_t REGB0;
3896 val_t REGB1;
3897 val_t tmp;
3898 static val_t once_value_2; /* Once value */
3899 static val_t once_value_3; /* Once value */
3900 static val_t once_value_4; /* Once value */
3901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3902 fra.me.file = LOCATE_typing;
3903 fra.me.line = 687;
3904 fra.me.meth = LOCATE_typing___AReassignFormExpr___do_rvalue_typing;
3905 fra.me.has_broke = 0;
3906 fra.me.REG_size = 8;
3907 fra.me.REG[0] = NIT_NULL;
3908 fra.me.REG[1] = NIT_NULL;
3909 fra.me.REG[2] = NIT_NULL;
3910 fra.me.REG[3] = NIT_NULL;
3911 fra.me.REG[4] = NIT_NULL;
3912 fra.me.REG[5] = NIT_NULL;
3913 fra.me.REG[6] = NIT_NULL;
3914 fra.me.REG[7] = NIT_NULL;
3915 fra.me.REG[0] = p0;
3916 fra.me.REG[1] = p1;
3917 fra.me.REG[2] = p2;
3918 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3919 /* ./syntax//typing.nit:692 */
3920 if (UNTAG_Bool(REGB0)) {
3921 } else {
3922 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3923 if (UNTAG_Bool(REGB1)) {
3924 REGB1 = TAG_Bool(false);
3925 REGB0 = REGB1;
3926 } else {
3927 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3928 REGB0 = REGB1;
3929 }
3930 }
3931 if (UNTAG_Bool(REGB0)) {
3932 fra.me.REG[3] = NIT_NULL;
3933 /* ./syntax//typing.nit:693 */
3934 goto label1;
3935 }
3936 fra.me.REG[4] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
3937 fra.me.REG[4] = CALL_typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
3938 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3939 /* ./syntax//typing.nit:696 */
3940 if (UNTAG_Bool(REGB0)) {
3941 fprintf(stderr, "Reciever is null");
3942 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 696);
3943 nit_exit(1);
3944 }
3945 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
3946 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3947 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3948 /* ./syntax//typing.nit:697 */
3949 if (UNTAG_Bool(REGB0)) {
3950 REGB0 = TAG_Int(5);
3951 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
3952 /* ./syntax//typing.nit:698 */
3953 if (!once_value_2) {
3954 fra.me.REG[7] = BOX_NativeString("Error: Method '");
3955 REGB0 = TAG_Int(15);
3956 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3957 once_value_2 = fra.me.REG[7];
3958 register_static_object(&once_value_2);
3959 } else fra.me.REG[7] = once_value_2;
3960 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
3961 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
3962 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
3963 if (!once_value_3) {
3964 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
3965 REGB0 = TAG_Int(20);
3966 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3967 once_value_3 = fra.me.REG[7];
3968 register_static_object(&once_value_3);
3969 } else fra.me.REG[7] = once_value_3;
3970 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
3971 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
3972 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
3973 if (!once_value_4) {
3974 fra.me.REG[7] = BOX_NativeString(".");
3975 REGB0 = TAG_Int(1);
3976 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3977 once_value_4 = fra.me.REG[7];
3978 register_static_object(&once_value_4);
3979 } else fra.me.REG[7] = once_value_4;
3980 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
3981 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
3982 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
3983 fra.me.REG[3] = NIT_NULL;
3984 /* ./syntax//typing.nit:699 */
3985 goto label1;
3986 }
3987 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3988 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
3989 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
3990 REGB0 = TAG_Bool(false);
3991 /* ./syntax//typing.nit:702 */
3992 CALL_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);
3993 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3994 /* ./syntax//typing.nit:704 */
3995 ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
3996 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3997 REGB0 = TAG_Int(0);
3998 fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
3999 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4000 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4001 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4002 /* ./syntax//typing.nit:705 */
4003 if (UNTAG_Bool(REGB0)) {
4004 fra.me.REG[3] = NIT_NULL;
4005 goto label1;
4006 }
4007 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4008 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4009 /* ./syntax//typing.nit:706 */
4010 if (UNTAG_Bool(REGB0)) {
4011 fprintf(stderr, "Reciever is null");
4012 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 706);
4013 nit_exit(1);
4014 }
4015 fra.me.REG[2] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4016 fra.me.REG[3] = fra.me.REG[2];
4017 goto label1;
4018 label1: while(0);
4019 stack_frame_head = fra.me.prev;
4020 return fra.me.REG[3];
4021 }
4022 void typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4023 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4024 val_t REGB0;
4025 val_t REGB1;
4026 val_t tmp;
4027 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4028 fra.me.file = LOCATE_typing;
4029 fra.me.line = 714;
4030 fra.me.meth = LOCATE_typing___AVarReassignExpr___after_typing;
4031 fra.me.has_broke = 0;
4032 fra.me.REG_size = 5;
4033 fra.me.REG[0] = NIT_NULL;
4034 fra.me.REG[1] = NIT_NULL;
4035 fra.me.REG[2] = NIT_NULL;
4036 fra.me.REG[3] = NIT_NULL;
4037 fra.me.REG[4] = NIT_NULL;
4038 fra.me.REG[0] = p0;
4039 fra.me.REG[1] = p1;
4040 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4041 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4042 /* ./syntax//typing.nit:716 */
4043 CALL_control_flow___VariableContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4044 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4045 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4046 /* ./syntax//typing.nit:717 */
4047 CALL_control_flow___VariableContext___mark_is_set(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4048 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4049 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4050 fra.me.REG[3] = CALL_control_flow___VariableContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4051 fra.me.REG[3] = CALL_typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
4052 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4053 /* ./syntax//typing.nit:720 */
4054 if (UNTAG_Bool(REGB0)) {
4055 } else {
4056 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4057 if (UNTAG_Bool(REGB1)) {
4058 REGB1 = TAG_Bool(false);
4059 REGB0 = REGB1;
4060 } else {
4061 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4062 REGB0 = REGB1;
4063 }
4064 }
4065 if (UNTAG_Bool(REGB0)) {
4066 goto label1;
4067 }
4068 fra.me.REG[2] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4069 fra.me.REG[4] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4070 fra.me.REG[4] = CALL_control_flow___VariableContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
4071 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4072 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4073 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4074 /* ./syntax//typing.nit:724 */
4075 if (UNTAG_Bool(REGB0)) {
4076 goto label1;
4077 }
4078 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4079 /* ./syntax//typing.nit:725 */
4080 if (UNTAG_Bool(REGB0)) {
4081 } else {
4082 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4083 if (UNTAG_Bool(REGB1)) {
4084 REGB1 = TAG_Bool(false);
4085 REGB0 = REGB1;
4086 } else {
4087 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4088 REGB0 = REGB1;
4089 }
4090 }
4091 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4092 if (UNTAG_Bool(REGB0)) {
4093 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4094 REGB0 = CALL_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]);
4095 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4096 } else {
4097 REGB1 = TAG_Bool(false);
4098 REGB0 = REGB1;
4099 }
4100 if (UNTAG_Bool(REGB0)) {
4101 goto label1;
4102 }
4103 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4104 fra.me.REG[4] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4105 /* ./syntax//typing.nit:728 */
4106 CALL_control_flow___VariableContext___stype__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
4107 REGB0 = TAG_Bool(true);
4108 /* ./syntax//typing.nit:730 */
4109 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4110 label1: while(0);
4111 stack_frame_head = fra.me.prev;
4112 return;
4113 }
4114 val_t typing___AAssignOp___method_name(val_t p0){
4115 struct {struct stack_frame_t me;} fra;
4116 val_t tmp;
4117 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4118 fra.me.file = LOCATE_typing;
4119 fra.me.line = 735;
4120 fra.me.meth = LOCATE_typing___AAssignOp___method_name;
4121 fra.me.has_broke = 0;
4122 fra.me.REG_size = 0;
4123 /* ./syntax//typing.nit:735 */
4124 fprintf(stderr, "Deferred method called");
4125 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 735);
4126 nit_exit(1);
4127 stack_frame_head = fra.me.prev;
4128 return NIT_NULL;
4129 }
4130 val_t typing___APlusAssignOp___method_name(val_t p0){
4131 struct {struct stack_frame_t me;} fra;
4132 val_t REGB0;
4133 val_t tmp;
4134 static val_t once_value_1; /* Once value */
4135 static val_t once_value_2; /* Once value */
4136 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4137 fra.me.file = LOCATE_typing;
4138 fra.me.line = 738;
4139 fra.me.meth = LOCATE_typing___APlusAssignOp___method_name;
4140 fra.me.has_broke = 0;
4141 fra.me.REG_size = 1;
4142 fra.me.REG[0] = NIT_NULL;
4143 fra.me.REG[0] = p0;
4144 /* ./syntax//typing.nit:738 */
4145 if (!once_value_1) {
4146 if (!once_value_2) {
4147 fra.me.REG[0] = BOX_NativeString("+");
4148 REGB0 = TAG_Int(1);
4149 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4150 once_value_2 = fra.me.REG[0];
4151 register_static_object(&once_value_2);
4152 } else fra.me.REG[0] = once_value_2;
4153 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4154 once_value_1 = fra.me.REG[0];
4155 register_static_object(&once_value_1);
4156 } else fra.me.REG[0] = once_value_1;
4157 goto label3;
4158 label3: while(0);
4159 stack_frame_head = fra.me.prev;
4160 return fra.me.REG[0];
4161 }
4162 val_t typing___AMinusAssignOp___method_name(val_t p0){
4163 struct {struct stack_frame_t me;} fra;
4164 val_t REGB0;
4165 val_t tmp;
4166 static val_t once_value_1; /* Once value */
4167 static val_t once_value_2; /* Once value */
4168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4169 fra.me.file = LOCATE_typing;
4170 fra.me.line = 741;
4171 fra.me.meth = LOCATE_typing___AMinusAssignOp___method_name;
4172 fra.me.has_broke = 0;
4173 fra.me.REG_size = 1;
4174 fra.me.REG[0] = NIT_NULL;
4175 fra.me.REG[0] = p0;
4176 /* ./syntax//typing.nit:741 */
4177 if (!once_value_1) {
4178 if (!once_value_2) {
4179 fra.me.REG[0] = BOX_NativeString("-");
4180 REGB0 = TAG_Int(1);
4181 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4182 once_value_2 = fra.me.REG[0];
4183 register_static_object(&once_value_2);
4184 } else fra.me.REG[0] = once_value_2;
4185 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4186 once_value_1 = fra.me.REG[0];
4187 register_static_object(&once_value_1);
4188 } else fra.me.REG[0] = once_value_1;
4189 goto label3;
4190 label3: while(0);
4191 stack_frame_head = fra.me.prev;
4192 return fra.me.REG[0];
4193 }
4194 val_t typing___ASelfExpr___variable(val_t p0){
4195 struct {struct stack_frame_t me;} fra;
4196 val_t REGB0;
4197 val_t tmp;
4198 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4199 fra.me.file = LOCATE_typing;
4200 fra.me.line = 746;
4201 fra.me.meth = LOCATE_typing___ASelfExpr___variable;
4202 fra.me.has_broke = 0;
4203 fra.me.REG_size = 1;
4204 fra.me.REG[0] = NIT_NULL;
4205 fra.me.REG[0] = p0;
4206 fra.me.REG[0] = ATTR_typing___ASelfExpr____variable(fra.me.REG[0]);
4207 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4208 /* ./syntax//typing.nit:746 */
4209 if (UNTAG_Bool(REGB0)) {
4210 } else {
4211 fprintf(stderr, "Cast failed");
4212 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 746);
4213 nit_exit(1);
4214 }
4215 goto label1;
4216 label1: while(0);
4217 stack_frame_head = fra.me.prev;
4218 return fra.me.REG[0];
4219 }
4220 void typing___ASelfExpr___after_typing(val_t p0, val_t p1){
4221 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4222 val_t REGB0;
4223 val_t tmp;
4224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4225 fra.me.file = LOCATE_typing;
4226 fra.me.line = 750;
4227 fra.me.meth = LOCATE_typing___ASelfExpr___after_typing;
4228 fra.me.has_broke = 0;
4229 fra.me.REG_size = 3;
4230 fra.me.REG[0] = NIT_NULL;
4231 fra.me.REG[1] = NIT_NULL;
4232 fra.me.REG[2] = NIT_NULL;
4233 fra.me.REG[0] = p0;
4234 fra.me.REG[1] = p1;
4235 fra.me.REG[2] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
4236 /* ./syntax//typing.nit:752 */
4237 ATTR_typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
4238 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4239 fra.me.REG[2] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4240 fra.me.REG[2] = CALL_control_flow___VariableContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4241 /* ./syntax//typing.nit:753 */
4242 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4243 REGB0 = TAG_Bool(true);
4244 /* ./syntax//typing.nit:754 */
4245 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4246 stack_frame_head = fra.me.prev;
4247 return;
4248 }
4249 val_t typing___ASelfExpr___is_self(val_t p0){
4250 struct {struct stack_frame_t me;} fra;
4251 val_t REGB0;
4252 val_t tmp;
4253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4254 fra.me.file = LOCATE_typing;
4255 fra.me.line = 757;
4256 fra.me.meth = LOCATE_typing___ASelfExpr___is_self;
4257 fra.me.has_broke = 0;
4258 fra.me.REG_size = 1;
4259 fra.me.REG[0] = NIT_NULL;
4260 fra.me.REG[0] = p0;
4261 REGB0 = TAG_Bool(true);
4262 /* ./syntax//typing.nit:757 */
4263 goto label1;
4264 label1: while(0);
4265 stack_frame_head = fra.me.prev;
4266 return REGB0;
4267 }
4268 val_t typing___ASelfExpr___its_variable(val_t p0){
4269 struct {struct stack_frame_t me;} fra;
4270 val_t tmp;
4271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4272 fra.me.file = LOCATE_typing;
4273 fra.me.line = 748;
4274 fra.me.meth = LOCATE_typing___ASelfExpr___its_variable;
4275 fra.me.has_broke = 0;
4276 fra.me.REG_size = 1;
4277 fra.me.REG[0] = NIT_NULL;
4278 fra.me.REG[0] = p0;
4279 fra.me.REG[0] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4280 /* ./syntax//typing.nit:748 */
4281 goto label1;
4282 label1: while(0);
4283 stack_frame_head = fra.me.prev;
4284 return fra.me.REG[0];
4285 }
4286 val_t typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
4287 struct {struct stack_frame_t me;} fra;
4288 val_t REGB0;
4289 val_t tmp;
4290 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4291 fra.me.file = LOCATE_typing;
4292 fra.me.line = 761;
4293 fra.me.meth = LOCATE_typing___AImplicitSelfExpr___is_implicit_self;
4294 fra.me.has_broke = 0;
4295 fra.me.REG_size = 1;
4296 fra.me.REG[0] = NIT_NULL;
4297 fra.me.REG[0] = p0;
4298 REGB0 = TAG_Bool(true);
4299 /* ./syntax//typing.nit:761 */
4300 goto label1;
4301 label1: while(0);
4302 stack_frame_head = fra.me.prev;
4303 return REGB0;
4304 }
4305 void typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
4306 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4307 val_t REGB0;
4308 val_t REGB1;
4309 val_t tmp;
4310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4311 fra.me.file = LOCATE_typing;
4312 fra.me.line = 765;
4313 fra.me.meth = LOCATE_typing___AIfexprExpr___accept_typing;
4314 fra.me.has_broke = 0;
4315 fra.me.REG_size = 5;
4316 fra.me.REG[0] = NIT_NULL;
4317 fra.me.REG[1] = NIT_NULL;
4318 fra.me.REG[2] = NIT_NULL;
4319 fra.me.REG[3] = NIT_NULL;
4320 fra.me.REG[4] = NIT_NULL;
4321 fra.me.REG[0] = p0;
4322 fra.me.REG[1] = p1;
4323 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4324 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4325 /* ./syntax//typing.nit:770 */
4326 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4327 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4328 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4329 /* ./syntax//typing.nit:771 */
4330 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4331 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4332 /* ./syntax//typing.nit:774 */
4333 CALL_typing___TypingVisitor___use_if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4334 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4335 /* ./syntax//typing.nit:777 */
4336 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4337 /* ./syntax//typing.nit:780 */
4338 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4339 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4340 /* ./syntax//typing.nit:781 */
4341 CALL_typing___TypingVisitor___use_if_false_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4342 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4343 /* ./syntax//typing.nit:784 */
4344 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4345 REGB0 = TAG_Int(2);
4346 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4347 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4348 /* ./syntax//typing.nit:786 */
4349 array___Array___add(fra.me.REG[2], fra.me.REG[4]);
4350 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4351 array___Array___add(fra.me.REG[2], fra.me.REG[4]);
4352 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[2]);
4353 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4354 /* ./syntax//typing.nit:787 */
4355 if (UNTAG_Bool(REGB0)) {
4356 } else {
4357 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4358 if (UNTAG_Bool(REGB1)) {
4359 REGB1 = TAG_Bool(false);
4360 REGB0 = REGB1;
4361 } else {
4362 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4363 REGB0 = REGB1;
4364 }
4365 }
4366 if (UNTAG_Bool(REGB0)) {
4367 goto label1;
4368 }
4369 /* ./syntax//typing.nit:789 */
4370 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4371 REGB0 = TAG_Bool(true);
4372 /* ./syntax//typing.nit:790 */
4373 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4374 label1: while(0);
4375 stack_frame_head = fra.me.prev;
4376 return;
4377 }
4378 void typing___ABoolExpr___after_typing(val_t p0, val_t p1){
4379 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4380 val_t REGB0;
4381 val_t tmp;
4382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4383 fra.me.file = LOCATE_typing;
4384 fra.me.line = 795;
4385 fra.me.meth = LOCATE_typing___ABoolExpr___after_typing;
4386 fra.me.has_broke = 0;
4387 fra.me.REG_size = 2;
4388 fra.me.REG[0] = NIT_NULL;
4389 fra.me.REG[1] = NIT_NULL;
4390 fra.me.REG[0] = p0;
4391 fra.me.REG[1] = p1;
4392 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4393 /* ./syntax//typing.nit:797 */
4394 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4395 REGB0 = TAG_Bool(true);
4396 /* ./syntax//typing.nit:798 */
4397 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4398 stack_frame_head = fra.me.prev;
4399 return;
4400 }
4401 void typing___AOrExpr___accept_typing(val_t p0, val_t p1){
4402 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4403 val_t REGB0;
4404 val_t REGB1;
4405 val_t tmp;
4406 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4407 fra.me.file = LOCATE_typing;
4408 fra.me.line = 803;
4409 fra.me.meth = LOCATE_typing___AOrExpr___accept_typing;
4410 fra.me.has_broke = 0;
4411 fra.me.REG_size = 5;
4412 fra.me.REG[0] = NIT_NULL;
4413 fra.me.REG[1] = NIT_NULL;
4414 fra.me.REG[2] = NIT_NULL;
4415 fra.me.REG[3] = NIT_NULL;
4416 fra.me.REG[4] = NIT_NULL;
4417 fra.me.REG[0] = p0;
4418 fra.me.REG[1] = p1;
4419 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4420 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4421 /* ./syntax//typing.nit:807 */
4422 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4423 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4424 /* ./syntax//typing.nit:810 */
4425 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4426 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4427 /* ./syntax//typing.nit:813 */
4428 CALL_typing___TypingVisitor___use_if_false_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4429 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4430 /* ./syntax//typing.nit:816 */
4431 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4432 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4433 fra.me.REG[4] = CALL_typing___AExpr___if_false_variable_ctx(fra.me.REG[4])(fra.me.REG[4]);
4434 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4435 /* ./syntax//typing.nit:817 */
4436 if (UNTAG_Bool(REGB0)) {
4437 } else {
4438 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4439 if (UNTAG_Bool(REGB1)) {
4440 REGB1 = TAG_Bool(false);
4441 REGB0 = REGB1;
4442 } else {
4443 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4444 REGB0 = REGB1;
4445 }
4446 }
4447 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4448 if (UNTAG_Bool(REGB0)) {
4449 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4450 fra.me.REG[4] = CALL_typing___AExpr___if_false_variable_ctx(fra.me.REG[4])(fra.me.REG[4]);
4451 /* ./syntax//typing.nit:818 */
4452 ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[0]) = fra.me.REG[4];
4453 } else {
4454 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4455 /* ./syntax//typing.nit:820 */
4456 ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[0]) = fra.me.REG[4];
4457 }
4458 /* ./syntax//typing.nit:823 */
4459 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4460 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4461 /* ./syntax//typing.nit:825 */
4462 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4463 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4464 /* ./syntax//typing.nit:826 */
4465 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4466 /* ./syntax//typing.nit:827 */
4467 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4468 REGB0 = TAG_Bool(true);
4469 /* ./syntax//typing.nit:828 */
4470 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4471 stack_frame_head = fra.me.prev;
4472 return;
4473 }
4474 void typing___AAndExpr___accept_typing(val_t p0, val_t p1){
4475 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4476 val_t REGB0;
4477 val_t REGB1;
4478 val_t tmp;
4479 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4480 fra.me.file = LOCATE_typing;
4481 fra.me.line = 833;
4482 fra.me.meth = LOCATE_typing___AAndExpr___accept_typing;
4483 fra.me.has_broke = 0;
4484 fra.me.REG_size = 5;
4485 fra.me.REG[0] = NIT_NULL;
4486 fra.me.REG[1] = NIT_NULL;
4487 fra.me.REG[2] = NIT_NULL;
4488 fra.me.REG[3] = NIT_NULL;
4489 fra.me.REG[4] = NIT_NULL;
4490 fra.me.REG[0] = p0;
4491 fra.me.REG[1] = p1;
4492 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4493 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4494 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4495 /* ./syntax//typing.nit:839 */
4496 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4497 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4498 /* ./syntax//typing.nit:842 */
4499 CALL_typing___TypingVisitor___use_if_true_variable_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4500 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4501 /* ./syntax//typing.nit:845 */
4502 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4503 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4504 fra.me.REG[4] = CALL_typing___AExpr___if_true_variable_ctx(fra.me.REG[4])(fra.me.REG[4]);
4505 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4506 /* ./syntax//typing.nit:846 */
4507 if (UNTAG_Bool(REGB0)) {
4508 } else {
4509 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4510 if (UNTAG_Bool(REGB1)) {
4511 REGB1 = TAG_Bool(false);
4512 REGB0 = REGB1;
4513 } else {
4514 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4515 REGB0 = REGB1;
4516 }
4517 }
4518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4519 if (UNTAG_Bool(REGB0)) {
4520 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4521 fra.me.REG[4] = CALL_typing___AExpr___if_true_variable_ctx(fra.me.REG[4])(fra.me.REG[4]);
4522 /* ./syntax//typing.nit:847 */
4523 ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]) = fra.me.REG[4];
4524 } else {
4525 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
4526 /* ./syntax//typing.nit:849 */
4527 ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]) = fra.me.REG[4];
4528 }
4529 /* ./syntax//typing.nit:852 */
4530 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4531 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4532 /* ./syntax//typing.nit:854 */
4533 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4534 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4535 /* ./syntax//typing.nit:855 */
4536 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4537 /* ./syntax//typing.nit:856 */
4538 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4539 REGB0 = TAG_Bool(true);
4540 /* ./syntax//typing.nit:857 */
4541 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4542 stack_frame_head = fra.me.prev;
4543 return;
4544 }
4545 void typing___ANotExpr___after_typing(val_t p0, val_t p1){
4546 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4547 val_t REGB0;
4548 val_t tmp;
4549 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4550 fra.me.file = LOCATE_typing;
4551 fra.me.line = 862;
4552 fra.me.meth = LOCATE_typing___ANotExpr___after_typing;
4553 fra.me.has_broke = 0;
4554 fra.me.REG_size = 4;
4555 fra.me.REG[0] = NIT_NULL;
4556 fra.me.REG[1] = NIT_NULL;
4557 fra.me.REG[2] = NIT_NULL;
4558 fra.me.REG[3] = NIT_NULL;
4559 fra.me.REG[0] = p0;
4560 fra.me.REG[1] = p1;
4561 fra.me.REG[2] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4562 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4563 /* ./syntax//typing.nit:864 */
4564 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4565 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4566 fra.me.REG[3] = ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[3]);
4567 /* ./syntax//typing.nit:867 */
4568 ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[0]) = fra.me.REG[3];
4569 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4570 fra.me.REG[3] = ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[3]);
4571 /* ./syntax//typing.nit:868 */
4572 ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]) = fra.me.REG[3];
4573 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4574 /* ./syntax//typing.nit:870 */
4575 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4576 REGB0 = TAG_Bool(true);
4577 /* ./syntax//typing.nit:871 */
4578 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4579 stack_frame_head = fra.me.prev;
4580 return;
4581 }
4582 void typing___AIntExpr___after_typing(val_t p0, val_t p1){
4583 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4584 val_t REGB0;
4585 val_t tmp;
4586 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4587 fra.me.file = LOCATE_typing;
4588 fra.me.line = 876;
4589 fra.me.meth = LOCATE_typing___AIntExpr___after_typing;
4590 fra.me.has_broke = 0;
4591 fra.me.REG_size = 2;
4592 fra.me.REG[0] = NIT_NULL;
4593 fra.me.REG[1] = NIT_NULL;
4594 fra.me.REG[0] = p0;
4595 fra.me.REG[1] = p1;
4596 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
4597 /* ./syntax//typing.nit:878 */
4598 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4599 REGB0 = TAG_Bool(true);
4600 /* ./syntax//typing.nit:879 */
4601 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4602 stack_frame_head = fra.me.prev;
4603 return;
4604 }
4605 void typing___AFloatExpr___after_typing(val_t p0, val_t p1){
4606 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4607 val_t REGB0;
4608 val_t tmp;
4609 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4610 fra.me.file = LOCATE_typing;
4611 fra.me.line = 884;
4612 fra.me.meth = LOCATE_typing___AFloatExpr___after_typing;
4613 fra.me.has_broke = 0;
4614 fra.me.REG_size = 2;
4615 fra.me.REG[0] = NIT_NULL;
4616 fra.me.REG[1] = NIT_NULL;
4617 fra.me.REG[0] = p0;
4618 fra.me.REG[1] = p1;
4619 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
4620 /* ./syntax//typing.nit:886 */
4621 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4622 REGB0 = TAG_Bool(true);
4623 /* ./syntax//typing.nit:887 */
4624 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4625 stack_frame_head = fra.me.prev;
4626 return;
4627 }
4628 void typing___ACharExpr___after_typing(val_t p0, val_t p1){
4629 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4630 val_t REGB0;
4631 val_t tmp;
4632 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4633 fra.me.file = LOCATE_typing;
4634 fra.me.line = 892;
4635 fra.me.meth = LOCATE_typing___ACharExpr___after_typing;
4636 fra.me.has_broke = 0;
4637 fra.me.REG_size = 2;
4638 fra.me.REG[0] = NIT_NULL;
4639 fra.me.REG[1] = NIT_NULL;
4640 fra.me.REG[0] = p0;
4641 fra.me.REG[1] = p1;
4642 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
4643 /* ./syntax//typing.nit:894 */
4644 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4645 REGB0 = TAG_Bool(true);
4646 /* ./syntax//typing.nit:895 */
4647 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4648 stack_frame_head = fra.me.prev;
4649 return;
4650 }
4651 void typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
4652 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4653 val_t REGB0;
4654 val_t tmp;
4655 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4656 fra.me.file = LOCATE_typing;
4657 fra.me.line = 900;
4658 fra.me.meth = LOCATE_typing___AStringFormExpr___after_typing;
4659 fra.me.has_broke = 0;
4660 fra.me.REG_size = 2;
4661 fra.me.REG[0] = NIT_NULL;
4662 fra.me.REG[1] = NIT_NULL;
4663 fra.me.REG[0] = p0;
4664 fra.me.REG[1] = p1;
4665 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
4666 /* ./syntax//typing.nit:902 */
4667 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4668 REGB0 = TAG_Bool(true);
4669 /* ./syntax//typing.nit:903 */
4670 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4671 stack_frame_head = fra.me.prev;
4672 return;
4673 }
4674 val_t typing___ASuperstringExpr___atype(val_t p0){
4675 struct {struct stack_frame_t me;} fra;
4676 val_t REGB0;
4677 val_t tmp;
4678 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4679 fra.me.file = LOCATE_typing;
4680 fra.me.line = 908;
4681 fra.me.meth = LOCATE_typing___ASuperstringExpr___atype;
4682 fra.me.has_broke = 0;
4683 fra.me.REG_size = 1;
4684 fra.me.REG[0] = NIT_NULL;
4685 fra.me.REG[0] = p0;
4686 fra.me.REG[0] = ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]);
4687 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4688 /* ./syntax//typing.nit:908 */
4689 if (UNTAG_Bool(REGB0)) {
4690 } else {
4691 fprintf(stderr, "Cast failed");
4692 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 908);
4693 nit_exit(1);
4694 }
4695 goto label1;
4696 label1: while(0);
4697 stack_frame_head = fra.me.prev;
4698 return fra.me.REG[0];
4699 }
4700 void typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
4701 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4702 val_t REGB0;
4703 val_t tmp;
4704 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4705 fra.me.file = LOCATE_typing;
4706 fra.me.line = 910;
4707 fra.me.meth = LOCATE_typing___ASuperstringExpr___after_typing;
4708 fra.me.has_broke = 0;
4709 fra.me.REG_size = 3;
4710 fra.me.REG[0] = NIT_NULL;
4711 fra.me.REG[1] = NIT_NULL;
4712 fra.me.REG[2] = NIT_NULL;
4713 fra.me.REG[0] = p0;
4714 fra.me.REG[1] = p1;
4715 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
4716 /* ./syntax//typing.nit:913 */
4717 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4718 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4719 /* ./syntax//typing.nit:915 */
4720 ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[2];
4721 REGB0 = TAG_Bool(true);
4722 /* ./syntax//typing.nit:916 */
4723 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4724 stack_frame_head = fra.me.prev;
4725 return;
4726 }
4727 void typing___ANullExpr___after_typing(val_t p0, val_t p1){
4728 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4729 val_t REGB0;
4730 val_t tmp;
4731 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4732 fra.me.file = LOCATE_typing;
4733 fra.me.line = 921;
4734 fra.me.meth = LOCATE_typing___ANullExpr___after_typing;
4735 fra.me.has_broke = 0;
4736 fra.me.REG_size = 2;
4737 fra.me.REG[0] = NIT_NULL;
4738 fra.me.REG[1] = NIT_NULL;
4739 fra.me.REG[0] = p0;
4740 fra.me.REG[1] = p1;
4741 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
4742 /* ./syntax//typing.nit:923 */
4743 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4744 REGB0 = TAG_Bool(true);
4745 /* ./syntax//typing.nit:924 */
4746 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4747 stack_frame_head = fra.me.prev;
4748 return;
4749 }
4750 void typing___AArrayExpr___after_typing(val_t p0, val_t p1){
4751 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4752 val_t REGB0;
4753 val_t REGB1;
4754 val_t tmp;
4755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4756 fra.me.file = LOCATE_typing;
4757 fra.me.line = 929;
4758 fra.me.meth = LOCATE_typing___AArrayExpr___after_typing;
4759 fra.me.has_broke = 0;
4760 fra.me.REG_size = 3;
4761 fra.me.REG[0] = NIT_NULL;
4762 fra.me.REG[1] = NIT_NULL;
4763 fra.me.REG[2] = NIT_NULL;
4764 fra.me.REG[0] = p0;
4765 fra.me.REG[1] = p1;
4766 fra.me.REG[2] = CALL_parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4767 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[2]);
4768 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4769 /* ./syntax//typing.nit:932 */
4770 if (UNTAG_Bool(REGB0)) {
4771 } else {
4772 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4773 if (UNTAG_Bool(REGB1)) {
4774 REGB1 = TAG_Bool(false);
4775 REGB0 = REGB1;
4776 } else {
4777 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4778 REGB0 = REGB1;
4779 }
4780 }
4781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4782 if (UNTAG_Bool(REGB0)) {
4783 CALL_typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
4784 }
4785 stack_frame_head = fra.me.prev;
4786 return;
4787 }
4788 void typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
4789 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4790 val_t REGB0;
4791 val_t tmp;
4792 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4793 fra.me.file = LOCATE_typing;
4794 fra.me.line = 935;
4795 fra.me.meth = LOCATE_typing___AArrayExpr___do_typing;
4796 fra.me.has_broke = 0;
4797 fra.me.REG_size = 3;
4798 fra.me.REG[0] = NIT_NULL;
4799 fra.me.REG[1] = NIT_NULL;
4800 fra.me.REG[2] = NIT_NULL;
4801 fra.me.REG[0] = p0;
4802 fra.me.REG[1] = p1;
4803 fra.me.REG[2] = p2;
4804 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4805 /* ./syntax//typing.nit:937 */
4806 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4807 REGB0 = TAG_Bool(true);
4808 /* ./syntax//typing.nit:938 */
4809 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4810 stack_frame_head = fra.me.prev;
4811 return;
4812 }
4813 void typing___ARangeExpr___after_typing(val_t p0, val_t p1){
4814 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4815 val_t REGB0;
4816 val_t REGB1;
4817 val_t tmp;
4818 static val_t once_value_2; /* Once value */
4819 static val_t once_value_3; /* Once value */
4820 static val_t once_value_4; /* Once value */
4821 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4822 fra.me.file = LOCATE_typing;
4823 fra.me.line = 943;
4824 fra.me.meth = LOCATE_typing___ARangeExpr___after_typing;
4825 fra.me.has_broke = 0;
4826 fra.me.REG_size = 6;
4827 fra.me.REG[0] = NIT_NULL;
4828 fra.me.REG[1] = NIT_NULL;
4829 fra.me.REG[2] = NIT_NULL;
4830 fra.me.REG[3] = NIT_NULL;
4831 fra.me.REG[4] = NIT_NULL;
4832 fra.me.REG[5] = NIT_NULL;
4833 fra.me.REG[0] = p0;
4834 fra.me.REG[1] = p1;
4835 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4836 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4837 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4838 /* ./syntax//typing.nit:945 */
4839 if (UNTAG_Bool(REGB0)) {
4840 REGB0 = TAG_Bool(true);
4841 } else {
4842 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4843 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4844 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
4845 REGB0 = REGB1;
4846 }
4847 if (UNTAG_Bool(REGB0)) {
4848 goto label1;
4849 }
4850 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4851 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4852 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4853 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4854 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4855 /* ./syntax//typing.nit:948 */
4856 if (UNTAG_Bool(REGB0)) {
4857 fra.me.REG[2] = fra.me.REG[3];
4858 /* ./syntax//typing.nit:949 */
4859 } else {
4860 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4861 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4862 /* ./syntax//typing.nit:950 */
4863 if (UNTAG_Bool(REGB0)) {
4864 REGB0 = TAG_Int(5);
4865 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
4866 /* ./syntax//typing.nit:951 */
4867 if (!once_value_2) {
4868 fra.me.REG[5] = BOX_NativeString("Type error: ");
4869 REGB0 = TAG_Int(12);
4870 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4871 once_value_2 = fra.me.REG[5];
4872 register_static_object(&once_value_2);
4873 } else fra.me.REG[5] = once_value_2;
4874 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
4875 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4876 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
4877 if (!once_value_3) {
4878 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
4879 REGB0 = TAG_Int(19);
4880 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4881 once_value_3 = fra.me.REG[5];
4882 register_static_object(&once_value_3);
4883 } else fra.me.REG[5] = once_value_3;
4884 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
4885 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4886 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
4887 if (!once_value_4) {
4888 fra.me.REG[3] = BOX_NativeString(".");
4889 REGB0 = TAG_Int(1);
4890 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
4891 once_value_4 = fra.me.REG[3];
4892 register_static_object(&once_value_4);
4893 } else fra.me.REG[3] = once_value_4;
4894 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
4895 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4896 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4897 /* ./syntax//typing.nit:952 */
4898 goto label1;
4899 }
4900 }
4901 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
4902 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4903 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4904 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4905 /* ./syntax//typing.nit:955 */
4906 if (UNTAG_Bool(REGB0)) {
4907 REGB0 = TAG_Bool(true);
4908 } else {
4909 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4910 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4911 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
4912 REGB0 = REGB1;
4913 }
4914 if (UNTAG_Bool(REGB0)) {
4915 goto label1;
4916 }
4917 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4918 /* ./syntax//typing.nit:956 */
4919 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4920 REGB0 = TAG_Bool(true);
4921 /* ./syntax//typing.nit:957 */
4922 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4923 label1: while(0);
4924 stack_frame_head = fra.me.prev;
4925 return;
4926 }
4927 val_t typing___ASuperExpr___init_in_superclass(val_t p0){
4928 struct {struct stack_frame_t me;} fra;
4929 val_t tmp;
4930 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4931 fra.me.file = LOCATE_typing;
4932 fra.me.line = 962;
4933 fra.me.meth = LOCATE_typing___ASuperExpr___init_in_superclass;
4934 fra.me.has_broke = 0;
4935 fra.me.REG_size = 1;
4936 fra.me.REG[0] = NIT_NULL;
4937 fra.me.REG[0] = p0;
4938 fra.me.REG[0] = ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
4939 /* ./syntax//typing.nit:962 */
4940 stack_frame_head = fra.me.prev;
4941 return fra.me.REG[0];
4942 }
4943 void typing___ASuperExpr___after_typing(val_t p0, val_t p1){
4944 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4945 val_t REGB0;
4946 val_t REGB1;
4947 val_t tmp;
4948 static val_t once_value_1; /* Once value */
4949 static val_t once_value_2; /* Once value */
4950 static val_t once_value_3; /* Once value */
4951 static val_t once_value_5; /* Once value */
4952 static val_t once_value_6; /* Once value */
4953 static val_t once_value_8; /* Once value */
4954 static val_t once_value_9; /* Once value */
4955 static val_t once_value_10; /* Once value */
4956 static val_t once_value_11; /* Once value */
4957 static val_t once_value_12; /* Once value */
4958 static val_t once_value_13; /* Once value */
4959 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4960 fra.me.file = LOCATE_typing;
4961 fra.me.line = 964;
4962 fra.me.meth = LOCATE_typing___ASuperExpr___after_typing;
4963 fra.me.has_broke = 0;
4964 fra.me.REG_size = 8;
4965 fra.me.REG[0] = NIT_NULL;
4966 fra.me.REG[1] = NIT_NULL;
4967 fra.me.REG[2] = NIT_NULL;
4968 fra.me.REG[3] = NIT_NULL;
4969 fra.me.REG[4] = NIT_NULL;
4970 fra.me.REG[5] = NIT_NULL;
4971 fra.me.REG[6] = NIT_NULL;
4972 fra.me.REG[7] = NIT_NULL;
4973 fra.me.REG[0] = p0;
4974 fra.me.REG[1] = p1;
4975 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
4976 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
4977 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
4978 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
4979 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4980 /* ./syntax//typing.nit:967 */
4981 if (UNTAG_Bool(REGB0)) {
4982 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
4983 REGB0 = TAG_Bool(true);
4984 /* ./syntax//typing.nit:968 */
4985 CALL_abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
4986 } else {
4987 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
4988 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
4989 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
4990 /* ./syntax//typing.nit:969 */
4991 if (UNTAG_Bool(REGB0)) {
4992 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
4993 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
4994 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
4995 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4996 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
4997 /* ./syntax//typing.nit:971 */
4998 while(1) {
4999 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
5000 if (UNTAG_Bool(REGB0)) {
5001 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
5002 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
5003 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
5004 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5005 /* ./syntax//typing.nit:972 */
5006 if (UNTAG_Bool(REGB0)) {
5007 REGB0 = TAG_Int(5);
5008 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
5009 /* ./syntax//typing.nit:973 */
5010 if (!once_value_1) {
5011 fra.me.REG[7] = BOX_NativeString("Error: ");
5012 REGB0 = TAG_Int(7);
5013 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
5014 once_value_1 = fra.me.REG[7];
5015 register_static_object(&once_value_1);
5016 } else fra.me.REG[7] = once_value_1;
5017 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
5018 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
5019 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5020 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
5021 if (!once_value_2) {
5022 fra.me.REG[7] = BOX_NativeString("::");
5023 REGB0 = TAG_Int(2);
5024 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
5025 once_value_2 = fra.me.REG[7];
5026 register_static_object(&once_value_2);
5027 } else fra.me.REG[7] = once_value_2;
5028 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
5029 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5030 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
5031 if (!once_value_3) {
5032 fra.me.REG[7] = BOX_NativeString(" is not a constructor.");
5033 REGB0 = TAG_Int(22);
5034 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
5035 once_value_3 = fra.me.REG[7];
5036 register_static_object(&once_value_3);
5037 } else fra.me.REG[7] = once_value_3;
5038 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
5039 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5040 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5041 } else {
5042 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5043 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
5044 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
5045 /* ./syntax//typing.nit:975 */
5046 array___Array___add(fra.me.REG[2], fra.me.REG[5]);
5047 }
5048 } else {
5049 /* ./syntax//typing.nit:971 */
5050 goto label4;
5051 }
5052 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
5053 }
5054 label4: while(0);
5055 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5056 /* ./syntax//typing.nit:978 */
5057 if (UNTAG_Bool(REGB0)) {
5058 REGB0 = TAG_Int(3);
5059 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
5060 /* ./syntax//typing.nit:979 */
5061 if (!once_value_5) {
5062 fra.me.REG[5] = BOX_NativeString("Error: No contructor named ");
5063 REGB0 = TAG_Int(27);
5064 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5065 once_value_5 = fra.me.REG[5];
5066 register_static_object(&once_value_5);
5067 } else fra.me.REG[5] = once_value_5;
5068 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5069 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5070 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
5071 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5072 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5073 if (!once_value_6) {
5074 fra.me.REG[5] = BOX_NativeString(" in superclasses.");
5075 REGB0 = TAG_Int(17);
5076 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5077 once_value_6 = fra.me.REG[5];
5078 register_static_object(&once_value_6);
5079 } else fra.me.REG[5] = once_value_6;
5080 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5081 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5082 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
5083 /* ./syntax//typing.nit:980 */
5084 goto label7;
5085 } else {
5086 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5087 /* ./../lib/standard//collection//array.nit:23 */
5088 if (UNTAG_Bool(REGB0)) {
5089 } else {
5090 fprintf(stderr, "Uninitialized attribute %s", "_length");
5091 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
5092 nit_exit(1);
5093 }
5094 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5095 REGB1 = TAG_Int(1);
5096 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
5097 /* ./syntax//typing.nit:981 */
5098 if (UNTAG_Bool(REGB1)) {
5099 REGB1 = TAG_Int(5);
5100 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
5101 /* ./syntax//typing.nit:982 */
5102 if (!once_value_8) {
5103 fra.me.REG[5] = BOX_NativeString("Error: Conflicting contructors named ");
5104 REGB1 = TAG_Int(37);
5105 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
5106 once_value_8 = fra.me.REG[5];
5107 register_static_object(&once_value_8);
5108 } else fra.me.REG[5] = once_value_8;
5109 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5110 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5111 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
5112 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5113 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5114 if (!once_value_9) {
5115 fra.me.REG[5] = BOX_NativeString(" in superclasses: ");
5116 REGB1 = TAG_Int(18);
5117 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
5118 once_value_9 = fra.me.REG[5];
5119 register_static_object(&once_value_9);
5120 } else fra.me.REG[5] = once_value_9;
5121 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5122 if (!once_value_10) {
5123 fra.me.REG[5] = BOX_NativeString(", ");
5124 REGB1 = TAG_Int(2);
5125 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
5126 once_value_10 = fra.me.REG[5];
5127 register_static_object(&once_value_10);
5128 } else fra.me.REG[5] = once_value_10;
5129 fra.me.REG[5] = CALL_string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5130 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5131 if (!once_value_11) {
5132 fra.me.REG[5] = BOX_NativeString(".");
5133 REGB1 = TAG_Int(1);
5134 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
5135 once_value_11 = fra.me.REG[5];
5136 register_static_object(&once_value_11);
5137 } else fra.me.REG[5] = once_value_11;
5138 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
5139 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5140 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
5141 /* ./syntax//typing.nit:983 */
5142 goto label7;
5143 }
5144 }
5145 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
5146 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5147 /* ./syntax//typing.nit:986 */
5148 if (UNTAG_Bool(REGB1)) {
5149 } else {
5150 fprintf(stderr, "Assert failed");
5151 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 986);
5152 nit_exit(1);
5153 }
5154 /* ./syntax//typing.nit:987 */
5155 ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]) = fra.me.REG[4];
5156 /* ./syntax//typing.nit:988 */
5157 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
5158 fra.me.REG[3] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5159 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
5160 REGB0 = TAG_Int(0);
5161 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
5162 /* ./syntax//typing.nit:989 */
5163 if (UNTAG_Bool(REGB0)) {
5164 fra.me.REG[3] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5165 fra.me.REG[3] = CALL_syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
5166 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5167 /* ./syntax//typing.nit:990 */
5168 if (UNTAG_Bool(REGB0)) {
5169 } else {
5170 fprintf(stderr, "Cast failed");
5171 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 990);
5172 nit_exit(1);
5173 }
5174 REGB0 = TAG_Bool(true);
5175 fra.me.REG[3] = CALL_typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[4], REGB0);
5176 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5177 fra.me.REG[5] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5178 /* ./syntax//typing.nit:991 */
5179 CALL_typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
5180 }
5181 } else {
5182 REGB0 = TAG_Int(3);
5183 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5184 /* ./syntax//typing.nit:994 */
5185 if (!once_value_12) {
5186 fra.me.REG[4] = BOX_NativeString("Error: No super method to call for ");
5187 REGB0 = TAG_Int(35);
5188 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5189 once_value_12 = fra.me.REG[4];
5190 register_static_object(&once_value_12);
5191 } else fra.me.REG[4] = once_value_12;
5192 array___Array___add(fra.me.REG[5], fra.me.REG[4]);
5193 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5194 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5195 array___Array___add(fra.me.REG[5], fra.me.REG[4]);
5196 if (!once_value_13) {
5197 fra.me.REG[4] = BOX_NativeString(".");
5198 REGB0 = TAG_Int(1);
5199 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5200 once_value_13 = fra.me.REG[4];
5201 register_static_object(&once_value_13);
5202 } else fra.me.REG[4] = once_value_13;
5203 array___Array___add(fra.me.REG[5], fra.me.REG[4]);
5204 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5205 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5206 /* ./syntax//typing.nit:995 */
5207 goto label7;
5208 }
5209 }
5210 fra.me.REG[5] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
5211 fra.me.REG[4] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5212 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[4])(fra.me.REG[4]);
5213 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5214 /* ./syntax//typing.nit:998 */
5215 if (UNTAG_Bool(REGB0)) {
5216 } else {
5217 fprintf(stderr, "Cast failed");
5218 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 998);
5219 nit_exit(1);
5220 }
5221 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5222 if (UNTAG_Bool(REGB0)) {
5223 fprintf(stderr, "Reciever is null");
5224 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 998);
5225 nit_exit(1);
5226 }
5227 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5228 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
5229 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5230 if (UNTAG_Bool(REGB0)) {
5231 } else {
5232 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5233 if (UNTAG_Bool(REGB1)) {
5234 REGB1 = TAG_Bool(false);
5235 REGB0 = REGB1;
5236 } else {
5237 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5238 REGB0 = REGB1;
5239 }
5240 }
5241 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5242 if (UNTAG_Bool(REGB0)) {
5243 fra.me.REG[4] = NEW_Array_array___Array___init();
5244 fra.me.REG[5] = NIT_NULL;
5245 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
5246 /* ./syntax//typing.nit:1001 */
5247 while(1) {
5248 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
5249 if (UNTAG_Bool(REGB0)) {
5250 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
5251 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5252 /* ./syntax//typing.nit:1002 */
5253 if (UNTAG_Bool(REGB0)) {
5254 } else {
5255 fprintf(stderr, "Assert failed");
5256 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1002);
5257 nit_exit(1);
5258 }
5259 fra.me.REG[6] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5260 fra.me.REG[6] = CALL_syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
5261 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5262 /* ./syntax//typing.nit:1003 */
5263 if (UNTAG_Bool(REGB0)) {
5264 } else {
5265 fprintf(stderr, "Cast failed");
5266 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1003);
5267 nit_exit(1);
5268 }
5269 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
5270 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
5271 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
5272 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5273 if (UNTAG_Bool(REGB0)) {
5274 fprintf(stderr, "Reciever is null");
5275 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1003);
5276 nit_exit(1);
5277 }
5278 fra.me.REG[3] = CALL_static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
5279 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5280 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
5281 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5282 if (UNTAG_Bool(REGB0)) {
5283 fprintf(stderr, "Reciever is null");
5284 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1003);
5285 nit_exit(1);
5286 }
5287 fra.me.REG[6] = CALL_static_type___MMSignature___recv(fra.me.REG[6])(fra.me.REG[6]);
5288 fra.me.REG[6] = CALL_static_type___MMType___adapt_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
5289 /* ./syntax//typing.nit:1004 */
5290 array___Array___add(fra.me.REG[4], fra.me.REG[6]);
5291 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5292 /* ./syntax//typing.nit:1005 */
5293 if (UNTAG_Bool(REGB0)) {
5294 } else {
5295 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5296 if (UNTAG_Bool(REGB1)) {
5297 REGB1 = TAG_Bool(false);
5298 REGB0 = REGB1;
5299 } else {
5300 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5301 REGB0 = REGB1;
5302 }
5303 }
5304 if (UNTAG_Bool(REGB0)) {
5305 REGB0 = TAG_Bool(true);
5306 } else {
5307 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5308 if (UNTAG_Bool(REGB1)) {
5309 fprintf(stderr, "Reciever is null");
5310 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1005);
5311 nit_exit(1);
5312 }
5313 REGB1 = CALL_static_type___MMType_____l(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5314 REGB0 = REGB1;
5315 }
5316 if (UNTAG_Bool(REGB0)) {
5317 fra.me.REG[5] = fra.me.REG[6];
5318 /* ./syntax//typing.nit:1006 */
5319 }
5320 } else {
5321 /* ./syntax//typing.nit:1001 */
5322 goto label14;
5323 }
5324 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
5325 }
5326 label14: while(0);
5327 fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
5328 /* ./syntax//typing.nit:1009 */
5329 while(1) {
5330 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
5331 if (UNTAG_Bool(REGB0)) {
5332 fra.me.REG[2] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
5333 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
5334 /* ./syntax//typing.nit:1010 */
5335 if (UNTAG_Bool(REGB0)) {
5336 } else {
5337 fprintf(stderr, "Cast failed");
5338 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1010);
5339 nit_exit(1);
5340 }
5341 CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], fra.me.REG[5]);
5342 } else {
5343 /* ./syntax//typing.nit:1009 */
5344 goto label15;
5345 }
5346 CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
5347 }
5348 label15: while(0);
5349 /* ./syntax//typing.nit:1012 */
5350 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
5351 }
5352 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5353 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
5354 /* ./syntax//typing.nit:1015 */
5355 if (UNTAG_Bool(REGB0)) {
5356 } else {
5357 fprintf(stderr, "Assert failed");
5358 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1015);
5359 nit_exit(1);
5360 }
5361 /* ./syntax//typing.nit:1016 */
5362 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[1];
5363 REGB0 = TAG_Bool(true);
5364 /* ./syntax//typing.nit:1017 */
5365 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5366 label7: while(0);
5367 stack_frame_head = fra.me.prev;
5368 return;
5369 }
5370 val_t typing___ASuperExpr___compute_raw_arguments(val_t p0){
5371 struct {struct stack_frame_t me;} fra;
5372 val_t tmp;
5373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5374 fra.me.file = LOCATE_typing;
5375 fra.me.line = 963;
5376 fra.me.meth = LOCATE_typing___ASuperExpr___compute_raw_arguments;
5377 fra.me.has_broke = 0;
5378 fra.me.REG_size = 1;
5379 fra.me.REG[0] = NIT_NULL;
5380 fra.me.REG[0] = p0;
5381 fra.me.REG[0] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5382 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5383 /* ./syntax//typing.nit:963 */
5384 goto label1;
5385 label1: while(0);
5386 stack_frame_head = fra.me.prev;
5387 return fra.me.REG[0];
5388 }
5389 val_t typing___AAttrFormExpr___prop(val_t p0){
5390 struct {struct stack_frame_t me;} fra;
5391 val_t REGB0;
5392 val_t tmp;
5393 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5394 fra.me.file = LOCATE_typing;
5395 fra.me.line = 1022;
5396 fra.me.meth = LOCATE_typing___AAttrFormExpr___prop;
5397 fra.me.has_broke = 0;
5398 fra.me.REG_size = 1;
5399 fra.me.REG[0] = NIT_NULL;
5400 fra.me.REG[0] = p0;
5401 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5402 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5403 /* ./syntax//typing.nit:1022 */
5404 if (UNTAG_Bool(REGB0)) {
5405 } else {
5406 fprintf(stderr, "Cast failed");
5407 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1022);
5408 nit_exit(1);
5409 }
5410 goto label1;
5411 label1: while(0);
5412 stack_frame_head = fra.me.prev;
5413 return fra.me.REG[0];
5414 }
5415 val_t typing___AAttrFormExpr___attr_type(val_t p0){
5416 struct {struct stack_frame_t me;} fra;
5417 val_t REGB0;
5418 val_t tmp;
5419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5420 fra.me.file = LOCATE_typing;
5421 fra.me.line = 1025;
5422 fra.me.meth = LOCATE_typing___AAttrFormExpr___attr_type;
5423 fra.me.has_broke = 0;
5424 fra.me.REG_size = 1;
5425 fra.me.REG[0] = NIT_NULL;
5426 fra.me.REG[0] = p0;
5427 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]);
5428 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5429 /* ./syntax//typing.nit:1025 */
5430 if (UNTAG_Bool(REGB0)) {
5431 } else {
5432 fprintf(stderr, "Cast failed");
5433 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1025);
5434 nit_exit(1);
5435 }
5436 goto label1;
5437 label1: while(0);
5438 stack_frame_head = fra.me.prev;
5439 return fra.me.REG[0];
5440 }
5441 void typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
5442 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5443 val_t REGB0;
5444 val_t REGB1;
5445 val_t tmp;
5446 static val_t once_value_2; /* Once value */
5447 static val_t once_value_3; /* Once value */
5448 static val_t once_value_4; /* Once value */
5449 static val_t once_value_5; /* Once value */
5450 static val_t once_value_6; /* Once value */
5451 static val_t once_value_7; /* Once value */
5452 static val_t once_value_8; /* Once value */
5453 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5454 fra.me.file = LOCATE_typing;
5455 fra.me.line = 1028;
5456 fra.me.meth = LOCATE_typing___AAttrFormExpr___do_typing;
5457 fra.me.has_broke = 0;
5458 fra.me.REG_size = 7;
5459 fra.me.REG[0] = NIT_NULL;
5460 fra.me.REG[1] = NIT_NULL;
5461 fra.me.REG[2] = NIT_NULL;
5462 fra.me.REG[3] = NIT_NULL;
5463 fra.me.REG[4] = NIT_NULL;
5464 fra.me.REG[5] = NIT_NULL;
5465 fra.me.REG[6] = NIT_NULL;
5466 fra.me.REG[0] = p0;
5467 fra.me.REG[1] = p1;
5468 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5469 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5470 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5471 /* ./syntax//typing.nit:1031 */
5472 if (UNTAG_Bool(REGB0)) {
5473 goto label1;
5474 }
5475 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5476 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5477 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
5478 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
5479 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
5480 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5481 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5482 /* ./syntax//typing.nit:1035 */
5483 if (UNTAG_Bool(REGB0)) {
5484 REGB0 = TAG_Int(5);
5485 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5486 /* ./syntax//typing.nit:1036 */
5487 if (!once_value_2) {
5488 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
5489 REGB0 = TAG_Int(17);
5490 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
5491 once_value_2 = fra.me.REG[6];
5492 register_static_object(&once_value_2);
5493 } else fra.me.REG[6] = once_value_2;
5494 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
5495 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5496 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
5497 if (!once_value_3) {
5498 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
5499 REGB0 = TAG_Int(19);
5500 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
5501 once_value_3 = fra.me.REG[6];
5502 register_static_object(&once_value_3);
5503 } else fra.me.REG[6] = once_value_3;
5504 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
5505 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5506 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
5507 if (!once_value_4) {
5508 fra.me.REG[6] = BOX_NativeString(".");
5509 REGB0 = TAG_Int(1);
5510 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
5511 once_value_4 = fra.me.REG[6];
5512 register_static_object(&once_value_4);
5513 } else fra.me.REG[6] = once_value_4;
5514 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
5515 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5516 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5517 /* ./syntax//typing.nit:1037 */
5518 goto label1;
5519 }
5520 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5521 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
5522 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5523 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
5524 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[6])(fra.me.REG[6]);
5525 REGB0 = CALL_abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5526 REGB1 = TAG_Int(3);
5527 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5528 /* ./syntax//typing.nit:1040 */
5529 if (UNTAG_Bool(REGB1)) {
5530 REGB1 = TAG_Int(7);
5531 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB1);
5532 /* ./syntax//typing.nit:1041 */
5533 if (!once_value_5) {
5534 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
5535 REGB1 = TAG_Int(17);
5536 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
5537 once_value_5 = fra.me.REG[5];
5538 register_static_object(&once_value_5);
5539 } else fra.me.REG[5] = once_value_5;
5540 array___Array___add(fra.me.REG[6], fra.me.REG[5]);
5541 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5542 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5543 if (!once_value_6) {
5544 fra.me.REG[3] = BOX_NativeString(" from ");
5545 REGB1 = TAG_Int(6);
5546 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5547 once_value_6 = fra.me.REG[3];
5548 register_static_object(&once_value_6);
5549 } else fra.me.REG[3] = once_value_6;
5550 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5551 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5552 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
5553 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[3])(fra.me.REG[3]);
5554 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5555 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5556 if (!once_value_7) {
5557 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
5558 REGB1 = TAG_Int(17);
5559 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5560 once_value_7 = fra.me.REG[3];
5561 register_static_object(&once_value_7);
5562 } else fra.me.REG[3] = once_value_7;
5563 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5564 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
5565 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5566 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5567 if (!once_value_8) {
5568 fra.me.REG[3] = BOX_NativeString("");
5569 REGB1 = TAG_Int(0);
5570 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5571 once_value_8 = fra.me.REG[3];
5572 register_static_object(&once_value_8);
5573 } else fra.me.REG[3] = once_value_8;
5574 array___Array___add(fra.me.REG[6], fra.me.REG[3]);
5575 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5576 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5577 }
5578 /* ./syntax//typing.nit:1043 */
5579 ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
5580 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5581 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
5582 fra.me.REG[4] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5583 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
5584 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5585 /* ./syntax//typing.nit:1045 */
5586 if (UNTAG_Bool(REGB1)) {
5587 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5588 if (UNTAG_Bool(REGB1)) {
5589 fprintf(stderr, "Reciever is null");
5590 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1045);
5591 nit_exit(1);
5592 }
5593 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
5594 fra.me.REG[2] = fra.me.REG[4];
5595 }
5596 /* ./syntax//typing.nit:1046 */
5597 ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
5598 label1: while(0);
5599 stack_frame_head = fra.me.prev;
5600 return;
5601 }
5602 void typing___AAttrExpr___after_typing(val_t p0, val_t p1){
5603 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5604 val_t REGB0;
5605 val_t REGB1;
5606 val_t tmp;
5607 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5608 fra.me.file = LOCATE_typing;
5609 fra.me.line = 1051;
5610 fra.me.meth = LOCATE_typing___AAttrExpr___after_typing;
5611 fra.me.has_broke = 0;
5612 fra.me.REG_size = 2;
5613 fra.me.REG[0] = NIT_NULL;
5614 fra.me.REG[1] = NIT_NULL;
5615 fra.me.REG[0] = p0;
5616 fra.me.REG[1] = p1;
5617 /* ./syntax//typing.nit:1053 */
5618 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5619 fra.me.REG[1] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5620 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5621 /* ./syntax//typing.nit:1054 */
5622 if (UNTAG_Bool(REGB0)) {
5623 } else {
5624 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5625 if (UNTAG_Bool(REGB1)) {
5626 REGB1 = TAG_Bool(false);
5627 REGB0 = REGB1;
5628 } else {
5629 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
5630 REGB0 = REGB1;
5631 }
5632 }
5633 if (UNTAG_Bool(REGB0)) {
5634 goto label1;
5635 }
5636 fra.me.REG[1] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5637 /* ./syntax//typing.nit:1055 */
5638 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5639 REGB0 = TAG_Bool(true);
5640 /* ./syntax//typing.nit:1056 */
5641 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5642 label1: while(0);
5643 stack_frame_head = fra.me.prev;
5644 return;
5645 }
5646 void typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
5647 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5648 val_t REGB0;
5649 val_t REGB1;
5650 val_t tmp;
5651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5652 fra.me.file = LOCATE_typing;
5653 fra.me.line = 1061;
5654 fra.me.meth = LOCATE_typing___AAttrAssignExpr___after_typing;
5655 fra.me.has_broke = 0;
5656 fra.me.REG_size = 4;
5657 fra.me.REG[0] = NIT_NULL;
5658 fra.me.REG[1] = NIT_NULL;
5659 fra.me.REG[2] = NIT_NULL;
5660 fra.me.REG[3] = NIT_NULL;
5661 fra.me.REG[0] = p0;
5662 fra.me.REG[1] = p1;
5663 /* ./syntax//typing.nit:1063 */
5664 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5665 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5666 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5667 /* ./syntax//typing.nit:1064 */
5668 if (UNTAG_Bool(REGB0)) {
5669 } else {
5670 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5671 if (UNTAG_Bool(REGB1)) {
5672 REGB1 = TAG_Bool(false);
5673 REGB0 = REGB1;
5674 } else {
5675 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5676 REGB0 = REGB1;
5677 }
5678 }
5679 if (UNTAG_Bool(REGB0)) {
5680 goto label1;
5681 }
5682 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5683 fra.me.REG[3] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5684 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5685 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5686 /* ./syntax//typing.nit:1065 */
5687 if (UNTAG_Bool(REGB0)) {
5688 goto label1;
5689 }
5690 REGB0 = TAG_Bool(true);
5691 /* ./syntax//typing.nit:1066 */
5692 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5693 label1: while(0);
5694 stack_frame_head = fra.me.prev;
5695 return;
5696 }
5697 void typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
5698 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5699 val_t REGB0;
5700 val_t REGB1;
5701 val_t tmp;
5702 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5703 fra.me.file = LOCATE_typing;
5704 fra.me.line = 1071;
5705 fra.me.meth = LOCATE_typing___AAttrReassignExpr___after_typing;
5706 fra.me.has_broke = 0;
5707 fra.me.REG_size = 4;
5708 fra.me.REG[0] = NIT_NULL;
5709 fra.me.REG[1] = NIT_NULL;
5710 fra.me.REG[2] = NIT_NULL;
5711 fra.me.REG[3] = NIT_NULL;
5712 fra.me.REG[0] = p0;
5713 fra.me.REG[1] = p1;
5714 /* ./syntax//typing.nit:1073 */
5715 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5716 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5717 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5718 /* ./syntax//typing.nit:1074 */
5719 if (UNTAG_Bool(REGB0)) {
5720 } else {
5721 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5722 if (UNTAG_Bool(REGB1)) {
5723 REGB1 = TAG_Bool(false);
5724 REGB0 = REGB1;
5725 } else {
5726 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5727 REGB0 = REGB1;
5728 }
5729 }
5730 if (UNTAG_Bool(REGB0)) {
5731 goto label1;
5732 }
5733 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5734 fra.me.REG[2] = CALL_typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5735 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5736 /* ./syntax//typing.nit:1076 */
5737 if (UNTAG_Bool(REGB0)) {
5738 } else {
5739 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5740 if (UNTAG_Bool(REGB1)) {
5741 REGB1 = TAG_Bool(false);
5742 REGB0 = REGB1;
5743 } else {
5744 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5745 REGB0 = REGB1;
5746 }
5747 }
5748 if (UNTAG_Bool(REGB0)) {
5749 goto label1;
5750 }
5751 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5752 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5753 /* ./syntax//typing.nit:1077 */
5754 CALL_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]);
5755 REGB0 = TAG_Bool(true);
5756 /* ./syntax//typing.nit:1078 */
5757 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5758 label1: while(0);
5759 stack_frame_head = fra.me.prev;
5760 return;
5761 }
5762 void typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
5763 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5764 val_t REGB0;
5765 val_t REGB1;
5766 val_t tmp;
5767 static val_t once_value_2; /* Once value */
5768 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5769 fra.me.file = LOCATE_typing;
5770 fra.me.line = 1083;
5771 fra.me.meth = LOCATE_typing___AIssetAttrExpr___after_typing;
5772 fra.me.has_broke = 0;
5773 fra.me.REG_size = 3;
5774 fra.me.REG[0] = NIT_NULL;
5775 fra.me.REG[1] = NIT_NULL;
5776 fra.me.REG[2] = NIT_NULL;
5777 fra.me.REG[0] = p0;
5778 fra.me.REG[1] = p1;
5779 /* ./syntax//typing.nit:1085 */
5780 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5781 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5782 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5783 /* ./syntax//typing.nit:1086 */
5784 if (UNTAG_Bool(REGB0)) {
5785 } else {
5786 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5787 if (UNTAG_Bool(REGB1)) {
5788 REGB1 = TAG_Bool(false);
5789 REGB0 = REGB1;
5790 } else {
5791 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5792 REGB0 = REGB1;
5793 }
5794 }
5795 if (UNTAG_Bool(REGB0)) {
5796 goto label1;
5797 }
5798 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5799 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
5800 /* ./syntax//typing.nit:1087 */
5801 if (UNTAG_Bool(REGB0)) {
5802 /* ./syntax//typing.nit:1088 */
5803 if (!once_value_2) {
5804 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
5805 REGB0 = TAG_Int(37);
5806 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
5807 once_value_2 = fra.me.REG[2];
5808 register_static_object(&once_value_2);
5809 } else fra.me.REG[2] = once_value_2;
5810 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
5811 }
5812 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5813 /* ./syntax//typing.nit:1090 */
5814 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5815 REGB0 = TAG_Bool(true);
5816 /* ./syntax//typing.nit:1091 */
5817 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5818 label1: while(0);
5819 stack_frame_head = fra.me.prev;
5820 return;
5821 }
5822 val_t typing___AAbsAbsSendExpr___prop_signature(val_t p0){
5823 struct {struct stack_frame_t me;} fra;
5824 val_t REGB0;
5825 val_t tmp;
5826 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5827 fra.me.file = LOCATE_typing;
5828 fra.me.line = 1096;
5829 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___prop_signature;
5830 fra.me.has_broke = 0;
5831 fra.me.REG_size = 1;
5832 fra.me.REG[0] = NIT_NULL;
5833 fra.me.REG[0] = p0;
5834 fra.me.REG[0] = ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]);
5835 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5836 /* ./syntax//typing.nit:1097 */
5837 if (UNTAG_Bool(REGB0)) {
5838 } else {
5839 fprintf(stderr, "Cast failed");
5840 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1097);
5841 nit_exit(1);
5842 }
5843 goto label1;
5844 label1: while(0);
5845 stack_frame_head = fra.me.prev;
5846 return fra.me.REG[0];
5847 }
5848 val_t typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
5849 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5850 val_t REGB0;
5851 val_t REGB1;
5852 val_t tmp;
5853 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5854 fra.me.file = LOCATE_typing;
5855 fra.me.line = 1100;
5856 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___raw_arguments;
5857 fra.me.has_broke = 0;
5858 fra.me.REG_size = 4;
5859 fra.me.REG[0] = NIT_NULL;
5860 fra.me.REG[1] = NIT_NULL;
5861 fra.me.REG[2] = NIT_NULL;
5862 fra.me.REG[3] = NIT_NULL;
5863 fra.me.REG[0] = p0;
5864 fra.me.REG[1] = ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
5865 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5866 /* ./syntax//typing.nit:1104 */
5867 if (UNTAG_Bool(REGB0)) {
5868 } else {
5869 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5870 if (UNTAG_Bool(REGB1)) {
5871 REGB1 = TAG_Bool(false);
5872 REGB0 = REGB1;
5873 } else {
5874 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
5875 REGB0 = REGB1;
5876 }
5877 }
5878 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5879 if (UNTAG_Bool(REGB0)) {
5880 fra.me.REG[2] = fra.me.REG[1];
5881 /* ./syntax//typing.nit:1105 */
5882 goto label1;
5883 } else {
5884 fra.me.REG[3] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5885 fra.me.REG[1] = fra.me.REG[3];
5886 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5887 /* ./syntax//typing.nit:1108 */
5888 if (UNTAG_Bool(REGB0)) {
5889 } else {
5890 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
5891 if (UNTAG_Bool(REGB1)) {
5892 REGB1 = TAG_Bool(false);
5893 REGB0 = REGB1;
5894 } else {
5895 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
5896 REGB0 = REGB1;
5897 }
5898 }
5899 if (UNTAG_Bool(REGB0)) {
5900 fra.me.REG[3] = NEW_Array_array___Array___init();
5901 fra.me.REG[1] = fra.me.REG[3];
5902 }
5903 /* ./syntax//typing.nit:1109 */
5904 ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
5905 fra.me.REG[2] = fra.me.REG[1];
5906 /* ./syntax//typing.nit:1110 */
5907 goto label1;
5908 }
5909 label1: while(0);
5910 stack_frame_head = fra.me.prev;
5911 return fra.me.REG[2];
5912 }
5913 val_t typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
5914 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5915 val_t REGB0;
5916 val_t tmp;
5917 static val_t once_value_1; /* Once value */
5918 static val_t once_value_2; /* Once value */
5919 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5920 fra.me.file = LOCATE_typing;
5921 fra.me.line = 1116;
5922 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___compute_raw_arguments;
5923 fra.me.has_broke = 0;
5924 fra.me.REG_size = 3;
5925 fra.me.REG[0] = NIT_NULL;
5926 fra.me.REG[1] = NIT_NULL;
5927 fra.me.REG[2] = NIT_NULL;
5928 fra.me.REG[0] = p0;
5929 REGB0 = TAG_Int(3);
5930 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
5931 /* ./syntax//typing.nit:1118 */
5932 if (!once_value_1) {
5933 fra.me.REG[2] = BOX_NativeString("");
5934 REGB0 = TAG_Int(0);
5935 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
5936 once_value_1 = fra.me.REG[2];
5937 register_static_object(&once_value_1);
5938 } else fra.me.REG[2] = once_value_1;
5939 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
5940 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
5941 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5942 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
5943 if (!once_value_2) {
5944 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
5945 REGB0 = TAG_Int(25);
5946 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
5947 once_value_2 = fra.me.REG[2];
5948 register_static_object(&once_value_2);
5949 } else fra.me.REG[2] = once_value_2;
5950 array___Array___add(fra.me.REG[1], fra.me.REG[2]);
5951 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
5952 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
5953 fra.me.REG[1] = NIT_NULL;
5954 /* ./syntax//typing.nit:1119 */
5955 goto label3;
5956 label3: while(0);
5957 stack_frame_head = fra.me.prev;
5958 return fra.me.REG[1];
5959 }
5960 val_t typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
5961 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5962 val_t REGB0;
5963 val_t REGB1;
5964 val_t REGB2;
5965 val_t REGB3;
5966 val_t REGB4;
5967 val_t REGB5;
5968 val_t REGB6;
5969 val_t REGB7;
5970 val_t tmp;
5971 static val_t once_value_1; /* Once value */
5972 static val_t once_value_2; /* Once value */
5973 static val_t once_value_3; /* Once value */
5974 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5975 fra.me.file = LOCATE_typing;
5976 fra.me.line = 1122;
5977 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_signature;
5978 fra.me.has_broke = 0;
5979 fra.me.REG_size = 7;
5980 fra.me.REG[0] = NIT_NULL;
5981 fra.me.REG[1] = NIT_NULL;
5982 fra.me.REG[2] = NIT_NULL;
5983 fra.me.REG[3] = NIT_NULL;
5984 fra.me.REG[4] = NIT_NULL;
5985 fra.me.REG[5] = NIT_NULL;
5986 fra.me.REG[6] = NIT_NULL;
5987 fra.me.REG[0] = p0;
5988 fra.me.REG[1] = p1;
5989 fra.me.REG[2] = p2;
5990 fra.me.REG[3] = p3;
5991 fra.me.REG[4] = p4;
5992 REGB0 = CALL_vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
5993 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
5994 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5995 /* ./syntax//typing.nit:1128 */
5996 if (UNTAG_Bool(REGB2)) {
5997 } else {
5998 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5999 if (UNTAG_Bool(REGB3)) {
6000 REGB3 = TAG_Bool(false);
6001 REGB2 = REGB3;
6002 } else {
6003 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6004 REGB2 = REGB3;
6005 }
6006 }
6007 if (UNTAG_Bool(REGB2)) {
6008 REGB2 = TAG_Int(0);
6009 } else {
6010 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6011 if (UNTAG_Bool(REGB3)) {
6012 fprintf(stderr, "Reciever is null");
6013 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1128);
6014 nit_exit(1);
6015 }
6016 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6017 /* ./../lib/standard//collection//array.nit:23 */
6018 if (UNTAG_Bool(REGB3)) {
6019 } else {
6020 fprintf(stderr, "Uninitialized attribute %s", "_length");
6021 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6022 nit_exit(1);
6023 }
6024 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
6025 REGB2 = REGB3;
6026 /* ./syntax//typing.nit:1128 */
6027 }
6028 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
6029 /* ./syntax//typing.nit:1129 */
6030 if (UNTAG_Bool(REGB3)) {
6031 REGB3 = TAG_Bool(true);
6032 } else {
6033 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
6034 if (UNTAG_Bool(REGB4)) {
6035 } else {
6036 REGB5 = TAG_Bool((REGB1)==(REGB2));
6037 REGB4 = REGB5;
6038 /* ./syntax//typing.nit:1129 */
6039 }
6040 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
6041 if (UNTAG_Bool(REGB4)) {
6042 REGB4 = TAG_Int(1);
6043 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
6044 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
6045 /* ./syntax//typing.nit:1129 */
6046 if (UNTAG_Bool(REGB5)) {
6047 } else {
6048 REGB4 = TAG_Bool((REGB0)==(REGB4));
6049 REGB5 = REGB4;
6050 /* ./syntax//typing.nit:1129 */
6051 }
6052 } else {
6053 REGB4 = TAG_Bool(false);
6054 REGB5 = REGB4;
6055 }
6056 REGB3 = REGB5;
6057 }
6058 if (UNTAG_Bool(REGB3)) {
6059 REGB3 = TAG_Int(5);
6060 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB3);
6061 /* ./syntax//typing.nit:1130 */
6062 if (!once_value_1) {
6063 fra.me.REG[6] = BOX_NativeString("Error: arity missmatch; prototype is '");
6064 REGB3 = TAG_Int(38);
6065 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
6066 once_value_1 = fra.me.REG[6];
6067 register_static_object(&once_value_1);
6068 } else fra.me.REG[6] = once_value_1;
6069 array___Array___add(fra.me.REG[5], fra.me.REG[6]);
6070 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6071 array___Array___add(fra.me.REG[5], fra.me.REG[3]);
6072 if (!once_value_2) {
6073 fra.me.REG[3] = BOX_NativeString("");
6074 REGB3 = TAG_Int(0);
6075 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
6076 once_value_2 = fra.me.REG[3];
6077 register_static_object(&once_value_2);
6078 } else fra.me.REG[3] = once_value_2;
6079 array___Array___add(fra.me.REG[5], fra.me.REG[3]);
6080 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6081 array___Array___add(fra.me.REG[5], fra.me.REG[3]);
6082 if (!once_value_3) {
6083 fra.me.REG[3] = BOX_NativeString("'.");
6084 REGB3 = TAG_Int(2);
6085 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
6086 once_value_3 = fra.me.REG[3];
6087 register_static_object(&once_value_3);
6088 } else fra.me.REG[3] = once_value_3;
6089 array___Array___add(fra.me.REG[5], fra.me.REG[3]);
6090 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6091 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6092 REGB3 = TAG_Bool(false);
6093 /* ./syntax//typing.nit:1131 */
6094 goto label4;
6095 }
6096 REGB5 = TAG_Int(0);
6097 REGB4 = TAG_Int(0);
6098 fra.me.REG[5] = NEW_Range_range___Range___without_last(REGB4, REGB1);
6099 fra.me.REG[5] = CALL_abstract_collection___Collection___iterator(fra.me.REG[5])(fra.me.REG[5]);
6100 /* ./syntax//typing.nit:1134 */
6101 while(1) {
6102 REGB4 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[5])(fra.me.REG[5]);
6103 if (UNTAG_Bool(REGB4)) {
6104 REGB4 = CALL_abstract_collection___Iterator___item(fra.me.REG[5])(fra.me.REG[5]);
6105 fra.me.REG[0] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
6106 REGB6 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB0));
6107 /* ./syntax//typing.nit:1137 */
6108 if (UNTAG_Bool(REGB6)) {
6109 } else {
6110 REGB4 = TAG_Bool((REGB4)==(REGB0));
6111 REGB6 = REGB4;
6112 /* ./syntax//typing.nit:1137 */
6113 }
6114 if (UNTAG_Bool(REGB6)) {
6115 REGB6 = TAG_Int(0);
6116 REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
6117 fra.me.REG[3] = NEW_Range_range___Range___init(REGB6, REGB4);
6118 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
6119 /* ./syntax//typing.nit:1138 */
6120 while(1) {
6121 REGB4 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
6122 if (UNTAG_Bool(REGB4)) {
6123 REGB4 = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
6124 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6125 /* ./syntax//typing.nit:1139 */
6126 if (UNTAG_Bool(REGB4)) {
6127 fprintf(stderr, "Reciever is null");
6128 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1139);
6129 nit_exit(1);
6130 }
6131 fra.me.REG[6] = fra.me.REG[4];
6132 REGB4 = REGB5;
6133 REGB6 = TAG_Int(0);
6134 REGB6 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB6));
6135 /* ./../lib/standard//collection//array.nit:233 */
6136 if (UNTAG_Bool(REGB6)) {
6137 REGB6 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6138 if (UNTAG_Bool(REGB6)) {
6139 } else {
6140 fprintf(stderr, "Uninitialized attribute %s", "_length");
6141 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6142 nit_exit(1);
6143 }
6144 REGB6 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6145 REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
6146 /* ./../lib/standard//collection//array.nit:233 */
6147 } else {
6148 REGB7 = TAG_Bool(false);
6149 REGB6 = REGB7;
6150 }
6151 if (UNTAG_Bool(REGB6)) {
6152 } else {
6153 fprintf(stderr, "Assert %s failed", "'index'");
6154 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6155 nit_exit(1);
6156 }
6157 fra.me.REG[6] = ATTR_array___Array____items(fra.me.REG[6]);
6158 REGB6 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6159 /* ./../lib/standard//collection//array.nit:234 */
6160 if (UNTAG_Bool(REGB6)) {
6161 fprintf(stderr, "Reciever is null");
6162 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
6163 nit_exit(1);
6164 }
6165 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB4)];
6166 /* ./../lib/standard//collection//array.nit:234 */
6167 goto label5;
6168 label5: while(0);
6169 /* ./syntax//typing.nit:1140 */
6170 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[0]);
6171 REGB4 = TAG_Int(1);
6172 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
6173 REGB5 = REGB4;
6174 /* ./syntax//typing.nit:1141 */
6175 } else {
6176 /* ./syntax//typing.nit:1138 */
6177 goto label6;
6178 }
6179 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
6180 }
6181 label6: while(0);
6182 } else {
6183 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6184 /* ./syntax//typing.nit:1144 */
6185 if (UNTAG_Bool(REGB4)) {
6186 fprintf(stderr, "Reciever is null");
6187 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1144);
6188 nit_exit(1);
6189 }
6190 fra.me.REG[3] = fra.me.REG[4];
6191 REGB4 = REGB5;
6192 REGB6 = TAG_Int(0);
6193 REGB6 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB6));
6194 /* ./../lib/standard//collection//array.nit:233 */
6195 if (UNTAG_Bool(REGB6)) {
6196 REGB6 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6197 if (UNTAG_Bool(REGB6)) {
6198 } else {
6199 fprintf(stderr, "Uninitialized attribute %s", "_length");
6200 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6201 nit_exit(1);
6202 }
6203 REGB6 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
6204 REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
6205 /* ./../lib/standard//collection//array.nit:233 */
6206 } else {
6207 REGB7 = TAG_Bool(false);
6208 REGB6 = REGB7;
6209 }
6210 if (UNTAG_Bool(REGB6)) {
6211 } else {
6212 fprintf(stderr, "Assert %s failed", "'index'");
6213 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6214 nit_exit(1);
6215 }
6216 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
6217 REGB6 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6218 /* ./../lib/standard//collection//array.nit:234 */
6219 if (UNTAG_Bool(REGB6)) {
6220 fprintf(stderr, "Reciever is null");
6221 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
6222 nit_exit(1);
6223 }
6224 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
6225 /* ./../lib/standard//collection//array.nit:234 */
6226 goto label7;
6227 label7: while(0);
6228 fra.me.REG[6] = fra.me.REG[3];
6229 /* ./syntax//typing.nit:1145 */
6230 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[0]);
6231 REGB4 = TAG_Int(1);
6232 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
6233 REGB5 = REGB4;
6234 /* ./syntax//typing.nit:1146 */
6235 }
6236 } else {
6237 /* ./syntax//typing.nit:1134 */
6238 goto label8;
6239 }
6240 CALL_abstract_collection___Iterator___next(fra.me.REG[5])(fra.me.REG[5]);
6241 }
6242 label8: while(0);
6243 REGB5 = TAG_Bool(true);
6244 REGB3 = REGB5;
6245 /* ./syntax//typing.nit:1149 */
6246 goto label4;
6247 label4: while(0);
6248 stack_frame_head = fra.me.prev;
6249 return REGB3;
6250 }
6251 val_t typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
6252 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
6253 val_t REGB0;
6254 val_t REGB1;
6255 val_t REGB2;
6256 val_t REGB3;
6257 val_t tmp;
6258 static val_t once_value_2; /* Once value */
6259 static val_t once_value_3; /* Once value */
6260 static val_t once_value_4; /* Once value */
6261 static val_t once_value_5; /* Once value */
6262 static val_t once_value_6; /* Once value */
6263 static val_t once_value_7; /* Once value */
6264 static val_t once_value_8; /* Once value */
6265 static val_t once_value_11; /* Once value */
6266 static val_t once_value_12; /* Once value */
6267 static val_t once_value_13; /* Once value */
6268 static val_t once_value_14; /* Once value */
6269 static val_t once_value_15; /* Once value */
6270 static val_t once_value_16; /* Once value */
6271 static val_t once_value_18; /* Once value */
6272 static val_t once_value_19; /* Once value */
6273 static val_t once_value_20; /* Once value */
6274 static val_t once_value_21; /* Once value */
6275 static val_t once_value_22; /* Once value */
6276 static val_t once_value_24; /* Once value */
6277 static val_t once_value_25; /* Once value */
6278 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6279 fra.me.file = LOCATE_typing;
6280 fra.me.line = 1152;
6281 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_closures;
6282 fra.me.has_broke = 0;
6283 fra.me.REG_size = 17;
6284 fra.me.REG[0] = NIT_NULL;
6285 fra.me.REG[1] = NIT_NULL;
6286 fra.me.REG[2] = NIT_NULL;
6287 fra.me.REG[3] = NIT_NULL;
6288 fra.me.REG[4] = NIT_NULL;
6289 fra.me.REG[5] = NIT_NULL;
6290 fra.me.REG[6] = NIT_NULL;
6291 fra.me.REG[7] = NIT_NULL;
6292 fra.me.REG[8] = NIT_NULL;
6293 fra.me.REG[9] = NIT_NULL;
6294 fra.me.REG[10] = NIT_NULL;
6295 fra.me.REG[11] = NIT_NULL;
6296 fra.me.REG[12] = NIT_NULL;
6297 fra.me.REG[13] = NIT_NULL;
6298 fra.me.REG[14] = NIT_NULL;
6299 fra.me.REG[15] = NIT_NULL;
6300 fra.me.REG[16] = NIT_NULL;
6301 fra.me.REG[0] = p0;
6302 fra.me.REG[1] = p1;
6303 fra.me.REG[2] = p2;
6304 fra.me.REG[3] = p3;
6305 fra.me.REG[4] = p4;
6306 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
6307 fra.me.REG[6] = CALL_static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
6308 REGB0 = TAG_Int(0);
6309 fra.me.REG[7] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
6310 /* ./syntax//typing.nit:1158 */
6311 while(1) {
6312 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[7])(fra.me.REG[7]);
6313 if (UNTAG_Bool(REGB1)) {
6314 fra.me.REG[8] = CALL_abstract_collection___Iterator___item(fra.me.REG[7])(fra.me.REG[7]);
6315 REGB1 = CALL_static_type___MMClosure___is_optional(fra.me.REG[8])(fra.me.REG[8]);
6316 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6317 /* ./syntax//typing.nit:1159 */
6318 if (UNTAG_Bool(REGB1)) {
6319 REGB1 = TAG_Int(1);
6320 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6321 REGB0 = REGB1;
6322 /* ./syntax//typing.nit:1159 */
6323 }
6324 } else {
6325 /* ./syntax//typing.nit:1158 */
6326 goto label1;
6327 }
6328 CALL_abstract_collection___Iterator___next(fra.me.REG[7])(fra.me.REG[7]);
6329 }
6330 label1: while(0);
6331 REGB1 = TAG_Int(0);
6332 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6333 /* ./syntax//typing.nit:1162 */
6334 if (UNTAG_Bool(REGB2)) {
6335 } else {
6336 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6337 if (UNTAG_Bool(REGB3)) {
6338 REGB3 = TAG_Bool(false);
6339 REGB2 = REGB3;
6340 } else {
6341 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6342 REGB2 = REGB3;
6343 }
6344 }
6345 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6346 if (UNTAG_Bool(REGB2)) {
6347 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6348 if (UNTAG_Bool(REGB2)) {
6349 fprintf(stderr, "Reciever is null");
6350 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1162);
6351 nit_exit(1);
6352 }
6353 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6354 /* ./../lib/standard//collection//array.nit:23 */
6355 if (UNTAG_Bool(REGB2)) {
6356 } else {
6357 fprintf(stderr, "Uninitialized attribute %s", "_length");
6358 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6359 nit_exit(1);
6360 }
6361 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
6362 REGB1 = REGB2;
6363 /* ./syntax//typing.nit:1162 */
6364 }
6365 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6366 /* ./../lib/standard//collection//array.nit:23 */
6367 if (UNTAG_Bool(REGB2)) {
6368 } else {
6369 fprintf(stderr, "Uninitialized attribute %s", "_length");
6370 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6371 nit_exit(1);
6372 }
6373 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6374 REGB3 = TAG_Int(0);
6375 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
6376 /* ./syntax//typing.nit:1163 */
6377 if (UNTAG_Bool(REGB3)) {
6378 REGB3 = TAG_Int(0);
6379 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
6380 /* ./syntax//typing.nit:1164 */
6381 if (UNTAG_Bool(REGB2)) {
6382 } else {
6383 REGB3 = TAG_Bool((REGB1)==(REGB3));
6384 REGB2 = REGB3;
6385 /* ./syntax//typing.nit:1164 */
6386 }
6387 if (UNTAG_Bool(REGB2)) {
6388 REGB2 = TAG_Int(0);
6389 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
6390 /* ./syntax//typing.nit:1164 */
6391 } else {
6392 REGB3 = TAG_Bool(false);
6393 REGB2 = REGB3;
6394 }
6395 if (UNTAG_Bool(REGB2)) {
6396 REGB2 = TAG_Int(5);
6397 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB2);
6398 /* ./syntax//typing.nit:1165 */
6399 if (!once_value_2) {
6400 fra.me.REG[8] = BOX_NativeString("Error: ");
6401 REGB2 = TAG_Int(7);
6402 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6403 once_value_2 = fra.me.REG[8];
6404 register_static_object(&once_value_2);
6405 } else fra.me.REG[8] = once_value_2;
6406 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6407 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6408 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6409 if (!once_value_3) {
6410 fra.me.REG[8] = BOX_NativeString(" requires ");
6411 REGB2 = TAG_Int(10);
6412 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6413 once_value_3 = fra.me.REG[8];
6414 register_static_object(&once_value_3);
6415 } else fra.me.REG[8] = once_value_3;
6416 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6417 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6418 /* ./../lib/standard//collection//array.nit:23 */
6419 if (UNTAG_Bool(REGB2)) {
6420 } else {
6421 fprintf(stderr, "Uninitialized attribute %s", "_length");
6422 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6423 nit_exit(1);
6424 }
6425 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6426 fra.me.REG[8] = CALL_string___Object___to_s(REGB2)(REGB2);
6427 /* ./syntax//typing.nit:1165 */
6428 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6429 if (!once_value_4) {
6430 fra.me.REG[8] = BOX_NativeString(" blocks.");
6431 REGB2 = TAG_Int(8);
6432 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6433 once_value_4 = fra.me.REG[8];
6434 register_static_object(&once_value_4);
6435 } else fra.me.REG[8] = once_value_4;
6436 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6437 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6438 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
6439 } else {
6440 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6441 /* ./../lib/standard//collection//array.nit:23 */
6442 if (UNTAG_Bool(REGB2)) {
6443 } else {
6444 fprintf(stderr, "Uninitialized attribute %s", "_length");
6445 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6446 nit_exit(1);
6447 }
6448 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6449 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
6450 /* ./syntax//typing.nit:1166 */
6451 if (UNTAG_Bool(REGB2)) {
6452 REGB2 = TAG_Bool(true);
6453 } else {
6454 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
6455 REGB2 = REGB0;
6456 /* ./syntax//typing.nit:1166 */
6457 }
6458 if (UNTAG_Bool(REGB2)) {
6459 REGB2 = TAG_Int(7);
6460 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB2);
6461 /* ./syntax//typing.nit:1167 */
6462 if (!once_value_5) {
6463 fra.me.REG[8] = BOX_NativeString("Error: ");
6464 REGB2 = TAG_Int(7);
6465 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6466 once_value_5 = fra.me.REG[8];
6467 register_static_object(&once_value_5);
6468 } else fra.me.REG[8] = once_value_5;
6469 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6470 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6471 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6472 if (!once_value_6) {
6473 fra.me.REG[8] = BOX_NativeString(" requires ");
6474 REGB2 = TAG_Int(10);
6475 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6476 once_value_6 = fra.me.REG[8];
6477 register_static_object(&once_value_6);
6478 } else fra.me.REG[8] = once_value_6;
6479 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6480 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6481 /* ./../lib/standard//collection//array.nit:23 */
6482 if (UNTAG_Bool(REGB2)) {
6483 } else {
6484 fprintf(stderr, "Uninitialized attribute %s", "_length");
6485 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6486 nit_exit(1);
6487 }
6488 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6489 fra.me.REG[8] = CALL_string___Object___to_s(REGB2)(REGB2);
6490 /* ./syntax//typing.nit:1167 */
6491 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6492 if (!once_value_7) {
6493 fra.me.REG[8] = BOX_NativeString(" blocks, ");
6494 REGB2 = TAG_Int(9);
6495 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6496 once_value_7 = fra.me.REG[8];
6497 register_static_object(&once_value_7);
6498 } else fra.me.REG[8] = once_value_7;
6499 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6500 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6501 if (UNTAG_Bool(REGB2)) {
6502 fprintf(stderr, "Reciever is null");
6503 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1167);
6504 nit_exit(1);
6505 }
6506 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6507 /* ./../lib/standard//collection//array.nit:23 */
6508 if (UNTAG_Bool(REGB2)) {
6509 } else {
6510 fprintf(stderr, "Uninitialized attribute %s", "_length");
6511 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6512 nit_exit(1);
6513 }
6514 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
6515 fra.me.REG[8] = CALL_string___Object___to_s(REGB2)(REGB2);
6516 /* ./syntax//typing.nit:1167 */
6517 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6518 if (!once_value_8) {
6519 fra.me.REG[8] = BOX_NativeString(" found.");
6520 REGB2 = TAG_Int(7);
6521 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
6522 once_value_8 = fra.me.REG[8];
6523 register_static_object(&once_value_8);
6524 } else fra.me.REG[8] = once_value_8;
6525 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
6526 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6527 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
6528 } else {
6529 fra.me.REG[7] = NIT_NULL;
6530 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6531 /* ./syntax//typing.nit:1171 */
6532 if (UNTAG_Bool(REGB2)) {
6533 } else {
6534 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6535 if (UNTAG_Bool(REGB0)) {
6536 REGB0 = TAG_Bool(false);
6537 REGB2 = REGB0;
6538 } else {
6539 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6540 REGB2 = REGB0;
6541 }
6542 }
6543 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6544 if (UNTAG_Bool(REGB2)) {
6545 fra.me.REG[8] = NEW_Array_array___Array___init();
6546 fra.me.REG[7] = fra.me.REG[8];
6547 }
6548 REGB2 = TAG_Int(0);
6549 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
6550 /* ./syntax//typing.nit:1174 */
6551 if (UNTAG_Bool(REGB2)) {
6552 REGB2 = TAG_Int(1);
6553 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
6554 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6555 /* ./syntax//typing.nit:1174 */
6556 if (UNTAG_Bool(REGB0)) {
6557 fprintf(stderr, "Reciever is null");
6558 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1174);
6559 nit_exit(1);
6560 }
6561 fra.me.REG[8] = fra.me.REG[4];
6562 REGB0 = TAG_Int(0);
6563 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
6564 /* ./../lib/standard//collection//array.nit:233 */
6565 if (UNTAG_Bool(REGB0)) {
6566 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
6567 if (UNTAG_Bool(REGB0)) {
6568 } else {
6569 fprintf(stderr, "Uninitialized attribute %s", "_length");
6570 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6571 nit_exit(1);
6572 }
6573 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[8]);
6574 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
6575 /* ./../lib/standard//collection//array.nit:233 */
6576 } else {
6577 REGB3 = TAG_Bool(false);
6578 REGB0 = REGB3;
6579 }
6580 if (UNTAG_Bool(REGB0)) {
6581 } else {
6582 fprintf(stderr, "Assert %s failed", "'index'");
6583 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6584 nit_exit(1);
6585 }
6586 fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[8]);
6587 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6588 /* ./../lib/standard//collection//array.nit:234 */
6589 if (UNTAG_Bool(REGB0)) {
6590 fprintf(stderr, "Reciever is null");
6591 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
6592 nit_exit(1);
6593 }
6594 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
6595 /* ./../lib/standard//collection//array.nit:234 */
6596 goto label9;
6597 label9: while(0);
6598 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6599 /* ./syntax//typing.nit:1174 */
6600 if (UNTAG_Bool(REGB2)) {
6601 fprintf(stderr, "Reciever is null");
6602 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1174);
6603 nit_exit(1);
6604 }
6605 fra.me.REG[8] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[8])(fra.me.REG[8]);
6606 } else {
6607 fra.me.REG[8] = NIT_NULL;
6608 }
6609 REGB2 = TAG_Int(0);
6610 fra.me.REG[9] = NEW_Range_range___Range___without_last(REGB2, REGB1);
6611 fra.me.REG[9] = CALL_abstract_collection___Collection___iterator(fra.me.REG[9])(fra.me.REG[9]);
6612 /* ./syntax//typing.nit:1177 */
6613 while(1) {
6614 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[9])(fra.me.REG[9]);
6615 if (UNTAG_Bool(REGB2)) {
6616 REGB2 = CALL_abstract_collection___Iterator___item(fra.me.REG[9])(fra.me.REG[9]);
6617 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6618 /* ./syntax//typing.nit:1178 */
6619 if (UNTAG_Bool(REGB0)) {
6620 fprintf(stderr, "Reciever is null");
6621 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1178);
6622 nit_exit(1);
6623 }
6624 fra.me.REG[10] = fra.me.REG[4];
6625 REGB0 = TAG_Int(0);
6626 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
6627 /* ./../lib/standard//collection//array.nit:233 */
6628 if (UNTAG_Bool(REGB0)) {
6629 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
6630 if (UNTAG_Bool(REGB0)) {
6631 } else {
6632 fprintf(stderr, "Uninitialized attribute %s", "_length");
6633 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6634 nit_exit(1);
6635 }
6636 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[10]);
6637 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
6638 /* ./../lib/standard//collection//array.nit:233 */
6639 } else {
6640 REGB3 = TAG_Bool(false);
6641 REGB0 = REGB3;
6642 }
6643 if (UNTAG_Bool(REGB0)) {
6644 } else {
6645 fprintf(stderr, "Assert %s failed", "'index'");
6646 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 233);
6647 nit_exit(1);
6648 }
6649 fra.me.REG[10] = ATTR_array___Array____items(fra.me.REG[10]);
6650 REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
6651 /* ./../lib/standard//collection//array.nit:234 */
6652 if (UNTAG_Bool(REGB0)) {
6653 fprintf(stderr, "Reciever is null");
6654 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 234);
6655 nit_exit(1);
6656 }
6657 fra.me.REG[10] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB2)];
6658 /* ./../lib/standard//collection//array.nit:234 */
6659 goto label10;
6660 label10: while(0);
6661 fra.me.REG[11] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[10])(fra.me.REG[10]);
6662 fra.me.REG[11] = CALL_typing___AClosureId___to_symbol(fra.me.REG[11])(fra.me.REG[11]);
6663 fra.me.REG[12] = CALL_static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[11]);
6664 REGB2 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
6665 /* ./syntax//typing.nit:1181 */
6666 if (UNTAG_Bool(REGB2)) {
6667 } else {
6668 REGB0 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
6669 if (UNTAG_Bool(REGB0)) {
6670 REGB0 = TAG_Bool(false);
6671 REGB2 = REGB0;
6672 } else {
6673 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[12])(fra.me.REG[12], NIT_NULL);
6674 REGB2 = REGB0;
6675 }
6676 }
6677 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6678 if (UNTAG_Bool(REGB2)) {
6679 fra.me.REG[12] = NEW_EscapableClosure_escape___EscapableClosure___init(fra.me.REG[10], fra.me.REG[12], fra.me.REG[7]);
6680 fra.me.REG[13] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
6681 /* ./syntax//typing.nit:1183 */
6682 CALL_escape___EscapableContext___push(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[12], fra.me.REG[8]);
6683 /* ./syntax//typing.nit:1184 */
6684 CALL_typing___AClosureDef___accept_typing2(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[1], fra.me.REG[12]);
6685 fra.me.REG[12] = CALL_typing___TypingVisitor___escapable_ctx(fra.me.REG[1])(fra.me.REG[1]);
6686 /* ./syntax//typing.nit:1185 */
6687 CALL_escape___EscapableContext___pop(fra.me.REG[12])(fra.me.REG[12]);
6688 } else {
6689 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6690 /* ./../lib/standard//collection//array.nit:23 */
6691 if (UNTAG_Bool(REGB2)) {
6692 } else {
6693 fprintf(stderr, "Uninitialized attribute %s", "_length");
6694 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
6695 nit_exit(1);
6696 }
6697 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6698 REGB0 = TAG_Int(1);
6699 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
6700 /* ./syntax//typing.nit:1186 */
6701 if (UNTAG_Bool(REGB3)) {
6702 } else {
6703 REGB0 = TAG_Bool((REGB2)==(REGB0));
6704 REGB3 = REGB0;
6705 /* ./syntax//typing.nit:1186 */
6706 }
6707 if (UNTAG_Bool(REGB3)) {
6708 fra.me.REG[12] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[10])(fra.me.REG[10]);
6709 REGB3 = TAG_Int(7);
6710 fra.me.REG[13] = NEW_Array_array___Array___with_capacity(REGB3);
6711 /* ./syntax//typing.nit:1187 */
6712 if (!once_value_11) {
6713 fra.me.REG[14] = BOX_NativeString("Error: no closure named '!");
6714 REGB3 = TAG_Int(26);
6715 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB3);
6716 once_value_11 = fra.me.REG[14];
6717 register_static_object(&once_value_11);
6718 } else fra.me.REG[14] = once_value_11;
6719 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6720 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
6721 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6722 if (!once_value_12) {
6723 fra.me.REG[14] = BOX_NativeString("' in ");
6724 REGB3 = TAG_Int(5);
6725 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB3);
6726 once_value_12 = fra.me.REG[14];
6727 register_static_object(&once_value_12);
6728 } else fra.me.REG[14] = once_value_12;
6729 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6730 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6731 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6732 if (!once_value_13) {
6733 fra.me.REG[14] = BOX_NativeString("; only closure is !");
6734 REGB3 = TAG_Int(19);
6735 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB3);
6736 once_value_13 = fra.me.REG[14];
6737 register_static_object(&once_value_13);
6738 } else fra.me.REG[14] = once_value_13;
6739 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6740 fra.me.REG[14] = CALL_abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
6741 REGB3 = TAG_Bool(fra.me.REG[14]==NIT_NULL);
6742 if (UNTAG_Bool(REGB3)) {
6743 fprintf(stderr, "Reciever is null");
6744 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1187);
6745 nit_exit(1);
6746 }
6747 fra.me.REG[14] = CALL_static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
6748 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
6749 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6750 if (!once_value_14) {
6751 fra.me.REG[14] = BOX_NativeString(".");
6752 REGB3 = TAG_Int(1);
6753 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB3);
6754 once_value_14 = fra.me.REG[14];
6755 register_static_object(&once_value_14);
6756 } else fra.me.REG[14] = once_value_14;
6757 array___Array___add(fra.me.REG[13], fra.me.REG[14]);
6758 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
6759 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12], fra.me.REG[13]);
6760 } else {
6761 fra.me.REG[13] = NEW_Array_array___Array___init();
6762 fra.me.REG[12] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
6763 /* ./syntax//typing.nit:1190 */
6764 while(1) {
6765 REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[12])(fra.me.REG[12]);
6766 if (UNTAG_Bool(REGB3)) {
6767 fra.me.REG[14] = CALL_abstract_collection___Iterator___item(fra.me.REG[12])(fra.me.REG[12]);
6768 REGB3 = TAG_Int(3);
6769 fra.me.REG[15] = NEW_Array_array___Array___with_capacity(REGB3);
6770 /* ./syntax//typing.nit:1191 */
6771 if (!once_value_15) {
6772 fra.me.REG[16] = BOX_NativeString("!");
6773 REGB3 = TAG_Int(1);
6774 fra.me.REG[16] = NEW_String_string___String___with_native(fra.me.REG[16], REGB3);
6775 once_value_15 = fra.me.REG[16];
6776 register_static_object(&once_value_15);
6777 } else fra.me.REG[16] = once_value_15;
6778 array___Array___add(fra.me.REG[15], fra.me.REG[16]);
6779 fra.me.REG[14] = CALL_static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
6780 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
6781 array___Array___add(fra.me.REG[15], fra.me.REG[14]);
6782 if (!once_value_16) {
6783 fra.me.REG[14] = BOX_NativeString("");
6784 REGB3 = TAG_Int(0);
6785 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB3);
6786 once_value_16 = fra.me.REG[14];
6787 register_static_object(&once_value_16);
6788 } else fra.me.REG[14] = once_value_16;
6789 array___Array___add(fra.me.REG[15], fra.me.REG[14]);
6790 fra.me.REG[15] = CALL_string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
6791 array___Array___add(fra.me.REG[13], fra.me.REG[15]);
6792 } else {
6793 /* ./syntax//typing.nit:1190 */
6794 goto label17;
6795 }
6796 CALL_abstract_collection___Iterator___next(fra.me.REG[12])(fra.me.REG[12]);
6797 }
6798 label17: while(0);
6799 fra.me.REG[10] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[10])(fra.me.REG[10]);
6800 REGB3 = TAG_Int(7);
6801 fra.me.REG[12] = NEW_Array_array___Array___with_capacity(REGB3);
6802 /* ./syntax//typing.nit:1193 */
6803 if (!once_value_18) {
6804 fra.me.REG[15] = BOX_NativeString("Error: no closure named '!");
6805 REGB3 = TAG_Int(26);
6806 fra.me.REG[15] = NEW_String_string___String___with_native(fra.me.REG[15], REGB3);
6807 once_value_18 = fra.me.REG[15];
6808 register_static_object(&once_value_18);
6809 } else fra.me.REG[15] = once_value_18;
6810 array___Array___add(fra.me.REG[12], fra.me.REG[15]);
6811 fra.me.REG[11] = CALL_string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
6812 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6813 if (!once_value_19) {
6814 fra.me.REG[11] = BOX_NativeString("' in ");
6815 REGB3 = TAG_Int(5);
6816 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB3);
6817 once_value_19 = fra.me.REG[11];
6818 register_static_object(&once_value_19);
6819 } else fra.me.REG[11] = once_value_19;
6820 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6821 fra.me.REG[11] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6822 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6823 if (!once_value_20) {
6824 fra.me.REG[11] = BOX_NativeString("; only closures are ");
6825 REGB3 = TAG_Int(20);
6826 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB3);
6827 once_value_20 = fra.me.REG[11];
6828 register_static_object(&once_value_20);
6829 } else fra.me.REG[11] = once_value_20;
6830 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6831 if (!once_value_21) {
6832 fra.me.REG[11] = BOX_NativeString(",");
6833 REGB3 = TAG_Int(1);
6834 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB3);
6835 once_value_21 = fra.me.REG[11];
6836 register_static_object(&once_value_21);
6837 } else fra.me.REG[11] = once_value_21;
6838 fra.me.REG[11] = CALL_string___Collection___join(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
6839 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6840 if (!once_value_22) {
6841 fra.me.REG[11] = BOX_NativeString(".");
6842 REGB3 = TAG_Int(1);
6843 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB3);
6844 once_value_22 = fra.me.REG[11];
6845 register_static_object(&once_value_22);
6846 } else fra.me.REG[11] = once_value_22;
6847 array___Array___add(fra.me.REG[12], fra.me.REG[11]);
6848 fra.me.REG[12] = CALL_string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
6849 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10], fra.me.REG[12]);
6850 }
6851 }
6852 } else {
6853 /* ./syntax//typing.nit:1177 */
6854 goto label23;
6855 }
6856 CALL_abstract_collection___Iterator___next(fra.me.REG[9])(fra.me.REG[9]);
6857 }
6858 label23: while(0);
6859 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6860 /* ./syntax//typing.nit:1198 */
6861 if (UNTAG_Bool(REGB3)) {
6862 } else {
6863 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6864 if (UNTAG_Bool(REGB0)) {
6865 REGB0 = TAG_Bool(false);
6866 REGB3 = REGB0;
6867 } else {
6868 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
6869 REGB3 = REGB0;
6870 }
6871 }
6872 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
6873 if (UNTAG_Bool(REGB3)) {
6874 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[7]);
6875 fra.me.REG[5] = fra.me.REG[7];
6876 /* ./syntax//typing.nit:1199 */
6877 }
6878 }
6879 }
6880 } else {
6881 REGB3 = TAG_Int(0);
6882 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
6883 /* ./syntax//typing.nit:1202 */
6884 if (UNTAG_Bool(REGB0)) {
6885 } else {
6886 REGB3 = TAG_Bool((REGB1)==(REGB3));
6887 REGB0 = REGB3;
6888 /* ./syntax//typing.nit:1202 */
6889 }
6890 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6891 if (UNTAG_Bool(REGB0)) {
6892 REGB0 = TAG_Int(3);
6893 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
6894 /* ./syntax//typing.nit:1203 */
6895 if (!once_value_24) {
6896 fra.me.REG[9] = BOX_NativeString("Error: ");
6897 REGB0 = TAG_Int(7);
6898 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB0);
6899 once_value_24 = fra.me.REG[9];
6900 register_static_object(&once_value_24);
6901 } else fra.me.REG[9] = once_value_24;
6902 array___Array___add(fra.me.REG[7], fra.me.REG[9]);
6903 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6904 array___Array___add(fra.me.REG[7], fra.me.REG[3]);
6905 if (!once_value_25) {
6906 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
6907 REGB0 = TAG_Int(25);
6908 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
6909 once_value_25 = fra.me.REG[3];
6910 register_static_object(&once_value_25);
6911 } else fra.me.REG[3] = once_value_25;
6912 array___Array___add(fra.me.REG[7], fra.me.REG[3]);
6913 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6914 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
6915 }
6916 }
6917 /* ./syntax//typing.nit:1205 */
6918 goto label26;
6919 label26: while(0);
6920 stack_frame_head = fra.me.prev;
6921 return fra.me.REG[5];
6922 }
6923 val_t typing___AAbsSendExpr___prop(val_t p0){
6924 struct {struct stack_frame_t me;} fra;
6925 val_t REGB0;
6926 val_t tmp;
6927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6928 fra.me.file = LOCATE_typing;
6929 fra.me.line = 1261;
6930 fra.me.meth = LOCATE_typing___AAbsSendExpr___prop;
6931 fra.me.has_broke = 0;
6932 fra.me.REG_size = 1;
6933 fra.me.REG[0] = NIT_NULL;
6934 fra.me.REG[0] = p0;
6935 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
6936 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6937 /* ./syntax//typing.nit:1262 */
6938 if (UNTAG_Bool(REGB0)) {
6939 } else {
6940 fprintf(stderr, "Cast failed");
6941 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1262);
6942 nit_exit(1);
6943 }
6944 goto label1;
6945 label1: while(0);
6946 stack_frame_head = fra.me.prev;
6947 return fra.me.REG[0];
6948 }
6949 val_t typing___AAbsSendExpr___return_type(val_t p0){
6950 struct {struct stack_frame_t me;} fra;
6951 val_t tmp;
6952 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6953 fra.me.file = LOCATE_typing;
6954 fra.me.line = 1265;
6955 fra.me.meth = LOCATE_typing___AAbsSendExpr___return_type;
6956 fra.me.has_broke = 0;
6957 fra.me.REG_size = 1;
6958 fra.me.REG[0] = NIT_NULL;
6959 fra.me.REG[0] = p0;
6960 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]);
6961 /* ./syntax//typing.nit:1265 */
6962 stack_frame_head = fra.me.prev;
6963 return fra.me.REG[0];
6964 }
6965 void 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){
6966 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6967 val_t REGB0;
6968 val_t REGB1;
6969 val_t REGB2;
6970 val_t tmp;
6971 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6972 fra.me.file = LOCATE_typing;
6973 fra.me.line = 1210;
6974 fra.me.meth = LOCATE_typing___AAbsSendExpr___do_typing;
6975 fra.me.has_broke = 0;
6976 fra.me.REG_size = 7;
6977 fra.me.REG[0] = NIT_NULL;
6978 fra.me.REG[1] = NIT_NULL;
6979 fra.me.REG[2] = NIT_NULL;
6980 fra.me.REG[3] = NIT_NULL;
6981 fra.me.REG[4] = NIT_NULL;
6982 fra.me.REG[5] = NIT_NULL;
6983 fra.me.REG[6] = NIT_NULL;
6984 fra.me.REG[0] = p0;
6985 fra.me.REG[1] = p1;
6986 fra.me.REG[2] = p2;
6987 REGB0 = p3;
6988 REGB1 = p4;
6989 fra.me.REG[3] = p5;
6990 fra.me.REG[4] = p6;
6991 fra.me.REG[5] = p7;
6992 fra.me.REG[3] = CALL_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]);
6993 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6994 /* ./syntax//typing.nit:1214 */
6995 if (UNTAG_Bool(REGB0)) {
6996 } else {
6997 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6998 if (UNTAG_Bool(REGB2)) {
6999 REGB2 = TAG_Bool(false);
7000 REGB0 = REGB2;
7001 } else {
7002 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
7003 REGB0 = REGB2;
7004 }
7005 }
7006 if (UNTAG_Bool(REGB0)) {
7007 goto label1;
7008 }
7009 fra.me.REG[2] = CALL_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);
7010 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7011 /* ./syntax//typing.nit:1216 */
7012 if (UNTAG_Bool(REGB1)) {
7013 fprintf(stderr, "Reciever is null");
7014 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1216);
7015 nit_exit(1);
7016 }
7017 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
7018 REGB1 = CALL_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]);
7019 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7020 if (UNTAG_Bool(REGB1)) {
7021 goto label1;
7022 }
7023 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7024 /* ./syntax//typing.nit:1217 */
7025 if (UNTAG_Bool(REGB1)) {
7026 fprintf(stderr, "Reciever is null");
7027 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1217);
7028 nit_exit(1);
7029 }
7030 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
7031 fra.me.REG[5] = CALL_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]);
7032 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7033 /* ./syntax//typing.nit:1218 */
7034 if (UNTAG_Bool(REGB1)) {
7035 } else {
7036 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7037 if (UNTAG_Bool(REGB0)) {
7038 REGB0 = TAG_Bool(false);
7039 REGB1 = REGB0;
7040 } else {
7041 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7042 REGB1 = REGB0;
7043 }
7044 }
7045 if (UNTAG_Bool(REGB1)) {
7046 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7047 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7048 if (UNTAG_Bool(REGB1)) {
7049 } else {
7050 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7051 if (UNTAG_Bool(REGB0)) {
7052 REGB0 = TAG_Bool(false);
7053 REGB1 = REGB0;
7054 } else {
7055 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7056 REGB1 = REGB0;
7057 }
7058 }
7059 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7060 } else {
7061 REGB0 = TAG_Bool(false);
7062 REGB1 = REGB0;
7063 }
7064 if (UNTAG_Bool(REGB1)) {
7065 goto label1;
7066 }
7067 /* ./syntax//typing.nit:1219 */
7068 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
7069 /* ./syntax//typing.nit:1220 */
7070 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
7071 /* ./syntax//typing.nit:1221 */
7072 ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
7073 label1: while(0);
7074 stack_frame_head = fra.me.prev;
7075 return;
7076 }
7077 val_t typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7078 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
7079 val_t REGB0;
7080 val_t REGB1;
7081 val_t REGB2;
7082 val_t REGB3;
7083 val_t tmp;
7084 static val_t once_value_1; /* Once value */
7085 static val_t once_value_2; /* Once value */
7086 static val_t once_value_3; /* Once value */
7087 static val_t once_value_4; /* Once value */
7088 static val_t once_value_6; /* Once value */
7089 static val_t once_value_7; /* Once value */
7090 static val_t once_value_8; /* Once value */
7091 static val_t once_value_9; /* Once value */
7092 static val_t once_value_10; /* Once value */
7093 static val_t once_value_11; /* Once value */
7094 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7095 fra.me.file = LOCATE_typing;
7096 fra.me.line = 1224;
7097 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_property;
7098 fra.me.has_broke = 0;
7099 fra.me.REG_size = 8;
7100 fra.me.REG[0] = NIT_NULL;
7101 fra.me.REG[1] = NIT_NULL;
7102 fra.me.REG[2] = NIT_NULL;
7103 fra.me.REG[3] = NIT_NULL;
7104 fra.me.REG[4] = NIT_NULL;
7105 fra.me.REG[5] = NIT_NULL;
7106 fra.me.REG[6] = NIT_NULL;
7107 fra.me.REG[7] = NIT_NULL;
7108 fra.me.REG[0] = p0;
7109 fra.me.REG[1] = p1;
7110 fra.me.REG[2] = p2;
7111 REGB0 = p3;
7112 fra.me.REG[3] = p4;
7113 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7114 fra.me.REG[5] = NIT_NULL;
7115 REGB1 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7116 /* ./syntax//typing.nit:1228 */
7117 if (UNTAG_Bool(REGB1)) {
7118 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7119 fra.me.REG[5] = fra.me.REG[4];
7120 }
7121 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7122 /* ./syntax//typing.nit:1229 */
7123 if (UNTAG_Bool(REGB1)) {
7124 } else {
7125 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7126 if (UNTAG_Bool(REGB2)) {
7127 REGB2 = TAG_Bool(false);
7128 REGB1 = REGB2;
7129 } else {
7130 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7131 REGB1 = REGB2;
7132 }
7133 }
7134 if (UNTAG_Bool(REGB1)) {
7135 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7136 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7137 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
7138 } else {
7139 REGB2 = TAG_Bool(false);
7140 REGB1 = REGB2;
7141 }
7142 if (UNTAG_Bool(REGB1)) {
7143 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7144 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7145 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7146 /* ./../lib/standard//collection//array.nit:23 */
7147 if (UNTAG_Bool(REGB1)) {
7148 } else {
7149 fprintf(stderr, "Uninitialized attribute %s", "_length");
7150 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
7151 nit_exit(1);
7152 }
7153 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7154 REGB2 = TAG_Int(1);
7155 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7156 /* ./syntax//typing.nit:1231 */
7157 if (UNTAG_Bool(REGB2)) {
7158 REGB2 = TAG_Int(5);
7159 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB2);
7160 /* ./syntax//typing.nit:1232 */
7161 if (!once_value_1) {
7162 fra.me.REG[7] = BOX_NativeString("Error: Ambigous method name '");
7163 REGB2 = TAG_Int(29);
7164 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7165 once_value_1 = fra.me.REG[7];
7166 register_static_object(&once_value_1);
7167 } else fra.me.REG[7] = once_value_1;
7168 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
7169 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7170 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
7171 if (!once_value_2) {
7172 fra.me.REG[7] = BOX_NativeString("' for ");
7173 REGB2 = TAG_Int(6);
7174 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7175 once_value_2 = fra.me.REG[7];
7176 register_static_object(&once_value_2);
7177 } else fra.me.REG[7] = once_value_2;
7178 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
7179 if (!once_value_3) {
7180 fra.me.REG[7] = BOX_NativeString(", ");
7181 REGB2 = TAG_Int(2);
7182 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7183 once_value_3 = fra.me.REG[7];
7184 register_static_object(&once_value_3);
7185 } else fra.me.REG[7] = once_value_3;
7186 fra.me.REG[7] = CALL_string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
7187 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
7188 if (!once_value_4) {
7189 fra.me.REG[7] = BOX_NativeString(". Use explicit designation.");
7190 REGB2 = TAG_Int(27);
7191 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7192 once_value_4 = fra.me.REG[7];
7193 register_static_object(&once_value_4);
7194 } else fra.me.REG[7] = once_value_4;
7195 array___Array___add(fra.me.REG[6], fra.me.REG[7]);
7196 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7197 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7198 fra.me.REG[6] = NIT_NULL;
7199 /* ./syntax//typing.nit:1233 */
7200 goto label5;
7201 } else {
7202 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7203 /* ./../lib/standard//collection//array.nit:23 */
7204 if (UNTAG_Bool(REGB2)) {
7205 } else {
7206 fprintf(stderr, "Uninitialized attribute %s", "_length");
7207 fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
7208 nit_exit(1);
7209 }
7210 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7211 REGB1 = TAG_Int(1);
7212 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
7213 /* ./syntax//typing.nit:1234 */
7214 if (UNTAG_Bool(REGB3)) {
7215 } else {
7216 REGB1 = TAG_Bool((REGB2)==(REGB1));
7217 REGB3 = REGB1;
7218 /* ./syntax//typing.nit:1234 */
7219 }
7220 if (UNTAG_Bool(REGB3)) {
7221 fra.me.REG[7] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7222 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
7223 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7224 /* ./syntax//typing.nit:1235 */
7225 if (UNTAG_Bool(REGB3)) {
7226 fprintf(stderr, "Reciever is null");
7227 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1235);
7228 nit_exit(1);
7229 }
7230 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7231 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
7232 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
7233 /* ./syntax//typing.nit:1236 */
7234 if (UNTAG_Bool(REGB3)) {
7235 } else {
7236 fprintf(stderr, "Assert failed");
7237 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1236);
7238 nit_exit(1);
7239 }
7240 fra.me.REG[5] = fra.me.REG[4];
7241 /* ./syntax//typing.nit:1237 */
7242 }
7243 }
7244 }
7245 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7246 /* ./syntax//typing.nit:1241 */
7247 if (UNTAG_Bool(REGB3)) {
7248 } else {
7249 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7250 if (UNTAG_Bool(REGB1)) {
7251 REGB1 = TAG_Bool(false);
7252 REGB3 = REGB1;
7253 } else {
7254 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7255 REGB3 = REGB1;
7256 }
7257 }
7258 if (UNTAG_Bool(REGB3)) {
7259 /* ./syntax//typing.nit:1242 */
7260 if (UNTAG_Bool(REGB0)) {
7261 REGB0 = TAG_Int(5);
7262 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
7263 /* ./syntax//typing.nit:1243 */
7264 if (!once_value_6) {
7265 fra.me.REG[7] = BOX_NativeString("Error: Method or variable '");
7266 REGB0 = TAG_Int(27);
7267 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
7268 once_value_6 = fra.me.REG[7];
7269 register_static_object(&once_value_6);
7270 } else fra.me.REG[7] = once_value_6;
7271 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7272 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7273 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7274 if (!once_value_7) {
7275 fra.me.REG[7] = BOX_NativeString("' unknown in ");
7276 REGB0 = TAG_Int(13);
7277 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
7278 once_value_7 = fra.me.REG[7];
7279 register_static_object(&once_value_7);
7280 } else fra.me.REG[7] = once_value_7;
7281 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7282 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7283 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7284 if (!once_value_8) {
7285 fra.me.REG[7] = BOX_NativeString(".");
7286 REGB0 = TAG_Int(1);
7287 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
7288 once_value_8 = fra.me.REG[7];
7289 register_static_object(&once_value_8);
7290 } else fra.me.REG[7] = once_value_8;
7291 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7292 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7293 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7294 } else {
7295 REGB0 = TAG_Int(5);
7296 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
7297 /* ./syntax//typing.nit:1245 */
7298 if (!once_value_9) {
7299 fra.me.REG[7] = BOX_NativeString("Error: Method '");
7300 REGB0 = TAG_Int(15);
7301 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
7302 once_value_9 = fra.me.REG[7];
7303 register_static_object(&once_value_9);
7304 } else fra.me.REG[7] = once_value_9;
7305 array___Array___add(fra.me.REG[4], fra.me.REG[7]);
7306 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7307 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7308 if (!once_value_10) {
7309 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
7310 REGB0 = TAG_Int(20);
7311 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7312 once_value_10 = fra.me.REG[3];
7313 register_static_object(&once_value_10);
7314 } else fra.me.REG[3] = once_value_10;
7315 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7316 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7317 array___Array___add(fra.me.REG[4], fra.me.REG[2]);
7318 if (!once_value_11) {
7319 fra.me.REG[2] = BOX_NativeString(".");
7320 REGB0 = TAG_Int(1);
7321 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
7322 once_value_11 = fra.me.REG[2];
7323 register_static_object(&once_value_11);
7324 } else fra.me.REG[2] = once_value_11;
7325 array___Array___add(fra.me.REG[4], fra.me.REG[2]);
7326 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7327 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7328 }
7329 fra.me.REG[6] = NIT_NULL;
7330 /* ./syntax//typing.nit:1247 */
7331 goto label5;
7332 }
7333 fra.me.REG[6] = fra.me.REG[5];
7334 /* ./syntax//typing.nit:1249 */
7335 goto label5;
7336 label5: while(0);
7337 stack_frame_head = fra.me.prev;
7338 return fra.me.REG[6];
7339 }
7340 val_t typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7341 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
7342 val_t REGB0;
7343 val_t tmp;
7344 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7345 fra.me.file = LOCATE_typing;
7346 fra.me.line = 1252;
7347 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_signature;
7348 fra.me.has_broke = 0;
7349 fra.me.REG_size = 6;
7350 fra.me.REG[0] = NIT_NULL;
7351 fra.me.REG[1] = NIT_NULL;
7352 fra.me.REG[2] = NIT_NULL;
7353 fra.me.REG[3] = NIT_NULL;
7354 fra.me.REG[4] = NIT_NULL;
7355 fra.me.REG[5] = NIT_NULL;
7356 fra.me.REG[0] = p0;
7357 fra.me.REG[1] = p1;
7358 fra.me.REG[2] = p2;
7359 fra.me.REG[3] = p3;
7360 REGB0 = p4;
7361 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
7362 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
7363 /* ./syntax//typing.nit:1255 */
7364 CALL_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);
7365 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
7366 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7367 /* ./syntax//typing.nit:1257 */
7368 if (UNTAG_Bool(REGB0)) {
7369 fra.me.REG[3] = CALL_static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7370 fra.me.REG[2] = fra.me.REG[3];
7371 }
7372 /* ./syntax//typing.nit:1258 */
7373 goto label1;
7374 label1: while(0);
7375 stack_frame_head = fra.me.prev;
7376 return fra.me.REG[2];
7377 }
7378 void typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
7379 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
7380 val_t REGB0;
7381 val_t REGB1;
7382 val_t REGB2;
7383 val_t tmp;
7384 static val_t once_value_1; /* Once value */
7385 static val_t once_value_2; /* Once value */
7386 static val_t once_value_3; /* Once value */
7387 static val_t once_value_4; /* Once value */
7388 static val_t once_value_5; /* Once value */
7389 static val_t once_value_6; /* Once value */
7390 static val_t once_value_7; /* Once value */
7391 static val_t once_value_8; /* Once value */
7392 static val_t once_value_9; /* Once value */
7393 static val_t once_value_10; /* Once value */
7394 static val_t once_value_11; /* Once value */
7395 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7396 fra.me.file = LOCATE_typing;
7397 fra.me.line = 1272;
7398 fra.me.meth = LOCATE_typing___ASuperInitCall___register_super_init_call;
7399 fra.me.has_broke = 0;
7400 fra.me.REG_size = 10;
7401 fra.me.REG[0] = NIT_NULL;
7402 fra.me.REG[1] = NIT_NULL;
7403 fra.me.REG[2] = NIT_NULL;
7404 fra.me.REG[3] = NIT_NULL;
7405 fra.me.REG[4] = NIT_NULL;
7406 fra.me.REG[5] = NIT_NULL;
7407 fra.me.REG[6] = NIT_NULL;
7408 fra.me.REG[7] = NIT_NULL;
7409 fra.me.REG[8] = NIT_NULL;
7410 fra.me.REG[9] = NIT_NULL;
7411 fra.me.REG[0] = p0;
7412 fra.me.REG[1] = p1;
7413 fra.me.REG[2] = p2;
7414 fra.me.REG[3] = CALL_parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
7415 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
7416 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
7417 /* ./syntax//typing.nit:1274 */
7418 if (UNTAG_Bool(REGB0)) {
7419 } else {
7420 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7421 if (UNTAG_Bool(REGB1)) {
7422 REGB1 = TAG_Bool(false);
7423 REGB0 = REGB1;
7424 } else {
7425 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7426 REGB0 = REGB1;
7427 }
7428 }
7429 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7430 if (UNTAG_Bool(REGB0)) {
7431 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
7432 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
7433 if (UNTAG_Bool(REGB0)) {
7434 } else {
7435 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
7436 REGB0 = REGB1;
7437 }
7438 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7439 } else {
7440 REGB1 = TAG_Bool(false);
7441 REGB0 = REGB1;
7442 }
7443 if (UNTAG_Bool(REGB0)) {
7444 REGB0 = TAG_Int(3);
7445 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
7446 /* ./syntax//typing.nit:1275 */
7447 if (!once_value_1) {
7448 fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
7449 REGB0 = TAG_Int(30);
7450 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7451 once_value_1 = fra.me.REG[3];
7452 register_static_object(&once_value_1);
7453 } else fra.me.REG[3] = once_value_1;
7454 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7455 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7456 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7457 if (!once_value_2) {
7458 fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
7459 REGB0 = TAG_Int(29);
7460 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7461 once_value_2 = fra.me.REG[3];
7462 register_static_object(&once_value_2);
7463 } else fra.me.REG[3] = once_value_2;
7464 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7465 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7466 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7467 }
7468 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
7469 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
7470 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
7471 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7472 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
7473 fra.me.REG[3] = CALL_abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7474 fra.me.REG[4] = NIT_NULL;
7475 fra.me.REG[5] = CALL_typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
7476 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
7477 /* ./syntax//typing.nit:1279 */
7478 if (UNTAG_Bool(REGB0)) {
7479 } else {
7480 fprintf(stderr, "Cast failed");
7481 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1279);
7482 nit_exit(1);
7483 }
7484 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
7485 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7486 /* ./syntax//typing.nit:1280 */
7487 if (UNTAG_Bool(REGB0)) {
7488 fra.me.REG[6] = CALL_abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
7489 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
7490 /* ./syntax//typing.nit:1281 */
7491 if (UNTAG_Bool(REGB0)) {
7492 fprintf(stderr, "Reciever is null");
7493 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1281);
7494 nit_exit(1);
7495 }
7496 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
7497 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
7498 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7499 fra.me.REG[4] = fra.me.REG[6];
7500 }
7501 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
7502 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
7503 fra.me.REG[6] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
7504 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
7505 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
7506 /* ./syntax//typing.nit:1284 */
7507 if (UNTAG_Bool(REGB0)) {
7508 } else {
7509 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7510 REGB0 = REGB1;
7511 }
7512 if (UNTAG_Bool(REGB0)) {
7513 REGB0 = TAG_Bool(true);
7514 /* ./syntax//typing.nit:1285 */
7515 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
7516 } else {
7517 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7519 /* ./syntax//typing.nit:1286 */
7520 if (UNTAG_Bool(REGB0)) {
7521 REGB0 = TAG_Int(5);
7522 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
7523 /* ./syntax//typing.nit:1287 */
7524 if (!once_value_3) {
7525 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
7526 REGB0 = TAG_Int(28);
7527 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7528 once_value_3 = fra.me.REG[8];
7529 register_static_object(&once_value_3);
7530 } else fra.me.REG[8] = once_value_3;
7531 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7532 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7533 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7534 if (!once_value_4) {
7535 fra.me.REG[8] = BOX_NativeString(" must be one in ");
7536 REGB0 = TAG_Int(16);
7537 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7538 once_value_4 = fra.me.REG[8];
7539 register_static_object(&once_value_4);
7540 } else fra.me.REG[8] = once_value_4;
7541 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7542 if (!once_value_5) {
7543 fra.me.REG[8] = BOX_NativeString(", ");
7544 REGB0 = TAG_Int(2);
7545 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7546 once_value_5 = fra.me.REG[8];
7547 register_static_object(&once_value_5);
7548 } else fra.me.REG[8] = once_value_5;
7549 fra.me.REG[8] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
7550 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7551 if (!once_value_6) {
7552 fra.me.REG[8] = BOX_NativeString(".");
7553 REGB0 = TAG_Int(1);
7554 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7555 once_value_6 = fra.me.REG[8];
7556 register_static_object(&once_value_6);
7557 } else fra.me.REG[8] = once_value_6;
7558 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7559 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
7560 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
7561 } else {
7562 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
7563 /* ./syntax//typing.nit:1288 */
7564 if (UNTAG_Bool(REGB0)) {
7565 } else {
7566 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7567 REGB0 = REGB1;
7568 }
7569 if (UNTAG_Bool(REGB0)) {
7570 REGB0 = TAG_Int(3);
7571 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
7572 /* ./syntax//typing.nit:1289 */
7573 if (!once_value_7) {
7574 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
7575 REGB0 = TAG_Int(54);
7576 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7577 once_value_7 = fra.me.REG[8];
7578 register_static_object(&once_value_7);
7579 } else fra.me.REG[8] = once_value_7;
7580 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7581 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7582 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7583 if (!once_value_8) {
7584 fra.me.REG[8] = BOX_NativeString(" is allowed.");
7585 REGB0 = TAG_Int(12);
7586 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
7587 once_value_8 = fra.me.REG[8];
7588 register_static_object(&once_value_8);
7589 } else fra.me.REG[8] = once_value_8;
7590 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
7591 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
7592 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
7593 } else {
7594 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7595 /* ./syntax//typing.nit:1291 */
7596 if (UNTAG_Bool(REGB0)) {
7597 } else {
7598 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7599 if (UNTAG_Bool(REGB1)) {
7600 REGB1 = TAG_Bool(false);
7601 REGB0 = REGB1;
7602 } else {
7603 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7604 REGB0 = REGB1;
7605 }
7606 }
7607 fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
7608 /* ./syntax//typing.nit:1292 */
7609 while(1) {
7610 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
7611 if (UNTAG_Bool(REGB1)) {
7612 fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
7613 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[7],fra.me.REG[4]));
7614 /* ./syntax//typing.nit:1293 */
7615 if (UNTAG_Bool(REGB1)) {
7616 } else {
7617 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
7618 REGB1 = REGB2;
7619 }
7620 if (UNTAG_Bool(REGB1)) {
7621 REGB1 = TAG_Bool(true);
7622 REGB0 = REGB1;
7623 /* ./syntax//typing.nit:1294 */
7624 } else {
7625 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[3]));
7626 /* ./syntax//typing.nit:1295 */
7627 if (UNTAG_Bool(REGB1)) {
7628 } else {
7629 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
7630 REGB1 = REGB2;
7631 }
7632 if (UNTAG_Bool(REGB1)) {
7633 REGB1 = TAG_Bool(!UNTAG_Bool(REGB0));
7634 /* ./syntax//typing.nit:1296 */
7635 if (UNTAG_Bool(REGB1)) {
7636 REGB1 = TAG_Int(5);
7637 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB1);
7638 /* ./syntax//typing.nit:1297 */
7639 if (!once_value_9) {
7640 fra.me.REG[9] = BOX_NativeString("Error: Constructor of ");
7641 REGB1 = TAG_Int(22);
7642 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB1);
7643 once_value_9 = fra.me.REG[9];
7644 register_static_object(&once_value_9);
7645 } else fra.me.REG[9] = once_value_9;
7646 array___Array___add(fra.me.REG[8], fra.me.REG[9]);
7647 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
7648 array___Array___add(fra.me.REG[8], fra.me.REG[7]);
7649 if (!once_value_10) {
7650 fra.me.REG[7] = BOX_NativeString(" must be invoked before constructor of ");
7651 REGB1 = TAG_Int(39);
7652 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
7653 once_value_10 = fra.me.REG[7];
7654 register_static_object(&once_value_10);
7655 } else fra.me.REG[7] = once_value_10;
7656 array___Array___add(fra.me.REG[8], fra.me.REG[7]);
7657 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7658 array___Array___add(fra.me.REG[8], fra.me.REG[7]);
7659 if (!once_value_11) {
7660 fra.me.REG[7] = BOX_NativeString("");
7661 REGB1 = TAG_Int(0);
7662 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
7663 once_value_11 = fra.me.REG[7];
7664 register_static_object(&once_value_11);
7665 } else fra.me.REG[7] = once_value_11;
7666 array___Array___add(fra.me.REG[8], fra.me.REG[7]);
7667 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7668 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7669 }
7670 /* ./syntax//typing.nit:1299 */
7671 array___Array___add(fra.me.REG[5], fra.me.REG[2]);
7672 /* ./syntax//typing.nit:1300 */
7673 goto label12;
7674 }
7675 }
7676 } else {
7677 /* ./syntax//typing.nit:1292 */
7678 goto label12;
7679 }
7680 CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
7681 }
7682 label12: while(0);
7683 }
7684 }
7685 }
7686 stack_frame_head = fra.me.prev;
7687 return;
7688 }
7689 void typing___ANewExpr___after_typing(val_t p0, val_t p1){
7690 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
7691 val_t REGB0;
7692 val_t REGB1;
7693 val_t tmp;
7694 static val_t once_value_2; /* Once value */
7695 static val_t once_value_3; /* Once value */
7696 static val_t once_value_4; /* Once value */
7697 static val_t once_value_5; /* Once value */
7698 static val_t once_value_6; /* Once value */
7699 static val_t once_value_7; /* Once value */
7700 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7701 fra.me.file = LOCATE_typing;
7702 fra.me.line = 1310;
7703 fra.me.meth = LOCATE_typing___ANewExpr___after_typing;
7704 fra.me.has_broke = 0;
7705 fra.me.REG_size = 5;
7706 fra.me.REG[0] = NIT_NULL;
7707 fra.me.REG[1] = NIT_NULL;
7708 fra.me.REG[2] = NIT_NULL;
7709 fra.me.REG[3] = NIT_NULL;
7710 fra.me.REG[4] = NIT_NULL;
7711 fra.me.REG[0] = p0;
7712 fra.me.REG[1] = p1;
7713 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
7714 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
7715 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7716 /* ./syntax//typing.nit:1312 */
7717 if (UNTAG_Bool(REGB0)) {
7718 goto label1;
7719 }
7720 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
7721 fra.me.REG[2] = CALL_syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
7722 fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7723 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
7724 REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
7725 /* ./syntax//typing.nit:1314 */
7726 if (UNTAG_Bool(REGB0)) {
7727 REGB0 = TAG_Int(3);
7728 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
7729 /* ./syntax//typing.nit:1315 */
7730 if (!once_value_2) {
7731 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
7732 REGB0 = TAG_Int(41);
7733 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
7734 once_value_2 = fra.me.REG[4];
7735 register_static_object(&once_value_2);
7736 } else fra.me.REG[4] = once_value_2;
7737 array___Array___add(fra.me.REG[3], fra.me.REG[4]);
7738 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7739 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7740 array___Array___add(fra.me.REG[3], fra.me.REG[4]);
7741 if (!once_value_3) {
7742 fra.me.REG[4] = BOX_NativeString(".");
7743 REGB0 = TAG_Int(1);
7744 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
7745 once_value_3 = fra.me.REG[4];
7746 register_static_object(&once_value_3);
7747 } else fra.me.REG[4] = once_value_3;
7748 array___Array___add(fra.me.REG[3], fra.me.REG[4]);
7749 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7750 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7751 /* ./syntax//typing.nit:1316 */
7752 goto label1;
7753 }
7754 fra.me.REG[3] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7755 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7756 /* ./syntax//typing.nit:1319 */
7757 if (UNTAG_Bool(REGB0)) {
7758 } else {
7759 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7760 if (UNTAG_Bool(REGB1)) {
7761 REGB1 = TAG_Bool(false);
7762 REGB0 = REGB1;
7763 } else {
7764 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
7765 REGB0 = REGB1;
7766 }
7767 }
7768 if (UNTAG_Bool(REGB0)) {
7769 /* ./syntax//typing.nit:1320 */
7770 if (!once_value_4) {
7771 if (!once_value_5) {
7772 fra.me.REG[3] = BOX_NativeString("init");
7773 REGB0 = TAG_Int(4);
7774 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7775 once_value_5 = fra.me.REG[3];
7776 register_static_object(&once_value_5);
7777 } else fra.me.REG[3] = once_value_5;
7778 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7779 once_value_4 = fra.me.REG[3];
7780 register_static_object(&once_value_4);
7781 } else fra.me.REG[3] = once_value_4;
7782 } else {
7783 fra.me.REG[4] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7784 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7785 /* ./syntax//typing.nit:1322 */
7786 if (UNTAG_Bool(REGB0)) {
7787 fprintf(stderr, "Reciever is null");
7788 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1322);
7789 nit_exit(1);
7790 }
7791 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
7792 fra.me.REG[3] = fra.me.REG[4];
7793 }
7794 REGB0 = TAG_Bool(false);
7795 REGB1 = TAG_Bool(false);
7796 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7797 /* ./syntax//typing.nit:1325 */
7798 CALL_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);
7799 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
7800 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7801 /* ./syntax//typing.nit:1326 */
7802 if (UNTAG_Bool(REGB1)) {
7803 } else {
7804 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7805 if (UNTAG_Bool(REGB0)) {
7806 REGB0 = TAG_Bool(false);
7807 REGB1 = REGB0;
7808 } else {
7809 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7810 REGB1 = REGB0;
7811 }
7812 }
7813 if (UNTAG_Bool(REGB1)) {
7814 goto label1;
7815 }
7816 fra.me.REG[4] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
7817 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7818 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
7819 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7820 /* ./syntax//typing.nit:1328 */
7821 if (UNTAG_Bool(REGB1)) {
7822 REGB1 = TAG_Int(3);
7823 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
7824 /* ./syntax//typing.nit:1329 */
7825 if (!once_value_6) {
7826 fra.me.REG[3] = BOX_NativeString("Error: ");
7827 REGB1 = TAG_Int(7);
7828 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
7829 once_value_6 = fra.me.REG[3];
7830 register_static_object(&once_value_6);
7831 } else fra.me.REG[3] = once_value_6;
7832 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7833 fra.me.REG[3] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
7834 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7835 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7836 if (!once_value_7) {
7837 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
7838 REGB1 = TAG_Int(22);
7839 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
7840 once_value_7 = fra.me.REG[3];
7841 register_static_object(&once_value_7);
7842 } else fra.me.REG[3] = once_value_7;
7843 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
7844 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7845 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7846 /* ./syntax//typing.nit:1330 */
7847 goto label1;
7848 }
7849 /* ./syntax//typing.nit:1332 */
7850 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
7851 REGB1 = TAG_Bool(true);
7852 /* ./syntax//typing.nit:1333 */
7853 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
7854 label1: while(0);
7855 stack_frame_head = fra.me.prev;
7856 return;
7857 }
7858 val_t typing___ANewExpr___compute_raw_arguments(val_t p0){
7859 struct {struct stack_frame_t me;} fra;
7860 val_t tmp;
7861 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7862 fra.me.file = LOCATE_typing;
7863 fra.me.line = 1309;
7864 fra.me.meth = LOCATE_typing___ANewExpr___compute_raw_arguments;
7865 fra.me.has_broke = 0;
7866 fra.me.REG_size = 1;
7867 fra.me.REG[0] = NIT_NULL;
7868 fra.me.REG[0] = p0;
7869 fra.me.REG[0] = CALL_parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
7870 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
7871 /* ./syntax//typing.nit:1309 */
7872 goto label1;
7873 label1: while(0);
7874 stack_frame_head = fra.me.prev;
7875 return fra.me.REG[0];
7876 }
7877 val_t typing___ASendExpr___closure_defs(val_t p0){
7878 struct {struct stack_frame_t me;} fra;
7879 val_t tmp;
7880 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7881 fra.me.file = LOCATE_typing;
7882 fra.me.line = 1342;
7883 fra.me.meth = LOCATE_typing___ASendExpr___closure_defs;
7884 fra.me.has_broke = 0;
7885 fra.me.REG_size = 1;
7886 fra.me.REG[0] = NIT_NULL;
7887 fra.me.REG[0] = p0;
7888 fra.me.REG[0] = NIT_NULL;
7889 /* ./syntax//typing.nit:1343 */
7890 goto label1;
7891 label1: while(0);
7892 stack_frame_head = fra.me.prev;
7893 return fra.me.REG[0];
7894 }
7895 void typing___ASendExpr___after_typing(val_t p0, val_t p1){
7896 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7897 val_t tmp;
7898 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7899 fra.me.file = LOCATE_typing;
7900 fra.me.line = 1345;
7901 fra.me.meth = LOCATE_typing___ASendExpr___after_typing;
7902 fra.me.has_broke = 0;
7903 fra.me.REG_size = 2;
7904 fra.me.REG[0] = NIT_NULL;
7905 fra.me.REG[1] = NIT_NULL;
7906 fra.me.REG[0] = p0;
7907 fra.me.REG[1] = p1;
7908 /* ./syntax//typing.nit:1347 */
7909 CALL_typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7910 stack_frame_head = fra.me.prev;
7911 return;
7912 }
7913 val_t typing___ASendExpr___name(val_t p0){
7914 struct {struct stack_frame_t me;} fra;
7915 val_t tmp;
7916 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7917 fra.me.file = LOCATE_typing;
7918 fra.me.line = 1339;
7919 fra.me.meth = LOCATE_typing___ASendExpr___name;
7920 fra.me.has_broke = 0;
7921 fra.me.REG_size = 0;
7922 /* ./syntax//typing.nit:1339 */
7923 fprintf(stderr, "Deferred method called");
7924 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1339);
7925 nit_exit(1);
7926 stack_frame_head = fra.me.prev;
7927 return NIT_NULL;
7928 }
7929 void typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
7930 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
7931 val_t REGB0;
7932 val_t REGB1;
7933 val_t tmp;
7934 static val_t once_value_2; /* Once value */
7935 static val_t once_value_3; /* Once value */
7936 static val_t once_value_4; /* Once value */
7937 static val_t once_value_5; /* Once value */
7938 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7939 fra.me.file = LOCATE_typing;
7940 fra.me.line = 1350;
7941 fra.me.meth = LOCATE_typing___ASendExpr___do_all_typing;
7942 fra.me.has_broke = 0;
7943 fra.me.REG_size = 6;
7944 fra.me.REG[0] = NIT_NULL;
7945 fra.me.REG[1] = NIT_NULL;
7946 fra.me.REG[2] = NIT_NULL;
7947 fra.me.REG[3] = NIT_NULL;
7948 fra.me.REG[4] = NIT_NULL;
7949 fra.me.REG[5] = NIT_NULL;
7950 fra.me.REG[0] = p0;
7951 fra.me.REG[1] = p1;
7952 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7953 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7954 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7955 /* ./syntax//typing.nit:1352 */
7956 if (UNTAG_Bool(REGB0)) {
7957 goto label1;
7958 }
7959 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7960 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7961 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7962 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
7963 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7964 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
7965 fra.me.REG[3] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
7966 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7967 fra.me.REG[5] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
7968 /* ./syntax//typing.nit:1353 */
7969 CALL_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], fra.me.REG[5]);
7970 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
7971 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7972 /* ./syntax//typing.nit:1354 */
7973 if (UNTAG_Bool(REGB1)) {
7974 } else {
7975 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7976 if (UNTAG_Bool(REGB0)) {
7977 REGB0 = TAG_Bool(false);
7978 REGB1 = REGB0;
7979 } else {
7980 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7981 REGB1 = REGB0;
7982 }
7983 }
7984 if (UNTAG_Bool(REGB1)) {
7985 goto label1;
7986 }
7987 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
7988 REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
7989 /* ./syntax//typing.nit:1355 */
7990 if (UNTAG_Bool(REGB1)) {
7991 } else {
7992 fprintf(stderr, "Cast failed");
7993 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1355);
7994 nit_exit(1);
7995 }
7996 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
7997 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
7998 /* ./syntax//typing.nit:1357 */
7999 if (UNTAG_Bool(REGB1)) {
8000 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8001 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8002 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
8003 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8004 /* ./syntax//typing.nit:1358 */
8005 if (UNTAG_Bool(REGB1)) {
8006 REGB1 = TAG_Int(3);
8007 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8008 /* ./syntax//typing.nit:1359 */
8009 if (!once_value_2) {
8010 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
8011 REGB1 = TAG_Int(33);
8012 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8013 once_value_2 = fra.me.REG[3];
8014 register_static_object(&once_value_2);
8015 } else fra.me.REG[3] = once_value_2;
8016 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8017 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8018 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8019 if (!once_value_3) {
8020 fra.me.REG[3] = BOX_NativeString(" in a method.");
8021 REGB1 = TAG_Int(13);
8022 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8023 once_value_3 = fra.me.REG[3];
8024 register_static_object(&once_value_3);
8025 } else fra.me.REG[3] = once_value_3;
8026 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8027 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8028 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8029 } else {
8030 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8031 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
8032 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8033 /* ./syntax//typing.nit:1360 */
8034 if (UNTAG_Bool(REGB1)) {
8035 REGB1 = TAG_Int(3);
8036 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8037 /* ./syntax//typing.nit:1361 */
8038 if (!once_value_4) {
8039 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
8040 REGB1 = TAG_Int(19);
8041 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8042 once_value_4 = fra.me.REG[3];
8043 register_static_object(&once_value_4);
8044 } else fra.me.REG[3] = once_value_4;
8045 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8046 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8047 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8048 if (!once_value_5) {
8049 fra.me.REG[3] = BOX_NativeString(" is not invoken on 'self'.");
8050 REGB1 = TAG_Int(26);
8051 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8052 once_value_5 = fra.me.REG[3];
8053 register_static_object(&once_value_5);
8054 } else fra.me.REG[3] = once_value_5;
8055 array___Array___add(fra.me.REG[4], fra.me.REG[3]);
8056 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8057 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8058 } else {
8059 /* ./syntax//typing.nit:1363 */
8060 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
8061 }
8062 }
8063 }
8064 fra.me.REG[5] = CALL_syntax_base___AAbsSendExpr___return_type(fra.me.REG[0])(fra.me.REG[0]);
8065 /* ./syntax//typing.nit:1367 */
8066 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
8067 REGB1 = TAG_Bool(true);
8068 /* ./syntax//typing.nit:1368 */
8069 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
8070 label1: while(0);
8071 stack_frame_head = fra.me.prev;
8072 return;
8073 }
8074 val_t typing___ASendReassignExpr___read_prop(val_t p0){
8075 struct {struct stack_frame_t me;} fra;
8076 val_t REGB0;
8077 val_t tmp;
8078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8079 fra.me.file = LOCATE_typing;
8080 fra.me.line = 1373;
8081 fra.me.meth = LOCATE_typing___ASendReassignExpr___read_prop;
8082 fra.me.has_broke = 0;
8083 fra.me.REG_size = 1;
8084 fra.me.REG[0] = NIT_NULL;
8085 fra.me.REG[0] = p0;
8086 fra.me.REG[0] = ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]);
8087 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
8088 /* ./syntax//typing.nit:1373 */
8089 if (UNTAG_Bool(REGB0)) {
8090 } else {
8091 fprintf(stderr, "Cast failed");
8092 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1373);
8093 nit_exit(1);
8094 }
8095 goto label1;
8096 label1: while(0);
8097 stack_frame_head = fra.me.prev;
8098 return fra.me.REG[0];
8099 }
8100 void typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
8101 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8102 val_t REGB0;
8103 val_t REGB1;
8104 val_t REGB2;
8105 val_t tmp;
8106 static val_t once_value_2; /* Once value */
8107 static val_t once_value_3; /* Once value */
8108 static val_t once_value_4; /* Once value */
8109 static val_t once_value_5; /* Once value */
8110 static val_t once_value_6; /* Once value */
8111 static val_t once_value_7; /* Once value */
8112 static val_t once_value_8; /* Once value */
8113 static val_t once_value_9; /* Once value */
8114 static val_t once_value_10; /* Once value */
8115 static val_t once_value_11; /* Once value */
8116 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8117 fra.me.file = LOCATE_typing;
8118 fra.me.line = 1375;
8119 fra.me.meth = LOCATE_typing___ASendReassignExpr___do_all_typing;
8120 fra.me.has_broke = 0;
8121 fra.me.REG_size = 7;
8122 fra.me.REG[0] = NIT_NULL;
8123 fra.me.REG[1] = NIT_NULL;
8124 fra.me.REG[2] = NIT_NULL;
8125 fra.me.REG[3] = NIT_NULL;
8126 fra.me.REG[4] = NIT_NULL;
8127 fra.me.REG[5] = NIT_NULL;
8128 fra.me.REG[6] = NIT_NULL;
8129 fra.me.REG[0] = p0;
8130 fra.me.REG[1] = p1;
8131 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8132 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8133 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8134 /* ./syntax//typing.nit:1377 */
8135 if (UNTAG_Bool(REGB0)) {
8136 goto label1;
8137 }
8138 fra.me.REG[2] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8139 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8140 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
8141 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8142 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
8143 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8144 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
8145 fra.me.REG[4] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
8146 /* ./syntax//typing.nit:1379 */
8147 CALL_typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], REGB0, REGB1, fra.me.REG[4], fra.me.REG[2], NIT_NULL);
8148 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8149 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8150 /* ./syntax//typing.nit:1381 */
8151 if (UNTAG_Bool(REGB1)) {
8152 } else {
8153 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8154 if (UNTAG_Bool(REGB0)) {
8155 REGB0 = TAG_Bool(false);
8156 REGB1 = REGB0;
8157 } else {
8158 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8159 REGB1 = REGB0;
8160 }
8161 }
8162 if (UNTAG_Bool(REGB1)) {
8163 goto label1;
8164 }
8165 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8166 /* ./syntax//typing.nit:1382 */
8167 if (UNTAG_Bool(REGB1)) {
8168 fprintf(stderr, "Reciever is null");
8169 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1382);
8170 nit_exit(1);
8171 }
8172 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8173 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
8174 if (UNTAG_Bool(REGB1)) {
8175 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8176 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
8177 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
8178 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8179 /* ./syntax//typing.nit:1383 */
8180 if (UNTAG_Bool(REGB1)) {
8181 REGB1 = TAG_Int(3);
8182 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
8183 /* ./syntax//typing.nit:1384 */
8184 if (!once_value_2) {
8185 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
8186 REGB1 = TAG_Int(33);
8187 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8188 once_value_2 = fra.me.REG[5];
8189 register_static_object(&once_value_2);
8190 } else fra.me.REG[5] = once_value_2;
8191 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8192 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8193 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8194 if (!once_value_3) {
8195 fra.me.REG[5] = BOX_NativeString(" in a method.");
8196 REGB1 = TAG_Int(13);
8197 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8198 once_value_3 = fra.me.REG[5];
8199 register_static_object(&once_value_3);
8200 } else fra.me.REG[5] = once_value_3;
8201 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8202 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8203 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
8204 } else {
8205 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8206 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
8207 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8208 /* ./syntax//typing.nit:1385 */
8209 if (UNTAG_Bool(REGB1)) {
8210 REGB1 = TAG_Int(3);
8211 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
8212 /* ./syntax//typing.nit:1386 */
8213 if (!once_value_4) {
8214 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
8215 REGB1 = TAG_Int(19);
8216 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8217 once_value_4 = fra.me.REG[5];
8218 register_static_object(&once_value_4);
8219 } else fra.me.REG[5] = once_value_4;
8220 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8221 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8222 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8223 if (!once_value_5) {
8224 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
8225 REGB1 = TAG_Int(26);
8226 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8227 once_value_5 = fra.me.REG[5];
8228 register_static_object(&once_value_5);
8229 } else fra.me.REG[5] = once_value_5;
8230 array___Array___add(fra.me.REG[3], fra.me.REG[5]);
8231 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8232 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
8233 }
8234 }
8235 }
8236 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8237 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
8238 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8239 /* ./syntax//typing.nit:1389 */
8240 if (UNTAG_Bool(REGB1)) {
8241 fprintf(stderr, "Reciever is null");
8242 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1389);
8243 nit_exit(1);
8244 }
8245 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8246 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
8247 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
8248 if (UNTAG_Bool(REGB1)) {
8249 } else {
8250 fprintf(stderr, "Cast failed");
8251 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1389);
8252 nit_exit(1);
8253 }
8254 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8255 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
8256 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8257 /* ./syntax//typing.nit:1390 */
8258 if (UNTAG_Bool(REGB1)) {
8259 fra.me.REG[5] = CALL_static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
8260 fra.me.REG[3] = fra.me.REG[5];
8261 }
8262 fra.me.REG[3] = CALL_typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
8263 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8264 /* ./syntax//typing.nit:1393 */
8265 if (UNTAG_Bool(REGB1)) {
8266 } else {
8267 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8268 if (UNTAG_Bool(REGB0)) {
8269 REGB0 = TAG_Bool(false);
8270 REGB1 = REGB0;
8271 } else {
8272 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8273 REGB1 = REGB0;
8274 }
8275 }
8276 if (UNTAG_Bool(REGB1)) {
8277 goto label1;
8278 }
8279 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
8280 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
8281 /* ./syntax//typing.nit:1394 */
8282 CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3], fra.me.REG[5]);
8283 /* ./syntax//typing.nit:1396 */
8284 ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]) = fra.me.REG[4];
8285 fra.me.REG[5] = CALL_array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
8286 fra.me.REG[2] = fra.me.REG[5];
8287 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
8288 /* ./syntax//typing.nit:1398 */
8289 array___Array___add(fra.me.REG[2], fra.me.REG[5]);
8290 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8291 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
8292 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8293 REGB1 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
8294 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8295 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
8296 REGB2 = TAG_Int(3);
8297 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB2);
8298 /* ./syntax//typing.nit:1400 */
8299 if (!once_value_6) {
8300 fra.me.REG[6] = BOX_NativeString("");
8301 REGB2 = TAG_Int(0);
8302 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
8303 once_value_6 = fra.me.REG[6];
8304 register_static_object(&once_value_6);
8305 } else fra.me.REG[6] = once_value_6;
8306 array___Array___add(fra.me.REG[3], fra.me.REG[6]);
8307 fra.me.REG[6] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
8308 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
8309 array___Array___add(fra.me.REG[3], fra.me.REG[6]);
8310 if (!once_value_7) {
8311 fra.me.REG[6] = BOX_NativeString("=");
8312 REGB2 = TAG_Int(1);
8313 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
8314 once_value_7 = fra.me.REG[6];
8315 register_static_object(&once_value_7);
8316 } else fra.me.REG[6] = once_value_7;
8317 array___Array___add(fra.me.REG[3], fra.me.REG[6]);
8318 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8319 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
8320 CALL_typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], REGB1, REGB0, fra.me.REG[3], fra.me.REG[2], NIT_NULL);
8321 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8322 /* ./syntax//typing.nit:1401 */
8323 if (UNTAG_Bool(REGB0)) {
8324 fprintf(stderr, "Reciever is null");
8325 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1401);
8326 nit_exit(1);
8327 }
8328 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8329 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
8330 if (UNTAG_Bool(REGB0)) {
8331 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8332 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
8333 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
8334 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8335 /* ./syntax//typing.nit:1402 */
8336 if (UNTAG_Bool(REGB0)) {
8337 REGB0 = TAG_Int(3);
8338 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
8339 /* ./syntax//typing.nit:1403 */
8340 if (!once_value_8) {
8341 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
8342 REGB0 = TAG_Int(33);
8343 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8344 once_value_8 = fra.me.REG[3];
8345 register_static_object(&once_value_8);
8346 } else fra.me.REG[3] = once_value_8;
8347 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
8348 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8349 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
8350 if (!once_value_9) {
8351 fra.me.REG[3] = BOX_NativeString(" in a method.");
8352 REGB0 = TAG_Int(13);
8353 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8354 once_value_9 = fra.me.REG[3];
8355 register_static_object(&once_value_9);
8356 } else fra.me.REG[3] = once_value_9;
8357 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
8358 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8359 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
8360 } else {
8361 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8362 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[2])(fra.me.REG[2]);
8363 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8364 /* ./syntax//typing.nit:1404 */
8365 if (UNTAG_Bool(REGB0)) {
8366 REGB0 = TAG_Int(3);
8367 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
8368 /* ./syntax//typing.nit:1405 */
8369 if (!once_value_10) {
8370 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
8371 REGB0 = TAG_Int(19);
8372 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8373 once_value_10 = fra.me.REG[3];
8374 register_static_object(&once_value_10);
8375 } else fra.me.REG[3] = once_value_10;
8376 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
8377 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8378 array___Array___add(fra.me.REG[2], fra.me.REG[4]);
8379 if (!once_value_11) {
8380 fra.me.REG[4] = BOX_NativeString(" is not invoken on 'self'.");
8381 REGB0 = TAG_Int(26);
8382 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
8383 once_value_11 = fra.me.REG[4];
8384 register_static_object(&once_value_11);
8385 } else fra.me.REG[4] = once_value_11;
8386 array___Array___add(fra.me.REG[2], fra.me.REG[4]);
8387 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8388 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
8389 }
8390 }
8391 }
8392 REGB0 = TAG_Bool(true);
8393 /* ./syntax//typing.nit:1409 */
8394 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
8395 label1: while(0);
8396 stack_frame_head = fra.me.prev;
8397 return;
8398 }
8399 val_t typing___ABinopExpr___compute_raw_arguments(val_t p0){
8400 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8401 val_t REGB0;
8402 val_t tmp;
8403 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8404 fra.me.file = LOCATE_typing;
8405 fra.me.line = 1414;
8406 fra.me.meth = LOCATE_typing___ABinopExpr___compute_raw_arguments;
8407 fra.me.has_broke = 0;
8408 fra.me.REG_size = 2;
8409 fra.me.REG[0] = NIT_NULL;
8410 fra.me.REG[1] = NIT_NULL;
8411 fra.me.REG[0] = p0;
8412 REGB0 = TAG_Int(1);
8413 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
8414 fra.me.REG[0] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
8415 /* ./syntax//typing.nit:1414 */
8416 array___Array___add(fra.me.REG[1], fra.me.REG[0]);
8417 goto label1;
8418 label1: while(0);
8419 stack_frame_head = fra.me.prev;
8420 return fra.me.REG[1];
8421 }
8422 void typing___AEqExpr___after_typing(val_t p0, val_t p1){
8423 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8424 val_t REGB0;
8425 val_t REGB1;
8426 val_t tmp;
8427 static val_t once_value_2; /* Once value */
8428 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8429 fra.me.file = LOCATE_typing;
8430 fra.me.line = 1418;
8431 fra.me.meth = LOCATE_typing___AEqExpr___after_typing;
8432 fra.me.has_broke = 0;
8433 fra.me.REG_size = 4;
8434 fra.me.REG[0] = NIT_NULL;
8435 fra.me.REG[1] = NIT_NULL;
8436 fra.me.REG[2] = NIT_NULL;
8437 fra.me.REG[3] = NIT_NULL;
8438 fra.me.REG[0] = p0;
8439 fra.me.REG[1] = p1;
8440 fra.me.REG[2] = fra.me.REG[0];
8441 fra.me.REG[3] = fra.me.REG[1];
8442 /* ./syntax//typing.nit:1420 */
8443 CALL_SUPER_typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8444 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8445 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
8446 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8447 /* ./syntax//typing.nit:1421 */
8448 if (UNTAG_Bool(REGB0)) {
8449 REGB0 = TAG_Bool(true);
8450 } else {
8451 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8452 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
8453 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8454 REGB0 = REGB1;
8455 }
8456 if (UNTAG_Bool(REGB0)) {
8457 goto label1;
8458 }
8459 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8460 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8461 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8462 /* ./syntax//typing.nit:1422 */
8463 if (UNTAG_Bool(REGB0)) {
8464 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8465 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8466 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
8467 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8468 } else {
8469 REGB1 = TAG_Bool(false);
8470 REGB0 = REGB1;
8471 }
8472 if (UNTAG_Bool(REGB0)) {
8473 REGB0 = TAG_Bool(true);
8474 } else {
8475 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8476 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8477 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8478 REGB0 = REGB1;
8479 /* ./syntax//typing.nit:1422 */
8480 }
8481 if (UNTAG_Bool(REGB0)) {
8482 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8483 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8484 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
8485 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8486 /* ./syntax//typing.nit:1422 */
8487 } else {
8488 REGB1 = TAG_Bool(false);
8489 REGB0 = REGB1;
8490 }
8491 if (UNTAG_Bool(REGB0)) {
8492 /* ./syntax//typing.nit:1424 */
8493 if (!once_value_2) {
8494 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
8495 REGB0 = TAG_Int(59);
8496 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
8497 once_value_2 = fra.me.REG[1];
8498 register_static_object(&once_value_2);
8499 } else fra.me.REG[1] = once_value_2;
8500 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
8501 }
8502 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8503 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8504 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8505 /* ./syntax//typing.nit:1427 */
8506 if (UNTAG_Bool(REGB0)) {
8507 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8508 /* ./syntax//typing.nit:1428 */
8509 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
8510 } else {
8511 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8512 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8513 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8514 /* ./syntax//typing.nit:1429 */
8515 if (UNTAG_Bool(REGB0)) {
8516 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8517 /* ./syntax//typing.nit:1430 */
8518 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
8519 }
8520 }
8521 label1: while(0);
8522 stack_frame_head = fra.me.prev;
8523 return;
8524 }
8525 val_t typing___AEqExpr___name(val_t p0){
8526 struct {struct stack_frame_t me;} fra;
8527 val_t REGB0;
8528 val_t tmp;
8529 static val_t once_value_1; /* Once value */
8530 static val_t once_value_2; /* Once value */
8531 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8532 fra.me.file = LOCATE_typing;
8533 fra.me.line = 1417;
8534 fra.me.meth = LOCATE_typing___AEqExpr___name;
8535 fra.me.has_broke = 0;
8536 fra.me.REG_size = 1;
8537 fra.me.REG[0] = NIT_NULL;
8538 fra.me.REG[0] = p0;
8539 /* ./syntax//typing.nit:1417 */
8540 if (!once_value_1) {
8541 if (!once_value_2) {
8542 fra.me.REG[0] = BOX_NativeString("==");
8543 REGB0 = TAG_Int(2);
8544 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8545 once_value_2 = fra.me.REG[0];
8546 register_static_object(&once_value_2);
8547 } else fra.me.REG[0] = once_value_2;
8548 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8549 once_value_1 = fra.me.REG[0];
8550 register_static_object(&once_value_1);
8551 } else fra.me.REG[0] = once_value_1;
8552 goto label3;
8553 label3: while(0);
8554 stack_frame_head = fra.me.prev;
8555 return fra.me.REG[0];
8556 }
8557 void typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
8558 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8559 val_t REGB0;
8560 val_t REGB1;
8561 val_t tmp;
8562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8563 fra.me.file = LOCATE_typing;
8564 fra.me.line = 1434;
8565 fra.me.meth = LOCATE_typing___AEqExpr___try_to_isa;
8566 fra.me.has_broke = 0;
8567 fra.me.REG_size = 4;
8568 fra.me.REG[0] = NIT_NULL;
8569 fra.me.REG[1] = NIT_NULL;
8570 fra.me.REG[2] = NIT_NULL;
8571 fra.me.REG[3] = NIT_NULL;
8572 fra.me.REG[0] = p0;
8573 fra.me.REG[1] = p1;
8574 fra.me.REG[2] = p2;
8575 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
8576 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8577 /* ./syntax//typing.nit:1437 */
8578 if (UNTAG_Bool(REGB0)) {
8579 } else {
8580 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8581 if (UNTAG_Bool(REGB1)) {
8582 REGB1 = TAG_Bool(false);
8583 REGB0 = REGB1;
8584 } else {
8585 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8586 REGB0 = REGB1;
8587 }
8588 }
8589 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8590 if (UNTAG_Bool(REGB0)) {
8591 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
8592 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
8593 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
8594 fra.me.REG[2] = CALL_control_flow___VariableContext___sub_with(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
8595 /* ./syntax//typing.nit:1438 */
8596 ATTR_typing___AExpr____if_false_variable_ctx(fra.me.REG[0]) = fra.me.REG[2];
8597 }
8598 stack_frame_head = fra.me.prev;
8599 return;
8600 }
8601 void typing___ANeExpr___after_typing(val_t p0, val_t p1){
8602 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8603 val_t REGB0;
8604 val_t REGB1;
8605 val_t tmp;
8606 static val_t once_value_2; /* Once value */
8607 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8608 fra.me.file = LOCATE_typing;
8609 fra.me.line = 1444;
8610 fra.me.meth = LOCATE_typing___ANeExpr___after_typing;
8611 fra.me.has_broke = 0;
8612 fra.me.REG_size = 4;
8613 fra.me.REG[0] = NIT_NULL;
8614 fra.me.REG[1] = NIT_NULL;
8615 fra.me.REG[2] = NIT_NULL;
8616 fra.me.REG[3] = NIT_NULL;
8617 fra.me.REG[0] = p0;
8618 fra.me.REG[1] = p1;
8619 fra.me.REG[2] = fra.me.REG[0];
8620 fra.me.REG[3] = fra.me.REG[1];
8621 /* ./syntax//typing.nit:1446 */
8622 CALL_SUPER_typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8623 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8624 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
8625 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8626 /* ./syntax//typing.nit:1447 */
8627 if (UNTAG_Bool(REGB0)) {
8628 REGB0 = TAG_Bool(true);
8629 } else {
8630 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8631 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
8632 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8633 REGB0 = REGB1;
8634 }
8635 if (UNTAG_Bool(REGB0)) {
8636 goto label1;
8637 }
8638 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8639 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8640 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8641 /* ./syntax//typing.nit:1448 */
8642 if (UNTAG_Bool(REGB0)) {
8643 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8644 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8645 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
8646 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8647 } else {
8648 REGB1 = TAG_Bool(false);
8649 REGB0 = REGB1;
8650 }
8651 if (UNTAG_Bool(REGB0)) {
8652 REGB0 = TAG_Bool(true);
8653 } else {
8654 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8655 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8656 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8657 REGB0 = REGB1;
8658 /* ./syntax//typing.nit:1448 */
8659 }
8660 if (UNTAG_Bool(REGB0)) {
8661 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8662 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8663 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
8664 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8665 /* ./syntax//typing.nit:1448 */
8666 } else {
8667 REGB1 = TAG_Bool(false);
8668 REGB0 = REGB1;
8669 }
8670 if (UNTAG_Bool(REGB0)) {
8671 /* ./syntax//typing.nit:1450 */
8672 if (!once_value_2) {
8673 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
8674 REGB0 = TAG_Int(59);
8675 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
8676 once_value_2 = fra.me.REG[1];
8677 register_static_object(&once_value_2);
8678 } else fra.me.REG[1] = once_value_2;
8679 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
8680 }
8681 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8682 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8683 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8684 /* ./syntax//typing.nit:1453 */
8685 if (UNTAG_Bool(REGB0)) {
8686 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8687 /* ./syntax//typing.nit:1454 */
8688 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
8689 } else {
8690 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
8691 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
8692 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8693 /* ./syntax//typing.nit:1455 */
8694 if (UNTAG_Bool(REGB0)) {
8695 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
8696 /* ./syntax//typing.nit:1456 */
8697 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
8698 }
8699 }
8700 label1: while(0);
8701 stack_frame_head = fra.me.prev;
8702 return;
8703 }
8704 val_t typing___ANeExpr___name(val_t p0){
8705 struct {struct stack_frame_t me;} fra;
8706 val_t REGB0;
8707 val_t tmp;
8708 static val_t once_value_1; /* Once value */
8709 static val_t once_value_2; /* Once value */
8710 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8711 fra.me.file = LOCATE_typing;
8712 fra.me.line = 1443;
8713 fra.me.meth = LOCATE_typing___ANeExpr___name;
8714 fra.me.has_broke = 0;
8715 fra.me.REG_size = 1;
8716 fra.me.REG[0] = NIT_NULL;
8717 fra.me.REG[0] = p0;
8718 /* ./syntax//typing.nit:1443 */
8719 if (!once_value_1) {
8720 if (!once_value_2) {
8721 fra.me.REG[0] = BOX_NativeString("!=");
8722 REGB0 = TAG_Int(2);
8723 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8724 once_value_2 = fra.me.REG[0];
8725 register_static_object(&once_value_2);
8726 } else fra.me.REG[0] = once_value_2;
8727 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8728 once_value_1 = fra.me.REG[0];
8729 register_static_object(&once_value_1);
8730 } else fra.me.REG[0] = once_value_1;
8731 goto label3;
8732 label3: while(0);
8733 stack_frame_head = fra.me.prev;
8734 return fra.me.REG[0];
8735 }
8736 void typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
8737 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8738 val_t REGB0;
8739 val_t REGB1;
8740 val_t tmp;
8741 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8742 fra.me.file = LOCATE_typing;
8743 fra.me.line = 1460;
8744 fra.me.meth = LOCATE_typing___ANeExpr___try_to_isa;
8745 fra.me.has_broke = 0;
8746 fra.me.REG_size = 4;
8747 fra.me.REG[0] = NIT_NULL;
8748 fra.me.REG[1] = NIT_NULL;
8749 fra.me.REG[2] = NIT_NULL;
8750 fra.me.REG[3] = NIT_NULL;
8751 fra.me.REG[0] = p0;
8752 fra.me.REG[1] = p1;
8753 fra.me.REG[2] = p2;
8754 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
8755 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8756 /* ./syntax//typing.nit:1463 */
8757 if (UNTAG_Bool(REGB0)) {
8758 } else {
8759 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8760 if (UNTAG_Bool(REGB1)) {
8761 REGB1 = TAG_Bool(false);
8762 REGB0 = REGB1;
8763 } else {
8764 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8765 REGB0 = REGB1;
8766 }
8767 }
8768 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8769 if (UNTAG_Bool(REGB0)) {
8770 fra.me.REG[1] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
8771 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
8772 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
8773 fra.me.REG[2] = CALL_control_flow___VariableContext___sub_with(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
8774 /* ./syntax//typing.nit:1464 */
8775 ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]) = fra.me.REG[2];
8776 }
8777 stack_frame_head = fra.me.prev;
8778 return;
8779 }
8780 val_t typing___ALtExpr___name(val_t p0){
8781 struct {struct stack_frame_t me;} fra;
8782 val_t REGB0;
8783 val_t tmp;
8784 static val_t once_value_1; /* Once value */
8785 static val_t once_value_2; /* Once value */
8786 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8787 fra.me.file = LOCATE_typing;
8788 fra.me.line = 1469;
8789 fra.me.meth = LOCATE_typing___ALtExpr___name;
8790 fra.me.has_broke = 0;
8791 fra.me.REG_size = 1;
8792 fra.me.REG[0] = NIT_NULL;
8793 fra.me.REG[0] = p0;
8794 /* ./syntax//typing.nit:1469 */
8795 if (!once_value_1) {
8796 if (!once_value_2) {
8797 fra.me.REG[0] = BOX_NativeString("<");
8798 REGB0 = TAG_Int(1);
8799 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8800 once_value_2 = fra.me.REG[0];
8801 register_static_object(&once_value_2);
8802 } else fra.me.REG[0] = once_value_2;
8803 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8804 once_value_1 = fra.me.REG[0];
8805 register_static_object(&once_value_1);
8806 } else fra.me.REG[0] = once_value_1;
8807 goto label3;
8808 label3: while(0);
8809 stack_frame_head = fra.me.prev;
8810 return fra.me.REG[0];
8811 }
8812 val_t typing___ALeExpr___name(val_t p0){
8813 struct {struct stack_frame_t me;} fra;
8814 val_t REGB0;
8815 val_t tmp;
8816 static val_t once_value_1; /* Once value */
8817 static val_t once_value_2; /* Once value */
8818 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8819 fra.me.file = LOCATE_typing;
8820 fra.me.line = 1472;
8821 fra.me.meth = LOCATE_typing___ALeExpr___name;
8822 fra.me.has_broke = 0;
8823 fra.me.REG_size = 1;
8824 fra.me.REG[0] = NIT_NULL;
8825 fra.me.REG[0] = p0;
8826 /* ./syntax//typing.nit:1472 */
8827 if (!once_value_1) {
8828 if (!once_value_2) {
8829 fra.me.REG[0] = BOX_NativeString("<=");
8830 REGB0 = TAG_Int(2);
8831 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8832 once_value_2 = fra.me.REG[0];
8833 register_static_object(&once_value_2);
8834 } else fra.me.REG[0] = once_value_2;
8835 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8836 once_value_1 = fra.me.REG[0];
8837 register_static_object(&once_value_1);
8838 } else fra.me.REG[0] = once_value_1;
8839 goto label3;
8840 label3: while(0);
8841 stack_frame_head = fra.me.prev;
8842 return fra.me.REG[0];
8843 }
8844 val_t typing___AGtExpr___name(val_t p0){
8845 struct {struct stack_frame_t me;} fra;
8846 val_t REGB0;
8847 val_t tmp;
8848 static val_t once_value_1; /* Once value */
8849 static val_t once_value_2; /* Once value */
8850 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8851 fra.me.file = LOCATE_typing;
8852 fra.me.line = 1475;
8853 fra.me.meth = LOCATE_typing___AGtExpr___name;
8854 fra.me.has_broke = 0;
8855 fra.me.REG_size = 1;
8856 fra.me.REG[0] = NIT_NULL;
8857 fra.me.REG[0] = p0;
8858 /* ./syntax//typing.nit:1475 */
8859 if (!once_value_1) {
8860 if (!once_value_2) {
8861 fra.me.REG[0] = BOX_NativeString(">");
8862 REGB0 = TAG_Int(1);
8863 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8864 once_value_2 = fra.me.REG[0];
8865 register_static_object(&once_value_2);
8866 } else fra.me.REG[0] = once_value_2;
8867 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8868 once_value_1 = fra.me.REG[0];
8869 register_static_object(&once_value_1);
8870 } else fra.me.REG[0] = once_value_1;
8871 goto label3;
8872 label3: while(0);
8873 stack_frame_head = fra.me.prev;
8874 return fra.me.REG[0];
8875 }
8876 val_t typing___AGeExpr___name(val_t p0){
8877 struct {struct stack_frame_t me;} fra;
8878 val_t REGB0;
8879 val_t tmp;
8880 static val_t once_value_1; /* Once value */
8881 static val_t once_value_2; /* Once value */
8882 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8883 fra.me.file = LOCATE_typing;
8884 fra.me.line = 1478;
8885 fra.me.meth = LOCATE_typing___AGeExpr___name;
8886 fra.me.has_broke = 0;
8887 fra.me.REG_size = 1;
8888 fra.me.REG[0] = NIT_NULL;
8889 fra.me.REG[0] = p0;
8890 /* ./syntax//typing.nit:1478 */
8891 if (!once_value_1) {
8892 if (!once_value_2) {
8893 fra.me.REG[0] = BOX_NativeString(">=");
8894 REGB0 = TAG_Int(2);
8895 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8896 once_value_2 = fra.me.REG[0];
8897 register_static_object(&once_value_2);
8898 } else fra.me.REG[0] = once_value_2;
8899 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8900 once_value_1 = fra.me.REG[0];
8901 register_static_object(&once_value_1);
8902 } else fra.me.REG[0] = once_value_1;
8903 goto label3;
8904 label3: while(0);
8905 stack_frame_head = fra.me.prev;
8906 return fra.me.REG[0];
8907 }
8908 val_t typing___APlusExpr___name(val_t p0){
8909 struct {struct stack_frame_t me;} fra;
8910 val_t REGB0;
8911 val_t tmp;
8912 static val_t once_value_1; /* Once value */
8913 static val_t once_value_2; /* Once value */
8914 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8915 fra.me.file = LOCATE_typing;
8916 fra.me.line = 1481;
8917 fra.me.meth = LOCATE_typing___APlusExpr___name;
8918 fra.me.has_broke = 0;
8919 fra.me.REG_size = 1;
8920 fra.me.REG[0] = NIT_NULL;
8921 fra.me.REG[0] = p0;
8922 /* ./syntax//typing.nit:1481 */
8923 if (!once_value_1) {
8924 if (!once_value_2) {
8925 fra.me.REG[0] = BOX_NativeString("+");
8926 REGB0 = TAG_Int(1);
8927 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8928 once_value_2 = fra.me.REG[0];
8929 register_static_object(&once_value_2);
8930 } else fra.me.REG[0] = once_value_2;
8931 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8932 once_value_1 = fra.me.REG[0];
8933 register_static_object(&once_value_1);
8934 } else fra.me.REG[0] = once_value_1;
8935 goto label3;
8936 label3: while(0);
8937 stack_frame_head = fra.me.prev;
8938 return fra.me.REG[0];
8939 }
8940 val_t typing___AMinusExpr___name(val_t p0){
8941 struct {struct stack_frame_t me;} fra;
8942 val_t REGB0;
8943 val_t tmp;
8944 static val_t once_value_1; /* Once value */
8945 static val_t once_value_2; /* Once value */
8946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8947 fra.me.file = LOCATE_typing;
8948 fra.me.line = 1484;
8949 fra.me.meth = LOCATE_typing___AMinusExpr___name;
8950 fra.me.has_broke = 0;
8951 fra.me.REG_size = 1;
8952 fra.me.REG[0] = NIT_NULL;
8953 fra.me.REG[0] = p0;
8954 /* ./syntax//typing.nit:1484 */
8955 if (!once_value_1) {
8956 if (!once_value_2) {
8957 fra.me.REG[0] = BOX_NativeString("-");
8958 REGB0 = TAG_Int(1);
8959 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8960 once_value_2 = fra.me.REG[0];
8961 register_static_object(&once_value_2);
8962 } else fra.me.REG[0] = once_value_2;
8963 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8964 once_value_1 = fra.me.REG[0];
8965 register_static_object(&once_value_1);
8966 } else fra.me.REG[0] = once_value_1;
8967 goto label3;
8968 label3: while(0);
8969 stack_frame_head = fra.me.prev;
8970 return fra.me.REG[0];
8971 }
8972 val_t typing___AStarshipExpr___name(val_t p0){
8973 struct {struct stack_frame_t me;} fra;
8974 val_t REGB0;
8975 val_t tmp;
8976 static val_t once_value_1; /* Once value */
8977 static val_t once_value_2; /* Once value */
8978 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8979 fra.me.file = LOCATE_typing;
8980 fra.me.line = 1487;
8981 fra.me.meth = LOCATE_typing___AStarshipExpr___name;
8982 fra.me.has_broke = 0;
8983 fra.me.REG_size = 1;
8984 fra.me.REG[0] = NIT_NULL;
8985 fra.me.REG[0] = p0;
8986 /* ./syntax//typing.nit:1487 */
8987 if (!once_value_1) {
8988 if (!once_value_2) {
8989 fra.me.REG[0] = BOX_NativeString("<=>");
8990 REGB0 = TAG_Int(3);
8991 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
8992 once_value_2 = fra.me.REG[0];
8993 register_static_object(&once_value_2);
8994 } else fra.me.REG[0] = once_value_2;
8995 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
8996 once_value_1 = fra.me.REG[0];
8997 register_static_object(&once_value_1);
8998 } else fra.me.REG[0] = once_value_1;
8999 goto label3;
9000 label3: while(0);
9001 stack_frame_head = fra.me.prev;
9002 return fra.me.REG[0];
9003 }
9004 val_t typing___AStarExpr___name(val_t p0){
9005 struct {struct stack_frame_t me;} fra;
9006 val_t REGB0;
9007 val_t tmp;
9008 static val_t once_value_1; /* Once value */
9009 static val_t once_value_2; /* Once value */
9010 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9011 fra.me.file = LOCATE_typing;
9012 fra.me.line = 1490;
9013 fra.me.meth = LOCATE_typing___AStarExpr___name;
9014 fra.me.has_broke = 0;
9015 fra.me.REG_size = 1;
9016 fra.me.REG[0] = NIT_NULL;
9017 fra.me.REG[0] = p0;
9018 /* ./syntax//typing.nit:1490 */
9019 if (!once_value_1) {
9020 if (!once_value_2) {
9021 fra.me.REG[0] = BOX_NativeString("*");
9022 REGB0 = TAG_Int(1);
9023 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9024 once_value_2 = fra.me.REG[0];
9025 register_static_object(&once_value_2);
9026 } else fra.me.REG[0] = once_value_2;
9027 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9028 once_value_1 = fra.me.REG[0];
9029 register_static_object(&once_value_1);
9030 } else fra.me.REG[0] = once_value_1;
9031 goto label3;
9032 label3: while(0);
9033 stack_frame_head = fra.me.prev;
9034 return fra.me.REG[0];
9035 }
9036 val_t typing___ASlashExpr___name(val_t p0){
9037 struct {struct stack_frame_t me;} fra;
9038 val_t REGB0;
9039 val_t tmp;
9040 static val_t once_value_1; /* Once value */
9041 static val_t once_value_2; /* Once value */
9042 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9043 fra.me.file = LOCATE_typing;
9044 fra.me.line = 1493;
9045 fra.me.meth = LOCATE_typing___ASlashExpr___name;
9046 fra.me.has_broke = 0;
9047 fra.me.REG_size = 1;
9048 fra.me.REG[0] = NIT_NULL;
9049 fra.me.REG[0] = p0;
9050 /* ./syntax//typing.nit:1493 */
9051 if (!once_value_1) {
9052 if (!once_value_2) {
9053 fra.me.REG[0] = BOX_NativeString("/");
9054 REGB0 = TAG_Int(1);
9055 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9056 once_value_2 = fra.me.REG[0];
9057 register_static_object(&once_value_2);
9058 } else fra.me.REG[0] = once_value_2;
9059 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9060 once_value_1 = fra.me.REG[0];
9061 register_static_object(&once_value_1);
9062 } else fra.me.REG[0] = once_value_1;
9063 goto label3;
9064 label3: while(0);
9065 stack_frame_head = fra.me.prev;
9066 return fra.me.REG[0];
9067 }
9068 val_t typing___APercentExpr___name(val_t p0){
9069 struct {struct stack_frame_t me;} fra;
9070 val_t REGB0;
9071 val_t tmp;
9072 static val_t once_value_1; /* Once value */
9073 static val_t once_value_2; /* Once value */
9074 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9075 fra.me.file = LOCATE_typing;
9076 fra.me.line = 1496;
9077 fra.me.meth = LOCATE_typing___APercentExpr___name;
9078 fra.me.has_broke = 0;
9079 fra.me.REG_size = 1;
9080 fra.me.REG[0] = NIT_NULL;
9081 fra.me.REG[0] = p0;
9082 /* ./syntax//typing.nit:1496 */
9083 if (!once_value_1) {
9084 if (!once_value_2) {
9085 fra.me.REG[0] = BOX_NativeString("%");
9086 REGB0 = TAG_Int(1);
9087 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9088 once_value_2 = fra.me.REG[0];
9089 register_static_object(&once_value_2);
9090 } else fra.me.REG[0] = once_value_2;
9091 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9092 once_value_1 = fra.me.REG[0];
9093 register_static_object(&once_value_1);
9094 } else fra.me.REG[0] = once_value_1;
9095 goto label3;
9096 label3: while(0);
9097 stack_frame_head = fra.me.prev;
9098 return fra.me.REG[0];
9099 }
9100 val_t typing___AUminusExpr___compute_raw_arguments(val_t p0){
9101 struct {struct stack_frame_t me;} fra;
9102 val_t tmp;
9103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9104 fra.me.file = LOCATE_typing;
9105 fra.me.line = 1501;
9106 fra.me.meth = LOCATE_typing___AUminusExpr___compute_raw_arguments;
9107 fra.me.has_broke = 0;
9108 fra.me.REG_size = 1;
9109 fra.me.REG[0] = NIT_NULL;
9110 fra.me.REG[0] = p0;
9111 fra.me.REG[0] = NIT_NULL;
9112 /* ./syntax//typing.nit:1501 */
9113 goto label1;
9114 label1: while(0);
9115 stack_frame_head = fra.me.prev;
9116 return fra.me.REG[0];
9117 }
9118 val_t typing___AUminusExpr___name(val_t p0){
9119 struct {struct stack_frame_t me;} fra;
9120 val_t REGB0;
9121 val_t tmp;
9122 static val_t once_value_1; /* Once value */
9123 static val_t once_value_2; /* Once value */
9124 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9125 fra.me.file = LOCATE_typing;
9126 fra.me.line = 1500;
9127 fra.me.meth = LOCATE_typing___AUminusExpr___name;
9128 fra.me.has_broke = 0;
9129 fra.me.REG_size = 1;
9130 fra.me.REG[0] = NIT_NULL;
9131 fra.me.REG[0] = p0;
9132 /* ./syntax//typing.nit:1500 */
9133 if (!once_value_1) {
9134 if (!once_value_2) {
9135 fra.me.REG[0] = BOX_NativeString("unary -");
9136 REGB0 = TAG_Int(7);
9137 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9138 once_value_2 = fra.me.REG[0];
9139 register_static_object(&once_value_2);
9140 } else fra.me.REG[0] = once_value_2;
9141 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9142 once_value_1 = fra.me.REG[0];
9143 register_static_object(&once_value_1);
9144 } else fra.me.REG[0] = once_value_1;
9145 goto label3;
9146 label3: while(0);
9147 stack_frame_head = fra.me.prev;
9148 return fra.me.REG[0];
9149 }
9150 val_t typing___ACallFormExpr___closure_defs(val_t p0){
9151 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9152 val_t REGB0;
9153 val_t tmp;
9154 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9155 fra.me.file = LOCATE_typing;
9156 fra.me.line = 1532;
9157 fra.me.meth = LOCATE_typing___ACallFormExpr___closure_defs;
9158 fra.me.has_broke = 0;
9159 fra.me.REG_size = 2;
9160 fra.me.REG[0] = NIT_NULL;
9161 fra.me.REG[1] = NIT_NULL;
9162 fra.me.REG[0] = p0;
9163 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9164 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
9165 /* ./syntax//typing.nit:1534 */
9166 if (UNTAG_Bool(REGB0)) {
9167 fra.me.REG[1] = NIT_NULL;
9168 /* ./syntax//typing.nit:1535 */
9169 goto label1;
9170 } else {
9171 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9172 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9173 fra.me.REG[1] = fra.me.REG[0];
9174 /* ./syntax//typing.nit:1537 */
9175 goto label1;
9176 }
9177 label1: while(0);
9178 stack_frame_head = fra.me.prev;
9179 return fra.me.REG[1];
9180 }
9181 void typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
9182 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
9183 val_t REGB0;
9184 val_t REGB1;
9185 val_t tmp;
9186 static val_t once_value_1; /* Once value */
9187 static val_t once_value_2; /* Once value */
9188 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9189 fra.me.file = LOCATE_typing;
9190 fra.me.line = 1505;
9191 fra.me.meth = LOCATE_typing___ACallFormExpr___after_typing;
9192 fra.me.has_broke = 0;
9193 fra.me.REG_size = 9;
9194 fra.me.REG[0] = NIT_NULL;
9195 fra.me.REG[1] = NIT_NULL;
9196 fra.me.REG[2] = NIT_NULL;
9197 fra.me.REG[3] = NIT_NULL;
9198 fra.me.REG[4] = NIT_NULL;
9199 fra.me.REG[5] = NIT_NULL;
9200 fra.me.REG[6] = NIT_NULL;
9201 fra.me.REG[7] = NIT_NULL;
9202 fra.me.REG[8] = NIT_NULL;
9203 fra.me.REG[0] = p0;
9204 fra.me.REG[1] = p1;
9205 fra.me.REG[2] = fra.me.REG[0];
9206 fra.me.REG[3] = fra.me.REG[1];
9207 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9208 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
9209 /* ./syntax//typing.nit:1507 */
9210 if (UNTAG_Bool(REGB0)) {
9211 fra.me.REG[4] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
9212 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9213 fra.me.REG[5] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[3])(fra.me.REG[3]);
9214 fra.me.REG[5] = CALL_control_flow___VariableContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9215 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9216 /* ./syntax//typing.nit:1510 */
9217 if (UNTAG_Bool(REGB0)) {
9218 } else {
9219 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9220 if (UNTAG_Bool(REGB1)) {
9221 REGB1 = TAG_Bool(false);
9222 REGB0 = REGB1;
9223 } else {
9224 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9225 REGB0 = REGB1;
9226 }
9227 }
9228 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9229 if (UNTAG_Bool(REGB0)) {
9230 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_ClosureVariable, ID_ClosureVariable)) /*cast ClosureVariable*/;
9231 /* ./syntax//typing.nit:1512 */
9232 if (UNTAG_Bool(REGB0)) {
9233 fra.me.REG[6] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
9234 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
9235 fra.me.REG[8] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
9236 fra.me.REG[8] = NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
9237 /* ./syntax//typing.nit:1514 */
9238 ATTR_typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
9239 } else {
9240 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
9241 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
9242 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9243 /* ./syntax//typing.nit:1516 */
9244 if (UNTAG_Bool(REGB0)) {
9245 REGB0 = TAG_Int(3);
9246 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
9247 /* ./syntax//typing.nit:1517 */
9248 if (!once_value_1) {
9249 fra.me.REG[6] = BOX_NativeString("Error: ");
9250 REGB0 = TAG_Int(7);
9251 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
9252 once_value_1 = fra.me.REG[6];
9253 register_static_object(&once_value_1);
9254 } else fra.me.REG[6] = once_value_1;
9255 array___Array___add(fra.me.REG[7], fra.me.REG[6]);
9256 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9257 array___Array___add(fra.me.REG[7], fra.me.REG[4]);
9258 if (!once_value_2) {
9259 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
9260 REGB0 = TAG_Int(29);
9261 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
9262 once_value_2 = fra.me.REG[4];
9263 register_static_object(&once_value_2);
9264 } else fra.me.REG[4] = once_value_2;
9265 array___Array___add(fra.me.REG[7], fra.me.REG[4]);
9266 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9267 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
9268 /* ./syntax//typing.nit:1518 */
9269 goto label3;
9270 }
9271 fra.me.REG[7] = CALL_typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
9272 fra.me.REG[8] = fra.me.REG[7];
9273 /* ./syntax//typing.nit:1521 */
9274 ATTR_typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
9275 }
9276 /* ./syntax//typing.nit:1523 */
9277 CALL_parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
9278 /* ./syntax//typing.nit:1524 */
9279 CALL_typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9280 /* ./syntax//typing.nit:1525 */
9281 goto label3;
9282 }
9283 }
9284 /* ./syntax//typing.nit:1529 */
9285 CALL_SUPER_typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9286 label3: while(0);
9287 stack_frame_head = fra.me.prev;
9288 return;
9289 }
9290 val_t typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
9291 struct {struct stack_frame_t me;} fra;
9292 val_t tmp;
9293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9294 fra.me.file = LOCATE_typing;
9295 fra.me.line = 1541;
9296 fra.me.meth = LOCATE_typing___ACallFormExpr___variable_create;
9297 fra.me.has_broke = 0;
9298 fra.me.REG_size = 0;
9299 /* ./syntax//typing.nit:1541 */
9300 fprintf(stderr, "Deferred method called");
9301 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1541);
9302 nit_exit(1);
9303 stack_frame_head = fra.me.prev;
9304 return NIT_NULL;
9305 }
9306 val_t typing___ACallExpr___compute_raw_arguments(val_t p0){
9307 struct {struct stack_frame_t me;} fra;
9308 val_t tmp;
9309 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9310 fra.me.file = LOCATE_typing;
9311 fra.me.line = 1552;
9312 fra.me.meth = LOCATE_typing___ACallExpr___compute_raw_arguments;
9313 fra.me.has_broke = 0;
9314 fra.me.REG_size = 1;
9315 fra.me.REG[0] = NIT_NULL;
9316 fra.me.REG[0] = p0;
9317 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9318 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9319 /* ./syntax//typing.nit:1552 */
9320 goto label1;
9321 label1: while(0);
9322 stack_frame_head = fra.me.prev;
9323 return fra.me.REG[0];
9324 }
9325 val_t typing___ACallExpr___name(val_t p0){
9326 struct {struct stack_frame_t me;} fra;
9327 val_t tmp;
9328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9329 fra.me.file = LOCATE_typing;
9330 fra.me.line = 1551;
9331 fra.me.meth = LOCATE_typing___ACallExpr___name;
9332 fra.me.has_broke = 0;
9333 fra.me.REG_size = 1;
9334 fra.me.REG[0] = NIT_NULL;
9335 fra.me.REG[0] = p0;
9336 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9337 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9338 /* ./syntax//typing.nit:1551 */
9339 goto label1;
9340 label1: while(0);
9341 stack_frame_head = fra.me.prev;
9342 return fra.me.REG[0];
9343 }
9344 val_t typing___ACallExpr___variable_create(val_t p0, val_t p1){
9345 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9346 val_t tmp;
9347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9348 fra.me.file = LOCATE_typing;
9349 fra.me.line = 1546;
9350 fra.me.meth = LOCATE_typing___ACallExpr___variable_create;
9351 fra.me.has_broke = 0;
9352 fra.me.REG_size = 2;
9353 fra.me.REG[0] = NIT_NULL;
9354 fra.me.REG[1] = NIT_NULL;
9355 fra.me.REG[0] = p0;
9356 fra.me.REG[1] = p1;
9357 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9358 fra.me.REG[0] = NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
9359 /* ./syntax//typing.nit:1548 */
9360 goto label1;
9361 label1: while(0);
9362 stack_frame_head = fra.me.prev;
9363 return fra.me.REG[0];
9364 }
9365 val_t typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
9366 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9367 val_t tmp;
9368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9369 fra.me.file = LOCATE_typing;
9370 fra.me.line = 1562;
9371 fra.me.meth = LOCATE_typing___ACallAssignExpr___compute_raw_arguments;
9372 fra.me.has_broke = 0;
9373 fra.me.REG_size = 2;
9374 fra.me.REG[0] = NIT_NULL;
9375 fra.me.REG[1] = NIT_NULL;
9376 fra.me.REG[0] = p0;
9377 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9378 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
9379 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9380 /* ./syntax//typing.nit:1564 */
9381 array___Array___add(fra.me.REG[1], fra.me.REG[0]);
9382 /* ./syntax//typing.nit:1565 */
9383 goto label1;
9384 label1: while(0);
9385 stack_frame_head = fra.me.prev;
9386 return fra.me.REG[1];
9387 }
9388 val_t typing___ACallAssignExpr___name(val_t p0){
9389 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9390 val_t REGB0;
9391 val_t tmp;
9392 static val_t once_value_1; /* Once value */
9393 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9394 fra.me.file = LOCATE_typing;
9395 fra.me.line = 1561;
9396 fra.me.meth = LOCATE_typing___ACallAssignExpr___name;
9397 fra.me.has_broke = 0;
9398 fra.me.REG_size = 2;
9399 fra.me.REG[0] = NIT_NULL;
9400 fra.me.REG[1] = NIT_NULL;
9401 fra.me.REG[0] = p0;
9402 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9403 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
9404 /* ./syntax//typing.nit:1561 */
9405 if (!once_value_1) {
9406 fra.me.REG[1] = BOX_NativeString("=");
9407 REGB0 = TAG_Int(1);
9408 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9409 once_value_1 = fra.me.REG[1];
9410 register_static_object(&once_value_1);
9411 } else fra.me.REG[1] = once_value_1;
9412 fra.me.REG[1] = CALL_string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9413 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
9414 goto label2;
9415 label2: while(0);
9416 stack_frame_head = fra.me.prev;
9417 return fra.me.REG[1];
9418 }
9419 val_t typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
9420 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
9421 val_t tmp;
9422 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9423 fra.me.file = LOCATE_typing;
9424 fra.me.line = 1556;
9425 fra.me.meth = LOCATE_typing___ACallAssignExpr___variable_create;
9426 fra.me.has_broke = 0;
9427 fra.me.REG_size = 3;
9428 fra.me.REG[0] = NIT_NULL;
9429 fra.me.REG[1] = NIT_NULL;
9430 fra.me.REG[2] = NIT_NULL;
9431 fra.me.REG[0] = p0;
9432 fra.me.REG[1] = p1;
9433 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9434 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
9435 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9436 fra.me.REG[0] = NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
9437 /* ./syntax//typing.nit:1558 */
9438 goto label1;
9439 label1: while(0);
9440 stack_frame_head = fra.me.prev;
9441 return fra.me.REG[0];
9442 }
9443 val_t typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
9444 struct {struct stack_frame_t me;} fra;
9445 val_t tmp;
9446 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9447 fra.me.file = LOCATE_typing;
9448 fra.me.line = 1576;
9449 fra.me.meth = LOCATE_typing___ACallReassignExpr___compute_raw_arguments;
9450 fra.me.has_broke = 0;
9451 fra.me.REG_size = 1;
9452 fra.me.REG[0] = NIT_NULL;
9453 fra.me.REG[0] = p0;
9454 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9455 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9456 /* ./syntax//typing.nit:1576 */
9457 goto label1;
9458 label1: while(0);
9459 stack_frame_head = fra.me.prev;
9460 return fra.me.REG[0];
9461 }
9462 val_t typing___ACallReassignExpr___name(val_t p0){
9463 struct {struct stack_frame_t me;} fra;
9464 val_t tmp;
9465 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9466 fra.me.file = LOCATE_typing;
9467 fra.me.line = 1575;
9468 fra.me.meth = LOCATE_typing___ACallReassignExpr___name;
9469 fra.me.has_broke = 0;
9470 fra.me.REG_size = 1;
9471 fra.me.REG[0] = NIT_NULL;
9472 fra.me.REG[0] = p0;
9473 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9474 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9475 /* ./syntax//typing.nit:1575 */
9476 goto label1;
9477 label1: while(0);
9478 stack_frame_head = fra.me.prev;
9479 return fra.me.REG[0];
9480 }
9481 val_t typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
9482 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
9483 val_t tmp;
9484 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9485 fra.me.file = LOCATE_typing;
9486 fra.me.line = 1570;
9487 fra.me.meth = LOCATE_typing___ACallReassignExpr___variable_create;
9488 fra.me.has_broke = 0;
9489 fra.me.REG_size = 3;
9490 fra.me.REG[0] = NIT_NULL;
9491 fra.me.REG[1] = NIT_NULL;
9492 fra.me.REG[2] = NIT_NULL;
9493 fra.me.REG[0] = p0;
9494 fra.me.REG[1] = p1;
9495 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9496 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
9497 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9498 fra.me.REG[0] = NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
9499 /* ./syntax//typing.nit:1572 */
9500 goto label1;
9501 label1: while(0);
9502 stack_frame_head = fra.me.prev;
9503 return fra.me.REG[0];
9504 }
9505 val_t typing___ABraExpr___closure_defs(val_t p0){
9506 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9507 val_t REGB0;
9508 val_t tmp;
9509 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9510 fra.me.file = LOCATE_typing;
9511 fra.me.line = 1582;
9512 fra.me.meth = LOCATE_typing___ABraExpr___closure_defs;
9513 fra.me.has_broke = 0;
9514 fra.me.REG_size = 2;
9515 fra.me.REG[0] = NIT_NULL;
9516 fra.me.REG[1] = NIT_NULL;
9517 fra.me.REG[0] = p0;
9518 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9519 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
9520 /* ./syntax//typing.nit:1584 */
9521 if (UNTAG_Bool(REGB0)) {
9522 fra.me.REG[1] = NIT_NULL;
9523 /* ./syntax//typing.nit:1585 */
9524 goto label1;
9525 } else {
9526 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9527 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9528 fra.me.REG[1] = fra.me.REG[0];
9529 /* ./syntax//typing.nit:1587 */
9530 goto label1;
9531 }
9532 label1: while(0);
9533 stack_frame_head = fra.me.prev;
9534 return fra.me.REG[1];
9535 }
9536 val_t typing___ABraExpr___compute_raw_arguments(val_t p0){
9537 struct {struct stack_frame_t me;} fra;
9538 val_t tmp;
9539 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9540 fra.me.file = LOCATE_typing;
9541 fra.me.line = 1581;
9542 fra.me.meth = LOCATE_typing___ABraExpr___compute_raw_arguments;
9543 fra.me.has_broke = 0;
9544 fra.me.REG_size = 1;
9545 fra.me.REG[0] = NIT_NULL;
9546 fra.me.REG[0] = p0;
9547 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9548 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9549 /* ./syntax//typing.nit:1581 */
9550 goto label1;
9551 label1: while(0);
9552 stack_frame_head = fra.me.prev;
9553 return fra.me.REG[0];
9554 }
9555 val_t typing___ABraExpr___name(val_t p0){
9556 struct {struct stack_frame_t me;} fra;
9557 val_t REGB0;
9558 val_t tmp;
9559 static val_t once_value_1; /* Once value */
9560 static val_t once_value_2; /* Once value */
9561 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9562 fra.me.file = LOCATE_typing;
9563 fra.me.line = 1580;
9564 fra.me.meth = LOCATE_typing___ABraExpr___name;
9565 fra.me.has_broke = 0;
9566 fra.me.REG_size = 1;
9567 fra.me.REG[0] = NIT_NULL;
9568 fra.me.REG[0] = p0;
9569 /* ./syntax//typing.nit:1580 */
9570 if (!once_value_1) {
9571 if (!once_value_2) {
9572 fra.me.REG[0] = BOX_NativeString("[]");
9573 REGB0 = TAG_Int(2);
9574 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9575 once_value_2 = fra.me.REG[0];
9576 register_static_object(&once_value_2);
9577 } else fra.me.REG[0] = once_value_2;
9578 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9579 once_value_1 = fra.me.REG[0];
9580 register_static_object(&once_value_1);
9581 } else fra.me.REG[0] = once_value_1;
9582 goto label3;
9583 label3: while(0);
9584 stack_frame_head = fra.me.prev;
9585 return fra.me.REG[0];
9586 }
9587 val_t typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
9588 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9589 val_t tmp;
9590 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9591 fra.me.file = LOCATE_typing;
9592 fra.me.line = 1594;
9593 fra.me.meth = LOCATE_typing___ABraAssignExpr___compute_raw_arguments;
9594 fra.me.has_broke = 0;
9595 fra.me.REG_size = 2;
9596 fra.me.REG[0] = NIT_NULL;
9597 fra.me.REG[1] = NIT_NULL;
9598 fra.me.REG[0] = p0;
9599 fra.me.REG[1] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9600 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
9601 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9602 /* ./syntax//typing.nit:1596 */
9603 array___Array___add(fra.me.REG[1], fra.me.REG[0]);
9604 /* ./syntax//typing.nit:1597 */
9605 goto label1;
9606 label1: while(0);
9607 stack_frame_head = fra.me.prev;
9608 return fra.me.REG[1];
9609 }
9610 val_t typing___ABraAssignExpr___name(val_t p0){
9611 struct {struct stack_frame_t me;} fra;
9612 val_t REGB0;
9613 val_t tmp;
9614 static val_t once_value_1; /* Once value */
9615 static val_t once_value_2; /* Once value */
9616 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9617 fra.me.file = LOCATE_typing;
9618 fra.me.line = 1593;
9619 fra.me.meth = LOCATE_typing___ABraAssignExpr___name;
9620 fra.me.has_broke = 0;
9621 fra.me.REG_size = 1;
9622 fra.me.REG[0] = NIT_NULL;
9623 fra.me.REG[0] = p0;
9624 /* ./syntax//typing.nit:1593 */
9625 if (!once_value_1) {
9626 if (!once_value_2) {
9627 fra.me.REG[0] = BOX_NativeString("[]=");
9628 REGB0 = TAG_Int(3);
9629 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9630 once_value_2 = fra.me.REG[0];
9631 register_static_object(&once_value_2);
9632 } else fra.me.REG[0] = once_value_2;
9633 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9634 once_value_1 = fra.me.REG[0];
9635 register_static_object(&once_value_1);
9636 } else fra.me.REG[0] = once_value_1;
9637 goto label3;
9638 label3: while(0);
9639 stack_frame_head = fra.me.prev;
9640 return fra.me.REG[0];
9641 }
9642 val_t typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
9643 struct {struct stack_frame_t me;} fra;
9644 val_t tmp;
9645 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9646 fra.me.file = LOCATE_typing;
9647 fra.me.line = 1603;
9648 fra.me.meth = LOCATE_typing___ABraReassignExpr___compute_raw_arguments;
9649 fra.me.has_broke = 0;
9650 fra.me.REG_size = 1;
9651 fra.me.REG[0] = NIT_NULL;
9652 fra.me.REG[0] = p0;
9653 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9654 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9655 /* ./syntax//typing.nit:1603 */
9656 goto label1;
9657 label1: while(0);
9658 stack_frame_head = fra.me.prev;
9659 return fra.me.REG[0];
9660 }
9661 val_t typing___ABraReassignExpr___name(val_t p0){
9662 struct {struct stack_frame_t me;} fra;
9663 val_t REGB0;
9664 val_t tmp;
9665 static val_t once_value_1; /* Once value */
9666 static val_t once_value_2; /* Once value */
9667 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9668 fra.me.file = LOCATE_typing;
9669 fra.me.line = 1602;
9670 fra.me.meth = LOCATE_typing___ABraReassignExpr___name;
9671 fra.me.has_broke = 0;
9672 fra.me.REG_size = 1;
9673 fra.me.REG[0] = NIT_NULL;
9674 fra.me.REG[0] = p0;
9675 /* ./syntax//typing.nit:1602 */
9676 if (!once_value_1) {
9677 if (!once_value_2) {
9678 fra.me.REG[0] = BOX_NativeString("[]");
9679 REGB0 = TAG_Int(2);
9680 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9681 once_value_2 = fra.me.REG[0];
9682 register_static_object(&once_value_2);
9683 } else fra.me.REG[0] = once_value_2;
9684 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9685 once_value_1 = fra.me.REG[0];
9686 register_static_object(&once_value_1);
9687 } else fra.me.REG[0] = once_value_1;
9688 goto label3;
9689 label3: while(0);
9690 stack_frame_head = fra.me.prev;
9691 return fra.me.REG[0];
9692 }
9693 val_t typing___AInitExpr___compute_raw_arguments(val_t p0){
9694 struct {struct stack_frame_t me;} fra;
9695 val_t tmp;
9696 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9697 fra.me.file = LOCATE_typing;
9698 fra.me.line = 1608;
9699 fra.me.meth = LOCATE_typing___AInitExpr___compute_raw_arguments;
9700 fra.me.has_broke = 0;
9701 fra.me.REG_size = 1;
9702 fra.me.REG[0] = NIT_NULL;
9703 fra.me.REG[0] = p0;
9704 fra.me.REG[0] = CALL_parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9705 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9706 /* ./syntax//typing.nit:1608 */
9707 goto label1;
9708 label1: while(0);
9709 stack_frame_head = fra.me.prev;
9710 return fra.me.REG[0];
9711 }
9712 val_t typing___AInitExpr___name(val_t p0){
9713 struct {struct stack_frame_t me;} fra;
9714 val_t REGB0;
9715 val_t tmp;
9716 static val_t once_value_1; /* Once value */
9717 static val_t once_value_2; /* Once value */
9718 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9719 fra.me.file = LOCATE_typing;
9720 fra.me.line = 1607;
9721 fra.me.meth = LOCATE_typing___AInitExpr___name;
9722 fra.me.has_broke = 0;
9723 fra.me.REG_size = 1;
9724 fra.me.REG[0] = NIT_NULL;
9725 fra.me.REG[0] = p0;
9726 /* ./syntax//typing.nit:1607 */
9727 if (!once_value_1) {
9728 if (!once_value_2) {
9729 fra.me.REG[0] = BOX_NativeString("init");
9730 REGB0 = TAG_Int(4);
9731 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9732 once_value_2 = fra.me.REG[0];
9733 register_static_object(&once_value_2);
9734 } else fra.me.REG[0] = once_value_2;
9735 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9736 once_value_1 = fra.me.REG[0];
9737 register_static_object(&once_value_1);
9738 } else fra.me.REG[0] = once_value_1;
9739 goto label3;
9740 label3: while(0);
9741 stack_frame_head = fra.me.prev;
9742 return fra.me.REG[0];
9743 }
9744 val_t typing___AClosureCallExpr___variable(val_t p0){
9745 struct {struct stack_frame_t me;} fra;
9746 val_t REGB0;
9747 val_t tmp;
9748 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9749 fra.me.file = LOCATE_typing;
9750 fra.me.line = 1613;
9751 fra.me.meth = LOCATE_typing___AClosureCallExpr___variable;
9752 fra.me.has_broke = 0;
9753 fra.me.REG_size = 1;
9754 fra.me.REG[0] = NIT_NULL;
9755 fra.me.REG[0] = p0;
9756 fra.me.REG[0] = ATTR_typing___AClosureCallExpr____variable(fra.me.REG[0]);
9757 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
9758 /* ./syntax//typing.nit:1613 */
9759 if (UNTAG_Bool(REGB0)) {
9760 } else {
9761 fprintf(stderr, "Cast failed");
9762 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1613);
9763 nit_exit(1);
9764 }
9765 goto label1;
9766 label1: while(0);
9767 stack_frame_head = fra.me.prev;
9768 return fra.me.REG[0];
9769 }
9770 void typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
9771 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9772 val_t REGB0;
9773 val_t REGB1;
9774 val_t tmp;
9775 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9776 fra.me.file = LOCATE_typing;
9777 fra.me.line = 1616;
9778 fra.me.meth = LOCATE_typing___AClosureCallExpr___after_typing;
9779 fra.me.has_broke = 0;
9780 fra.me.REG_size = 5;
9781 fra.me.REG[0] = NIT_NULL;
9782 fra.me.REG[1] = NIT_NULL;
9783 fra.me.REG[2] = NIT_NULL;
9784 fra.me.REG[3] = NIT_NULL;
9785 fra.me.REG[4] = NIT_NULL;
9786 fra.me.REG[0] = p0;
9787 fra.me.REG[1] = p1;
9788 fra.me.REG[2] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
9789 fra.me.REG[3] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
9790 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
9791 /* ./syntax//typing.nit:1619 */
9792 if (UNTAG_Bool(REGB0)) {
9793 fra.me.REG[3] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
9794 REGB0 = TAG_Bool(true);
9795 CALL_control_flow___VariableContext___unreash__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
9796 }
9797 fra.me.REG[2] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
9798 fra.me.REG[2] = CALL_static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
9799 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9800 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9801 fra.me.REG[4] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9802 REGB0 = CALL_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]);
9803 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9804 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
9805 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9806 /* ./syntax//typing.nit:1622 */
9807 if (UNTAG_Bool(REGB1)) {
9808 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9809 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9810 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9811 fra.me.REG[3] = CALL_array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
9812 /* ./syntax//typing.nit:1623 */
9813 CALL_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]);
9814 }
9815 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9816 /* ./syntax//typing.nit:1625 */
9817 if (UNTAG_Bool(REGB0)) {
9818 goto label1;
9819 }
9820 /* ./syntax//typing.nit:1626 */
9821 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9822 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9823 /* ./syntax//typing.nit:1627 */
9824 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
9825 REGB0 = TAG_Bool(true);
9826 /* ./syntax//typing.nit:1628 */
9827 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
9828 label1: while(0);
9829 stack_frame_head = fra.me.prev;
9830 return;
9831 }
9832 val_t typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
9833 struct {struct stack_frame_t me;} fra;
9834 val_t tmp;
9835 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9836 fra.me.file = LOCATE_typing;
9837 fra.me.line = 1614;
9838 fra.me.meth = LOCATE_typing___AClosureCallExpr___compute_raw_arguments;
9839 fra.me.has_broke = 0;
9840 fra.me.REG_size = 1;
9841 fra.me.REG[0] = NIT_NULL;
9842 fra.me.REG[0] = p0;
9843 fra.me.REG[0] = CALL_parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9844 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9845 /* ./syntax//typing.nit:1614 */
9846 goto label1;
9847 label1: while(0);
9848 stack_frame_head = fra.me.prev;
9849 return fra.me.REG[0];
9850 }
9851 val_t typing___AClosureId___to_symbol(val_t p0){
9852 struct {struct stack_frame_t me;} fra;
9853 val_t tmp;
9854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9855 fra.me.file = LOCATE_typing;
9856 fra.me.line = 1633;
9857 fra.me.meth = LOCATE_typing___AClosureId___to_symbol;
9858 fra.me.has_broke = 0;
9859 fra.me.REG_size = 0;
9860 /* ./syntax//typing.nit:1633 */
9861 fprintf(stderr, "Deferred method called");
9862 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1633);
9863 nit_exit(1);
9864 stack_frame_head = fra.me.prev;
9865 return NIT_NULL;
9866 }
9867 val_t typing___ASimpleClosureId___to_symbol(val_t p0){
9868 struct {struct stack_frame_t me;} fra;
9869 val_t tmp;
9870 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9871 fra.me.file = LOCATE_typing;
9872 fra.me.line = 1636;
9873 fra.me.meth = LOCATE_typing___ASimpleClosureId___to_symbol;
9874 fra.me.has_broke = 0;
9875 fra.me.REG_size = 1;
9876 fra.me.REG[0] = NIT_NULL;
9877 fra.me.REG[0] = p0;
9878 fra.me.REG[0] = CALL_parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
9879 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9880 /* ./syntax//typing.nit:1636 */
9881 goto label1;
9882 label1: while(0);
9883 stack_frame_head = fra.me.prev;
9884 return fra.me.REG[0];
9885 }
9886 val_t typing___ABreakClosureId___to_symbol(val_t p0){
9887 struct {struct stack_frame_t me;} fra;
9888 val_t tmp;
9889 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9890 fra.me.file = LOCATE_typing;
9891 fra.me.line = 1639;
9892 fra.me.meth = LOCATE_typing___ABreakClosureId___to_symbol;
9893 fra.me.has_broke = 0;
9894 fra.me.REG_size = 1;
9895 fra.me.REG[0] = NIT_NULL;
9896 fra.me.REG[0] = p0;
9897 fra.me.REG[0] = CALL_parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
9898 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9899 /* ./syntax//typing.nit:1639 */
9900 goto label1;
9901 label1: while(0);
9902 stack_frame_head = fra.me.prev;
9903 return fra.me.REG[0];
9904 }
9905 val_t typing___AClosureDef___closure(val_t p0){
9906 struct {struct stack_frame_t me;} fra;
9907 val_t REGB0;
9908 val_t tmp;
9909 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9910 fra.me.file = LOCATE_typing;
9911 fra.me.line = 1644;
9912 fra.me.meth = LOCATE_typing___AClosureDef___closure;
9913 fra.me.has_broke = 0;
9914 fra.me.REG_size = 1;
9915 fra.me.REG[0] = NIT_NULL;
9916 fra.me.REG[0] = p0;
9917 fra.me.REG[0] = ATTR_typing___AClosureDef____closure(fra.me.REG[0]);
9918 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
9919 /* ./syntax//typing.nit:1644 */
9920 if (UNTAG_Bool(REGB0)) {
9921 } else {
9922 fprintf(stderr, "Cast failed");
9923 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1644);
9924 nit_exit(1);
9925 }
9926 goto label1;
9927 label1: while(0);
9928 stack_frame_head = fra.me.prev;
9929 return fra.me.REG[0];
9930 }
9931 void typing___AClosureDef___accept_typing(val_t p0, val_t p1){
9932 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
9933 val_t REGB0;
9934 val_t tmp;
9935 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9936 fra.me.file = LOCATE_typing;
9937 fra.me.line = 1650;
9938 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing;
9939 fra.me.has_broke = 0;
9940 fra.me.REG_size = 3;
9941 fra.me.REG[0] = NIT_NULL;
9942 fra.me.REG[1] = NIT_NULL;
9943 fra.me.REG[2] = NIT_NULL;
9944 fra.me.REG[0] = p0;
9945 fra.me.REG[1] = p1;
9946 fra.me.REG[2] = fra.me.REG[0];
9947 REGB0 = TAG_Bool(ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
9948 /* ./syntax//typing.nit:1653 */
9949 if (UNTAG_Bool(REGB0)) {
9950 } else {
9951 fprintf(stderr, "Uninitialized attribute %s", "_accept_typing2");
9952 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1653);
9953 nit_exit(1);
9954 }
9955 REGB0 = ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2]);
9956 if (UNTAG_Bool(REGB0)) {
9957 CALL_SUPER_typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9958 }
9959 stack_frame_head = fra.me.prev;
9960 return;
9961 }
9962 val_t typing___AClosureDef___escapable(val_t p0){
9963 struct {struct stack_frame_t me;} fra;
9964 val_t tmp;
9965 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9966 fra.me.file = LOCATE_typing;
9967 fra.me.line = 1646;
9968 fra.me.meth = LOCATE_typing___AClosureDef___escapable;
9969 fra.me.has_broke = 0;
9970 fra.me.REG_size = 1;
9971 fra.me.REG[0] = NIT_NULL;
9972 fra.me.REG[0] = p0;
9973 fra.me.REG[0] = ATTR_typing___AClosureDef____escapable(fra.me.REG[0]);
9974 /* ./syntax//typing.nit:1646 */
9975 stack_frame_head = fra.me.prev;
9976 return fra.me.REG[0];
9977 }
9978 void typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
9979 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
9980 val_t REGB0;
9981 val_t REGB1;
9982 val_t REGB2;
9983 val_t tmp;
9984 static val_t once_value_1; /* Once value */
9985 static val_t once_value_2; /* Once value */
9986 static val_t once_value_3; /* Once value */
9987 static val_t once_value_6; /* Once value */
9988 static val_t once_value_7; /* Once value */
9989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9990 fra.me.file = LOCATE_typing;
9991 fra.me.line = 1656;
9992 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing2;
9993 fra.me.has_broke = 0;
9994 fra.me.REG_size = 9;
9995 fra.me.REG[0] = NIT_NULL;
9996 fra.me.REG[1] = NIT_NULL;
9997 fra.me.REG[2] = NIT_NULL;
9998 fra.me.REG[3] = NIT_NULL;
9999 fra.me.REG[4] = NIT_NULL;
10000 fra.me.REG[5] = NIT_NULL;
10001 fra.me.REG[6] = NIT_NULL;
10002 fra.me.REG[7] = NIT_NULL;
10003 fra.me.REG[8] = NIT_NULL;
10004 fra.me.REG[0] = p0;
10005 fra.me.REG[1] = p1;
10006 fra.me.REG[2] = p2;
10007 /* ./syntax//typing.nit:1658 */
10008 ATTR_typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
10009 fra.me.REG[3] = CALL_escape___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
10010 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
10011 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
10012 fra.me.REG[4] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10013 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
10014 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
10015 /* ./syntax//typing.nit:1661 */
10016 if (UNTAG_Bool(REGB2)) {
10017 } else {
10018 REGB1 = TAG_Bool((REGB0)==(REGB1));
10019 REGB2 = REGB1;
10020 /* ./syntax//typing.nit:1661 */
10021 }
10022 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
10023 if (UNTAG_Bool(REGB2)) {
10024 REGB2 = TAG_Int(5);
10025 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
10026 /* ./syntax//typing.nit:1662 */
10027 if (!once_value_1) {
10028 fra.me.REG[5] = BOX_NativeString("Error: ");
10029 REGB2 = TAG_Int(7);
10030 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10031 once_value_1 = fra.me.REG[5];
10032 register_static_object(&once_value_1);
10033 } else fra.me.REG[5] = once_value_1;
10034 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10035 REGB2 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
10036 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
10037 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10038 if (!once_value_2) {
10039 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
10040 REGB2 = TAG_Int(36);
10041 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10042 once_value_2 = fra.me.REG[5];
10043 register_static_object(&once_value_2);
10044 } else fra.me.REG[5] = once_value_2;
10045 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10046 fra.me.REG[5] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10047 REGB2 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
10048 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
10049 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10050 if (!once_value_3) {
10051 fra.me.REG[5] = BOX_NativeString(" found.");
10052 REGB2 = TAG_Int(7);
10053 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10054 once_value_3 = fra.me.REG[5];
10055 register_static_object(&once_value_3);
10056 } else fra.me.REG[5] = once_value_3;
10057 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10058 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10059 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10060 /* ./syntax//typing.nit:1663 */
10061 goto label4;
10062 }
10063 fra.me.REG[4] = CALL_escape___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
10064 /* ./syntax//typing.nit:1666 */
10065 ATTR_typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
10066 fra.me.REG[4] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10067 fra.me.REG[5] = CALL_typing___TypingVisitor___base_variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10068 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10069 /* ./syntax//typing.nit:1670 */
10070 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
10071 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10072 fra.me.REG[6] = CALL_control_flow___VariableContext___sub(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
10073 /* ./syntax//typing.nit:1671 */
10074 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
10075 fra.me.REG[6] = NEW_Array_array___Array___init();
10076 /* ./syntax//typing.nit:1672 */
10077 CALL_syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
10078 REGB2 = TAG_Int(0);
10079 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10080 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
10081 fra.me.REG[6] = NEW_Range_range___Range___without_last(REGB2, REGB1);
10082 fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
10083 /* ./syntax//typing.nit:1673 */
10084 while(1) {
10085 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
10086 if (UNTAG_Bool(REGB1)) {
10087 REGB1 = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
10088 fra.me.REG[7] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10089 fra.me.REG[7] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB1);
10090 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10091 /* ./syntax//typing.nit:1674 */
10092 if (UNTAG_Bool(REGB2)) {
10093 fprintf(stderr, "Reciever is null");
10094 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1674);
10095 nit_exit(1);
10096 }
10097 fra.me.REG[7] = CALL_syntax_base___Token___to_symbol(fra.me.REG[7])(fra.me.REG[7]);
10098 fra.me.REG[8] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10099 fra.me.REG[8] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB1);
10100 fra.me.REG[8] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[7], fra.me.REG[8]);
10101 fra.me.REG[7] = CALL_syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
10102 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10103 /* ./syntax//typing.nit:1675 */
10104 if (UNTAG_Bool(REGB2)) {
10105 fprintf(stderr, "Reciever is null");
10106 fprintf(stderr, " (%s:%d)\n", LOCATE_typing, 1675);
10107 nit_exit(1);
10108 }
10109 array___Array___add(fra.me.REG[7], fra.me.REG[8]);
10110 fra.me.REG[7] = CALL_static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB1);
10111 /* ./syntax//typing.nit:1676 */
10112 CALL_syntax_base___Variable___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
10113 fra.me.REG[7] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10114 /* ./syntax//typing.nit:1677 */
10115 CALL_control_flow___VariableContext___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10116 } else {
10117 /* ./syntax//typing.nit:1673 */
10118 goto label5;
10119 }
10120 CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
10121 }
10122 label5: while(0);
10123 REGB1 = TAG_Bool(true);
10124 /* ./syntax//typing.nit:1680 */
10125 ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB1;
10126 /* ./syntax//typing.nit:1681 */
10127 CALL_typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10128 fra.me.REG[6] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10129 REGB1 = CALL_control_flow___VariableContext___unreash(fra.me.REG[6])(fra.me.REG[6]);
10130 REGB2 = TAG_Bool(false);
10131 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
10132 /* ./syntax//typing.nit:1683 */
10133 if (UNTAG_Bool(REGB0)) {
10134 } else {
10135 REGB2 = TAG_Bool((REGB1)==(REGB2));
10136 REGB0 = REGB2;
10137 /* ./syntax//typing.nit:1683 */
10138 }
10139 if (UNTAG_Bool(REGB0)) {
10140 fra.me.REG[6] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
10141 fra.me.REG[6] = CALL_static_type___MMClosure___signature(fra.me.REG[6])(fra.me.REG[6]);
10142 fra.me.REG[6] = CALL_static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
10143 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10144 /* ./syntax//typing.nit:1684 */
10145 if (UNTAG_Bool(REGB0)) {
10146 } else {
10147 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10148 if (UNTAG_Bool(REGB2)) {
10149 REGB2 = TAG_Bool(false);
10150 REGB0 = REGB2;
10151 } else {
10152 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10153 REGB0 = REGB2;
10154 }
10155 }
10156 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10157 if (UNTAG_Bool(REGB0)) {
10158 /* ./syntax//typing.nit:1685 */
10159 if (!once_value_6) {
10160 fra.me.REG[6] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
10161 REGB0 = TAG_Int(77);
10162 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
10163 once_value_6 = fra.me.REG[6];
10164 register_static_object(&once_value_6);
10165 } else fra.me.REG[6] = once_value_6;
10166 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
10167 } else {
10168 fra.me.REG[6] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
10169 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[6])(fra.me.REG[6]);
10170 /* ./syntax//typing.nit:1686 */
10171 if (UNTAG_Bool(REGB0)) {
10172 fra.me.REG[2] = CALL_escape___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
10173 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
10174 if (UNTAG_Bool(REGB0)) {
10175 } else {
10176 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
10177 if (UNTAG_Bool(REGB2)) {
10178 REGB2 = TAG_Bool(false);
10179 REGB0 = REGB2;
10180 } else {
10181 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
10182 REGB0 = REGB2;
10183 }
10184 }
10185 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10186 } else {
10187 REGB2 = TAG_Bool(false);
10188 REGB0 = REGB2;
10189 }
10190 if (UNTAG_Bool(REGB0)) {
10191 /* ./syntax//typing.nit:1687 */
10192 if (!once_value_7) {
10193 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
10194 REGB0 = TAG_Int(80);
10195 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
10196 once_value_7 = fra.me.REG[2];
10197 register_static_object(&once_value_7);
10198 } else fra.me.REG[2] = once_value_7;
10199 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
10200 }
10201 }
10202 }
10203 /* ./syntax//typing.nit:1690 */
10204 CALL_typing___TypingVisitor___variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
10205 /* ./syntax//typing.nit:1691 */
10206 CALL_typing___TypingVisitor___base_variable_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
10207 label4: while(0);
10208 stack_frame_head = fra.me.prev;
10209 return;
10210 }
10211 void typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
10212 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
10213 val_t REGB0;
10214 val_t REGB1;
10215 val_t tmp;
10216 static val_t once_value_2; /* Once value */
10217 static val_t once_value_3; /* Once value */
10218 static val_t once_value_4; /* Once value */
10219 static val_t once_value_5; /* Once value */
10220 static val_t once_value_6; /* Once value */
10221 static val_t once_value_7; /* Once value */
10222 static val_t once_value_8; /* Once value */
10223 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10224 fra.me.file = LOCATE_typing;
10225 fra.me.line = 1697;
10226 fra.me.meth = LOCATE_typing___ATypeCheckExpr___check_expr_cast;
10227 fra.me.has_broke = 0;
10228 fra.me.REG_size = 6;
10229 fra.me.REG[0] = NIT_NULL;
10230 fra.me.REG[1] = NIT_NULL;
10231 fra.me.REG[2] = NIT_NULL;
10232 fra.me.REG[3] = NIT_NULL;
10233 fra.me.REG[4] = NIT_NULL;
10234 fra.me.REG[5] = NIT_NULL;
10235 fra.me.REG[0] = p0;
10236 fra.me.REG[1] = p1;
10237 fra.me.REG[2] = p2;
10238 fra.me.REG[3] = p3;
10239 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
10240 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10241 /* ./syntax//typing.nit:1699 */
10242 if (UNTAG_Bool(REGB0)) {
10243 goto label1;
10244 }
10245 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
10246 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10247 /* ./syntax//typing.nit:1700 */
10248 if (UNTAG_Bool(REGB0)) {
10249 goto label1;
10250 }
10251 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10252 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
10253 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
10254 /* ./syntax//typing.nit:1703 */
10255 if (UNTAG_Bool(REGB0)) {
10256 } else {
10257 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10258 REGB0 = REGB1;
10259 }
10260 if (UNTAG_Bool(REGB0)) {
10261 REGB0 = TAG_Int(3);
10262 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
10263 /* ./syntax//typing.nit:1704 */
10264 if (!once_value_2) {
10265 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
10266 REGB0 = TAG_Int(33);
10267 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
10268 once_value_2 = fra.me.REG[5];
10269 register_static_object(&once_value_2);
10270 } else fra.me.REG[5] = once_value_2;
10271 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10272 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10273 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10274 if (!once_value_3) {
10275 fra.me.REG[5] = BOX_NativeString(".");
10276 REGB0 = TAG_Int(1);
10277 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
10278 once_value_3 = fra.me.REG[5];
10279 register_static_object(&once_value_3);
10280 } else fra.me.REG[5] = once_value_3;
10281 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10282 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10283 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10284 } else {
10285 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10286 /* ./syntax//typing.nit:1705 */
10287 if (UNTAG_Bool(REGB0)) {
10288 REGB0 = TAG_Int(5);
10289 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
10290 /* ./syntax//typing.nit:1706 */
10291 if (!once_value_4) {
10292 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
10293 REGB0 = TAG_Int(33);
10294 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
10295 once_value_4 = fra.me.REG[5];
10296 register_static_object(&once_value_4);
10297 } else fra.me.REG[5] = once_value_4;
10298 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10299 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10300 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10301 if (!once_value_5) {
10302 fra.me.REG[5] = BOX_NativeString(" since it is a ");
10303 REGB0 = TAG_Int(15);
10304 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
10305 once_value_5 = fra.me.REG[5];
10306 register_static_object(&once_value_5);
10307 } else fra.me.REG[5] = once_value_5;
10308 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10309 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10310 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10311 if (!once_value_6) {
10312 fra.me.REG[5] = BOX_NativeString(".");
10313 REGB0 = TAG_Int(1);
10314 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
10315 once_value_6 = fra.me.REG[5];
10316 register_static_object(&once_value_6);
10317 } else fra.me.REG[5] = once_value_6;
10318 array___Array___add(fra.me.REG[4], fra.me.REG[5]);
10319 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10320 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10321 } else {
10322 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
10323 /* ./syntax//typing.nit:1707 */
10324 if (UNTAG_Bool(REGB0)) {
10325 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10326 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
10327 if (UNTAG_Bool(REGB0)) {
10328 } else {
10329 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10330 REGB0 = REGB1;
10331 }
10332 } else {
10333 REGB1 = TAG_Bool(false);
10334 REGB0 = REGB1;
10335 }
10336 if (UNTAG_Bool(REGB0)) {
10337 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_MMTypeFormal, ID_MMTypeFormal)) /*cast MMTypeFormal*/;
10338 /* ./syntax//typing.nit:1708 */
10339 if (UNTAG_Bool(REGB0)) {
10340 fra.me.REG[3] = CALL_type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
10341 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
10342 } else {
10343 REGB1 = TAG_Bool(false);
10344 REGB0 = REGB1;
10345 }
10346 if (UNTAG_Bool(REGB0)) {
10347 } else {
10348 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AIsaExpr, ID_AIsaExpr)) /*cast AIsaExpr*/;
10349 /* ./syntax//typing.nit:1714 */
10350 if (UNTAG_Bool(REGB0)) {
10351 /* ./syntax//typing.nit:1715 */
10352 if (!once_value_7) {
10353 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
10354 REGB0 = TAG_Int(26);
10355 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
10356 once_value_7 = fra.me.REG[3];
10357 register_static_object(&once_value_7);
10358 } else fra.me.REG[3] = once_value_7;
10359 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10360 } else {
10361 /* ./syntax//typing.nit:1717 */
10362 if (!once_value_8) {
10363 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
10364 REGB0 = TAG_Int(32);
10365 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
10366 once_value_8 = fra.me.REG[3];
10367 register_static_object(&once_value_8);
10368 } else fra.me.REG[3] = once_value_8;
10369 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10370 }
10371 }
10372 }
10373 }
10374 }
10375 label1: while(0);
10376 stack_frame_head = fra.me.prev;
10377 return;
10378 }
10379 void typing___AIsaExpr___after_typing(val_t p0, val_t p1){
10380 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10381 val_t REGB0;
10382 val_t REGB1;
10383 val_t tmp;
10384 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10385 fra.me.file = LOCATE_typing;
10386 fra.me.line = 1725;
10387 fra.me.meth = LOCATE_typing___AIsaExpr___after_typing;
10388 fra.me.has_broke = 0;
10389 fra.me.REG_size = 5;
10390 fra.me.REG[0] = NIT_NULL;
10391 fra.me.REG[1] = NIT_NULL;
10392 fra.me.REG[2] = NIT_NULL;
10393 fra.me.REG[3] = NIT_NULL;
10394 fra.me.REG[4] = NIT_NULL;
10395 fra.me.REG[0] = p0;
10396 fra.me.REG[1] = p1;
10397 fra.me.REG[2] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10398 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10399 /* ./syntax//typing.nit:1727 */
10400 CALL_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]);
10401 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10402 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
10403 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10404 /* ./syntax//typing.nit:1728 */
10405 if (UNTAG_Bool(REGB0)) {
10406 goto label1;
10407 }
10408 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10409 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
10410 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10411 /* ./syntax//typing.nit:1730 */
10412 if (UNTAG_Bool(REGB0)) {
10413 } else {
10414 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10415 if (UNTAG_Bool(REGB1)) {
10416 REGB1 = TAG_Bool(false);
10417 REGB0 = REGB1;
10418 } else {
10419 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10420 REGB0 = REGB1;
10421 }
10422 }
10423 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10424 if (UNTAG_Bool(REGB0)) {
10425 fra.me.REG[2] = CALL_typing___TypingVisitor___variable_ctx(fra.me.REG[1])(fra.me.REG[1]);
10426 fra.me.REG[4] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10427 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
10428 fra.me.REG[4] = CALL_control_flow___VariableContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[4]);
10429 /* ./syntax//typing.nit:1731 */
10430 ATTR_typing___AExpr____if_true_variable_ctx(fra.me.REG[0]) = fra.me.REG[4];
10431 }
10432 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
10433 /* ./syntax//typing.nit:1733 */
10434 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
10435 REGB0 = TAG_Bool(true);
10436 /* ./syntax//typing.nit:1734 */
10437 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10438 label1: while(0);
10439 stack_frame_head = fra.me.prev;
10440 return;
10441 }
10442 void typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
10443 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10444 val_t REGB0;
10445 val_t REGB1;
10446 val_t tmp;
10447 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10448 fra.me.file = LOCATE_typing;
10449 fra.me.line = 1740;
10450 fra.me.meth = LOCATE_typing___AAsCastExpr___after_typing;
10451 fra.me.has_broke = 0;
10452 fra.me.REG_size = 4;
10453 fra.me.REG[0] = NIT_NULL;
10454 fra.me.REG[1] = NIT_NULL;
10455 fra.me.REG[2] = NIT_NULL;
10456 fra.me.REG[3] = NIT_NULL;
10457 fra.me.REG[0] = p0;
10458 fra.me.REG[1] = p1;
10459 fra.me.REG[2] = CALL_parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10460 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10461 /* ./syntax//typing.nit:1742 */
10462 CALL_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]);
10463 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10464 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
10465 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10466 /* ./syntax//typing.nit:1743 */
10467 if (UNTAG_Bool(REGB0)) {
10468 goto label1;
10469 }
10470 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10471 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
10472 /* ./syntax//typing.nit:1744 */
10473 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
10474 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
10475 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10476 /* ./syntax//typing.nit:1745 */
10477 if (UNTAG_Bool(REGB0)) {
10478 } else {
10479 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10480 if (UNTAG_Bool(REGB1)) {
10481 REGB1 = TAG_Bool(false);
10482 REGB0 = REGB1;
10483 } else {
10484 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10485 REGB0 = REGB1;
10486 }
10487 }
10488 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10489 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10490 label1: while(0);
10491 stack_frame_head = fra.me.prev;
10492 return;
10493 }
10494 void typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
10495 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10496 val_t REGB0;
10497 val_t tmp;
10498 static val_t once_value_2; /* Once value */
10499 static val_t once_value_3; /* Once value */
10500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10501 fra.me.file = LOCATE_typing;
10502 fra.me.line = 1750;
10503 fra.me.meth = LOCATE_typing___AAsNotnullExpr___after_typing;
10504 fra.me.has_broke = 0;
10505 fra.me.REG_size = 5;
10506 fra.me.REG[0] = NIT_NULL;
10507 fra.me.REG[1] = NIT_NULL;
10508 fra.me.REG[2] = NIT_NULL;
10509 fra.me.REG[3] = NIT_NULL;
10510 fra.me.REG[4] = NIT_NULL;
10511 fra.me.REG[0] = p0;
10512 fra.me.REG[1] = p1;
10513 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10514 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
10515 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10516 /* ./syntax//typing.nit:1752 */
10517 if (UNTAG_Bool(REGB0)) {
10518 goto label1;
10519 }
10520 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10521 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10522 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10523 /* ./syntax//typing.nit:1754 */
10524 if (UNTAG_Bool(REGB0)) {
10525 fra.me.REG[3] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10526 /* ./syntax//typing.nit:1755 */
10527 if (!once_value_2) {
10528 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
10529 REGB0 = TAG_Int(43);
10530 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
10531 once_value_2 = fra.me.REG[4];
10532 register_static_object(&once_value_2);
10533 } else fra.me.REG[4] = once_value_2;
10534 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
10535 /* ./syntax//typing.nit:1756 */
10536 goto label1;
10537 } else {
10538 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
10539 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10540 /* ./syntax//typing.nit:1757 */
10541 if (UNTAG_Bool(REGB0)) {
10542 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10543 /* ./syntax//typing.nit:1758 */
10544 if (!once_value_3) {
10545 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
10546 REGB0 = TAG_Int(45);
10547 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
10548 once_value_3 = fra.me.REG[4];
10549 register_static_object(&once_value_3);
10550 } else fra.me.REG[4] = once_value_3;
10551 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10552 }
10553 }
10554 fra.me.REG[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10555 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10556 fra.me.REG[4] = CALL_static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
10557 /* ./syntax//typing.nit:1760 */
10558 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
10559 REGB0 = TAG_Bool(true);
10560 /* ./syntax//typing.nit:1761 */
10561 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10562 label1: while(0);
10563 stack_frame_head = fra.me.prev;
10564 return;
10565 }
10566 void typing___AProxyExpr___after_typing(val_t p0, val_t p1){
10567 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10568 val_t REGB0;
10569 val_t tmp;
10570 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10571 fra.me.file = LOCATE_typing;
10572 fra.me.line = 1766;
10573 fra.me.meth = LOCATE_typing___AProxyExpr___after_typing;
10574 fra.me.has_broke = 0;
10575 fra.me.REG_size = 2;
10576 fra.me.REG[0] = NIT_NULL;
10577 fra.me.REG[1] = NIT_NULL;
10578 fra.me.REG[0] = p0;
10579 fra.me.REG[1] = p1;
10580 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10581 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10582 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10583 /* ./syntax//typing.nit:1768 */
10584 if (UNTAG_Bool(REGB0)) {
10585 goto label1;
10586 }
10587 REGB0 = TAG_Bool(true);
10588 /* ./syntax//typing.nit:1769 */
10589 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10590 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10591 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
10592 /* ./syntax//typing.nit:1770 */
10593 if (UNTAG_Bool(REGB0)) {
10594 goto label1;
10595 }
10596 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10597 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10598 /* ./syntax//typing.nit:1771 */
10599 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
10600 label1: while(0);
10601 stack_frame_head = fra.me.prev;
10602 return;
10603 }
10604 void typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
10605 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10606 val_t REGB0;
10607 val_t REGB1;
10608 val_t tmp;
10609 static val_t once_value_1; /* Once value */
10610 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10611 fra.me.file = LOCATE_typing;
10612 fra.me.line = 1776;
10613 fra.me.meth = LOCATE_typing___AOnceExpr___accept_typing;
10614 fra.me.has_broke = 0;
10615 fra.me.REG_size = 5;
10616 fra.me.REG[0] = NIT_NULL;
10617 fra.me.REG[1] = NIT_NULL;
10618 fra.me.REG[2] = NIT_NULL;
10619 fra.me.REG[3] = NIT_NULL;
10620 fra.me.REG[4] = NIT_NULL;
10621 fra.me.REG[0] = p0;
10622 fra.me.REG[1] = p1;
10623 fra.me.REG[2] = fra.me.REG[0];
10624 fra.me.REG[3] = fra.me.REG[1];
10625 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
10626 REGB1 = TAG_Int(0);
10627 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
10628 /* ./syntax//typing.nit:1778 */
10629 if (UNTAG_Bool(REGB1)) {
10630 /* ./syntax//typing.nit:1779 */
10631 if (!once_value_1) {
10632 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
10633 REGB1 = TAG_Int(34);
10634 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
10635 once_value_1 = fra.me.REG[4];
10636 register_static_object(&once_value_1);
10637 } else fra.me.REG[4] = once_value_1;
10638 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
10639 }
10640 REGB1 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
10641 REGB0 = TAG_Int(1);
10642 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
10643 /* ./syntax//typing.nit:1781 */
10644 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
10645 /* ./syntax//typing.nit:1783 */
10646 CALL_SUPER_typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10647 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
10648 REGB1 = TAG_Int(1);
10649 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
10650 /* ./syntax//typing.nit:1785 */
10651 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
10652 stack_frame_head = fra.me.prev;
10653 return;
10654 }