update NOTICE and LICENSE
[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 /* ./syntax//typing.nit:29 */
17 fra.me.REG[1] = NEW_TypingVisitor_typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
18 /* ./syntax//typing.nit:30 */
19 fra.me.REG[0] = CALL_syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
20 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
21 stack_frame_head = fra.me.prev;
22 return;
23 }
24 void typing___TypingVisitor___visit(val_t p0, val_t p1){
25 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
26 val_t REGB0;
27 val_t REGB1;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_typing;
31 fra.me.line = 41;
32 fra.me.meth = LOCATE_typing___TypingVisitor___visit;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 2;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[1] = NIT_NULL;
37 fra.me.REG[0] = p0;
38 fra.me.REG[1] = p1;
39 /* ./syntax//typing.nit:43 */
40 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
41 if (UNTAG_Bool(REGB0)) {
42 } else {
43 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
44 if (UNTAG_Bool(REGB1)) {
45 REGB1 = TAG_Bool(false);
46 REGB0 = REGB1;
47 } else {
48 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
49 REGB0 = REGB1;
50 }
51 }
52 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
53 if (UNTAG_Bool(REGB0)) {
54 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
55 if (UNTAG_Bool(REGB0)) {
56 nit_abort("Reciever is null", NULL, LOCATE_typing, 43);
57 }
58 CALL_typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
59 }
60 stack_frame_head = fra.me.prev;
61 return;
62 }
63 val_t typing___TypingVisitor___scope_ctx(val_t p0){
64 struct {struct stack_frame_t me;} fra;
65 val_t REGB0;
66 val_t tmp;
67 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
68 fra.me.file = LOCATE_typing;
69 fra.me.line = 46;
70 fra.me.meth = LOCATE_typing___TypingVisitor___scope_ctx;
71 fra.me.has_broke = 0;
72 fra.me.REG_size = 1;
73 fra.me.REG[0] = NIT_NULL;
74 fra.me.REG[0] = p0;
75 /* ./syntax//typing.nit:46 */
76 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
77 if (UNTAG_Bool(REGB0)) {
78 } else {
79 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_typing, 46);
80 }
81 fra.me.REG[0] = ATTR_typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
82 stack_frame_head = fra.me.prev;
83 return fra.me.REG[0];
84 }
85 val_t typing___TypingVisitor___flow_ctx(val_t p0){
86 struct {struct stack_frame_t me;} fra;
87 val_t REGB0;
88 val_t tmp;
89 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
90 fra.me.file = LOCATE_typing;
91 fra.me.line = 49;
92 fra.me.meth = LOCATE_typing___TypingVisitor___flow_ctx;
93 fra.me.has_broke = 0;
94 fra.me.REG_size = 1;
95 fra.me.REG[0] = NIT_NULL;
96 fra.me.REG[0] = p0;
97 /* ./syntax//typing.nit:50 */
98 fra.me.REG[0] = ATTR_typing___TypingVisitor____flow_ctx(fra.me.REG[0]);
99 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
100 if (UNTAG_Bool(REGB0)) {
101 } else {
102 nit_abort("Cast failed", NULL, LOCATE_typing, 50);
103 }
104 goto label1;
105 label1: while(0);
106 stack_frame_head = fra.me.prev;
107 return fra.me.REG[0];
108 }
109 void typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
110 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
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 = 51;
115 fra.me.meth = LOCATE_typing___TypingVisitor___flow_ctx__eq;
116 fra.me.has_broke = 0;
117 fra.me.REG_size = 2;
118 fra.me.REG[0] = NIT_NULL;
119 fra.me.REG[1] = NIT_NULL;
120 fra.me.REG[0] = p0;
121 fra.me.REG[1] = p1;
122 /* ./syntax//typing.nit:51 */
123 ATTR_typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
124 stack_frame_head = fra.me.prev;
125 return;
126 }
127 void typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
128 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
129 val_t REGB0;
130 val_t tmp;
131 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
132 fra.me.file = LOCATE_typing;
133 fra.me.line = 53;
134 fra.me.meth = LOCATE_typing___TypingVisitor___mark_is_set;
135 fra.me.has_broke = 0;
136 fra.me.REG_size = 3;
137 fra.me.REG[0] = NIT_NULL;
138 fra.me.REG[1] = NIT_NULL;
139 fra.me.REG[2] = NIT_NULL;
140 fra.me.REG[0] = p0;
141 fra.me.REG[1] = p1;
142 /* ./syntax//typing.nit:56 */
143 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
144 REGB0 = CALL_flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
145 if (UNTAG_Bool(REGB0)) {
146 goto label1;
147 }
148 /* ./syntax//typing.nit:57 */
149 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
150 fra.me.REG[1] = CALL_flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
151 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
152 label1: while(0);
153 stack_frame_head = fra.me.prev;
154 return;
155 }
156 void typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
157 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
158 val_t tmp;
159 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
160 fra.me.file = LOCATE_typing;
161 fra.me.line = 60;
162 fra.me.meth = LOCATE_typing___TypingVisitor___mark_unreash;
163 fra.me.has_broke = 0;
164 fra.me.REG_size = 3;
165 fra.me.REG[0] = NIT_NULL;
166 fra.me.REG[1] = NIT_NULL;
167 fra.me.REG[2] = NIT_NULL;
168 fra.me.REG[0] = p0;
169 fra.me.REG[1] = p1;
170 /* ./syntax//typing.nit:63 */
171 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
172 fra.me.REG[1] = CALL_flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
173 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
174 stack_frame_head = fra.me.prev;
175 return;
176 }
177 void typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
178 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
179 val_t REGB0;
180 val_t REGB1;
181 val_t tmp;
182 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
183 fra.me.file = LOCATE_typing;
184 fra.me.line = 66;
185 fra.me.meth = LOCATE_typing___TypingVisitor___enter_visit_block;
186 fra.me.has_broke = 0;
187 fra.me.REG_size = 3;
188 fra.me.REG[0] = NIT_NULL;
189 fra.me.REG[1] = NIT_NULL;
190 fra.me.REG[2] = NIT_NULL;
191 fra.me.REG[0] = p0;
192 fra.me.REG[1] = p1;
193 /* ./syntax//typing.nit:69 */
194 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
195 if (UNTAG_Bool(REGB0)) {
196 } else {
197 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
198 if (UNTAG_Bool(REGB1)) {
199 REGB1 = TAG_Bool(false);
200 REGB0 = REGB1;
201 } else {
202 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
203 REGB0 = REGB1;
204 }
205 }
206 if (UNTAG_Bool(REGB0)) {
207 goto label1;
208 }
209 /* ./syntax//typing.nit:70 */
210 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
211 CALL_scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
212 /* ./syntax//typing.nit:71 */
213 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
214 /* ./syntax//typing.nit:72 */
215 fra.me.REG[0] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
216 CALL_scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
217 label1: while(0);
218 stack_frame_head = fra.me.prev;
219 return;
220 }
221 val_t typing___TypingVisitor___base_flow_ctx(val_t p0){
222 struct {struct stack_frame_t me;} fra;
223 val_t REGB0;
224 val_t tmp;
225 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
226 fra.me.file = LOCATE_typing;
227 fra.me.line = 75;
228 fra.me.meth = LOCATE_typing___TypingVisitor___base_flow_ctx;
229 fra.me.has_broke = 0;
230 fra.me.REG_size = 1;
231 fra.me.REG[0] = NIT_NULL;
232 fra.me.REG[0] = p0;
233 /* ./syntax//typing.nit:76 */
234 fra.me.REG[0] = ATTR_typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]);
235 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
236 if (UNTAG_Bool(REGB0)) {
237 } else {
238 nit_abort("Cast failed", NULL, LOCATE_typing, 76);
239 }
240 goto label1;
241 label1: while(0);
242 stack_frame_head = fra.me.prev;
243 return fra.me.REG[0];
244 }
245 void typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
246 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
247 val_t tmp;
248 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
249 fra.me.file = LOCATE_typing;
250 fra.me.line = 77;
251 fra.me.meth = LOCATE_typing___TypingVisitor___base_flow_ctx__eq;
252 fra.me.has_broke = 0;
253 fra.me.REG_size = 2;
254 fra.me.REG[0] = NIT_NULL;
255 fra.me.REG[1] = NIT_NULL;
256 fra.me.REG[0] = p0;
257 fra.me.REG[1] = p1;
258 /* ./syntax//typing.nit:77 */
259 ATTR_typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
260 stack_frame_head = fra.me.prev;
261 return;
262 }
263 val_t typing___TypingVisitor___self_var(val_t p0){
264 struct {struct stack_frame_t me;} fra;
265 val_t REGB0;
266 val_t tmp;
267 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
268 fra.me.file = LOCATE_typing;
269 fra.me.line = 79;
270 fra.me.meth = LOCATE_typing___TypingVisitor___self_var;
271 fra.me.has_broke = 0;
272 fra.me.REG_size = 1;
273 fra.me.REG[0] = NIT_NULL;
274 fra.me.REG[0] = p0;
275 /* ./syntax//typing.nit:80 */
276 fra.me.REG[0] = ATTR_typing___TypingVisitor____self_var(fra.me.REG[0]);
277 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
278 if (UNTAG_Bool(REGB0)) {
279 } else {
280 nit_abort("Cast failed", NULL, LOCATE_typing, 80);
281 }
282 goto label1;
283 label1: while(0);
284 stack_frame_head = fra.me.prev;
285 return fra.me.REG[0];
286 }
287 void typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
288 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
289 val_t tmp;
290 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
291 fra.me.file = LOCATE_typing;
292 fra.me.line = 81;
293 fra.me.meth = LOCATE_typing___TypingVisitor___self_var__eq;
294 fra.me.has_broke = 0;
295 fra.me.REG_size = 2;
296 fra.me.REG[0] = NIT_NULL;
297 fra.me.REG[1] = NIT_NULL;
298 fra.me.REG[0] = p0;
299 fra.me.REG[1] = p1;
300 /* ./syntax//typing.nit:81 */
301 ATTR_typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
302 stack_frame_head = fra.me.prev;
303 return;
304 }
305 val_t typing___TypingVisitor___top_block(val_t p0){
306 struct {struct stack_frame_t me;} fra;
307 val_t tmp;
308 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
309 fra.me.file = LOCATE_typing;
310 fra.me.line = 83;
311 fra.me.meth = LOCATE_typing___TypingVisitor___top_block;
312 fra.me.has_broke = 0;
313 fra.me.REG_size = 1;
314 fra.me.REG[0] = NIT_NULL;
315 fra.me.REG[0] = p0;
316 /* ./syntax//typing.nit:83 */
317 fra.me.REG[0] = ATTR_typing___TypingVisitor____top_block(fra.me.REG[0]);
318 stack_frame_head = fra.me.prev;
319 return fra.me.REG[0];
320 }
321 void typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
322 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
323 val_t tmp;
324 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
325 fra.me.file = LOCATE_typing;
326 fra.me.line = 83;
327 fra.me.meth = LOCATE_typing___TypingVisitor___top_block__eq;
328 fra.me.has_broke = 0;
329 fra.me.REG_size = 2;
330 fra.me.REG[0] = NIT_NULL;
331 fra.me.REG[1] = NIT_NULL;
332 fra.me.REG[0] = p0;
333 fra.me.REG[1] = p1;
334 /* ./syntax//typing.nit:83 */
335 ATTR_typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
336 stack_frame_head = fra.me.prev;
337 return;
338 }
339 val_t typing___TypingVisitor___explicit_super_init_calls(val_t p0){
340 struct {struct stack_frame_t me;} fra;
341 val_t tmp;
342 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
343 fra.me.file = LOCATE_typing;
344 fra.me.line = 86;
345 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_super_init_calls;
346 fra.me.has_broke = 0;
347 fra.me.REG_size = 1;
348 fra.me.REG[0] = NIT_NULL;
349 fra.me.REG[0] = p0;
350 /* ./syntax//typing.nit:86 */
351 fra.me.REG[0] = ATTR_typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
352 stack_frame_head = fra.me.prev;
353 return fra.me.REG[0];
354 }
355 void typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
356 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
357 val_t tmp;
358 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
359 fra.me.file = LOCATE_typing;
360 fra.me.line = 86;
361 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_super_init_calls__eq;
362 fra.me.has_broke = 0;
363 fra.me.REG_size = 2;
364 fra.me.REG[0] = NIT_NULL;
365 fra.me.REG[1] = NIT_NULL;
366 fra.me.REG[0] = p0;
367 fra.me.REG[1] = p1;
368 /* ./syntax//typing.nit:86 */
369 ATTR_typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
370 stack_frame_head = fra.me.prev;
371 return;
372 }
373 val_t typing___TypingVisitor___explicit_other_init_call(val_t p0){
374 struct {struct stack_frame_t me;} fra;
375 val_t REGB0;
376 val_t tmp;
377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
378 fra.me.file = LOCATE_typing;
379 fra.me.line = 89;
380 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_other_init_call;
381 fra.me.has_broke = 0;
382 fra.me.REG_size = 1;
383 fra.me.REG[0] = NIT_NULL;
384 fra.me.REG[0] = p0;
385 /* ./syntax//typing.nit:89 */
386 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
387 if (UNTAG_Bool(REGB0)) {
388 } else {
389 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_typing, 89);
390 }
391 REGB0 = ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
392 stack_frame_head = fra.me.prev;
393 return REGB0;
394 }
395 void typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
396 struct {struct stack_frame_t me;} fra;
397 val_t REGB0;
398 val_t tmp;
399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
400 fra.me.file = LOCATE_typing;
401 fra.me.line = 89;
402 fra.me.meth = LOCATE_typing___TypingVisitor___explicit_other_init_call__eq;
403 fra.me.has_broke = 0;
404 fra.me.REG_size = 1;
405 fra.me.REG[0] = NIT_NULL;
406 fra.me.REG[0] = p0;
407 REGB0 = p1;
408 /* ./syntax//typing.nit:89 */
409 ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
410 stack_frame_head = fra.me.prev;
411 return;
412 }
413 void typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
414 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
415 val_t REGB0;
416 val_t REGB1;
417 val_t tmp;
418 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
419 fra.me.file = LOCATE_typing;
420 fra.me.line = 92;
421 fra.me.meth = LOCATE_typing___TypingVisitor___use_if_true_flow_ctx;
422 fra.me.has_broke = 0;
423 fra.me.REG_size = 2;
424 fra.me.REG[0] = NIT_NULL;
425 fra.me.REG[1] = NIT_NULL;
426 fra.me.REG[0] = p0;
427 fra.me.REG[1] = p1;
428 /* ./syntax//typing.nit:95 */
429 fra.me.REG[1] = CALL_typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
430 /* ./syntax//typing.nit:96 */
431 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
432 if (UNTAG_Bool(REGB0)) {
433 } else {
434 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
435 if (UNTAG_Bool(REGB1)) {
436 REGB1 = TAG_Bool(false);
437 REGB0 = REGB1;
438 } else {
439 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
440 REGB0 = REGB1;
441 }
442 }
443 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
444 if (UNTAG_Bool(REGB0)) {
445 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
446 }
447 stack_frame_head = fra.me.prev;
448 return;
449 }
450 void typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
451 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
452 val_t REGB0;
453 val_t REGB1;
454 val_t tmp;
455 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
456 fra.me.file = LOCATE_typing;
457 fra.me.line = 99;
458 fra.me.meth = LOCATE_typing___TypingVisitor___use_if_false_flow_ctx;
459 fra.me.has_broke = 0;
460 fra.me.REG_size = 2;
461 fra.me.REG[0] = NIT_NULL;
462 fra.me.REG[1] = NIT_NULL;
463 fra.me.REG[0] = p0;
464 fra.me.REG[1] = p1;
465 /* ./syntax//typing.nit:102 */
466 fra.me.REG[1] = CALL_typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
467 /* ./syntax//typing.nit:103 */
468 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
469 if (UNTAG_Bool(REGB0)) {
470 } else {
471 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
472 if (UNTAG_Bool(REGB1)) {
473 REGB1 = TAG_Bool(false);
474 REGB0 = REGB1;
475 } else {
476 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
477 REGB0 = REGB1;
478 }
479 }
480 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
481 if (UNTAG_Bool(REGB0)) {
482 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
483 }
484 stack_frame_head = fra.me.prev;
485 return;
486 }
487 val_t typing___TypingVisitor___is_default_closure_definition(val_t p0){
488 struct {struct stack_frame_t me;} fra;
489 val_t REGB0;
490 val_t tmp;
491 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
492 fra.me.file = LOCATE_typing;
493 fra.me.line = 106;
494 fra.me.meth = LOCATE_typing___TypingVisitor___is_default_closure_definition;
495 fra.me.has_broke = 0;
496 fra.me.REG_size = 1;
497 fra.me.REG[0] = NIT_NULL;
498 fra.me.REG[0] = p0;
499 /* ./syntax//typing.nit:106 */
500 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
501 if (UNTAG_Bool(REGB0)) {
502 } else {
503 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_typing, 106);
504 }
505 REGB0 = ATTR_typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
506 stack_frame_head = fra.me.prev;
507 return REGB0;
508 }
509 void typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
510 struct {struct stack_frame_t me;} fra;
511 val_t REGB0;
512 val_t tmp;
513 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
514 fra.me.file = LOCATE_typing;
515 fra.me.line = 106;
516 fra.me.meth = LOCATE_typing___TypingVisitor___is_default_closure_definition__eq;
517 fra.me.has_broke = 0;
518 fra.me.REG_size = 1;
519 fra.me.REG[0] = NIT_NULL;
520 fra.me.REG[0] = p0;
521 REGB0 = p1;
522 /* ./syntax//typing.nit:106 */
523 ATTR_typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
524 stack_frame_head = fra.me.prev;
525 return;
526 }
527 val_t typing___TypingVisitor___once_count(val_t p0){
528 struct {struct stack_frame_t me;} fra;
529 val_t REGB0;
530 val_t tmp;
531 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
532 fra.me.file = LOCATE_typing;
533 fra.me.line = 109;
534 fra.me.meth = LOCATE_typing___TypingVisitor___once_count;
535 fra.me.has_broke = 0;
536 fra.me.REG_size = 1;
537 fra.me.REG[0] = NIT_NULL;
538 fra.me.REG[0] = p0;
539 /* ./syntax//typing.nit:109 */
540 REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
541 if (UNTAG_Bool(REGB0)) {
542 } else {
543 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_typing, 109);
544 }
545 REGB0 = ATTR_typing___TypingVisitor____once_count(fra.me.REG[0]);
546 stack_frame_head = fra.me.prev;
547 return REGB0;
548 }
549 void typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
550 struct {struct stack_frame_t me;} fra;
551 val_t REGB0;
552 val_t tmp;
553 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
554 fra.me.file = LOCATE_typing;
555 fra.me.line = 109;
556 fra.me.meth = LOCATE_typing___TypingVisitor___once_count__eq;
557 fra.me.has_broke = 0;
558 fra.me.REG_size = 1;
559 fra.me.REG[0] = NIT_NULL;
560 fra.me.REG[0] = p0;
561 REGB0 = p1;
562 /* ./syntax//typing.nit:109 */
563 ATTR_typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
564 stack_frame_head = fra.me.prev;
565 return;
566 }
567 void typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
568 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_TypingVisitor].i;
569 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
570 val_t tmp;
571 if (init_table[itpos0]) return;
572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
573 fra.me.file = LOCATE_typing;
574 fra.me.line = 112;
575 fra.me.meth = LOCATE_typing___TypingVisitor___init;
576 fra.me.has_broke = 0;
577 fra.me.REG_size = 3;
578 fra.me.REG[0] = NIT_NULL;
579 fra.me.REG[1] = NIT_NULL;
580 fra.me.REG[2] = NIT_NULL;
581 fra.me.REG[0] = p0;
582 fra.me.REG[1] = p1;
583 fra.me.REG[2] = p2;
584 /* ./syntax//typing.nit:112 */
585 CALL_syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
586 stack_frame_head = fra.me.prev;
587 init_table[itpos0] = 1;
588 return;
589 }
590 val_t typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
591 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
592 val_t REGB0;
593 val_t REGB1;
594 val_t REGB2;
595 val_t tmp;
596 static val_t once_value_6; /* Once value */
597 static val_t once_value_7; /* Once value */
598 static val_t once_value_8; /* Once value */
599 static val_t once_value_10; /* Once value */
600 static val_t once_value_11; /* Once value */
601 static val_t once_value_12; /* Once value */
602 static val_t once_value_13; /* Once value */
603 static val_t once_value_14; /* Once value */
604 static val_t once_value_15; /* Once value */
605 static val_t once_value_16; /* Once value */
606 static val_t once_value_18; /* Once value */
607 static val_t once_value_19; /* Once value */
608 static val_t once_value_20; /* Once value */
609 static val_t once_value_21; /* Once value */
610 static val_t once_value_22; /* Once value */
611 static val_t once_value_23; /* Once value */
612 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
613 fra.me.file = LOCATE_typing;
614 fra.me.line = 114;
615 fra.me.meth = LOCATE_typing___TypingVisitor___get_default_constructor_for;
616 fra.me.has_broke = 0;
617 fra.me.REG_size = 11;
618 fra.me.REG[0] = NIT_NULL;
619 fra.me.REG[1] = NIT_NULL;
620 fra.me.REG[2] = NIT_NULL;
621 fra.me.REG[3] = NIT_NULL;
622 fra.me.REG[4] = NIT_NULL;
623 fra.me.REG[5] = NIT_NULL;
624 fra.me.REG[6] = NIT_NULL;
625 fra.me.REG[7] = NIT_NULL;
626 fra.me.REG[8] = NIT_NULL;
627 fra.me.REG[9] = NIT_NULL;
628 fra.me.REG[10] = NIT_NULL;
629 fra.me.REG[0] = p0;
630 fra.me.REG[1] = p1;
631 fra.me.REG[2] = p2;
632 fra.me.REG[3] = p3;
633 /* ./syntax//typing.nit:119 */
634 fra.me.REG[4] = NEW_Array_array___Array___init();
635 /* ./syntax//typing.nit:120 */
636 fra.me.REG[5] = NEW_Array_array___Array___init();
637 /* ./syntax//typing.nit:121 */
638 fra.me.REG[6] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
639 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
640 if (UNTAG_Bool(REGB0)) {
641 nit_abort("Reciever is null", NULL, LOCATE_typing, 121);
642 }
643 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
644 fra.me.REG[6] = REGB0;
645 /* ./syntax//typing.nit:122 */
646 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
647 CALL_abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_typing___TypingVisitor___get_default_constructor_for_1));
648 switch ((&(fra.me))->has_broke) {
649 case 0: break;
650 case 1: (&(fra.me))->has_broke = 0; goto label5;
651 }
652 /* ./../lib/standard//collection//array.nit:23 */
653 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
654 if (UNTAG_Bool(REGB0)) {
655 } else {
656 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
657 }
658 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
659 /* ./syntax//typing.nit:141 */
660 REGB1 = TAG_Int(1);
661 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
662 if (UNTAG_Bool(REGB2)) {
663 } else {
664 /* ./../lib/standard//kernel.nit:207 */
665 REGB1 = TAG_Bool((REGB0)==(REGB1));
666 /* ./syntax//typing.nit:141 */
667 REGB2 = REGB1;
668 }
669 if (UNTAG_Bool(REGB2)) {
670 /* ./syntax//typing.nit:142 */
671 fra.me.REG[3] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
672 fra.me.REG[7] = fra.me.REG[3];
673 goto label5;
674 } else {
675 /* ./../lib/standard//collection//array.nit:23 */
676 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
677 if (UNTAG_Bool(REGB2)) {
678 } else {
679 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
680 }
681 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
682 /* ./syntax//typing.nit:143 */
683 REGB1 = TAG_Int(0);
684 /* ./../lib/standard//kernel.nit:214 */
685 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
686 /* ./syntax//typing.nit:143 */
687 if (UNTAG_Bool(REGB1)) {
688 /* ./syntax//typing.nit:144 */
689 fra.me.REG[3] = NEW_Array_array___Array___init();
690 /* ./../lib/standard//collection//array.nit:234 */
691 REGB1 = TAG_Int(0);
692 /* ./../lib/standard//collection//array.nit:235 */
693 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
694 if (UNTAG_Bool(REGB2)) {
695 } else {
696 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
697 }
698 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
699 /* ./../lib/standard//collection//array.nit:236 */
700 fra.me.REG[6] = ATTR_array___Array____items(fra.me.REG[4]);
701 /* ./../lib/standard//collection//array.nit:237 */
702 while(1) {
703 /* ./../lib/standard//collection//array.nit:23 */
704 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
705 if (UNTAG_Bool(REGB2)) {
706 } else {
707 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
708 }
709 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
710 /* ./../lib/standard//kernel.nit:212 */
711 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
712 /* ./../lib/standard//collection//array.nit:237 */
713 if (UNTAG_Bool(REGB2)) {
714 /* ./../lib/standard//collection//array.nit:238 */
715 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
716 if (UNTAG_Bool(REGB2)) {
717 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
718 }
719 /* ./../lib/standard//collection//array.nit:654 */
720 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
721 /* ./syntax//typing.nit:146 */
722 REGB2 = TAG_Int(5);
723 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB2);
724 if (!once_value_6) {
725 fra.me.REG[10] = BOX_NativeString("");
726 REGB2 = TAG_Int(0);
727 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB2);
728 once_value_6 = fra.me.REG[10];
729 register_static_object(&once_value_6);
730 } else fra.me.REG[10] = once_value_6;
731 fra.me.REG[10] = fra.me.REG[10];
732 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
733 fra.me.REG[10] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[8])(fra.me.REG[8]);
734 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
735 if (!once_value_7) {
736 fra.me.REG[10] = BOX_NativeString("");
737 REGB2 = TAG_Int(0);
738 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB2);
739 once_value_7 = fra.me.REG[10];
740 register_static_object(&once_value_7);
741 } else fra.me.REG[10] = once_value_7;
742 fra.me.REG[10] = fra.me.REG[10];
743 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
744 fra.me.REG[8] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
745 REGB2 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_MMSignature, ID_MMSignature)) /*cast MMSignature*/;
746 if (UNTAG_Bool(REGB2)) {
747 } else {
748 nit_abort("Cast failed", NULL, LOCATE_typing, 146);
749 }
750 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
751 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
752 if (!once_value_8) {
753 fra.me.REG[8] = BOX_NativeString("");
754 REGB2 = TAG_Int(0);
755 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
756 once_value_8 = fra.me.REG[8];
757 register_static_object(&once_value_8);
758 } else fra.me.REG[8] = once_value_8;
759 fra.me.REG[8] = fra.me.REG[8];
760 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
761 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
762 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
763 /* ./../lib/standard//collection//array.nit:239 */
764 REGB2 = TAG_Int(1);
765 /* ./../lib/standard//kernel.nit:215 */
766 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
767 /* ./../lib/standard//collection//array.nit:239 */
768 REGB1 = REGB2;
769 } else {
770 /* ./../lib/standard//collection//array.nit:237 */
771 goto label9;
772 }
773 }
774 label9: while(0);
775 /* ./syntax//typing.nit:148 */
776 REGB1 = TAG_Int(5);
777 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB1);
778 if (!once_value_10) {
779 fra.me.REG[4] = BOX_NativeString("Error: Conflicting default constructor to call for ");
780 REGB1 = TAG_Int(51);
781 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
782 once_value_10 = fra.me.REG[4];
783 register_static_object(&once_value_10);
784 } else fra.me.REG[4] = once_value_10;
785 fra.me.REG[4] = fra.me.REG[4];
786 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
787 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
788 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
789 if (!once_value_11) {
790 fra.me.REG[4] = BOX_NativeString(": ");
791 REGB1 = TAG_Int(2);
792 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
793 once_value_11 = fra.me.REG[4];
794 register_static_object(&once_value_11);
795 } else fra.me.REG[4] = once_value_11;
796 fra.me.REG[4] = fra.me.REG[4];
797 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
798 if (!once_value_12) {
799 fra.me.REG[4] = BOX_NativeString(", ");
800 REGB1 = TAG_Int(2);
801 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
802 once_value_12 = fra.me.REG[4];
803 register_static_object(&once_value_12);
804 } else fra.me.REG[4] = once_value_12;
805 fra.me.REG[4] = fra.me.REG[4];
806 fra.me.REG[4] = CALL_string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
807 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
808 if (!once_value_13) {
809 fra.me.REG[4] = BOX_NativeString(".");
810 REGB1 = TAG_Int(1);
811 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
812 once_value_13 = fra.me.REG[4];
813 register_static_object(&once_value_13);
814 } else fra.me.REG[4] = once_value_13;
815 fra.me.REG[4] = fra.me.REG[4];
816 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
817 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
818 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[6]);
819 /* ./syntax//typing.nit:149 */
820 fra.me.REG[7] = NIT_NULL;
821 goto label5;
822 } else {
823 /* ./../lib/standard//collection//array.nit:23 */
824 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
825 if (UNTAG_Bool(REGB1)) {
826 } else {
827 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
828 }
829 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
830 /* ./syntax//typing.nit:150 */
831 REGB2 = TAG_Int(0);
832 /* ./../lib/standard//kernel.nit:214 */
833 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
834 /* ./syntax//typing.nit:150 */
835 if (UNTAG_Bool(REGB2)) {
836 /* ./syntax//typing.nit:151 */
837 fra.me.REG[6] = NEW_Array_array___Array___init();
838 /* ./../lib/standard//collection//array.nit:234 */
839 REGB2 = TAG_Int(0);
840 /* ./../lib/standard//collection//array.nit:235 */
841 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
842 if (UNTAG_Bool(REGB1)) {
843 } else {
844 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
845 }
846 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
847 /* ./../lib/standard//collection//array.nit:236 */
848 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[5]);
849 /* ./../lib/standard//collection//array.nit:237 */
850 while(1) {
851 /* ./../lib/standard//collection//array.nit:23 */
852 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
853 if (UNTAG_Bool(REGB1)) {
854 } else {
855 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
856 }
857 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
858 /* ./../lib/standard//kernel.nit:212 */
859 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
860 /* ./../lib/standard//collection//array.nit:237 */
861 if (UNTAG_Bool(REGB1)) {
862 /* ./../lib/standard//collection//array.nit:238 */
863 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
864 if (UNTAG_Bool(REGB1)) {
865 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
866 }
867 /* ./../lib/standard//collection//array.nit:654 */
868 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
869 /* ./syntax//typing.nit:153 */
870 REGB1 = TAG_Int(5);
871 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
872 if (!once_value_14) {
873 fra.me.REG[8] = BOX_NativeString("");
874 REGB1 = TAG_Int(0);
875 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
876 once_value_14 = fra.me.REG[8];
877 register_static_object(&once_value_14);
878 } else fra.me.REG[8] = once_value_14;
879 fra.me.REG[8] = fra.me.REG[8];
880 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
881 fra.me.REG[8] = CALL_abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
882 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
883 if (!once_value_15) {
884 fra.me.REG[8] = BOX_NativeString("");
885 REGB1 = TAG_Int(0);
886 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
887 once_value_15 = fra.me.REG[8];
888 register_static_object(&once_value_15);
889 } else fra.me.REG[8] = once_value_15;
890 fra.me.REG[8] = fra.me.REG[8];
891 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
892 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
893 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMSignature, ID_MMSignature)) /*cast MMSignature*/;
894 if (UNTAG_Bool(REGB1)) {
895 } else {
896 nit_abort("Cast failed", NULL, LOCATE_typing, 153);
897 }
898 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
899 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
900 if (!once_value_16) {
901 fra.me.REG[3] = BOX_NativeString("");
902 REGB1 = TAG_Int(0);
903 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
904 once_value_16 = fra.me.REG[3];
905 register_static_object(&once_value_16);
906 } else fra.me.REG[3] = once_value_16;
907 fra.me.REG[3] = fra.me.REG[3];
908 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
909 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
910 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
911 /* ./../lib/standard//collection//array.nit:239 */
912 REGB1 = TAG_Int(1);
913 /* ./../lib/standard//kernel.nit:215 */
914 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
915 /* ./../lib/standard//collection//array.nit:239 */
916 REGB2 = REGB1;
917 } else {
918 /* ./../lib/standard//collection//array.nit:237 */
919 goto label17;
920 }
921 }
922 label17: while(0);
923 /* ./syntax//typing.nit:155 */
924 REGB2 = TAG_Int(5);
925 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
926 if (!once_value_18) {
927 fra.me.REG[5] = BOX_NativeString("Error: there is no available compatible constrctor in ");
928 REGB2 = TAG_Int(54);
929 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
930 once_value_18 = fra.me.REG[5];
931 register_static_object(&once_value_18);
932 } else fra.me.REG[5] = once_value_18;
933 fra.me.REG[5] = fra.me.REG[5];
934 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
935 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
936 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
937 if (!once_value_19) {
938 fra.me.REG[5] = BOX_NativeString(". Discarded candidates are ");
939 REGB2 = TAG_Int(27);
940 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
941 once_value_19 = fra.me.REG[5];
942 register_static_object(&once_value_19);
943 } else fra.me.REG[5] = once_value_19;
944 fra.me.REG[5] = fra.me.REG[5];
945 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
946 if (!once_value_20) {
947 fra.me.REG[5] = BOX_NativeString(", ");
948 REGB2 = TAG_Int(2);
949 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
950 once_value_20 = fra.me.REG[5];
951 register_static_object(&once_value_20);
952 } else fra.me.REG[5] = once_value_20;
953 fra.me.REG[5] = fra.me.REG[5];
954 fra.me.REG[5] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
955 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
956 if (!once_value_21) {
957 fra.me.REG[5] = BOX_NativeString(".");
958 REGB2 = TAG_Int(1);
959 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
960 once_value_21 = fra.me.REG[5];
961 register_static_object(&once_value_21);
962 } else fra.me.REG[5] = once_value_21;
963 fra.me.REG[5] = fra.me.REG[5];
964 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
965 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
966 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
967 /* ./syntax//typing.nit:156 */
968 fra.me.REG[7] = NIT_NULL;
969 goto label5;
970 } else {
971 /* ./syntax//typing.nit:158 */
972 REGB2 = TAG_Int(3);
973 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
974 if (!once_value_22) {
975 fra.me.REG[5] = BOX_NativeString("Error: there is no available compatible constrctor in ");
976 REGB2 = TAG_Int(54);
977 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
978 once_value_22 = fra.me.REG[5];
979 register_static_object(&once_value_22);
980 } else fra.me.REG[5] = once_value_22;
981 fra.me.REG[5] = fra.me.REG[5];
982 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
983 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
984 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
985 if (!once_value_23) {
986 fra.me.REG[2] = BOX_NativeString(".");
987 REGB2 = TAG_Int(1);
988 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB2);
989 once_value_23 = fra.me.REG[2];
990 register_static_object(&once_value_23);
991 } else fra.me.REG[2] = once_value_23;
992 fra.me.REG[2] = fra.me.REG[2];
993 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
994 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
995 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
996 /* ./syntax//typing.nit:159 */
997 fra.me.REG[7] = NIT_NULL;
998 goto label5;
999 }
1000 }
1001 }
1002 label5: while(0);
1003 stack_frame_head = fra.me.prev;
1004 return fra.me.REG[7];
1005 }
1006 void OC_typing___TypingVisitor___get_default_constructor_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1007 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1008 val_t REGB0;
1009 val_t REGB1;
1010 val_t REGB2;
1011 val_t REGB3;
1012 fun_t CREG[1];
1013 val_t tmp;
1014 static val_t once_value_3; /* Once value */
1015 static val_t once_value_4; /* Once value */
1016 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1017 fra.me.file = LOCATE_typing;
1018 fra.me.line = 0;
1019 fra.me.meth = LOCATE_typing___TypingVisitor___get_default_constructor_for;
1020 fra.me.has_broke = 0;
1021 fra.me.REG_size = 4;
1022 fra.me.REG[0] = NIT_NULL;
1023 fra.me.REG[1] = NIT_NULL;
1024 fra.me.REG[2] = NIT_NULL;
1025 fra.me.REG[3] = NIT_NULL;
1026 fra.me.closure_ctx = closctx_param;
1027 fra.me.closure_funs = CREG;
1028 fra.me.REG[0] = p0;
1029 CREG[0] = clos_fun0;
1030 /* ./syntax//typing.nit:123 */
1031 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1032 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1033 if (UNTAG_Bool(REGB0)) {
1034 goto label2;
1035 }
1036 /* ./syntax//typing.nit:124 */
1037 fra.me.REG[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1038 /* ./syntax//typing.nit:125 */
1039 fra.me.REG[1] = CALL_static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1040 fra.me.REG[1] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1041 /* ./syntax//typing.nit:126 */
1042 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
1043 if (UNTAG_Bool(REGB0)) {
1044 } else {
1045 nit_abort("Assert failed", NULL, LOCATE_typing, 126);
1046 }
1047 /* ./syntax//typing.nit:127 */
1048 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1049 /* ./syntax//typing.nit:128 */
1050 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1051 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1052 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1053 if (UNTAG_Bool(REGB1)) {
1054 } else {
1055 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1056 REGB1 = REGB2;
1057 }
1058 if (UNTAG_Bool(REGB1)) {
1059 /* ./syntax//typing.nit:129 */
1060 REGB1 = TAG_Int(0);
1061 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1062 if (UNTAG_Bool(REGB2)) {
1063 } else {
1064 /* ./../lib/standard//kernel.nit:207 */
1065 REGB1 = TAG_Bool((REGB0)==(REGB1));
1066 /* ./syntax//typing.nit:129 */
1067 REGB2 = REGB1;
1068 }
1069 if (UNTAG_Bool(REGB2)) {
1070 REGB2 = TAG_Bool(true);
1071 } else {
1072 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[6],REGB0));
1073 if (UNTAG_Bool(REGB1)) {
1074 } else {
1075 /* ./../lib/standard//kernel.nit:207 */
1076 REGB3 = TAG_Bool((closctx->REG[6])==(REGB0));
1077 /* ./syntax//typing.nit:129 */
1078 REGB1 = REGB3;
1079 }
1080 if (UNTAG_Bool(REGB1)) {
1081 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1082 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1083 if (UNTAG_Bool(REGB1)) {
1084 nit_abort("Reciever is null", NULL, LOCATE_typing, 129);
1085 }
1086 REGB1 = CALL_static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1087 } else {
1088 REGB3 = TAG_Bool(false);
1089 REGB1 = REGB3;
1090 }
1091 REGB2 = REGB1;
1092 }
1093 if (UNTAG_Bool(REGB2)) {
1094 /* ./syntax//typing.nit:130 */
1095 closctx->REG[7] = fra.me.REG[0];
1096 closctx->has_broke = 1;
1097 goto label2;
1098 } else {
1099 /* ./syntax//typing.nit:132 */
1100 CALL_abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
1101 }
1102 } else {
1103 /* ./syntax//typing.nit:134 */
1104 REGB2 = TAG_Int(0);
1105 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1106 if (UNTAG_Bool(REGB1)) {
1107 } else {
1108 /* ./../lib/standard//kernel.nit:207 */
1109 REGB2 = TAG_Bool((REGB0)==(REGB2));
1110 /* ./syntax//typing.nit:134 */
1111 REGB1 = REGB2;
1112 }
1113 if (UNTAG_Bool(REGB1)) {
1114 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1115 if (!once_value_3) {
1116 if (!once_value_4) {
1117 fra.me.REG[3] = BOX_NativeString("init");
1118 REGB1 = TAG_Int(4);
1119 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
1120 once_value_4 = fra.me.REG[3];
1121 register_static_object(&once_value_4);
1122 } else fra.me.REG[3] = once_value_4;
1123 fra.me.REG[3] = fra.me.REG[3];
1124 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1125 once_value_3 = fra.me.REG[3];
1126 register_static_object(&once_value_3);
1127 } else fra.me.REG[3] = once_value_3;
1128 fra.me.REG[3] = fra.me.REG[3];
1129 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1130 if (UNTAG_Bool(REGB1)) {
1131 } else {
1132 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1133 REGB1 = REGB2;
1134 }
1135 } else {
1136 REGB2 = TAG_Bool(false);
1137 REGB1 = REGB2;
1138 }
1139 if (UNTAG_Bool(REGB1)) {
1140 /* ./syntax//typing.nit:135 */
1141 CALL_abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
1142 /* ./syntax//typing.nit:136 */
1143 CALL_abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
1144 } else {
1145 /* ./syntax//typing.nit:138 */
1146 CALL_abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
1147 }
1148 }
1149 label2: while(0);
1150 stack_frame_head = fra.me.prev;
1151 return;
1152 }
1153 void typing___ANode___accept_typing(val_t p0, val_t p1){
1154 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1155 val_t tmp;
1156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1157 fra.me.file = LOCATE_typing;
1158 fra.me.line = 168;
1159 fra.me.meth = LOCATE_typing___ANode___accept_typing;
1160 fra.me.has_broke = 0;
1161 fra.me.REG_size = 2;
1162 fra.me.REG[0] = NIT_NULL;
1163 fra.me.REG[1] = NIT_NULL;
1164 fra.me.REG[0] = p0;
1165 fra.me.REG[1] = p1;
1166 /* ./syntax//typing.nit:170 */
1167 CALL_syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1168 /* ./syntax//typing.nit:171 */
1169 CALL_typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1170 stack_frame_head = fra.me.prev;
1171 return;
1172 }
1173 void typing___ANode___after_typing(val_t p0, val_t p1){
1174 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1175 val_t tmp;
1176 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1177 fra.me.file = LOCATE_typing;
1178 fra.me.line = 173;
1179 fra.me.meth = LOCATE_typing___ANode___after_typing;
1180 fra.me.has_broke = 0;
1181 fra.me.REG_size = 2;
1182 fra.me.REG[0] = NIT_NULL;
1183 fra.me.REG[1] = NIT_NULL;
1184 fra.me.REG[0] = p0;
1185 fra.me.REG[1] = p1;
1186 stack_frame_head = fra.me.prev;
1187 return;
1188 }
1189 void typing___AClassdef___accept_typing(val_t p0, val_t p1){
1190 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1191 val_t REGB0;
1192 val_t tmp;
1193 static val_t once_value_1; /* Once value */
1194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1195 fra.me.file = LOCATE_typing;
1196 fra.me.line = 177;
1197 fra.me.meth = LOCATE_typing___AClassdef___accept_typing;
1198 fra.me.has_broke = 0;
1199 fra.me.REG_size = 5;
1200 fra.me.REG[0] = NIT_NULL;
1201 fra.me.REG[1] = NIT_NULL;
1202 fra.me.REG[2] = NIT_NULL;
1203 fra.me.REG[3] = NIT_NULL;
1204 fra.me.REG[4] = NIT_NULL;
1205 fra.me.REG[0] = p0;
1206 fra.me.REG[1] = p1;
1207 /* ./syntax//typing.nit:177 */
1208 fra.me.REG[2] = fra.me.REG[0];
1209 fra.me.REG[3] = fra.me.REG[1];
1210 /* ./syntax//typing.nit:179 */
1211 if (!once_value_1) {
1212 fra.me.REG[4] = BOX_NativeString("self");
1213 REGB0 = TAG_Int(4);
1214 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
1215 once_value_1 = fra.me.REG[4];
1216 register_static_object(&once_value_1);
1217 } else fra.me.REG[4] = once_value_1;
1218 fra.me.REG[4] = fra.me.REG[4];
1219 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1220 fra.me.REG[4] = NEW_ParamVariable_syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1221 CALL_typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1222 /* ./syntax//typing.nit:180 */
1223 fra.me.REG[3] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1224 fra.me.REG[2] = CALL_syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1225 fra.me.REG[2] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1226 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1227 /* ./syntax//typing.nit:181 */
1228 CALL_SUPER_typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1229 stack_frame_head = fra.me.prev;
1230 return;
1231 }
1232 val_t typing___APropdef___self_var(val_t p0){
1233 struct {struct stack_frame_t me;} fra;
1234 val_t REGB0;
1235 val_t tmp;
1236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1237 fra.me.file = LOCATE_typing;
1238 fra.me.line = 186;
1239 fra.me.meth = LOCATE_typing___APropdef___self_var;
1240 fra.me.has_broke = 0;
1241 fra.me.REG_size = 1;
1242 fra.me.REG[0] = NIT_NULL;
1243 fra.me.REG[0] = p0;
1244 /* ./syntax//typing.nit:186 */
1245 fra.me.REG[0] = ATTR_typing___APropdef____self_var(fra.me.REG[0]);
1246 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1247 if (UNTAG_Bool(REGB0)) {
1248 } else {
1249 nit_abort("Cast failed", NULL, LOCATE_typing, 186);
1250 }
1251 goto label1;
1252 label1: while(0);
1253 stack_frame_head = fra.me.prev;
1254 return fra.me.REG[0];
1255 }
1256 void typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1257 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1258 val_t REGB0;
1259 val_t REGB1;
1260 val_t tmp;
1261 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1262 fra.me.file = LOCATE_typing;
1263 fra.me.line = 191;
1264 fra.me.meth = LOCATE_typing___AAttrPropdef___accept_typing;
1265 fra.me.has_broke = 0;
1266 fra.me.REG_size = 5;
1267 fra.me.REG[0] = NIT_NULL;
1268 fra.me.REG[1] = NIT_NULL;
1269 fra.me.REG[2] = NIT_NULL;
1270 fra.me.REG[3] = NIT_NULL;
1271 fra.me.REG[4] = NIT_NULL;
1272 fra.me.REG[0] = p0;
1273 fra.me.REG[1] = p1;
1274 /* ./syntax//typing.nit:191 */
1275 fra.me.REG[2] = fra.me.REG[0];
1276 fra.me.REG[3] = fra.me.REG[1];
1277 /* ./syntax//typing.nit:193 */
1278 fra.me.REG[4] = NEW_RootFlowContext_flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1279 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1280 /* ./syntax//typing.nit:194 */
1281 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1282 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1283 /* ./syntax//typing.nit:196 */
1284 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1285 CALL_scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1286 /* ./syntax//typing.nit:197 */
1287 fra.me.REG[4] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1288 ATTR_typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1289 /* ./syntax//typing.nit:198 */
1290 CALL_SUPER_typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1291 /* ./syntax//typing.nit:199 */
1292 fra.me.REG[1] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1293 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1294 if (UNTAG_Bool(REGB0)) {
1295 } else {
1296 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1297 if (UNTAG_Bool(REGB1)) {
1298 REGB1 = TAG_Bool(false);
1299 REGB0 = REGB1;
1300 } else {
1301 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1302 REGB0 = REGB1;
1303 }
1304 }
1305 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1306 if (UNTAG_Bool(REGB0)) {
1307 /* ./syntax//typing.nit:200 */
1308 fra.me.REG[1] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1309 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
1310 if (UNTAG_Bool(REGB0)) {
1311 } else {
1312 nit_abort("Cast failed", NULL, LOCATE_typing, 200);
1313 }
1314 fra.me.REG[2] = CALL_syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1315 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1316 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1317 if (UNTAG_Bool(REGB0)) {
1318 nit_abort("Reciever is null", NULL, LOCATE_typing, 200);
1319 }
1320 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1321 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMType, ID_MMType)) /*cast MMType*/;
1322 if (UNTAG_Bool(REGB0)) {
1323 } else {
1324 nit_abort("Cast failed", NULL, LOCATE_typing, 200);
1325 }
1326 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1327 }
1328 /* ./syntax//typing.nit:202 */
1329 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1330 CALL_scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1331 stack_frame_head = fra.me.prev;
1332 return;
1333 }
1334 void typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1335 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1336 val_t tmp;
1337 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1338 fra.me.file = LOCATE_typing;
1339 fra.me.line = 207;
1340 fra.me.meth = LOCATE_typing___AMethPropdef___accept_typing;
1341 fra.me.has_broke = 0;
1342 fra.me.REG_size = 5;
1343 fra.me.REG[0] = NIT_NULL;
1344 fra.me.REG[1] = NIT_NULL;
1345 fra.me.REG[2] = NIT_NULL;
1346 fra.me.REG[3] = NIT_NULL;
1347 fra.me.REG[4] = NIT_NULL;
1348 fra.me.REG[0] = p0;
1349 fra.me.REG[1] = p1;
1350 /* ./syntax//typing.nit:207 */
1351 fra.me.REG[2] = fra.me.REG[0];
1352 fra.me.REG[3] = fra.me.REG[1];
1353 /* ./syntax//typing.nit:209 */
1354 fra.me.REG[4] = NEW_RootFlowContext_flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1355 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1356 /* ./syntax//typing.nit:210 */
1357 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1358 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1359 /* ./syntax//typing.nit:212 */
1360 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1361 CALL_scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1362 /* ./syntax//typing.nit:213 */
1363 fra.me.REG[4] = CALL_typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1364 ATTR_typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1365 /* ./syntax//typing.nit:214 */
1366 CALL_SUPER_typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1367 /* ./syntax//typing.nit:215 */
1368 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1369 CALL_scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1370 stack_frame_head = fra.me.prev;
1371 return;
1372 }
1373 void typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1374 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1375 val_t REGB0;
1376 val_t REGB1;
1377 val_t tmp;
1378 static val_t once_value_1; /* Once value */
1379 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1380 fra.me.file = LOCATE_typing;
1381 fra.me.line = 220;
1382 fra.me.meth = LOCATE_typing___AConcreteMethPropdef___after_typing;
1383 fra.me.has_broke = 0;
1384 fra.me.REG_size = 4;
1385 fra.me.REG[0] = NIT_NULL;
1386 fra.me.REG[1] = NIT_NULL;
1387 fra.me.REG[2] = NIT_NULL;
1388 fra.me.REG[3] = NIT_NULL;
1389 fra.me.REG[0] = p0;
1390 fra.me.REG[1] = p1;
1391 /* ./syntax//typing.nit:220 */
1392 fra.me.REG[2] = fra.me.REG[0];
1393 fra.me.REG[3] = fra.me.REG[1];
1394 /* ./syntax//typing.nit:222 */
1395 CALL_SUPER_typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1396 /* ./syntax//typing.nit:223 */
1397 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1398 REGB0 = CALL_flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1399 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1400 if (UNTAG_Bool(REGB0)) {
1401 fra.me.REG[1] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1402 fra.me.REG[1] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1403 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1404 if (UNTAG_Bool(REGB0)) {
1405 nit_abort("Reciever is null", NULL, LOCATE_typing, 223);
1406 }
1407 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1408 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1409 if (UNTAG_Bool(REGB0)) {
1410 } else {
1411 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1412 if (UNTAG_Bool(REGB1)) {
1413 REGB1 = TAG_Bool(false);
1414 REGB0 = REGB1;
1415 } else {
1416 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1417 REGB0 = REGB1;
1418 }
1419 }
1420 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1421 } else {
1422 REGB1 = TAG_Bool(false);
1423 REGB0 = REGB1;
1424 }
1425 if (UNTAG_Bool(REGB0)) {
1426 /* ./syntax//typing.nit:224 */
1427 if (!once_value_1) {
1428 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1429 REGB0 = TAG_Int(78);
1430 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
1431 once_value_1 = fra.me.REG[1];
1432 register_static_object(&once_value_1);
1433 } else fra.me.REG[1] = once_value_1;
1434 fra.me.REG[1] = fra.me.REG[1];
1435 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1436 }
1437 stack_frame_head = fra.me.prev;
1438 return;
1439 }
1440 void typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1441 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1442 val_t REGB0;
1443 val_t tmp;
1444 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1445 fra.me.file = LOCATE_typing;
1446 fra.me.line = 230;
1447 fra.me.meth = LOCATE_typing___AConcreteInitPropdef___accept_typing;
1448 fra.me.has_broke = 0;
1449 fra.me.REG_size = 5;
1450 fra.me.REG[0] = NIT_NULL;
1451 fra.me.REG[1] = NIT_NULL;
1452 fra.me.REG[2] = NIT_NULL;
1453 fra.me.REG[3] = NIT_NULL;
1454 fra.me.REG[4] = NIT_NULL;
1455 fra.me.REG[0] = p0;
1456 fra.me.REG[1] = p1;
1457 /* ./syntax//typing.nit:230 */
1458 fra.me.REG[2] = fra.me.REG[0];
1459 fra.me.REG[3] = fra.me.REG[1];
1460 /* ./syntax//typing.nit:232 */
1461 fra.me.REG[4] = CALL_parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1462 CALL_typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1463 /* ./syntax//typing.nit:233 */
1464 fra.me.REG[2] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1465 CALL_typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1466 /* ./syntax//typing.nit:234 */
1467 REGB0 = TAG_Bool(false);
1468 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1469 /* ./syntax//typing.nit:235 */
1470 CALL_SUPER_typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1471 stack_frame_head = fra.me.prev;
1472 return;
1473 }
1474 void typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1475 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1476 val_t REGB0;
1477 val_t REGB1;
1478 val_t REGB2;
1479 val_t REGB3;
1480 val_t REGB4;
1481 val_t REGB5;
1482 val_t tmp;
1483 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1484 fra.me.file = LOCATE_typing;
1485 fra.me.line = 238;
1486 fra.me.meth = LOCATE_typing___AConcreteInitPropdef___after_typing;
1487 fra.me.has_broke = 0;
1488 fra.me.REG_size = 7;
1489 fra.me.REG[0] = NIT_NULL;
1490 fra.me.REG[1] = NIT_NULL;
1491 fra.me.REG[2] = NIT_NULL;
1492 fra.me.REG[3] = NIT_NULL;
1493 fra.me.REG[4] = NIT_NULL;
1494 fra.me.REG[5] = NIT_NULL;
1495 fra.me.REG[6] = NIT_NULL;
1496 fra.me.REG[0] = p0;
1497 fra.me.REG[1] = p1;
1498 /* ./syntax//typing.nit:238 */
1499 fra.me.REG[2] = fra.me.REG[0];
1500 fra.me.REG[3] = fra.me.REG[1];
1501 /* ./syntax//typing.nit:240 */
1502 CALL_SUPER_typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1503 /* ./syntax//typing.nit:241 */
1504 REGB0 = CALL_typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1505 if (UNTAG_Bool(REGB0)) {
1506 REGB0 = TAG_Bool(true);
1507 } else {
1508 fra.me.REG[1] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1509 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1510 fra.me.REG[1] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1511 fra.me.REG[0] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1512 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
1513 if (UNTAG_Bool(REGB1)) {
1514 } else {
1515 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1516 REGB1 = REGB2;
1517 }
1518 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1519 REGB0 = REGB1;
1520 }
1521 if (UNTAG_Bool(REGB0)) {
1522 } else {
1523 /* ./syntax//typing.nit:244 */
1524 REGB0 = TAG_Int(0);
1525 /* ./syntax//typing.nit:245 */
1526 fra.me.REG[0] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1527 /* ./../lib/standard//collection//array.nit:23 */
1528 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1529 if (UNTAG_Bool(REGB1)) {
1530 } else {
1531 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1532 }
1533 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
1534 /* ./syntax//typing.nit:246 */
1535 fra.me.REG[0] = NIT_NULL;
1536 /* ./syntax//typing.nit:247 */
1537 fra.me.REG[1] = NIT_NULL;
1538 /* ./../lib/standard//kernel.nit:212 */
1539 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1540 /* ./syntax//typing.nit:248 */
1541 if (UNTAG_Bool(REGB2)) {
1542 /* ./syntax//typing.nit:249 */
1543 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1544 /* ./../lib/standard//collection//array.nit:243 */
1545 REGB2 = REGB0;
1546 /* ./../lib/standard//collection//array.nit:245 */
1547 REGB3 = TAG_Int(0);
1548 /* ./../lib/standard//kernel.nit:213 */
1549 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1550 /* ./../lib/standard//collection//array.nit:245 */
1551 if (UNTAG_Bool(REGB3)) {
1552 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1553 if (UNTAG_Bool(REGB3)) {
1554 } else {
1555 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1556 }
1557 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1558 /* ./../lib/standard//kernel.nit:212 */
1559 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1560 } else {
1561 /* ./../lib/standard//collection//array.nit:245 */
1562 REGB4 = TAG_Bool(false);
1563 REGB3 = REGB4;
1564 }
1565 if (UNTAG_Bool(REGB3)) {
1566 } else {
1567 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1568 }
1569 /* ./../lib/standard//collection//array.nit:246 */
1570 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
1571 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1572 if (UNTAG_Bool(REGB3)) {
1573 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1574 }
1575 /* ./../lib/standard//collection//array.nit:654 */
1576 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
1577 /* ./../lib/standard//collection//array.nit:246 */
1578 goto label1;
1579 label1: while(0);
1580 /* ./syntax//typing.nit:249 */
1581 fra.me.REG[0] = fra.me.REG[4];
1582 /* ./syntax//typing.nit:250 */
1583 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1584 if (UNTAG_Bool(REGB2)) {
1585 nit_abort("Reciever is null", NULL, LOCATE_typing, 250);
1586 }
1587 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1588 fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1589 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1590 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1591 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1592 fra.me.REG[1] = fra.me.REG[5];
1593 }
1594 /* ./syntax//typing.nit:252 */
1595 REGB2 = TAG_Int(0);
1596 /* ./syntax//typing.nit:253 */
1597 while(1) {
1598 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1599 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1600 fra.me.REG[5] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
1601 /* ./../lib/standard//collection//array.nit:23 */
1602 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1603 if (UNTAG_Bool(REGB3)) {
1604 } else {
1605 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1606 }
1607 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
1608 /* ./../lib/standard//kernel.nit:212 */
1609 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1610 /* ./syntax//typing.nit:253 */
1611 if (UNTAG_Bool(REGB3)) {
1612 /* ./syntax//typing.nit:254 */
1613 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1614 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1615 fra.me.REG[5] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
1616 /* ./../lib/standard//collection//array.nit:243 */
1617 REGB3 = REGB2;
1618 /* ./../lib/standard//collection//array.nit:245 */
1619 REGB4 = TAG_Int(0);
1620 /* ./../lib/standard//kernel.nit:213 */
1621 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1622 /* ./../lib/standard//collection//array.nit:245 */
1623 if (UNTAG_Bool(REGB4)) {
1624 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1625 if (UNTAG_Bool(REGB4)) {
1626 } else {
1627 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1628 }
1629 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
1630 /* ./../lib/standard//kernel.nit:212 */
1631 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1632 } else {
1633 /* ./../lib/standard//collection//array.nit:245 */
1634 REGB5 = TAG_Bool(false);
1635 REGB4 = REGB5;
1636 }
1637 if (UNTAG_Bool(REGB4)) {
1638 } else {
1639 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1640 }
1641 /* ./../lib/standard//collection//array.nit:246 */
1642 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[5]);
1643 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1644 if (UNTAG_Bool(REGB4)) {
1645 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1646 }
1647 /* ./../lib/standard//collection//array.nit:654 */
1648 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1649 /* ./../lib/standard//collection//array.nit:246 */
1650 goto label2;
1651 label2: while(0);
1652 /* ./syntax//typing.nit:255 */
1653 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1654 REGB3 = CALL_abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
1655 if (UNTAG_Bool(REGB3)) {
1656 REGB3 = TAG_Bool(true);
1657 } else {
1658 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1659 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
1660 REGB3 = REGB4;
1661 }
1662 if (UNTAG_Bool(REGB3)) {
1663 REGB3 = TAG_Bool(true);
1664 } else {
1665 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1666 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1667 REGB3 = REGB4;
1668 }
1669 if (UNTAG_Bool(REGB3)) {
1670 /* ./syntax//typing.nit:256 */
1671 REGB3 = TAG_Int(1);
1672 /* ./../lib/standard//kernel.nit:215 */
1673 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1674 /* ./syntax//typing.nit:256 */
1675 REGB2 = REGB3;
1676 } else {
1677 /* ./syntax//typing.nit:257 */
1678 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1679 if (UNTAG_Bool(REGB3)) {
1680 } else {
1681 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1682 if (UNTAG_Bool(REGB4)) {
1683 REGB4 = TAG_Bool(false);
1684 REGB3 = REGB4;
1685 } else {
1686 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1687 REGB3 = REGB4;
1688 }
1689 }
1690 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1691 if (UNTAG_Bool(REGB3)) {
1692 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1693 REGB3 = CALL_partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1694 if (UNTAG_Bool(REGB3)) {
1695 REGB3 = TAG_Bool(true);
1696 } else {
1697 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1698 if (UNTAG_Bool(REGB4)) {
1699 nit_abort("Reciever is null", NULL, LOCATE_typing, 257);
1700 }
1701 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1702 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1703 REGB3 = REGB4;
1704 }
1705 } else {
1706 REGB4 = TAG_Bool(false);
1707 REGB3 = REGB4;
1708 }
1709 if (UNTAG_Bool(REGB3)) {
1710 /* ./syntax//typing.nit:258 */
1711 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[5],fra.me.REG[1]));
1712 if (UNTAG_Bool(REGB3)) {
1713 } else {
1714 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1715 REGB3 = REGB4;
1716 }
1717 if (UNTAG_Bool(REGB3)) {
1718 REGB3 = TAG_Int(1);
1719 /* ./../lib/standard//kernel.nit:215 */
1720 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1721 /* ./syntax//typing.nit:258 */
1722 REGB2 = REGB3;
1723 }
1724 /* ./syntax//typing.nit:259 */
1725 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1726 REGB3 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1727 if (UNTAG_Bool(REGB3)) {
1728 } else {
1729 nit_abort("Cast failed", NULL, LOCATE_typing, 259);
1730 }
1731 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
1732 /* ./syntax//typing.nit:260 */
1733 REGB3 = TAG_Int(1);
1734 /* ./../lib/standard//kernel.nit:215 */
1735 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1736 /* ./syntax//typing.nit:260 */
1737 REGB0 = REGB3;
1738 /* ./../lib/standard//kernel.nit:212 */
1739 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1740 /* ./syntax//typing.nit:261 */
1741 if (UNTAG_Bool(REGB3)) {
1742 /* ./syntax//typing.nit:262 */
1743 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1744 /* ./../lib/standard//collection//array.nit:243 */
1745 REGB3 = REGB0;
1746 /* ./../lib/standard//collection//array.nit:245 */
1747 REGB4 = TAG_Int(0);
1748 /* ./../lib/standard//kernel.nit:213 */
1749 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1750 /* ./../lib/standard//collection//array.nit:245 */
1751 if (UNTAG_Bool(REGB4)) {
1752 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1753 if (UNTAG_Bool(REGB4)) {
1754 } else {
1755 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1756 }
1757 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1758 /* ./../lib/standard//kernel.nit:212 */
1759 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1760 } else {
1761 /* ./../lib/standard//collection//array.nit:245 */
1762 REGB5 = TAG_Bool(false);
1763 REGB4 = REGB5;
1764 }
1765 if (UNTAG_Bool(REGB4)) {
1766 } else {
1767 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1768 }
1769 /* ./../lib/standard//collection//array.nit:246 */
1770 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
1771 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1772 if (UNTAG_Bool(REGB4)) {
1773 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1774 }
1775 /* ./../lib/standard//collection//array.nit:654 */
1776 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
1777 /* ./../lib/standard//collection//array.nit:246 */
1778 goto label3;
1779 label3: while(0);
1780 /* ./syntax//typing.nit:262 */
1781 fra.me.REG[0] = fra.me.REG[4];
1782 /* ./syntax//typing.nit:263 */
1783 REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1784 if (UNTAG_Bool(REGB3)) {
1785 nit_abort("Reciever is null", NULL, LOCATE_typing, 263);
1786 }
1787 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1788 fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1789 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1790 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1791 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
1792 fra.me.REG[1] = fra.me.REG[6];
1793 } else {
1794 /* ./syntax//typing.nit:265 */
1795 fra.me.REG[0] = NIT_NULL;
1796 /* ./syntax//typing.nit:266 */
1797 fra.me.REG[1] = NIT_NULL;
1798 }
1799 } else {
1800 /* ./syntax//typing.nit:269 */
1801 fra.me.REG[6] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1802 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]);
1803 /* ./syntax//typing.nit:270 */
1804 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1805 if (UNTAG_Bool(REGB3)) {
1806 } else {
1807 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1808 if (UNTAG_Bool(REGB4)) {
1809 REGB4 = TAG_Bool(false);
1810 REGB3 = REGB4;
1811 } else {
1812 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1813 REGB3 = REGB4;
1814 }
1815 }
1816 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1817 if (UNTAG_Bool(REGB3)) {
1818 /* ./syntax//typing.nit:271 */
1819 fra.me.REG[5] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1820 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1821 }
1822 /* ./syntax//typing.nit:273 */
1823 REGB3 = TAG_Int(1);
1824 /* ./../lib/standard//kernel.nit:215 */
1825 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1826 /* ./syntax//typing.nit:273 */
1827 REGB2 = REGB3;
1828 }
1829 }
1830 } else {
1831 /* ./syntax//typing.nit:253 */
1832 goto label4;
1833 }
1834 }
1835 label4: while(0);
1836 }
1837 stack_frame_head = fra.me.prev;
1838 return;
1839 }
1840 void typing___AParam___after_typing(val_t p0, val_t p1){
1841 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1842 val_t tmp;
1843 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1844 fra.me.file = LOCATE_typing;
1845 fra.me.line = 281;
1846 fra.me.meth = LOCATE_typing___AParam___after_typing;
1847 fra.me.has_broke = 0;
1848 fra.me.REG_size = 2;
1849 fra.me.REG[0] = NIT_NULL;
1850 fra.me.REG[1] = NIT_NULL;
1851 fra.me.REG[0] = p0;
1852 fra.me.REG[1] = p1;
1853 /* ./syntax//typing.nit:283 */
1854 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
1855 fra.me.REG[0] = CALL_syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1856 CALL_scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1857 stack_frame_head = fra.me.prev;
1858 return;
1859 }
1860 val_t typing___AClosureDecl___escapable(val_t p0){
1861 struct {struct stack_frame_t me;} fra;
1862 val_t tmp;
1863 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1864 fra.me.file = LOCATE_typing;
1865 fra.me.line = 288;
1866 fra.me.meth = LOCATE_typing___AClosureDecl___escapable;
1867 fra.me.has_broke = 0;
1868 fra.me.REG_size = 1;
1869 fra.me.REG[0] = NIT_NULL;
1870 fra.me.REG[0] = p0;
1871 /* ./syntax//typing.nit:288 */
1872 fra.me.REG[0] = ATTR_typing___AClosureDecl____escapable(fra.me.REG[0]);
1873 stack_frame_head = fra.me.prev;
1874 return fra.me.REG[0];
1875 }
1876 void typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
1877 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1878 val_t REGB0;
1879 val_t REGB1;
1880 val_t REGB2;
1881 val_t tmp;
1882 static val_t once_value_1; /* Once value */
1883 static val_t once_value_2; /* Once value */
1884 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1885 fra.me.file = LOCATE_typing;
1886 fra.me.line = 291;
1887 fra.me.meth = LOCATE_typing___AClosureDecl___accept_typing;
1888 fra.me.has_broke = 0;
1889 fra.me.REG_size = 10;
1890 fra.me.REG[0] = NIT_NULL;
1891 fra.me.REG[1] = NIT_NULL;
1892 fra.me.REG[2] = NIT_NULL;
1893 fra.me.REG[3] = NIT_NULL;
1894 fra.me.REG[4] = NIT_NULL;
1895 fra.me.REG[5] = NIT_NULL;
1896 fra.me.REG[6] = NIT_NULL;
1897 fra.me.REG[7] = NIT_NULL;
1898 fra.me.REG[8] = NIT_NULL;
1899 fra.me.REG[9] = NIT_NULL;
1900 fra.me.REG[0] = p0;
1901 fra.me.REG[1] = p1;
1902 /* ./syntax//typing.nit:291 */
1903 fra.me.REG[2] = fra.me.REG[0];
1904 fra.me.REG[3] = fra.me.REG[1];
1905 /* ./syntax//typing.nit:294 */
1906 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1907 fra.me.REG[5] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1908 CALL_scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1909 /* ./syntax//typing.nit:296 */
1910 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1911 /* ./syntax//typing.nit:297 */
1912 fra.me.REG[4] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1913 /* ./syntax//typing.nit:298 */
1914 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1915 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1916 /* ./syntax//typing.nit:300 */
1917 fra.me.REG[6] = NIT_NULL;
1918 /* ./syntax//typing.nit:301 */
1919 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
1920 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
1921 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1922 if (UNTAG_Bool(REGB0)) {
1923 nit_abort("Reciever is null", NULL, LOCATE_typing, 301);
1924 }
1925 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
1926 /* ./syntax//typing.nit:302 */
1927 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1928 if (UNTAG_Bool(REGB0)) {
1929 } else {
1930 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1931 if (UNTAG_Bool(REGB1)) {
1932 REGB1 = TAG_Bool(false);
1933 REGB0 = REGB1;
1934 } else {
1935 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1936 REGB0 = REGB1;
1937 }
1938 }
1939 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1940 if (UNTAG_Bool(REGB0)) {
1941 fra.me.REG[8] = NEW_Array_array___Array___init();
1942 fra.me.REG[6] = fra.me.REG[8];
1943 }
1944 /* ./syntax//typing.nit:303 */
1945 fra.me.REG[8] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1946 fra.me.REG[8] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
1947 fra.me.REG[8] = NEW_EscapableClosure_scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
1948 /* ./syntax//typing.nit:304 */
1949 ATTR_typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
1950 /* ./syntax//typing.nit:305 */
1951 fra.me.REG[9] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1952 CALL_scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
1953 /* ./syntax//typing.nit:307 */
1954 REGB0 = TAG_Bool(true);
1955 CALL_typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1956 /* ./syntax//typing.nit:309 */
1957 CALL_SUPER_typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1958 /* ./syntax//typing.nit:311 */
1959 REGB0 = TAG_Bool(false);
1960 CALL_typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1961 /* ./syntax//typing.nit:313 */
1962 fra.me.REG[1] = CALL_parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1963 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1964 if (UNTAG_Bool(REGB0)) {
1965 } else {
1966 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1967 if (UNTAG_Bool(REGB1)) {
1968 REGB1 = TAG_Bool(false);
1969 REGB0 = REGB1;
1970 } else {
1971 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1972 REGB0 = REGB1;
1973 }
1974 }
1975 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1976 if (UNTAG_Bool(REGB0)) {
1977 /* ./syntax//typing.nit:314 */
1978 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1979 REGB0 = CALL_flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1980 REGB1 = TAG_Bool(false);
1981 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1982 if (UNTAG_Bool(REGB2)) {
1983 } else {
1984 /* ./../lib/standard//kernel.nit:175 */
1985 REGB1 = TAG_Bool((REGB0)==(REGB1));
1986 /* ./syntax//typing.nit:314 */
1987 REGB2 = REGB1;
1988 }
1989 if (UNTAG_Bool(REGB2)) {
1990 /* ./syntax//typing.nit:315 */
1991 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1992 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
1993 fra.me.REG[1] = CALL_static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
1994 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1995 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1996 if (UNTAG_Bool(REGB2)) {
1997 } else {
1998 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1999 if (UNTAG_Bool(REGB1)) {
2000 REGB1 = TAG_Bool(false);
2001 REGB2 = REGB1;
2002 } else {
2003 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2004 REGB2 = REGB1;
2005 }
2006 }
2007 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2008 if (UNTAG_Bool(REGB2)) {
2009 /* ./syntax//typing.nit:316 */
2010 if (!once_value_1) {
2011 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2012 REGB2 = TAG_Int(77);
2013 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
2014 once_value_1 = fra.me.REG[1];
2015 register_static_object(&once_value_1);
2016 } else fra.me.REG[1] = once_value_1;
2017 fra.me.REG[1] = fra.me.REG[1];
2018 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2019 } else {
2020 /* ./syntax//typing.nit:317 */
2021 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2022 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2023 REGB2 = CALL_static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2024 if (UNTAG_Bool(REGB2)) {
2025 fra.me.REG[8] = CALL_scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2026 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2027 if (UNTAG_Bool(REGB2)) {
2028 } else {
2029 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2030 if (UNTAG_Bool(REGB1)) {
2031 REGB1 = TAG_Bool(false);
2032 REGB2 = REGB1;
2033 } else {
2034 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2035 REGB2 = REGB1;
2036 }
2037 }
2038 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2039 } else {
2040 REGB1 = TAG_Bool(false);
2041 REGB2 = REGB1;
2042 }
2043 if (UNTAG_Bool(REGB2)) {
2044 /* ./syntax//typing.nit:318 */
2045 if (!once_value_2) {
2046 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2047 REGB2 = TAG_Int(80);
2048 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
2049 once_value_2 = fra.me.REG[8];
2050 register_static_object(&once_value_2);
2051 } else fra.me.REG[8] = once_value_2;
2052 fra.me.REG[8] = fra.me.REG[8];
2053 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2054 }
2055 }
2056 }
2057 }
2058 /* ./syntax//typing.nit:322 */
2059 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2060 if (UNTAG_Bool(REGB2)) {
2061 } else {
2062 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2063 if (UNTAG_Bool(REGB1)) {
2064 REGB1 = TAG_Bool(false);
2065 REGB2 = REGB1;
2066 } else {
2067 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2068 REGB2 = REGB1;
2069 }
2070 }
2071 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2072 if (UNTAG_Bool(REGB2)) {
2073 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2074 if (UNTAG_Bool(REGB2)) {
2075 nit_abort("Reciever is null", NULL, LOCATE_typing, 322);
2076 }
2077 /* ./../lib/standard//collection//array.nit:234 */
2078 REGB2 = TAG_Int(0);
2079 /* ./../lib/standard//collection//array.nit:235 */
2080 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2081 if (UNTAG_Bool(REGB1)) {
2082 } else {
2083 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
2084 }
2085 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
2086 /* ./../lib/standard//collection//array.nit:236 */
2087 fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[6]);
2088 /* ./../lib/standard//collection//array.nit:237 */
2089 while(1) {
2090 /* ./../lib/standard//collection//array.nit:23 */
2091 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2092 if (UNTAG_Bool(REGB1)) {
2093 } else {
2094 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
2095 }
2096 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
2097 /* ./../lib/standard//kernel.nit:212 */
2098 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2099 /* ./../lib/standard//collection//array.nit:237 */
2100 if (UNTAG_Bool(REGB1)) {
2101 /* ./../lib/standard//collection//array.nit:238 */
2102 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2103 if (UNTAG_Bool(REGB1)) {
2104 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
2105 }
2106 /* ./../lib/standard//collection//array.nit:654 */
2107 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2108 /* ./syntax//typing.nit:323 */
2109 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2110 /* ./../lib/standard//collection//array.nit:239 */
2111 REGB1 = TAG_Int(1);
2112 /* ./../lib/standard//kernel.nit:215 */
2113 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2114 /* ./../lib/standard//collection//array.nit:239 */
2115 REGB2 = REGB1;
2116 } else {
2117 /* ./../lib/standard//collection//array.nit:237 */
2118 goto label3;
2119 }
2120 }
2121 label3: while(0);
2122 }
2123 /* ./syntax//typing.nit:326 */
2124 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2125 /* ./syntax//typing.nit:327 */
2126 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2127 /* ./syntax//typing.nit:328 */
2128 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2129 CALL_scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2130 stack_frame_head = fra.me.prev;
2131 return;
2132 }
2133 val_t typing___AType___stype(val_t p0){
2134 struct {struct stack_frame_t me;} 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 = 333;
2140 fra.me.meth = LOCATE_typing___AType___stype;
2141 fra.me.has_broke = 0;
2142 fra.me.REG_size = 1;
2143 fra.me.REG[0] = NIT_NULL;
2144 fra.me.REG[0] = p0;
2145 /* ./syntax//typing.nit:333 */
2146 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
2147 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2148 if (UNTAG_Bool(REGB0)) {
2149 } else {
2150 nit_abort("Cast failed", NULL, LOCATE_typing, 333);
2151 }
2152 goto label1;
2153 label1: while(0);
2154 stack_frame_head = fra.me.prev;
2155 return fra.me.REG[0];
2156 }
2157 val_t typing___AType___is_typed(val_t p0){
2158 struct {struct stack_frame_t me;} fra;
2159 val_t REGB0;
2160 val_t REGB1;
2161 val_t tmp;
2162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2163 fra.me.file = LOCATE_typing;
2164 fra.me.line = 334;
2165 fra.me.meth = LOCATE_typing___AType___is_typed;
2166 fra.me.has_broke = 0;
2167 fra.me.REG_size = 1;
2168 fra.me.REG[0] = NIT_NULL;
2169 fra.me.REG[0] = p0;
2170 /* ./syntax//typing.nit:334 */
2171 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
2172 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2173 if (UNTAG_Bool(REGB0)) {
2174 } else {
2175 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2176 if (UNTAG_Bool(REGB1)) {
2177 REGB1 = TAG_Bool(false);
2178 REGB0 = REGB1;
2179 } else {
2180 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2181 REGB0 = REGB1;
2182 }
2183 }
2184 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2185 goto label1;
2186 label1: while(0);
2187 stack_frame_head = fra.me.prev;
2188 return REGB0;
2189 }
2190 void typing___AType___after_typing(val_t p0, val_t p1){
2191 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2192 val_t tmp;
2193 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2194 fra.me.file = LOCATE_typing;
2195 fra.me.line = 337;
2196 fra.me.meth = LOCATE_typing___AType___after_typing;
2197 fra.me.has_broke = 0;
2198 fra.me.REG_size = 2;
2199 fra.me.REG[0] = NIT_NULL;
2200 fra.me.REG[1] = NIT_NULL;
2201 fra.me.REG[0] = p0;
2202 fra.me.REG[1] = p1;
2203 /* ./syntax//typing.nit:339 */
2204 fra.me.REG[1] = CALL_syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2205 ATTR_typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2206 stack_frame_head = fra.me.prev;
2207 return;
2208 }
2209 val_t typing___AExpr___is_typed(val_t p0){
2210 struct {struct stack_frame_t me;} fra;
2211 val_t REGB0;
2212 val_t tmp;
2213 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2214 fra.me.file = LOCATE_typing;
2215 fra.me.line = 344;
2216 fra.me.meth = LOCATE_typing___AExpr___is_typed;
2217 fra.me.has_broke = 0;
2218 fra.me.REG_size = 1;
2219 fra.me.REG[0] = NIT_NULL;
2220 fra.me.REG[0] = p0;
2221 /* ./syntax//typing.nit:344 */
2222 REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2223 if (UNTAG_Bool(REGB0)) {
2224 } else {
2225 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_typing, 344);
2226 }
2227 REGB0 = ATTR_typing___AExpr____is_typed(fra.me.REG[0]);
2228 stack_frame_head = fra.me.prev;
2229 return REGB0;
2230 }
2231 val_t typing___AExpr___is_statement(val_t p0){
2232 struct {struct stack_frame_t me;} fra;
2233 val_t REGB0;
2234 val_t REGB1;
2235 val_t tmp;
2236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2237 fra.me.file = LOCATE_typing;
2238 fra.me.line = 345;
2239 fra.me.meth = LOCATE_typing___AExpr___is_statement;
2240 fra.me.has_broke = 0;
2241 fra.me.REG_size = 1;
2242 fra.me.REG[0] = NIT_NULL;
2243 fra.me.REG[0] = p0;
2244 /* ./syntax//typing.nit:345 */
2245 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2246 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2247 if (UNTAG_Bool(REGB0)) {
2248 } else {
2249 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2250 if (UNTAG_Bool(REGB1)) {
2251 REGB1 = TAG_Bool(false);
2252 REGB0 = REGB1;
2253 } else {
2254 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2255 REGB0 = REGB1;
2256 }
2257 }
2258 goto label1;
2259 label1: while(0);
2260 stack_frame_head = fra.me.prev;
2261 return REGB0;
2262 }
2263 val_t typing___AExpr___stype(val_t p0){
2264 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2265 val_t REGB0;
2266 val_t tmp;
2267 static val_t once_value_1; /* Once value */
2268 static val_t once_value_2; /* Once value */
2269 static val_t once_value_3; /* Once value */
2270 static val_t once_value_4; /* Once value */
2271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2272 fra.me.file = LOCATE_typing;
2273 fra.me.line = 346;
2274 fra.me.meth = LOCATE_typing___AExpr___stype;
2275 fra.me.has_broke = 0;
2276 fra.me.REG_size = 3;
2277 fra.me.REG[0] = NIT_NULL;
2278 fra.me.REG[1] = NIT_NULL;
2279 fra.me.REG[2] = NIT_NULL;
2280 fra.me.REG[0] = p0;
2281 /* ./syntax//typing.nit:348 */
2282 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[0])(fra.me.REG[0]);
2283 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2284 if (UNTAG_Bool(REGB0)) {
2285 /* ./syntax//typing.nit:349 */
2286 REGB0 = TAG_Int(3);
2287 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2288 if (!once_value_1) {
2289 fra.me.REG[2] = BOX_NativeString("");
2290 REGB0 = TAG_Int(0);
2291 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2292 once_value_1 = fra.me.REG[2];
2293 register_static_object(&once_value_1);
2294 } else fra.me.REG[2] = once_value_1;
2295 fra.me.REG[2] = fra.me.REG[2];
2296 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2297 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2298 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2299 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2300 if (!once_value_2) {
2301 fra.me.REG[2] = BOX_NativeString(": not is_typed");
2302 REGB0 = TAG_Int(14);
2303 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2304 once_value_2 = fra.me.REG[2];
2305 register_static_object(&once_value_2);
2306 } else fra.me.REG[2] = once_value_2;
2307 fra.me.REG[2] = fra.me.REG[2];
2308 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2309 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2310 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2311 /* ./syntax//typing.nit:350 */
2312 nit_abort("Aborted", NULL, LOCATE_typing, 350);
2313 }
2314 /* ./syntax//typing.nit:352 */
2315 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[0])(fra.me.REG[0]);
2316 if (UNTAG_Bool(REGB0)) {
2317 /* ./syntax//typing.nit:353 */
2318 REGB0 = TAG_Int(3);
2319 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2320 if (!once_value_3) {
2321 fra.me.REG[2] = BOX_NativeString("");
2322 REGB0 = TAG_Int(0);
2323 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2324 once_value_3 = fra.me.REG[2];
2325 register_static_object(&once_value_3);
2326 } else fra.me.REG[2] = once_value_3;
2327 fra.me.REG[2] = fra.me.REG[2];
2328 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2329 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2330 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2331 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2332 if (!once_value_4) {
2333 fra.me.REG[2] = BOX_NativeString(": is_statement");
2334 REGB0 = TAG_Int(14);
2335 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2336 once_value_4 = fra.me.REG[2];
2337 register_static_object(&once_value_4);
2338 } else fra.me.REG[2] = once_value_4;
2339 fra.me.REG[2] = fra.me.REG[2];
2340 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2341 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2342 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2343 /* ./syntax//typing.nit:354 */
2344 nit_abort("Aborted", NULL, LOCATE_typing, 354);
2345 }
2346 /* ./syntax//typing.nit:356 */
2347 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2348 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2349 if (UNTAG_Bool(REGB0)) {
2350 } else {
2351 nit_abort("Cast failed", NULL, LOCATE_typing, 356);
2352 }
2353 goto label5;
2354 label5: while(0);
2355 stack_frame_head = fra.me.prev;
2356 return fra.me.REG[0];
2357 }
2358 void typing___AExpr___after_typing(val_t p0, val_t p1){
2359 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2360 val_t REGB0;
2361 val_t tmp;
2362 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2363 fra.me.file = LOCATE_typing;
2364 fra.me.line = 360;
2365 fra.me.meth = LOCATE_typing___AExpr___after_typing;
2366 fra.me.has_broke = 0;
2367 fra.me.REG_size = 2;
2368 fra.me.REG[0] = NIT_NULL;
2369 fra.me.REG[1] = NIT_NULL;
2370 fra.me.REG[0] = p0;
2371 fra.me.REG[1] = p1;
2372 /* ./syntax//typing.nit:363 */
2373 REGB0 = TAG_Bool(true);
2374 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2375 stack_frame_head = fra.me.prev;
2376 return;
2377 }
2378 val_t typing___AExpr___is_implicit_self(val_t p0){
2379 struct {struct stack_frame_t me;} fra;
2380 val_t REGB0;
2381 val_t tmp;
2382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2383 fra.me.file = LOCATE_typing;
2384 fra.me.line = 366;
2385 fra.me.meth = LOCATE_typing___AExpr___is_implicit_self;
2386 fra.me.has_broke = 0;
2387 fra.me.REG_size = 1;
2388 fra.me.REG[0] = NIT_NULL;
2389 fra.me.REG[0] = p0;
2390 /* ./syntax//typing.nit:367 */
2391 REGB0 = TAG_Bool(false);
2392 goto label1;
2393 label1: while(0);
2394 stack_frame_head = fra.me.prev;
2395 return REGB0;
2396 }
2397 val_t typing___AExpr___is_self(val_t p0){
2398 struct {struct stack_frame_t me;} fra;
2399 val_t REGB0;
2400 val_t tmp;
2401 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2402 fra.me.file = LOCATE_typing;
2403 fra.me.line = 369;
2404 fra.me.meth = LOCATE_typing___AExpr___is_self;
2405 fra.me.has_broke = 0;
2406 fra.me.REG_size = 1;
2407 fra.me.REG[0] = NIT_NULL;
2408 fra.me.REG[0] = p0;
2409 /* ./syntax//typing.nit:370 */
2410 REGB0 = TAG_Bool(false);
2411 goto label1;
2412 label1: while(0);
2413 stack_frame_head = fra.me.prev;
2414 return REGB0;
2415 }
2416 val_t typing___AExpr___its_variable(val_t p0){
2417 struct {struct stack_frame_t me;} fra;
2418 val_t tmp;
2419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2420 fra.me.file = LOCATE_typing;
2421 fra.me.line = 372;
2422 fra.me.meth = LOCATE_typing___AExpr___its_variable;
2423 fra.me.has_broke = 0;
2424 fra.me.REG_size = 1;
2425 fra.me.REG[0] = NIT_NULL;
2426 fra.me.REG[0] = p0;
2427 /* ./syntax//typing.nit:373 */
2428 fra.me.REG[0] = NIT_NULL;
2429 goto label1;
2430 label1: while(0);
2431 stack_frame_head = fra.me.prev;
2432 return fra.me.REG[0];
2433 }
2434 val_t typing___AExpr___if_true_flow_ctx(val_t p0){
2435 struct {struct stack_frame_t me;} fra;
2436 val_t tmp;
2437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2438 fra.me.file = LOCATE_typing;
2439 fra.me.line = 375;
2440 fra.me.meth = LOCATE_typing___AExpr___if_true_flow_ctx;
2441 fra.me.has_broke = 0;
2442 fra.me.REG_size = 1;
2443 fra.me.REG[0] = NIT_NULL;
2444 fra.me.REG[0] = p0;
2445 /* ./syntax//typing.nit:375 */
2446 fra.me.REG[0] = ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2447 stack_frame_head = fra.me.prev;
2448 return fra.me.REG[0];
2449 }
2450 val_t typing___AExpr___if_false_flow_ctx(val_t p0){
2451 struct {struct stack_frame_t me;} fra;
2452 val_t tmp;
2453 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2454 fra.me.file = LOCATE_typing;
2455 fra.me.line = 378;
2456 fra.me.meth = LOCATE_typing___AExpr___if_false_flow_ctx;
2457 fra.me.has_broke = 0;
2458 fra.me.REG_size = 1;
2459 fra.me.REG[0] = NIT_NULL;
2460 fra.me.REG[0] = p0;
2461 /* ./syntax//typing.nit:378 */
2462 fra.me.REG[0] = ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2463 stack_frame_head = fra.me.prev;
2464 return fra.me.REG[0];
2465 }
2466 val_t typing___AVardeclExpr___variable(val_t p0){
2467 struct {struct stack_frame_t me;} fra;
2468 val_t REGB0;
2469 val_t tmp;
2470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2471 fra.me.file = LOCATE_typing;
2472 fra.me.line = 384;
2473 fra.me.meth = LOCATE_typing___AVardeclExpr___variable;
2474 fra.me.has_broke = 0;
2475 fra.me.REG_size = 1;
2476 fra.me.REG[0] = NIT_NULL;
2477 fra.me.REG[0] = p0;
2478 /* ./syntax//typing.nit:384 */
2479 fra.me.REG[0] = ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]);
2480 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2481 if (UNTAG_Bool(REGB0)) {
2482 } else {
2483 nit_abort("Cast failed", NULL, LOCATE_typing, 384);
2484 }
2485 goto label1;
2486 label1: while(0);
2487 stack_frame_head = fra.me.prev;
2488 return fra.me.REG[0];
2489 }
2490 void typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2491 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2492 val_t REGB0;
2493 val_t REGB1;
2494 val_t tmp;
2495 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2496 fra.me.file = LOCATE_typing;
2497 fra.me.line = 386;
2498 fra.me.meth = LOCATE_typing___AVardeclExpr___after_typing;
2499 fra.me.has_broke = 0;
2500 fra.me.REG_size = 5;
2501 fra.me.REG[0] = NIT_NULL;
2502 fra.me.REG[1] = NIT_NULL;
2503 fra.me.REG[2] = NIT_NULL;
2504 fra.me.REG[3] = NIT_NULL;
2505 fra.me.REG[4] = NIT_NULL;
2506 fra.me.REG[0] = p0;
2507 fra.me.REG[1] = p1;
2508 /* ./syntax//typing.nit:388 */
2509 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2510 fra.me.REG[2] = CALL_syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2511 fra.me.REG[3] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2512 fra.me.REG[3] = NEW_VarVariable_syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2513 /* ./syntax//typing.nit:389 */
2514 ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2515 /* ./syntax//typing.nit:390 */
2516 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2517 CALL_scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2518 /* ./syntax//typing.nit:391 */
2519 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2520 /* ./syntax//typing.nit:392 */
2521 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2522 if (UNTAG_Bool(REGB0)) {
2523 } else {
2524 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2525 if (UNTAG_Bool(REGB1)) {
2526 REGB1 = TAG_Bool(false);
2527 REGB0 = REGB1;
2528 } else {
2529 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2530 REGB0 = REGB1;
2531 }
2532 }
2533 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2534 if (UNTAG_Bool(REGB0)) {
2535 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2536 }
2537 /* ./syntax//typing.nit:394 */
2538 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2539 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2540 if (UNTAG_Bool(REGB0)) {
2541 } else {
2542 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2543 if (UNTAG_Bool(REGB1)) {
2544 REGB1 = TAG_Bool(false);
2545 REGB0 = REGB1;
2546 } else {
2547 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2548 REGB0 = REGB1;
2549 }
2550 }
2551 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2552 if (UNTAG_Bool(REGB0)) {
2553 /* ./syntax//typing.nit:395 */
2554 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2555 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2556 if (UNTAG_Bool(REGB0)) {
2557 nit_abort("Reciever is null", NULL, LOCATE_typing, 395);
2558 }
2559 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2560 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2561 if (UNTAG_Bool(REGB0)) {
2562 goto label1;
2563 }
2564 /* ./syntax//typing.nit:396 */
2565 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2566 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2567 if (UNTAG_Bool(REGB0)) {
2568 nit_abort("Reciever is null", NULL, LOCATE_typing, 396);
2569 }
2570 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2571 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2572 /* ./syntax//typing.nit:397 */
2573 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2574 if (UNTAG_Bool(REGB0)) {
2575 } else {
2576 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2577 if (UNTAG_Bool(REGB1)) {
2578 REGB1 = TAG_Bool(false);
2579 REGB0 = REGB1;
2580 } else {
2581 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2582 REGB0 = REGB1;
2583 }
2584 }
2585 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2586 if (UNTAG_Bool(REGB0)) {
2587 /* ./syntax//typing.nit:398 */
2588 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2589 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2590 }
2591 } else {
2592 /* ./syntax//typing.nit:400 */
2593 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2594 if (UNTAG_Bool(REGB0)) {
2595 } else {
2596 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2597 if (UNTAG_Bool(REGB1)) {
2598 REGB1 = TAG_Bool(false);
2599 REGB0 = REGB1;
2600 } else {
2601 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2602 REGB0 = REGB1;
2603 }
2604 }
2605 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2606 if (UNTAG_Bool(REGB0)) {
2607 /* ./syntax//typing.nit:401 */
2608 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2609 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2610 if (UNTAG_Bool(REGB0)) {
2611 goto label1;
2612 }
2613 /* ./syntax//typing.nit:402 */
2614 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2615 if (UNTAG_Bool(REGB0)) {
2616 nit_abort("Reciever is null", NULL, LOCATE_typing, 402);
2617 }
2618 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2619 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2620 } else {
2621 /* ./syntax//typing.nit:404 */
2622 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2623 fra.me.REG[1] = CALL_static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2624 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2625 }
2626 }
2627 /* ./syntax//typing.nit:406 */
2628 REGB0 = TAG_Bool(true);
2629 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2630 label1: while(0);
2631 stack_frame_head = fra.me.prev;
2632 return;
2633 }
2634 void typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2635 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2636 val_t REGB0;
2637 val_t tmp;
2638 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2639 fra.me.file = LOCATE_typing;
2640 fra.me.line = 411;
2641 fra.me.meth = LOCATE_typing___ABlockExpr___accept_typing;
2642 fra.me.has_broke = 0;
2643 fra.me.REG_size = 3;
2644 fra.me.REG[0] = NIT_NULL;
2645 fra.me.REG[1] = NIT_NULL;
2646 fra.me.REG[2] = NIT_NULL;
2647 fra.me.REG[0] = p0;
2648 fra.me.REG[1] = p1;
2649 /* ./syntax//typing.nit:413 */
2650 fra.me.REG[2] = CALL_parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2651 CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_typing___ABlockExpr___accept_typing_1));
2652 /* ./syntax//typing.nit:422 */
2653 REGB0 = TAG_Bool(true);
2654 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2655 stack_frame_head = fra.me.prev;
2656 return;
2657 }
2658 void OC_typing___ABlockExpr___accept_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2659 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2660 val_t REGB0;
2661 fun_t CREG[1];
2662 val_t tmp;
2663 static val_t once_value_2; /* Once value */
2664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2665 fra.me.file = LOCATE_typing;
2666 fra.me.line = 0;
2667 fra.me.meth = LOCATE_typing___ABlockExpr___accept_typing;
2668 fra.me.has_broke = 0;
2669 fra.me.REG_size = 2;
2670 fra.me.REG[0] = NIT_NULL;
2671 fra.me.REG[1] = NIT_NULL;
2672 fra.me.closure_ctx = closctx_param;
2673 fra.me.closure_funs = CREG;
2674 fra.me.REG[0] = p0;
2675 CREG[0] = clos_fun0;
2676 /* ./syntax//typing.nit:414 */
2677 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2678 REGB0 = CALL_flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2679 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2680 if (UNTAG_Bool(REGB0)) {
2681 /* ./syntax//typing.nit:415 */
2682 CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2683 } else {
2684 /* ./syntax//typing.nit:416 */
2685 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2686 REGB0 = CALL_flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
2687 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2688 if (UNTAG_Bool(REGB0)) {
2689 /* ./syntax//typing.nit:417 */
2690 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2691 REGB0 = TAG_Bool(true);
2692 CALL_flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
2693 /* ./syntax//typing.nit:418 */
2694 if (!once_value_2) {
2695 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
2696 REGB0 = TAG_Int(29);
2697 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
2698 once_value_2 = fra.me.REG[1];
2699 register_static_object(&once_value_2);
2700 } else fra.me.REG[1] = once_value_2;
2701 fra.me.REG[1] = fra.me.REG[1];
2702 CALL_syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
2703 }
2704 }
2705 stack_frame_head = fra.me.prev;
2706 return;
2707 }
2708 void typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2709 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2710 val_t REGB0;
2711 val_t REGB1;
2712 val_t tmp;
2713 static val_t once_value_1; /* Once value */
2714 static val_t once_value_3; /* Once value */
2715 static val_t once_value_4; /* Once value */
2716 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2717 fra.me.file = LOCATE_typing;
2718 fra.me.line = 427;
2719 fra.me.meth = LOCATE_typing___AReturnExpr___after_typing;
2720 fra.me.has_broke = 0;
2721 fra.me.REG_size = 5;
2722 fra.me.REG[0] = NIT_NULL;
2723 fra.me.REG[1] = NIT_NULL;
2724 fra.me.REG[2] = NIT_NULL;
2725 fra.me.REG[3] = NIT_NULL;
2726 fra.me.REG[4] = NIT_NULL;
2727 fra.me.REG[0] = p0;
2728 fra.me.REG[1] = p1;
2729 /* ./syntax//typing.nit:429 */
2730 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2731 /* ./syntax//typing.nit:430 */
2732 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2733 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2734 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2735 if (UNTAG_Bool(REGB0)) {
2736 nit_abort("Reciever is null", NULL, LOCATE_typing, 430);
2737 }
2738 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2739 /* ./syntax//typing.nit:432 */
2740 REGB0 = CALL_typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
2741 if (UNTAG_Bool(REGB0)) {
2742 /* ./syntax//typing.nit:433 */
2743 if (!once_value_1) {
2744 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
2745 REGB0 = TAG_Int(82);
2746 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2747 once_value_1 = fra.me.REG[3];
2748 register_static_object(&once_value_1);
2749 } else fra.me.REG[3] = once_value_1;
2750 fra.me.REG[3] = fra.me.REG[3];
2751 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2752 /* ./syntax//typing.nit:434 */
2753 goto label2;
2754 }
2755 /* ./syntax//typing.nit:437 */
2756 fra.me.REG[3] = CALL_parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2757 /* ./syntax//typing.nit:438 */
2758 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2759 if (UNTAG_Bool(REGB0)) {
2760 } else {
2761 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2762 if (UNTAG_Bool(REGB1)) {
2763 REGB1 = TAG_Bool(false);
2764 REGB0 = REGB1;
2765 } else {
2766 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2767 REGB0 = REGB1;
2768 }
2769 }
2770 if (UNTAG_Bool(REGB0)) {
2771 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2772 if (UNTAG_Bool(REGB0)) {
2773 } else {
2774 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2775 if (UNTAG_Bool(REGB1)) {
2776 REGB1 = TAG_Bool(false);
2777 REGB0 = REGB1;
2778 } else {
2779 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2780 REGB0 = REGB1;
2781 }
2782 }
2783 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2784 } else {
2785 REGB1 = TAG_Bool(false);
2786 REGB0 = REGB1;
2787 }
2788 if (UNTAG_Bool(REGB0)) {
2789 /* ./syntax//typing.nit:439 */
2790 if (!once_value_3) {
2791 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2792 REGB0 = TAG_Int(42);
2793 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2794 once_value_3 = fra.me.REG[4];
2795 register_static_object(&once_value_3);
2796 } else fra.me.REG[4] = once_value_3;
2797 fra.me.REG[4] = fra.me.REG[4];
2798 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2799 } else {
2800 /* ./syntax//typing.nit:440 */
2801 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2802 if (UNTAG_Bool(REGB0)) {
2803 } else {
2804 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2805 if (UNTAG_Bool(REGB1)) {
2806 REGB1 = TAG_Bool(false);
2807 REGB0 = REGB1;
2808 } else {
2809 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2810 REGB0 = REGB1;
2811 }
2812 }
2813 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2814 if (UNTAG_Bool(REGB0)) {
2815 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2816 if (UNTAG_Bool(REGB0)) {
2817 } else {
2818 REGB1 = TAG_Bool(fra.me.REG[2]==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[2])(fra.me.REG[2], NIT_NULL);
2824 REGB0 = REGB1;
2825 }
2826 }
2827 } else {
2828 REGB1 = TAG_Bool(false);
2829 REGB0 = REGB1;
2830 }
2831 if (UNTAG_Bool(REGB0)) {
2832 /* ./syntax//typing.nit:441 */
2833 if (!once_value_4) {
2834 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
2835 REGB0 = TAG_Int(40);
2836 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2837 once_value_4 = fra.me.REG[4];
2838 register_static_object(&once_value_4);
2839 } else fra.me.REG[4] = once_value_4;
2840 fra.me.REG[4] = fra.me.REG[4];
2841 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2842 } else {
2843 /* ./syntax//typing.nit:442 */
2844 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2845 if (UNTAG_Bool(REGB0)) {
2846 } else {
2847 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2848 if (UNTAG_Bool(REGB1)) {
2849 REGB1 = TAG_Bool(false);
2850 REGB0 = REGB1;
2851 } else {
2852 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2853 REGB0 = REGB1;
2854 }
2855 }
2856 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2857 if (UNTAG_Bool(REGB0)) {
2858 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2859 if (UNTAG_Bool(REGB0)) {
2860 } else {
2861 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2862 if (UNTAG_Bool(REGB1)) {
2863 REGB1 = TAG_Bool(false);
2864 REGB0 = REGB1;
2865 } else {
2866 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2867 REGB0 = REGB1;
2868 }
2869 }
2870 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2871 } else {
2872 REGB1 = TAG_Bool(false);
2873 REGB0 = REGB1;
2874 }
2875 if (UNTAG_Bool(REGB0)) {
2876 /* ./syntax//typing.nit:443 */
2877 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2878 }
2879 }
2880 }
2881 /* ./syntax//typing.nit:445 */
2882 REGB0 = TAG_Bool(true);
2883 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2884 label2: while(0);
2885 stack_frame_head = fra.me.prev;
2886 return;
2887 }
2888 void typing___AContinueExpr___after_typing(val_t p0, val_t p1){
2889 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2890 val_t REGB0;
2891 val_t REGB1;
2892 val_t tmp;
2893 static val_t once_value_2; /* Once value */
2894 static val_t once_value_3; /* Once value */
2895 static val_t once_value_4; /* Once value */
2896 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2897 fra.me.file = LOCATE_typing;
2898 fra.me.line = 450;
2899 fra.me.meth = LOCATE_typing___AContinueExpr___after_typing;
2900 fra.me.has_broke = 0;
2901 fra.me.REG_size = 4;
2902 fra.me.REG[0] = NIT_NULL;
2903 fra.me.REG[1] = NIT_NULL;
2904 fra.me.REG[2] = NIT_NULL;
2905 fra.me.REG[3] = NIT_NULL;
2906 fra.me.REG[0] = p0;
2907 fra.me.REG[1] = p1;
2908 /* ./syntax//typing.nit:452 */
2909 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2910 /* ./syntax//typing.nit:453 */
2911 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2912 fra.me.REG[2] = CALL_scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2913 /* ./syntax//typing.nit:454 */
2914 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2915 if (UNTAG_Bool(REGB0)) {
2916 } else {
2917 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2918 if (UNTAG_Bool(REGB1)) {
2919 REGB1 = TAG_Bool(false);
2920 REGB0 = REGB1;
2921 } else {
2922 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2923 REGB0 = REGB1;
2924 }
2925 }
2926 if (UNTAG_Bool(REGB0)) {
2927 goto label1;
2928 }
2929 /* ./syntax//typing.nit:456 */
2930 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2931 if (UNTAG_Bool(REGB0)) {
2932 nit_abort("Reciever is null", NULL, LOCATE_typing, 456);
2933 }
2934 REGB0 = CALL_scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
2935 if (UNTAG_Bool(REGB0)) {
2936 /* ./syntax//typing.nit:457 */
2937 if (!once_value_2) {
2938 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
2939 REGB0 = TAG_Int(39);
2940 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2941 once_value_2 = fra.me.REG[3];
2942 register_static_object(&once_value_2);
2943 } else fra.me.REG[3] = once_value_2;
2944 fra.me.REG[3] = fra.me.REG[3];
2945 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2946 /* ./syntax//typing.nit:458 */
2947 goto label1;
2948 }
2949 /* ./syntax//typing.nit:461 */
2950 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2951 if (UNTAG_Bool(REGB0)) {
2952 nit_abort("Reciever is null", NULL, LOCATE_typing, 461);
2953 }
2954 fra.me.REG[2] = CALL_scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
2955 /* ./syntax//typing.nit:462 */
2956 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2957 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2958 if (UNTAG_Bool(REGB0)) {
2959 } else {
2960 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2961 if (UNTAG_Bool(REGB1)) {
2962 REGB1 = TAG_Bool(false);
2963 REGB0 = REGB1;
2964 } else {
2965 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2966 REGB0 = REGB1;
2967 }
2968 }
2969 if (UNTAG_Bool(REGB0)) {
2970 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2971 if (UNTAG_Bool(REGB0)) {
2972 } else {
2973 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2974 if (UNTAG_Bool(REGB1)) {
2975 REGB1 = TAG_Bool(false);
2976 REGB0 = REGB1;
2977 } else {
2978 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2979 REGB0 = REGB1;
2980 }
2981 }
2982 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2983 } else {
2984 REGB1 = TAG_Bool(false);
2985 REGB0 = REGB1;
2986 }
2987 if (UNTAG_Bool(REGB0)) {
2988 /* ./syntax//typing.nit:463 */
2989 if (!once_value_3) {
2990 fra.me.REG[3] = BOX_NativeString("Error: continue with a value required in this block.");
2991 REGB0 = TAG_Int(52);
2992 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2993 once_value_3 = fra.me.REG[3];
2994 register_static_object(&once_value_3);
2995 } else fra.me.REG[3] = once_value_3;
2996 fra.me.REG[3] = fra.me.REG[3];
2997 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2998 } else {
2999 /* ./syntax//typing.nit:464 */
3000 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3001 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3002 if (UNTAG_Bool(REGB0)) {
3003 } else {
3004 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3005 if (UNTAG_Bool(REGB1)) {
3006 REGB1 = TAG_Bool(false);
3007 REGB0 = REGB1;
3008 } else {
3009 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3010 REGB0 = REGB1;
3011 }
3012 }
3013 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3014 if (UNTAG_Bool(REGB0)) {
3015 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3016 if (UNTAG_Bool(REGB0)) {
3017 } else {
3018 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3019 if (UNTAG_Bool(REGB1)) {
3020 REGB1 = TAG_Bool(false);
3021 REGB0 = REGB1;
3022 } else {
3023 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3024 REGB0 = REGB1;
3025 }
3026 }
3027 } else {
3028 REGB1 = TAG_Bool(false);
3029 REGB0 = REGB1;
3030 }
3031 if (UNTAG_Bool(REGB0)) {
3032 /* ./syntax//typing.nit:465 */
3033 if (!once_value_4) {
3034 fra.me.REG[3] = BOX_NativeString("Error: continue without value required in this block.");
3035 REGB0 = TAG_Int(53);
3036 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3037 once_value_4 = fra.me.REG[3];
3038 register_static_object(&once_value_4);
3039 } else fra.me.REG[3] = once_value_4;
3040 fra.me.REG[3] = fra.me.REG[3];
3041 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3042 } else {
3043 /* ./syntax//typing.nit:466 */
3044 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3045 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3046 if (UNTAG_Bool(REGB0)) {
3047 } else {
3048 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3049 if (UNTAG_Bool(REGB1)) {
3050 REGB1 = TAG_Bool(false);
3051 REGB0 = REGB1;
3052 } else {
3053 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3054 REGB0 = REGB1;
3055 }
3056 }
3057 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3058 if (UNTAG_Bool(REGB0)) {
3059 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3060 if (UNTAG_Bool(REGB0)) {
3061 } else {
3062 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3063 if (UNTAG_Bool(REGB1)) {
3064 REGB1 = TAG_Bool(false);
3065 REGB0 = REGB1;
3066 } else {
3067 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3068 REGB0 = REGB1;
3069 }
3070 }
3071 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3072 } else {
3073 REGB1 = TAG_Bool(false);
3074 REGB0 = REGB1;
3075 }
3076 if (UNTAG_Bool(REGB0)) {
3077 /* ./syntax//typing.nit:467 */
3078 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3079 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3080 if (UNTAG_Bool(REGB0)) {
3081 } else {
3082 nit_abort("Cast failed", NULL, LOCATE_typing, 467);
3083 }
3084 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3085 }
3086 }
3087 }
3088 /* ./syntax//typing.nit:469 */
3089 REGB0 = TAG_Bool(true);
3090 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3091 label1: while(0);
3092 stack_frame_head = fra.me.prev;
3093 return;
3094 }
3095 void typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3096 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3097 val_t REGB0;
3098 val_t REGB1;
3099 val_t tmp;
3100 static val_t once_value_2; /* Once value */
3101 static val_t once_value_3; /* Once value */
3102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3103 fra.me.file = LOCATE_typing;
3104 fra.me.line = 474;
3105 fra.me.meth = LOCATE_typing___ABreakExpr___after_typing;
3106 fra.me.has_broke = 0;
3107 fra.me.REG_size = 5;
3108 fra.me.REG[0] = NIT_NULL;
3109 fra.me.REG[1] = NIT_NULL;
3110 fra.me.REG[2] = NIT_NULL;
3111 fra.me.REG[3] = NIT_NULL;
3112 fra.me.REG[4] = NIT_NULL;
3113 fra.me.REG[0] = p0;
3114 fra.me.REG[1] = p1;
3115 /* ./syntax//typing.nit:476 */
3116 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3117 /* ./syntax//typing.nit:477 */
3118 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3119 /* ./syntax//typing.nit:478 */
3120 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3121 fra.me.REG[3] = CALL_scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3122 /* ./syntax//typing.nit:479 */
3123 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3124 if (UNTAG_Bool(REGB0)) {
3125 } else {
3126 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3127 if (UNTAG_Bool(REGB1)) {
3128 REGB1 = TAG_Bool(false);
3129 REGB0 = REGB1;
3130 } else {
3131 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3132 REGB0 = REGB1;
3133 }
3134 }
3135 if (UNTAG_Bool(REGB0)) {
3136 goto label1;
3137 }
3138 /* ./syntax//typing.nit:481 */
3139 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3140 if (UNTAG_Bool(REGB0)) {
3141 nit_abort("Reciever is null", NULL, LOCATE_typing, 481);
3142 }
3143 fra.me.REG[4] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3144 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3145 /* ./syntax//typing.nit:483 */
3146 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3147 if (UNTAG_Bool(REGB0)) {
3148 nit_abort("Reciever is null", NULL, LOCATE_typing, 483);
3149 }
3150 fra.me.REG[3] = CALL_scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3151 /* ./syntax//typing.nit:484 */
3152 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3153 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3154 if (UNTAG_Bool(REGB0)) {
3155 } else {
3156 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3157 if (UNTAG_Bool(REGB1)) {
3158 REGB1 = TAG_Bool(false);
3159 REGB0 = REGB1;
3160 } else {
3161 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3162 REGB0 = REGB1;
3163 }
3164 }
3165 if (UNTAG_Bool(REGB0)) {
3166 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3167 if (UNTAG_Bool(REGB0)) {
3168 } else {
3169 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3170 if (UNTAG_Bool(REGB1)) {
3171 REGB1 = TAG_Bool(false);
3172 REGB0 = REGB1;
3173 } else {
3174 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3175 REGB0 = REGB1;
3176 }
3177 }
3178 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3179 } else {
3180 REGB1 = TAG_Bool(false);
3181 REGB0 = REGB1;
3182 }
3183 if (UNTAG_Bool(REGB0)) {
3184 /* ./syntax//typing.nit:485 */
3185 if (!once_value_2) {
3186 fra.me.REG[2] = BOX_NativeString("Error: break with a value required in this block.");
3187 REGB0 = TAG_Int(49);
3188 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3189 once_value_2 = fra.me.REG[2];
3190 register_static_object(&once_value_2);
3191 } else fra.me.REG[2] = once_value_2;
3192 fra.me.REG[2] = fra.me.REG[2];
3193 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3194 } else {
3195 /* ./syntax//typing.nit:486 */
3196 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3197 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3198 if (UNTAG_Bool(REGB0)) {
3199 } else {
3200 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3201 if (UNTAG_Bool(REGB1)) {
3202 REGB1 = TAG_Bool(false);
3203 REGB0 = REGB1;
3204 } else {
3205 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3206 REGB0 = REGB1;
3207 }
3208 }
3209 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3210 if (UNTAG_Bool(REGB0)) {
3211 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3212 if (UNTAG_Bool(REGB0)) {
3213 } else {
3214 REGB1 = TAG_Bool(fra.me.REG[3]==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[3])(fra.me.REG[3], NIT_NULL);
3220 REGB0 = REGB1;
3221 }
3222 }
3223 } else {
3224 REGB1 = TAG_Bool(false);
3225 REGB0 = REGB1;
3226 }
3227 if (UNTAG_Bool(REGB0)) {
3228 /* ./syntax//typing.nit:487 */
3229 if (!once_value_3) {
3230 fra.me.REG[2] = BOX_NativeString("Error: break without value required in this block.");
3231 REGB0 = TAG_Int(50);
3232 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3233 once_value_3 = fra.me.REG[2];
3234 register_static_object(&once_value_3);
3235 } else fra.me.REG[2] = once_value_3;
3236 fra.me.REG[2] = fra.me.REG[2];
3237 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3238 } else {
3239 /* ./syntax//typing.nit:488 */
3240 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3241 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3242 if (UNTAG_Bool(REGB0)) {
3243 } else {
3244 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3245 if (UNTAG_Bool(REGB1)) {
3246 REGB1 = TAG_Bool(false);
3247 REGB0 = REGB1;
3248 } else {
3249 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3250 REGB0 = REGB1;
3251 }
3252 }
3253 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3254 if (UNTAG_Bool(REGB0)) {
3255 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3256 if (UNTAG_Bool(REGB0)) {
3257 } else {
3258 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3259 if (UNTAG_Bool(REGB1)) {
3260 REGB1 = TAG_Bool(false);
3261 REGB0 = REGB1;
3262 } else {
3263 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3264 REGB0 = REGB1;
3265 }
3266 }
3267 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3268 } else {
3269 REGB1 = TAG_Bool(false);
3270 REGB0 = REGB1;
3271 }
3272 if (UNTAG_Bool(REGB0)) {
3273 /* ./syntax//typing.nit:490 */
3274 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3275 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3276 if (UNTAG_Bool(REGB0)) {
3277 } else {
3278 nit_abort("Cast failed", NULL, LOCATE_typing, 490);
3279 }
3280 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3281 if (UNTAG_Bool(REGB0)) {
3282 nit_abort("Reciever is null", NULL, LOCATE_typing, 490);
3283 }
3284 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3285 }
3286 }
3287 }
3288 /* ./syntax//typing.nit:492 */
3289 REGB0 = TAG_Bool(true);
3290 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3291 label1: while(0);
3292 stack_frame_head = fra.me.prev;
3293 return;
3294 }
3295 void typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3296 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3297 val_t REGB0;
3298 val_t tmp;
3299 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3300 fra.me.file = LOCATE_typing;
3301 fra.me.line = 497;
3302 fra.me.meth = LOCATE_typing___AAbortExpr___after_typing;
3303 fra.me.has_broke = 0;
3304 fra.me.REG_size = 2;
3305 fra.me.REG[0] = NIT_NULL;
3306 fra.me.REG[1] = NIT_NULL;
3307 fra.me.REG[0] = p0;
3308 fra.me.REG[1] = p1;
3309 /* ./syntax//typing.nit:499 */
3310 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3311 /* ./syntax//typing.nit:500 */
3312 REGB0 = TAG_Bool(true);
3313 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3314 stack_frame_head = fra.me.prev;
3315 return;
3316 }
3317 val_t typing___AAbsControl___escapable(val_t p0){
3318 struct {struct stack_frame_t me;} fra;
3319 val_t tmp;
3320 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3321 fra.me.file = LOCATE_typing;
3322 fra.me.line = 507;
3323 fra.me.meth = LOCATE_typing___AAbsControl___escapable;
3324 fra.me.has_broke = 0;
3325 fra.me.REG_size = 1;
3326 fra.me.REG[0] = NIT_NULL;
3327 fra.me.REG[0] = p0;
3328 /* ./syntax//typing.nit:507 */
3329 fra.me.REG[0] = ATTR_typing___AAbsControl____escapable(fra.me.REG[0]);
3330 stack_frame_head = fra.me.prev;
3331 return fra.me.REG[0];
3332 }
3333 void typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3334 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3335 val_t REGB0;
3336 val_t REGB1;
3337 val_t tmp;
3338 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3339 fra.me.file = LOCATE_typing;
3340 fra.me.line = 510;
3341 fra.me.meth = LOCATE_typing___AAbsControl___process_control;
3342 fra.me.has_broke = 0;
3343 fra.me.REG_size = 7;
3344 fra.me.REG[0] = NIT_NULL;
3345 fra.me.REG[1] = NIT_NULL;
3346 fra.me.REG[2] = NIT_NULL;
3347 fra.me.REG[3] = NIT_NULL;
3348 fra.me.REG[4] = NIT_NULL;
3349 fra.me.REG[5] = NIT_NULL;
3350 fra.me.REG[6] = NIT_NULL;
3351 fra.me.REG[0] = p0;
3352 fra.me.REG[1] = p1;
3353 fra.me.REG[2] = p2;
3354 fra.me.REG[3] = p3;
3355 REGB0 = p4;
3356 /* ./syntax//typing.nit:514 */
3357 ATTR_typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3358 /* ./syntax//typing.nit:515 */
3359 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3360 CALL_scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3361 /* ./syntax//typing.nit:518 */
3362 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3363 /* ./syntax//typing.nit:519 */
3364 fra.me.REG[4] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3365 /* ./syntax//typing.nit:520 */
3366 if (UNTAG_Bool(REGB0)) {
3367 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3368 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3369 }
3370 /* ./syntax//typing.nit:523 */
3371 CALL_typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3372 /* ./syntax//typing.nit:526 */
3373 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3374 REGB1 = CALL_flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3375 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3376 if (UNTAG_Bool(REGB1)) {
3377 /* ./syntax//typing.nit:527 */
3378 fra.me.REG[5] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3379 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3380 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3381 }
3382 /* ./syntax//typing.nit:531 */
3383 fra.me.REG[6] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3384 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3385 if (UNTAG_Bool(REGB1)) {
3386 /* ./syntax//typing.nit:532 */
3387 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3388 /* ./syntax//typing.nit:533 */
3389 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3390 } else {
3391 /* ./syntax//typing.nit:535 */
3392 fra.me.REG[2] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3393 fra.me.REG[2] = CALL_flow___FlowContext___merge(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[2]);
3394 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3395 }
3396 /* ./syntax//typing.nit:538 */
3397 if (UNTAG_Bool(REGB0)) {
3398 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3399 }
3400 /* ./syntax//typing.nit:539 */
3401 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3402 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3403 /* ./syntax//typing.nit:540 */
3404 REGB0 = TAG_Bool(true);
3405 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3406 stack_frame_head = fra.me.prev;
3407 return;
3408 }
3409 void typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3410 struct {struct stack_frame_t me;} fra;
3411 val_t tmp;
3412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3413 fra.me.file = LOCATE_typing;
3414 fra.me.line = 543;
3415 fra.me.meth = LOCATE_typing___AAbsControl___process_control_inside;
3416 fra.me.has_broke = 0;
3417 fra.me.REG_size = 0;
3418 /* ./syntax//typing.nit:543 */
3419 nit_abort("Deferred method called", NULL, LOCATE_typing, 543);
3420 stack_frame_head = fra.me.prev;
3421 return;
3422 }
3423 void typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3424 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3425 val_t REGB0;
3426 val_t tmp;
3427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3428 fra.me.file = LOCATE_typing;
3429 fra.me.line = 549;
3430 fra.me.meth = LOCATE_typing___ADoExpr___accept_typing;
3431 fra.me.has_broke = 0;
3432 fra.me.REG_size = 4;
3433 fra.me.REG[0] = NIT_NULL;
3434 fra.me.REG[1] = NIT_NULL;
3435 fra.me.REG[2] = NIT_NULL;
3436 fra.me.REG[3] = NIT_NULL;
3437 fra.me.REG[0] = p0;
3438 fra.me.REG[1] = p1;
3439 /* ./syntax//typing.nit:551 */
3440 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3441 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3442 REGB0 = TAG_Bool(false);
3443 CALL_typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3444 stack_frame_head = fra.me.prev;
3445 return;
3446 }
3447 void typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3448 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3449 val_t tmp;
3450 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3451 fra.me.file = LOCATE_typing;
3452 fra.me.line = 554;
3453 fra.me.meth = LOCATE_typing___ADoExpr___process_control_inside;
3454 fra.me.has_broke = 0;
3455 fra.me.REG_size = 2;
3456 fra.me.REG[0] = NIT_NULL;
3457 fra.me.REG[1] = NIT_NULL;
3458 fra.me.REG[0] = p0;
3459 fra.me.REG[1] = p1;
3460 /* ./syntax//typing.nit:556 */
3461 fra.me.REG[0] = CALL_parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3462 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3463 stack_frame_head = fra.me.prev;
3464 return;
3465 }
3466 void typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3467 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3468 val_t REGB0;
3469 val_t tmp;
3470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3471 fra.me.file = LOCATE_typing;
3472 fra.me.line = 561;
3473 fra.me.meth = LOCATE_typing___AIfExpr___accept_typing;
3474 fra.me.has_broke = 0;
3475 fra.me.REG_size = 5;
3476 fra.me.REG[0] = NIT_NULL;
3477 fra.me.REG[1] = NIT_NULL;
3478 fra.me.REG[2] = NIT_NULL;
3479 fra.me.REG[3] = NIT_NULL;
3480 fra.me.REG[4] = NIT_NULL;
3481 fra.me.REG[0] = p0;
3482 fra.me.REG[1] = p1;
3483 /* ./syntax//typing.nit:563 */
3484 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3485 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3486 /* ./syntax//typing.nit:564 */
3487 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3488 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3489 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3490 /* ./syntax//typing.nit:567 */
3491 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3492 /* ./syntax//typing.nit:568 */
3493 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3494 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3495 /* ./syntax//typing.nit:571 */
3496 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3497 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3498 /* ./syntax//typing.nit:574 */
3499 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3500 /* ./syntax//typing.nit:577 */
3501 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3502 /* ./syntax//typing.nit:578 */
3503 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3504 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3505 /* ./syntax//typing.nit:581 */
3506 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3507 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3508 /* ./syntax//typing.nit:584 */
3509 fra.me.REG[3] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3510 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3511 fra.me.REG[4] = CALL_flow___FlowContext___merge_reash(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
3512 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3513 /* ./syntax//typing.nit:585 */
3514 REGB0 = TAG_Bool(true);
3515 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3516 stack_frame_head = fra.me.prev;
3517 return;
3518 }
3519 void typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3520 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3521 val_t REGB0;
3522 val_t tmp;
3523 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3524 fra.me.file = LOCATE_typing;
3525 fra.me.line = 591;
3526 fra.me.meth = LOCATE_typing___AWhileExpr___accept_typing;
3527 fra.me.has_broke = 0;
3528 fra.me.REG_size = 4;
3529 fra.me.REG[0] = NIT_NULL;
3530 fra.me.REG[1] = NIT_NULL;
3531 fra.me.REG[2] = NIT_NULL;
3532 fra.me.REG[3] = NIT_NULL;
3533 fra.me.REG[0] = p0;
3534 fra.me.REG[1] = p1;
3535 /* ./syntax//typing.nit:593 */
3536 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3537 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3538 REGB0 = TAG_Bool(true);
3539 CALL_typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3540 stack_frame_head = fra.me.prev;
3541 return;
3542 }
3543 void typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3544 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3545 val_t REGB0;
3546 val_t tmp;
3547 static val_t once_value_1; /* Once value */
3548 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3549 fra.me.file = LOCATE_typing;
3550 fra.me.line = 596;
3551 fra.me.meth = LOCATE_typing___AWhileExpr___process_control_inside;
3552 fra.me.has_broke = 0;
3553 fra.me.REG_size = 5;
3554 fra.me.REG[0] = NIT_NULL;
3555 fra.me.REG[1] = NIT_NULL;
3556 fra.me.REG[2] = NIT_NULL;
3557 fra.me.REG[3] = NIT_NULL;
3558 fra.me.REG[4] = NIT_NULL;
3559 fra.me.REG[0] = p0;
3560 fra.me.REG[1] = p1;
3561 /* ./syntax//typing.nit:598 */
3562 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3563 /* ./syntax//typing.nit:601 */
3564 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3565 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3566 /* ./syntax//typing.nit:602 */
3567 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3568 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3569 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3570 /* ./syntax//typing.nit:604 */
3571 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3572 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_ATrueExpr, ID_ATrueExpr)) /*cast ATrueExpr*/;
3573 if (UNTAG_Bool(REGB0)) {
3574 /* ./syntax//typing.nit:605 */
3575 if (!once_value_1) {
3576 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3577 REGB0 = TAG_Int(47);
3578 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3579 once_value_1 = fra.me.REG[4];
3580 register_static_object(&once_value_1);
3581 } else fra.me.REG[4] = once_value_1;
3582 fra.me.REG[4] = fra.me.REG[4];
3583 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3584 }
3585 /* ./syntax//typing.nit:609 */
3586 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3587 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3588 /* ./syntax//typing.nit:612 */
3589 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3590 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3591 /* ./syntax//typing.nit:615 */
3592 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3593 /* ./syntax//typing.nit:616 */
3594 fra.me.REG[2] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3595 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3596 /* ./syntax//typing.nit:617 */
3597 fra.me.REG[0] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3598 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3599 if (UNTAG_Bool(REGB0)) {
3600 nit_abort("Reciever is null", NULL, LOCATE_typing, 617);
3601 }
3602 fra.me.REG[0] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3603 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3604 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3605 stack_frame_head = fra.me.prev;
3606 return;
3607 }
3608 void typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3609 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3610 val_t REGB0;
3611 val_t tmp;
3612 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3613 fra.me.file = LOCATE_typing;
3614 fra.me.line = 623;
3615 fra.me.meth = LOCATE_typing___ALoopExpr___accept_typing;
3616 fra.me.has_broke = 0;
3617 fra.me.REG_size = 4;
3618 fra.me.REG[0] = NIT_NULL;
3619 fra.me.REG[1] = NIT_NULL;
3620 fra.me.REG[2] = NIT_NULL;
3621 fra.me.REG[3] = NIT_NULL;
3622 fra.me.REG[0] = p0;
3623 fra.me.REG[1] = p1;
3624 /* ./syntax//typing.nit:625 */
3625 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3626 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3627 REGB0 = TAG_Bool(true);
3628 CALL_typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3629 stack_frame_head = fra.me.prev;
3630 return;
3631 }
3632 void typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
3633 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3634 val_t tmp;
3635 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3636 fra.me.file = LOCATE_typing;
3637 fra.me.line = 628;
3638 fra.me.meth = LOCATE_typing___ALoopExpr___process_control_inside;
3639 fra.me.has_broke = 0;
3640 fra.me.REG_size = 3;
3641 fra.me.REG[0] = NIT_NULL;
3642 fra.me.REG[1] = NIT_NULL;
3643 fra.me.REG[2] = NIT_NULL;
3644 fra.me.REG[0] = p0;
3645 fra.me.REG[1] = p1;
3646 /* ./syntax//typing.nit:631 */
3647 fra.me.REG[2] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3648 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3649 /* ./syntax//typing.nit:634 */
3650 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3651 stack_frame_head = fra.me.prev;
3652 return;
3653 }
3654 val_t typing___AForExpr___variable(val_t p0){
3655 struct {struct stack_frame_t me;} fra;
3656 val_t REGB0;
3657 val_t tmp;
3658 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3659 fra.me.file = LOCATE_typing;
3660 fra.me.line = 641;
3661 fra.me.meth = LOCATE_typing___AForExpr___variable;
3662 fra.me.has_broke = 0;
3663 fra.me.REG_size = 1;
3664 fra.me.REG[0] = NIT_NULL;
3665 fra.me.REG[0] = p0;
3666 /* ./syntax//typing.nit:641 */
3667 fra.me.REG[0] = ATTR_typing___AForExpr____variable(fra.me.REG[0]);
3668 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3669 if (UNTAG_Bool(REGB0)) {
3670 } else {
3671 nit_abort("Cast failed", NULL, LOCATE_typing, 641);
3672 }
3673 goto label1;
3674 label1: while(0);
3675 stack_frame_head = fra.me.prev;
3676 return fra.me.REG[0];
3677 }
3678 void typing___AForExpr___accept_typing(val_t p0, val_t p1){
3679 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3680 val_t REGB0;
3681 val_t tmp;
3682 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3683 fra.me.file = LOCATE_typing;
3684 fra.me.line = 643;
3685 fra.me.meth = LOCATE_typing___AForExpr___accept_typing;
3686 fra.me.has_broke = 0;
3687 fra.me.REG_size = 4;
3688 fra.me.REG[0] = NIT_NULL;
3689 fra.me.REG[1] = NIT_NULL;
3690 fra.me.REG[2] = NIT_NULL;
3691 fra.me.REG[3] = NIT_NULL;
3692 fra.me.REG[0] = p0;
3693 fra.me.REG[1] = p1;
3694 /* ./syntax//typing.nit:645 */
3695 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3696 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3697 REGB0 = TAG_Bool(true);
3698 CALL_typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3699 stack_frame_head = fra.me.prev;
3700 return;
3701 }
3702 void typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3703 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3704 val_t REGB0;
3705 val_t tmp;
3706 static val_t once_value_2; /* Once value */
3707 static val_t once_value_3; /* Once value */
3708 static val_t once_value_4; /* Once value */
3709 static val_t once_value_5; /* Once value */
3710 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3711 fra.me.file = LOCATE_typing;
3712 fra.me.line = 648;
3713 fra.me.meth = LOCATE_typing___AForExpr___process_control_inside;
3714 fra.me.has_broke = 0;
3715 fra.me.REG_size = 6;
3716 fra.me.REG[0] = NIT_NULL;
3717 fra.me.REG[1] = NIT_NULL;
3718 fra.me.REG[2] = NIT_NULL;
3719 fra.me.REG[3] = NIT_NULL;
3720 fra.me.REG[4] = NIT_NULL;
3721 fra.me.REG[5] = NIT_NULL;
3722 fra.me.REG[0] = p0;
3723 fra.me.REG[1] = p1;
3724 /* ./syntax//typing.nit:650 */
3725 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3726 CALL_scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3727 /* ./syntax//typing.nit:651 */
3728 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3729 /* ./syntax//typing.nit:654 */
3730 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3731 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3732 fra.me.REG[4] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3733 fra.me.REG[4] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[3], fra.me.REG[4]);
3734 /* ./syntax//typing.nit:655 */
3735 ATTR_typing___AForExpr____variable(fra.me.REG[0]) = fra.me.REG[4];
3736 /* ./syntax//typing.nit:656 */
3737 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3738 CALL_scope___ScopeContext___add_variable(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3739 /* ./syntax//typing.nit:659 */
3740 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3741 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3742 /* ./syntax//typing.nit:661 */
3743 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3744 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___type_collection(fra.me.REG[1])(fra.me.REG[1]);
3745 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
3746 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3747 if (UNTAG_Bool(REGB0)) {
3748 goto label1;
3749 }
3750 /* ./syntax//typing.nit:662 */
3751 fra.me.REG[5] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3752 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
3753 /* ./syntax//typing.nit:665 */
3754 if (!once_value_2) {
3755 if (!once_value_3) {
3756 fra.me.REG[3] = BOX_NativeString("iterator");
3757 REGB0 = TAG_Int(8);
3758 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3759 once_value_3 = fra.me.REG[3];
3760 register_static_object(&once_value_3);
3761 } else fra.me.REG[3] = once_value_3;
3762 fra.me.REG[3] = fra.me.REG[3];
3763 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3764 once_value_2 = fra.me.REG[3];
3765 register_static_object(&once_value_2);
3766 } else fra.me.REG[3] = once_value_2;
3767 fra.me.REG[3] = fra.me.REG[3];
3768 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[3]);
3769 /* ./syntax//typing.nit:666 */
3770 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3771 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
3772 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3773 if (UNTAG_Bool(REGB0)) {
3774 } else {
3775 nit_abort("Cast failed", NULL, LOCATE_typing, 666);
3776 }
3777 /* ./syntax//typing.nit:667 */
3778 if (!once_value_4) {
3779 if (!once_value_5) {
3780 fra.me.REG[3] = BOX_NativeString("item");
3781 REGB0 = TAG_Int(4);
3782 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3783 once_value_5 = fra.me.REG[3];
3784 register_static_object(&once_value_5);
3785 } else fra.me.REG[3] = once_value_5;
3786 fra.me.REG[3] = fra.me.REG[3];
3787 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3788 once_value_4 = fra.me.REG[3];
3789 register_static_object(&once_value_4);
3790 } else fra.me.REG[3] = once_value_4;
3791 fra.me.REG[3] = fra.me.REG[3];
3792 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[3]);
3793 /* ./syntax//typing.nit:668 */
3794 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3795 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
3796 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3797 if (UNTAG_Bool(REGB0)) {
3798 } else {
3799 nit_abort("Cast failed", NULL, LOCATE_typing, 668);
3800 }
3801 /* ./syntax//typing.nit:669 */
3802 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3803 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
3804 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3805 if (UNTAG_Bool(REGB0)) {
3806 fra.me.REG[3] = CALL_static_type___MMType___not_for_self(fra.me.REG[5])(fra.me.REG[5]);
3807 fra.me.REG[5] = fra.me.REG[3];
3808 }
3809 /* ./syntax//typing.nit:670 */
3810 CALL_syntax_base___Variable___stype__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3811 /* ./syntax//typing.nit:673 */
3812 fra.me.REG[0] = CALL_parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3813 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3814 /* ./syntax//typing.nit:676 */
3815 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3816 /* ./syntax//typing.nit:677 */
3817 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3818 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3819 label1: while(0);
3820 stack_frame_head = fra.me.prev;
3821 return;
3822 }
3823 void typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
3824 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3825 val_t REGB0;
3826 val_t REGB1;
3827 val_t tmp;
3828 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3829 fra.me.file = LOCATE_typing;
3830 fra.me.line = 682;
3831 fra.me.meth = LOCATE_typing___AAssertExpr___accept_typing;
3832 fra.me.has_broke = 0;
3833 fra.me.REG_size = 4;
3834 fra.me.REG[0] = NIT_NULL;
3835 fra.me.REG[1] = NIT_NULL;
3836 fra.me.REG[2] = NIT_NULL;
3837 fra.me.REG[3] = NIT_NULL;
3838 fra.me.REG[0] = p0;
3839 fra.me.REG[1] = p1;
3840 /* ./syntax//typing.nit:685 */
3841 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3842 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3843 /* ./syntax//typing.nit:686 */
3844 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3845 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3846 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3847 /* ./syntax//typing.nit:689 */
3848 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3849 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3850 if (UNTAG_Bool(REGB0)) {
3851 } else {
3852 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3853 if (UNTAG_Bool(REGB1)) {
3854 REGB1 = TAG_Bool(false);
3855 REGB0 = REGB1;
3856 } else {
3857 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3858 REGB0 = REGB1;
3859 }
3860 }
3861 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3862 if (UNTAG_Bool(REGB0)) {
3863 /* ./syntax//typing.nit:690 */
3864 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3865 /* ./syntax//typing.nit:691 */
3866 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3867 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3868 /* ./syntax//typing.nit:692 */
3869 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3870 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3871 /* ./syntax//typing.nit:693 */
3872 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3873 }
3874 /* ./syntax//typing.nit:697 */
3875 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3876 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3877 /* ./syntax//typing.nit:698 */
3878 REGB0 = TAG_Bool(true);
3879 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3880 stack_frame_head = fra.me.prev;
3881 return;
3882 }
3883 val_t typing___AVarFormExpr___variable(val_t p0){
3884 struct {struct stack_frame_t me;} fra;
3885 val_t REGB0;
3886 val_t tmp;
3887 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3888 fra.me.file = LOCATE_typing;
3889 fra.me.line = 704;
3890 fra.me.meth = LOCATE_typing___AVarFormExpr___variable;
3891 fra.me.has_broke = 0;
3892 fra.me.REG_size = 1;
3893 fra.me.REG[0] = NIT_NULL;
3894 fra.me.REG[0] = p0;
3895 /* ./syntax//typing.nit:704 */
3896 fra.me.REG[0] = ATTR_typing___AVarFormExpr____variable(fra.me.REG[0]);
3897 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3898 if (UNTAG_Bool(REGB0)) {
3899 } else {
3900 nit_abort("Cast failed", NULL, LOCATE_typing, 704);
3901 }
3902 goto label1;
3903 label1: while(0);
3904 stack_frame_head = fra.me.prev;
3905 return fra.me.REG[0];
3906 }
3907 val_t typing___AVarExpr___its_variable(val_t p0){
3908 struct {struct stack_frame_t me;} fra;
3909 val_t tmp;
3910 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3911 fra.me.file = LOCATE_typing;
3912 fra.me.line = 708;
3913 fra.me.meth = LOCATE_typing___AVarExpr___its_variable;
3914 fra.me.has_broke = 0;
3915 fra.me.REG_size = 1;
3916 fra.me.REG[0] = NIT_NULL;
3917 fra.me.REG[0] = p0;
3918 /* ./syntax//typing.nit:708 */
3919 fra.me.REG[0] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3920 goto label1;
3921 label1: while(0);
3922 stack_frame_head = fra.me.prev;
3923 return fra.me.REG[0];
3924 }
3925 void typing___AVarExpr___after_typing(val_t p0, val_t p1){
3926 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3927 val_t REGB0;
3928 val_t REGB1;
3929 val_t tmp;
3930 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3931 fra.me.file = LOCATE_typing;
3932 fra.me.line = 710;
3933 fra.me.meth = LOCATE_typing___AVarExpr___after_typing;
3934 fra.me.has_broke = 0;
3935 fra.me.REG_size = 4;
3936 fra.me.REG[0] = NIT_NULL;
3937 fra.me.REG[1] = NIT_NULL;
3938 fra.me.REG[2] = NIT_NULL;
3939 fra.me.REG[3] = NIT_NULL;
3940 fra.me.REG[0] = p0;
3941 fra.me.REG[1] = p1;
3942 /* ./syntax//typing.nit:712 */
3943 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3944 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3945 CALL_flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
3946 /* ./syntax//typing.nit:713 */
3947 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3948 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3949 fra.me.REG[3] = CALL_flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3950 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
3951 /* ./syntax//typing.nit:714 */
3952 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
3953 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3954 if (UNTAG_Bool(REGB0)) {
3955 } else {
3956 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3957 if (UNTAG_Bool(REGB1)) {
3958 REGB1 = TAG_Bool(false);
3959 REGB0 = REGB1;
3960 } else {
3961 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3962 REGB0 = REGB1;
3963 }
3964 }
3965 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3966 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3967 stack_frame_head = fra.me.prev;
3968 return;
3969 }
3970 void typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
3971 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3972 val_t REGB0;
3973 val_t REGB1;
3974 val_t tmp;
3975 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3976 fra.me.file = LOCATE_typing;
3977 fra.me.line = 719;
3978 fra.me.meth = LOCATE_typing___AVarAssignExpr___after_typing;
3979 fra.me.has_broke = 0;
3980 fra.me.REG_size = 5;
3981 fra.me.REG[0] = NIT_NULL;
3982 fra.me.REG[1] = NIT_NULL;
3983 fra.me.REG[2] = NIT_NULL;
3984 fra.me.REG[3] = NIT_NULL;
3985 fra.me.REG[4] = NIT_NULL;
3986 fra.me.REG[0] = p0;
3987 fra.me.REG[1] = p1;
3988 /* ./syntax//typing.nit:721 */
3989 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3990 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3991 /* ./syntax//typing.nit:724 */
3992 fra.me.REG[2] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3993 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3994 fra.me.REG[3] = CALL_flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3995 /* ./syntax//typing.nit:725 */
3996 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3997 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3998 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3999 if (UNTAG_Bool(REGB0)) {
4000 goto label1;
4001 }
4002 /* ./syntax//typing.nit:726 */
4003 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4004 if (UNTAG_Bool(REGB0)) {
4005 } else {
4006 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4007 if (UNTAG_Bool(REGB1)) {
4008 REGB1 = TAG_Bool(false);
4009 REGB0 = REGB1;
4010 } else {
4011 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4012 REGB0 = REGB1;
4013 }
4014 }
4015 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4016 if (UNTAG_Bool(REGB0)) {
4017 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4018 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4019 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4020 } else {
4021 REGB1 = TAG_Bool(false);
4022 REGB0 = REGB1;
4023 }
4024 if (UNTAG_Bool(REGB0)) {
4025 goto label1;
4026 }
4027 /* ./syntax//typing.nit:729 */
4028 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4029 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4030 fra.me.REG[4] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4031 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4032 fra.me.REG[4] = CALL_flow___FlowContext___sub_with(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
4033 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4034 /* ./syntax//typing.nit:731 */
4035 REGB0 = TAG_Bool(true);
4036 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4037 label1: while(0);
4038 stack_frame_head = fra.me.prev;
4039 return;
4040 }
4041 val_t typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4042 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4043 val_t REGB0;
4044 val_t REGB1;
4045 val_t tmp;
4046 static val_t once_value_2; /* Once value */
4047 static val_t once_value_3; /* Once value */
4048 static val_t once_value_4; /* Once value */
4049 static val_t once_value_5; /* Once value */
4050 static val_t once_value_6; /* Once value */
4051 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4052 fra.me.file = LOCATE_typing;
4053 fra.me.line = 736;
4054 fra.me.meth = LOCATE_typing___AReassignFormExpr___do_rvalue_typing;
4055 fra.me.has_broke = 0;
4056 fra.me.REG_size = 8;
4057 fra.me.REG[0] = NIT_NULL;
4058 fra.me.REG[1] = NIT_NULL;
4059 fra.me.REG[2] = NIT_NULL;
4060 fra.me.REG[3] = NIT_NULL;
4061 fra.me.REG[4] = NIT_NULL;
4062 fra.me.REG[5] = NIT_NULL;
4063 fra.me.REG[6] = NIT_NULL;
4064 fra.me.REG[7] = NIT_NULL;
4065 fra.me.REG[0] = p0;
4066 fra.me.REG[1] = p1;
4067 fra.me.REG[2] = p2;
4068 /* ./syntax//typing.nit:741 */
4069 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4070 if (UNTAG_Bool(REGB0)) {
4071 } else {
4072 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4073 if (UNTAG_Bool(REGB1)) {
4074 REGB1 = TAG_Bool(false);
4075 REGB0 = REGB1;
4076 } else {
4077 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4078 REGB0 = REGB1;
4079 }
4080 }
4081 if (UNTAG_Bool(REGB0)) {
4082 /* ./syntax//typing.nit:742 */
4083 fra.me.REG[3] = NIT_NULL;
4084 goto label1;
4085 }
4086 /* ./syntax//typing.nit:744 */
4087 fra.me.REG[4] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4088 fra.me.REG[4] = CALL_typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4089 /* ./syntax//typing.nit:745 */
4090 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
4091 if (UNTAG_Bool(REGB0)) {
4092 /* ./syntax//typing.nit:746 */
4093 REGB0 = TAG_Int(3);
4094 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
4095 if (!once_value_2) {
4096 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4097 REGB0 = TAG_Int(15);
4098 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4099 once_value_2 = fra.me.REG[6];
4100 register_static_object(&once_value_2);
4101 } else fra.me.REG[6] = once_value_2;
4102 fra.me.REG[6] = fra.me.REG[6];
4103 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4104 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4105 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4106 if (!once_value_3) {
4107 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4108 REGB0 = TAG_Int(17);
4109 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4110 once_value_3 = fra.me.REG[6];
4111 register_static_object(&once_value_3);
4112 } else fra.me.REG[6] = once_value_3;
4113 fra.me.REG[6] = fra.me.REG[6];
4114 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4115 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4116 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4117 /* ./syntax//typing.nit:747 */
4118 fra.me.REG[3] = NIT_NULL;
4119 goto label1;
4120 }
4121 /* ./syntax//typing.nit:749 */
4122 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4123 if (UNTAG_Bool(REGB0)) {
4124 nit_abort("Reciever is null", NULL, LOCATE_typing, 749);
4125 }
4126 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4127 /* ./syntax//typing.nit:750 */
4128 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4129 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4130 if (UNTAG_Bool(REGB0)) {
4131 /* ./syntax//typing.nit:751 */
4132 REGB0 = TAG_Int(5);
4133 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
4134 if (!once_value_4) {
4135 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4136 REGB0 = TAG_Int(15);
4137 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4138 once_value_4 = fra.me.REG[7];
4139 register_static_object(&once_value_4);
4140 } else fra.me.REG[7] = once_value_4;
4141 fra.me.REG[7] = fra.me.REG[7];
4142 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4143 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4144 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4145 if (!once_value_5) {
4146 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4147 REGB0 = TAG_Int(20);
4148 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4149 once_value_5 = fra.me.REG[7];
4150 register_static_object(&once_value_5);
4151 } else fra.me.REG[7] = once_value_5;
4152 fra.me.REG[7] = fra.me.REG[7];
4153 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4154 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4155 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4156 if (!once_value_6) {
4157 fra.me.REG[7] = BOX_NativeString(".");
4158 REGB0 = TAG_Int(1);
4159 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4160 once_value_6 = fra.me.REG[7];
4161 register_static_object(&once_value_6);
4162 } else fra.me.REG[7] = once_value_6;
4163 fra.me.REG[7] = fra.me.REG[7];
4164 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4165 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4166 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4167 /* ./syntax//typing.nit:752 */
4168 fra.me.REG[3] = NIT_NULL;
4169 goto label1;
4170 }
4171 /* ./syntax//typing.nit:754 */
4172 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4173 /* ./syntax//typing.nit:755 */
4174 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4175 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4176 REGB0 = TAG_Bool(false);
4177 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);
4178 /* ./syntax//typing.nit:756 */
4179 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4180 /* ./syntax//typing.nit:757 */
4181 ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4182 /* ./syntax//typing.nit:758 */
4183 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4184 REGB0 = TAG_Int(0);
4185 fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4186 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4187 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4188 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4189 if (UNTAG_Bool(REGB0)) {
4190 fra.me.REG[3] = NIT_NULL;
4191 goto label1;
4192 }
4193 /* ./syntax//typing.nit:759 */
4194 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4195 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4196 if (UNTAG_Bool(REGB0)) {
4197 nit_abort("Reciever is null", NULL, LOCATE_typing, 759);
4198 }
4199 fra.me.REG[2] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4200 fra.me.REG[3] = fra.me.REG[2];
4201 goto label1;
4202 label1: while(0);
4203 stack_frame_head = fra.me.prev;
4204 return fra.me.REG[3];
4205 }
4206 val_t typing___AReassignFormExpr___assign_method(val_t p0){
4207 struct {struct stack_frame_t me;} fra;
4208 val_t REGB0;
4209 val_t tmp;
4210 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4211 fra.me.file = LOCATE_typing;
4212 fra.me.line = 762;
4213 fra.me.meth = LOCATE_typing___AReassignFormExpr___assign_method;
4214 fra.me.has_broke = 0;
4215 fra.me.REG_size = 1;
4216 fra.me.REG[0] = NIT_NULL;
4217 fra.me.REG[0] = p0;
4218 /* ./syntax//typing.nit:762 */
4219 fra.me.REG[0] = ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]);
4220 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4221 if (UNTAG_Bool(REGB0)) {
4222 } else {
4223 nit_abort("Cast failed", NULL, LOCATE_typing, 762);
4224 }
4225 goto label1;
4226 label1: while(0);
4227 stack_frame_head = fra.me.prev;
4228 return fra.me.REG[0];
4229 }
4230 void typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4231 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4232 val_t REGB0;
4233 val_t REGB1;
4234 val_t tmp;
4235 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4236 fra.me.file = LOCATE_typing;
4237 fra.me.line = 767;
4238 fra.me.meth = LOCATE_typing___AVarReassignExpr___after_typing;
4239 fra.me.has_broke = 0;
4240 fra.me.REG_size = 5;
4241 fra.me.REG[0] = NIT_NULL;
4242 fra.me.REG[1] = NIT_NULL;
4243 fra.me.REG[2] = NIT_NULL;
4244 fra.me.REG[3] = NIT_NULL;
4245 fra.me.REG[4] = NIT_NULL;
4246 fra.me.REG[0] = p0;
4247 fra.me.REG[1] = p1;
4248 /* ./syntax//typing.nit:769 */
4249 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4250 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4251 CALL_flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4252 /* ./syntax//typing.nit:770 */
4253 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4254 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4255 /* ./syntax//typing.nit:771 */
4256 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4257 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4258 fra.me.REG[2] = CALL_flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4259 /* ./syntax//typing.nit:772 */
4260 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]);
4261 /* ./syntax//typing.nit:773 */
4262 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4263 if (UNTAG_Bool(REGB0)) {
4264 } else {
4265 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4266 if (UNTAG_Bool(REGB1)) {
4267 REGB1 = TAG_Bool(false);
4268 REGB0 = REGB1;
4269 } else {
4270 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4271 REGB0 = REGB1;
4272 }
4273 }
4274 if (UNTAG_Bool(REGB0)) {
4275 goto label1;
4276 }
4277 /* ./syntax//typing.nit:776 */
4278 fra.me.REG[3] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4279 fra.me.REG[4] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4280 fra.me.REG[4] = CALL_flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4281 /* ./syntax//typing.nit:777 */
4282 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4283 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4284 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4285 if (UNTAG_Bool(REGB0)) {
4286 goto label1;
4287 }
4288 /* ./syntax//typing.nit:778 */
4289 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4290 if (UNTAG_Bool(REGB0)) {
4291 } else {
4292 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4293 if (UNTAG_Bool(REGB1)) {
4294 REGB1 = TAG_Bool(false);
4295 REGB0 = REGB1;
4296 } else {
4297 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4298 REGB0 = REGB1;
4299 }
4300 }
4301 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4302 if (UNTAG_Bool(REGB0)) {
4303 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4304 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
4305 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4306 } else {
4307 REGB1 = TAG_Bool(false);
4308 REGB0 = REGB1;
4309 }
4310 if (UNTAG_Bool(REGB0)) {
4311 goto label1;
4312 }
4313 /* ./syntax//typing.nit:781 */
4314 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4315 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4316 fra.me.REG[2] = CALL_flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
4317 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4318 /* ./syntax//typing.nit:783 */
4319 REGB0 = TAG_Bool(true);
4320 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4321 label1: while(0);
4322 stack_frame_head = fra.me.prev;
4323 return;
4324 }
4325 val_t typing___AAssignOp___method_name(val_t p0){
4326 struct {struct stack_frame_t me;} fra;
4327 val_t tmp;
4328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4329 fra.me.file = LOCATE_typing;
4330 fra.me.line = 788;
4331 fra.me.meth = LOCATE_typing___AAssignOp___method_name;
4332 fra.me.has_broke = 0;
4333 fra.me.REG_size = 0;
4334 /* ./syntax//typing.nit:788 */
4335 nit_abort("Deferred method called", NULL, LOCATE_typing, 788);
4336 stack_frame_head = fra.me.prev;
4337 return NIT_NULL;
4338 }
4339 val_t typing___APlusAssignOp___method_name(val_t p0){
4340 struct {struct stack_frame_t me;} fra;
4341 val_t REGB0;
4342 val_t tmp;
4343 static val_t once_value_1; /* Once value */
4344 static val_t once_value_2; /* Once value */
4345 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4346 fra.me.file = LOCATE_typing;
4347 fra.me.line = 791;
4348 fra.me.meth = LOCATE_typing___APlusAssignOp___method_name;
4349 fra.me.has_broke = 0;
4350 fra.me.REG_size = 1;
4351 fra.me.REG[0] = NIT_NULL;
4352 fra.me.REG[0] = p0;
4353 /* ./syntax//typing.nit:791 */
4354 if (!once_value_1) {
4355 if (!once_value_2) {
4356 fra.me.REG[0] = BOX_NativeString("+");
4357 REGB0 = TAG_Int(1);
4358 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4359 once_value_2 = fra.me.REG[0];
4360 register_static_object(&once_value_2);
4361 } else fra.me.REG[0] = once_value_2;
4362 fra.me.REG[0] = fra.me.REG[0];
4363 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4364 once_value_1 = fra.me.REG[0];
4365 register_static_object(&once_value_1);
4366 } else fra.me.REG[0] = once_value_1;
4367 fra.me.REG[0] = fra.me.REG[0];
4368 goto label3;
4369 label3: while(0);
4370 stack_frame_head = fra.me.prev;
4371 return fra.me.REG[0];
4372 }
4373 val_t typing___AMinusAssignOp___method_name(val_t p0){
4374 struct {struct stack_frame_t me;} fra;
4375 val_t REGB0;
4376 val_t tmp;
4377 static val_t once_value_1; /* Once value */
4378 static val_t once_value_2; /* Once value */
4379 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4380 fra.me.file = LOCATE_typing;
4381 fra.me.line = 794;
4382 fra.me.meth = LOCATE_typing___AMinusAssignOp___method_name;
4383 fra.me.has_broke = 0;
4384 fra.me.REG_size = 1;
4385 fra.me.REG[0] = NIT_NULL;
4386 fra.me.REG[0] = p0;
4387 /* ./syntax//typing.nit:794 */
4388 if (!once_value_1) {
4389 if (!once_value_2) {
4390 fra.me.REG[0] = BOX_NativeString("-");
4391 REGB0 = TAG_Int(1);
4392 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4393 once_value_2 = fra.me.REG[0];
4394 register_static_object(&once_value_2);
4395 } else fra.me.REG[0] = once_value_2;
4396 fra.me.REG[0] = fra.me.REG[0];
4397 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4398 once_value_1 = fra.me.REG[0];
4399 register_static_object(&once_value_1);
4400 } else fra.me.REG[0] = once_value_1;
4401 fra.me.REG[0] = fra.me.REG[0];
4402 goto label3;
4403 label3: while(0);
4404 stack_frame_head = fra.me.prev;
4405 return fra.me.REG[0];
4406 }
4407 val_t typing___ASelfExpr___variable(val_t p0){
4408 struct {struct stack_frame_t me;} fra;
4409 val_t REGB0;
4410 val_t tmp;
4411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4412 fra.me.file = LOCATE_typing;
4413 fra.me.line = 799;
4414 fra.me.meth = LOCATE_typing___ASelfExpr___variable;
4415 fra.me.has_broke = 0;
4416 fra.me.REG_size = 1;
4417 fra.me.REG[0] = NIT_NULL;
4418 fra.me.REG[0] = p0;
4419 /* ./syntax//typing.nit:799 */
4420 fra.me.REG[0] = ATTR_typing___ASelfExpr____variable(fra.me.REG[0]);
4421 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4422 if (UNTAG_Bool(REGB0)) {
4423 } else {
4424 nit_abort("Cast failed", NULL, LOCATE_typing, 799);
4425 }
4426 goto label1;
4427 label1: while(0);
4428 stack_frame_head = fra.me.prev;
4429 return fra.me.REG[0];
4430 }
4431 val_t typing___ASelfExpr___its_variable(val_t p0){
4432 struct {struct stack_frame_t me;} fra;
4433 val_t tmp;
4434 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4435 fra.me.file = LOCATE_typing;
4436 fra.me.line = 801;
4437 fra.me.meth = LOCATE_typing___ASelfExpr___its_variable;
4438 fra.me.has_broke = 0;
4439 fra.me.REG_size = 1;
4440 fra.me.REG[0] = NIT_NULL;
4441 fra.me.REG[0] = p0;
4442 /* ./syntax//typing.nit:801 */
4443 fra.me.REG[0] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4444 goto label1;
4445 label1: while(0);
4446 stack_frame_head = fra.me.prev;
4447 return fra.me.REG[0];
4448 }
4449 void typing___ASelfExpr___after_typing(val_t p0, val_t p1){
4450 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4451 val_t REGB0;
4452 val_t tmp;
4453 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4454 fra.me.file = LOCATE_typing;
4455 fra.me.line = 803;
4456 fra.me.meth = LOCATE_typing___ASelfExpr___after_typing;
4457 fra.me.has_broke = 0;
4458 fra.me.REG_size = 3;
4459 fra.me.REG[0] = NIT_NULL;
4460 fra.me.REG[1] = NIT_NULL;
4461 fra.me.REG[2] = NIT_NULL;
4462 fra.me.REG[0] = p0;
4463 fra.me.REG[1] = p1;
4464 /* ./syntax//typing.nit:805 */
4465 fra.me.REG[2] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
4466 ATTR_typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
4467 /* ./syntax//typing.nit:806 */
4468 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4469 fra.me.REG[2] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4470 fra.me.REG[2] = CALL_flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4471 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4472 /* ./syntax//typing.nit:807 */
4473 REGB0 = TAG_Bool(true);
4474 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4475 stack_frame_head = fra.me.prev;
4476 return;
4477 }
4478 val_t typing___ASelfExpr___is_self(val_t p0){
4479 struct {struct stack_frame_t me;} fra;
4480 val_t REGB0;
4481 val_t tmp;
4482 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4483 fra.me.file = LOCATE_typing;
4484 fra.me.line = 810;
4485 fra.me.meth = LOCATE_typing___ASelfExpr___is_self;
4486 fra.me.has_broke = 0;
4487 fra.me.REG_size = 1;
4488 fra.me.REG[0] = NIT_NULL;
4489 fra.me.REG[0] = p0;
4490 /* ./syntax//typing.nit:810 */
4491 REGB0 = TAG_Bool(true);
4492 goto label1;
4493 label1: while(0);
4494 stack_frame_head = fra.me.prev;
4495 return REGB0;
4496 }
4497 val_t typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
4498 struct {struct stack_frame_t me;} fra;
4499 val_t REGB0;
4500 val_t tmp;
4501 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4502 fra.me.file = LOCATE_typing;
4503 fra.me.line = 814;
4504 fra.me.meth = LOCATE_typing___AImplicitSelfExpr___is_implicit_self;
4505 fra.me.has_broke = 0;
4506 fra.me.REG_size = 1;
4507 fra.me.REG[0] = NIT_NULL;
4508 fra.me.REG[0] = p0;
4509 /* ./syntax//typing.nit:814 */
4510 REGB0 = TAG_Bool(true);
4511 goto label1;
4512 label1: while(0);
4513 stack_frame_head = fra.me.prev;
4514 return REGB0;
4515 }
4516 void typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
4517 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4518 val_t REGB0;
4519 val_t REGB1;
4520 val_t tmp;
4521 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4522 fra.me.file = LOCATE_typing;
4523 fra.me.line = 818;
4524 fra.me.meth = LOCATE_typing___AIfexprExpr___accept_typing;
4525 fra.me.has_broke = 0;
4526 fra.me.REG_size = 5;
4527 fra.me.REG[0] = NIT_NULL;
4528 fra.me.REG[1] = NIT_NULL;
4529 fra.me.REG[2] = NIT_NULL;
4530 fra.me.REG[3] = NIT_NULL;
4531 fra.me.REG[4] = NIT_NULL;
4532 fra.me.REG[0] = p0;
4533 fra.me.REG[1] = p1;
4534 /* ./syntax//typing.nit:820 */
4535 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4536 /* ./syntax//typing.nit:823 */
4537 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4538 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4539 /* ./syntax//typing.nit:824 */
4540 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4541 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4542 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4543 /* ./syntax//typing.nit:827 */
4544 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4545 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4546 /* ./syntax//typing.nit:830 */
4547 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4548 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4549 /* ./syntax//typing.nit:833 */
4550 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4551 /* ./syntax//typing.nit:836 */
4552 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4553 /* ./syntax//typing.nit:837 */
4554 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4555 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4556 /* ./syntax//typing.nit:840 */
4557 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4558 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4559 /* ./syntax//typing.nit:843 */
4560 fra.me.REG[2] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4561 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4562 fra.me.REG[3] = CALL_flow___FlowContext___merge_reash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
4563 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4564 /* ./syntax//typing.nit:845 */
4565 REGB0 = TAG_Int(2);
4566 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4567 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4568 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4569 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4570 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4571 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[3]);
4572 /* ./syntax//typing.nit:846 */
4573 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4574 if (UNTAG_Bool(REGB0)) {
4575 } else {
4576 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4577 if (UNTAG_Bool(REGB1)) {
4578 REGB1 = TAG_Bool(false);
4579 REGB0 = REGB1;
4580 } else {
4581 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4582 REGB0 = REGB1;
4583 }
4584 }
4585 if (UNTAG_Bool(REGB0)) {
4586 goto label1;
4587 }
4588 /* ./syntax//typing.nit:848 */
4589 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4590 /* ./syntax//typing.nit:849 */
4591 REGB0 = TAG_Bool(true);
4592 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4593 label1: while(0);
4594 stack_frame_head = fra.me.prev;
4595 return;
4596 }
4597 void typing___ABoolExpr___after_typing(val_t p0, val_t p1){
4598 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4599 val_t REGB0;
4600 val_t tmp;
4601 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4602 fra.me.file = LOCATE_typing;
4603 fra.me.line = 854;
4604 fra.me.meth = LOCATE_typing___ABoolExpr___after_typing;
4605 fra.me.has_broke = 0;
4606 fra.me.REG_size = 2;
4607 fra.me.REG[0] = NIT_NULL;
4608 fra.me.REG[1] = NIT_NULL;
4609 fra.me.REG[0] = p0;
4610 fra.me.REG[1] = p1;
4611 /* ./syntax//typing.nit:856 */
4612 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4613 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4614 /* ./syntax//typing.nit:857 */
4615 REGB0 = TAG_Bool(true);
4616 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4617 stack_frame_head = fra.me.prev;
4618 return;
4619 }
4620 void typing___AOrExpr___accept_typing(val_t p0, val_t p1){
4621 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4622 val_t REGB0;
4623 val_t REGB1;
4624 val_t tmp;
4625 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4626 fra.me.file = LOCATE_typing;
4627 fra.me.line = 862;
4628 fra.me.meth = LOCATE_typing___AOrExpr___accept_typing;
4629 fra.me.has_broke = 0;
4630 fra.me.REG_size = 5;
4631 fra.me.REG[0] = NIT_NULL;
4632 fra.me.REG[1] = NIT_NULL;
4633 fra.me.REG[2] = NIT_NULL;
4634 fra.me.REG[3] = NIT_NULL;
4635 fra.me.REG[4] = NIT_NULL;
4636 fra.me.REG[0] = p0;
4637 fra.me.REG[1] = p1;
4638 /* ./syntax//typing.nit:864 */
4639 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4640 /* ./syntax//typing.nit:865 */
4641 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4642 /* ./syntax//typing.nit:866 */
4643 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4644 /* ./syntax//typing.nit:869 */
4645 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4646 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4647 /* ./syntax//typing.nit:872 */
4648 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4649 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4650 /* ./syntax//typing.nit:875 */
4651 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4652 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4653 /* ./syntax//typing.nit:876 */
4654 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4655 fra.me.REG[4] = CALL_typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4656 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4657 if (UNTAG_Bool(REGB0)) {
4658 } else {
4659 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4660 if (UNTAG_Bool(REGB1)) {
4661 REGB1 = TAG_Bool(false);
4662 REGB0 = REGB1;
4663 } else {
4664 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4665 REGB0 = REGB1;
4666 }
4667 }
4668 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4669 if (UNTAG_Bool(REGB0)) {
4670 /* ./syntax//typing.nit:877 */
4671 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4672 fra.me.REG[4] = CALL_typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4673 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4674 } else {
4675 /* ./syntax//typing.nit:879 */
4676 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4677 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4678 }
4679 /* ./syntax//typing.nit:882 */
4680 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4681 /* ./syntax//typing.nit:884 */
4682 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4683 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4684 /* ./syntax//typing.nit:885 */
4685 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4686 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4687 /* ./syntax//typing.nit:886 */
4688 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4689 /* ./syntax//typing.nit:887 */
4690 REGB0 = TAG_Bool(true);
4691 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4692 stack_frame_head = fra.me.prev;
4693 return;
4694 }
4695 void typing___AAndExpr___accept_typing(val_t p0, val_t p1){
4696 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4697 val_t REGB0;
4698 val_t REGB1;
4699 val_t tmp;
4700 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4701 fra.me.file = LOCATE_typing;
4702 fra.me.line = 892;
4703 fra.me.meth = LOCATE_typing___AAndExpr___accept_typing;
4704 fra.me.has_broke = 0;
4705 fra.me.REG_size = 5;
4706 fra.me.REG[0] = NIT_NULL;
4707 fra.me.REG[1] = NIT_NULL;
4708 fra.me.REG[2] = NIT_NULL;
4709 fra.me.REG[3] = NIT_NULL;
4710 fra.me.REG[4] = NIT_NULL;
4711 fra.me.REG[0] = p0;
4712 fra.me.REG[1] = p1;
4713 /* ./syntax//typing.nit:894 */
4714 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4715 /* ./syntax//typing.nit:895 */
4716 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4717 /* ./syntax//typing.nit:898 */
4718 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4719 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4720 /* ./syntax//typing.nit:901 */
4721 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4722 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4723 /* ./syntax//typing.nit:904 */
4724 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4725 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4726 /* ./syntax//typing.nit:905 */
4727 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4728 fra.me.REG[4] = CALL_typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4729 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4730 if (UNTAG_Bool(REGB0)) {
4731 } else {
4732 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4733 if (UNTAG_Bool(REGB1)) {
4734 REGB1 = TAG_Bool(false);
4735 REGB0 = REGB1;
4736 } else {
4737 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4738 REGB0 = REGB1;
4739 }
4740 }
4741 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4742 if (UNTAG_Bool(REGB0)) {
4743 /* ./syntax//typing.nit:906 */
4744 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4745 fra.me.REG[4] = CALL_typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4746 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4747 } else {
4748 /* ./syntax//typing.nit:908 */
4749 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4750 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4751 }
4752 /* ./syntax//typing.nit:911 */
4753 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4754 /* ./syntax//typing.nit:913 */
4755 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4756 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4757 /* ./syntax//typing.nit:914 */
4758 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4759 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4760 /* ./syntax//typing.nit:915 */
4761 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4762 /* ./syntax//typing.nit:916 */
4763 REGB0 = TAG_Bool(true);
4764 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4765 stack_frame_head = fra.me.prev;
4766 return;
4767 }
4768 void typing___ANotExpr___after_typing(val_t p0, val_t p1){
4769 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4770 val_t REGB0;
4771 val_t tmp;
4772 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4773 fra.me.file = LOCATE_typing;
4774 fra.me.line = 921;
4775 fra.me.meth = LOCATE_typing___ANotExpr___after_typing;
4776 fra.me.has_broke = 0;
4777 fra.me.REG_size = 4;
4778 fra.me.REG[0] = NIT_NULL;
4779 fra.me.REG[1] = NIT_NULL;
4780 fra.me.REG[2] = NIT_NULL;
4781 fra.me.REG[3] = NIT_NULL;
4782 fra.me.REG[0] = p0;
4783 fra.me.REG[1] = p1;
4784 /* ./syntax//typing.nit:923 */
4785 fra.me.REG[2] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4786 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4787 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4788 /* ./syntax//typing.nit:926 */
4789 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4790 fra.me.REG[3] = ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
4791 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
4792 /* ./syntax//typing.nit:927 */
4793 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4794 fra.me.REG[3] = ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
4795 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
4796 /* ./syntax//typing.nit:929 */
4797 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4798 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4799 /* ./syntax//typing.nit:930 */
4800 REGB0 = TAG_Bool(true);
4801 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4802 stack_frame_head = fra.me.prev;
4803 return;
4804 }
4805 void typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
4806 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4807 val_t REGB0;
4808 val_t REGB1;
4809 val_t tmp;
4810 static val_t once_value_1; /* Once value */
4811 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4812 fra.me.file = LOCATE_typing;
4813 fra.me.line = 935;
4814 fra.me.meth = LOCATE_typing___AOrElseExpr___after_typing;
4815 fra.me.has_broke = 0;
4816 fra.me.REG_size = 7;
4817 fra.me.REG[0] = NIT_NULL;
4818 fra.me.REG[1] = NIT_NULL;
4819 fra.me.REG[2] = NIT_NULL;
4820 fra.me.REG[3] = NIT_NULL;
4821 fra.me.REG[4] = NIT_NULL;
4822 fra.me.REG[5] = NIT_NULL;
4823 fra.me.REG[6] = NIT_NULL;
4824 fra.me.REG[0] = p0;
4825 fra.me.REG[1] = p1;
4826 /* ./syntax//typing.nit:937 */
4827 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4828 /* ./syntax//typing.nit:940 */
4829 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4830 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4831 /* ./syntax//typing.nit:941 */
4832 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4833 CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4834 /* ./syntax//typing.nit:944 */
4835 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4836 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4837 /* ./syntax//typing.nit:945 */
4838 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4839 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4840 if (UNTAG_Bool(REGB0)) {
4841 /* ./syntax//typing.nit:946 */
4842 fra.me.REG[4] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4843 if (!once_value_1) {
4844 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
4845 REGB0 = TAG_Int(60);
4846 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4847 once_value_1 = fra.me.REG[5];
4848 register_static_object(&once_value_1);
4849 } else fra.me.REG[5] = once_value_1;
4850 fra.me.REG[5] = fra.me.REG[5];
4851 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4852 } else {
4853 /* ./syntax//typing.nit:948 */
4854 fra.me.REG[5] = CALL_static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
4855 fra.me.REG[3] = fra.me.REG[5];
4856 }
4857 /* ./syntax//typing.nit:952 */
4858 fra.me.REG[5] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4859 fra.me.REG[5] = CALL_typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
4860 /* ./syntax//typing.nit:953 */
4861 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4862 if (UNTAG_Bool(REGB0)) {
4863 } else {
4864 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4865 if (UNTAG_Bool(REGB1)) {
4866 REGB1 = TAG_Bool(false);
4867 REGB0 = REGB1;
4868 } else {
4869 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4870 REGB0 = REGB1;
4871 }
4872 }
4873 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4874 if (UNTAG_Bool(REGB0)) {
4875 /* ./syntax//typing.nit:954 */
4876 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4877 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
4878 CALL_flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[5], fra.me.REG[6]);
4879 }
4880 /* ./syntax//typing.nit:958 */
4881 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4882 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
4883 /* ./syntax//typing.nit:959 */
4884 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4885 CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
4886 /* ./syntax//typing.nit:962 */
4887 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4888 /* ./syntax//typing.nit:965 */
4889 REGB0 = TAG_Int(1);
4890 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4891 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4892 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4893 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
4894 /* ./syntax//typing.nit:966 */
4895 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4896 if (UNTAG_Bool(REGB0)) {
4897 } else {
4898 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4899 if (UNTAG_Bool(REGB1)) {
4900 REGB1 = TAG_Bool(false);
4901 REGB0 = REGB1;
4902 } else {
4903 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4904 REGB0 = REGB1;
4905 }
4906 }
4907 if (UNTAG_Bool(REGB0)) {
4908 goto label2;
4909 }
4910 /* ./syntax//typing.nit:968 */
4911 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4912 /* ./syntax//typing.nit:969 */
4913 REGB0 = TAG_Bool(true);
4914 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4915 label2: while(0);
4916 stack_frame_head = fra.me.prev;
4917 return;
4918 }
4919 void typing___AIntExpr___after_typing(val_t p0, val_t p1){
4920 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4921 val_t REGB0;
4922 val_t tmp;
4923 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4924 fra.me.file = LOCATE_typing;
4925 fra.me.line = 974;
4926 fra.me.meth = LOCATE_typing___AIntExpr___after_typing;
4927 fra.me.has_broke = 0;
4928 fra.me.REG_size = 2;
4929 fra.me.REG[0] = NIT_NULL;
4930 fra.me.REG[1] = NIT_NULL;
4931 fra.me.REG[0] = p0;
4932 fra.me.REG[1] = p1;
4933 /* ./syntax//typing.nit:976 */
4934 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
4935 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4936 /* ./syntax//typing.nit:977 */
4937 REGB0 = TAG_Bool(true);
4938 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4939 stack_frame_head = fra.me.prev;
4940 return;
4941 }
4942 void typing___AFloatExpr___after_typing(val_t p0, val_t p1){
4943 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4944 val_t REGB0;
4945 val_t tmp;
4946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4947 fra.me.file = LOCATE_typing;
4948 fra.me.line = 982;
4949 fra.me.meth = LOCATE_typing___AFloatExpr___after_typing;
4950 fra.me.has_broke = 0;
4951 fra.me.REG_size = 2;
4952 fra.me.REG[0] = NIT_NULL;
4953 fra.me.REG[1] = NIT_NULL;
4954 fra.me.REG[0] = p0;
4955 fra.me.REG[1] = p1;
4956 /* ./syntax//typing.nit:984 */
4957 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
4958 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4959 /* ./syntax//typing.nit:985 */
4960 REGB0 = TAG_Bool(true);
4961 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4962 stack_frame_head = fra.me.prev;
4963 return;
4964 }
4965 void typing___ACharExpr___after_typing(val_t p0, val_t p1){
4966 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4967 val_t REGB0;
4968 val_t tmp;
4969 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4970 fra.me.file = LOCATE_typing;
4971 fra.me.line = 990;
4972 fra.me.meth = LOCATE_typing___ACharExpr___after_typing;
4973 fra.me.has_broke = 0;
4974 fra.me.REG_size = 2;
4975 fra.me.REG[0] = NIT_NULL;
4976 fra.me.REG[1] = NIT_NULL;
4977 fra.me.REG[0] = p0;
4978 fra.me.REG[1] = p1;
4979 /* ./syntax//typing.nit:992 */
4980 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
4981 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4982 /* ./syntax//typing.nit:993 */
4983 REGB0 = TAG_Bool(true);
4984 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4985 stack_frame_head = fra.me.prev;
4986 return;
4987 }
4988 void typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
4989 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4990 val_t REGB0;
4991 val_t tmp;
4992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4993 fra.me.file = LOCATE_typing;
4994 fra.me.line = 998;
4995 fra.me.meth = LOCATE_typing___AStringFormExpr___after_typing;
4996 fra.me.has_broke = 0;
4997 fra.me.REG_size = 2;
4998 fra.me.REG[0] = NIT_NULL;
4999 fra.me.REG[1] = NIT_NULL;
5000 fra.me.REG[0] = p0;
5001 fra.me.REG[1] = p1;
5002 /* ./syntax//typing.nit:1000 */
5003 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5004 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5005 /* ./syntax//typing.nit:1001 */
5006 REGB0 = TAG_Bool(true);
5007 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5008 stack_frame_head = fra.me.prev;
5009 return;
5010 }
5011 val_t typing___ASuperstringExpr___atype(val_t p0){
5012 struct {struct stack_frame_t me;} fra;
5013 val_t REGB0;
5014 val_t tmp;
5015 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5016 fra.me.file = LOCATE_typing;
5017 fra.me.line = 1006;
5018 fra.me.meth = LOCATE_typing___ASuperstringExpr___atype;
5019 fra.me.has_broke = 0;
5020 fra.me.REG_size = 1;
5021 fra.me.REG[0] = NIT_NULL;
5022 fra.me.REG[0] = p0;
5023 /* ./syntax//typing.nit:1006 */
5024 fra.me.REG[0] = ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]);
5025 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5026 if (UNTAG_Bool(REGB0)) {
5027 } else {
5028 nit_abort("Cast failed", NULL, LOCATE_typing, 1006);
5029 }
5030 goto label1;
5031 label1: while(0);
5032 stack_frame_head = fra.me.prev;
5033 return fra.me.REG[0];
5034 }
5035 void typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5036 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5037 val_t REGB0;
5038 val_t tmp;
5039 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5040 fra.me.file = LOCATE_typing;
5041 fra.me.line = 1008;
5042 fra.me.meth = LOCATE_typing___ASuperstringExpr___after_typing;
5043 fra.me.has_broke = 0;
5044 fra.me.REG_size = 5;
5045 fra.me.REG[0] = NIT_NULL;
5046 fra.me.REG[1] = NIT_NULL;
5047 fra.me.REG[2] = NIT_NULL;
5048 fra.me.REG[3] = NIT_NULL;
5049 fra.me.REG[4] = NIT_NULL;
5050 fra.me.REG[0] = p0;
5051 fra.me.REG[1] = p1;
5052 /* ./syntax//typing.nit:1010 */
5053 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5054 /* ./syntax//typing.nit:1011 */
5055 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5056 /* ./syntax//typing.nit:1012 */
5057 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5058 /* ./syntax//typing.nit:1013 */
5059 fra.me.REG[4] = CALL_parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5060 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_typing___ASuperstringExpr___after_typing_1));
5061 /* ./syntax//typing.nit:1014 */
5062 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5063 /* ./syntax//typing.nit:1015 */
5064 ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5065 /* ./syntax//typing.nit:1016 */
5066 REGB0 = TAG_Bool(true);
5067 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5068 stack_frame_head = fra.me.prev;
5069 return;
5070 }
5071 void OC_typing___ASuperstringExpr___after_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
5072 struct {struct stack_frame_t me;} fra;
5073 fun_t CREG[1];
5074 val_t tmp;
5075 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5076 fra.me.file = LOCATE_typing;
5077 fra.me.line = 0;
5078 fra.me.meth = LOCATE_typing___ASuperstringExpr___after_typing;
5079 fra.me.has_broke = 0;
5080 fra.me.REG_size = 1;
5081 fra.me.REG[0] = NIT_NULL;
5082 fra.me.closure_ctx = closctx_param;
5083 fra.me.closure_funs = CREG;
5084 fra.me.REG[0] = p0;
5085 CREG[0] = clos_fun0;
5086 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5087 stack_frame_head = fra.me.prev;
5088 return;
5089 }
5090 void typing___ANullExpr___after_typing(val_t p0, val_t p1){
5091 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5092 val_t REGB0;
5093 val_t tmp;
5094 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5095 fra.me.file = LOCATE_typing;
5096 fra.me.line = 1021;
5097 fra.me.meth = LOCATE_typing___ANullExpr___after_typing;
5098 fra.me.has_broke = 0;
5099 fra.me.REG_size = 2;
5100 fra.me.REG[0] = NIT_NULL;
5101 fra.me.REG[1] = NIT_NULL;
5102 fra.me.REG[0] = p0;
5103 fra.me.REG[1] = p1;
5104 /* ./syntax//typing.nit:1023 */
5105 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5106 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5107 /* ./syntax//typing.nit:1024 */
5108 REGB0 = TAG_Bool(true);
5109 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5110 stack_frame_head = fra.me.prev;
5111 return;
5112 }
5113 void typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5114 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5115 val_t REGB0;
5116 val_t REGB1;
5117 val_t tmp;
5118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5119 fra.me.file = LOCATE_typing;
5120 fra.me.line = 1029;
5121 fra.me.meth = LOCATE_typing___AArrayExpr___after_typing;
5122 fra.me.has_broke = 0;
5123 fra.me.REG_size = 3;
5124 fra.me.REG[0] = NIT_NULL;
5125 fra.me.REG[1] = NIT_NULL;
5126 fra.me.REG[2] = NIT_NULL;
5127 fra.me.REG[0] = p0;
5128 fra.me.REG[1] = p1;
5129 /* ./syntax//typing.nit:1031 */
5130 fra.me.REG[2] = CALL_parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5131 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]);
5132 /* ./syntax//typing.nit:1032 */
5133 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5134 if (UNTAG_Bool(REGB0)) {
5135 } else {
5136 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5137 if (UNTAG_Bool(REGB1)) {
5138 REGB1 = TAG_Bool(false);
5139 REGB0 = REGB1;
5140 } else {
5141 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5142 REGB0 = REGB1;
5143 }
5144 }
5145 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5146 if (UNTAG_Bool(REGB0)) {
5147 CALL_typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5148 }
5149 stack_frame_head = fra.me.prev;
5150 return;
5151 }
5152 void typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5153 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5154 val_t REGB0;
5155 val_t tmp;
5156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5157 fra.me.file = LOCATE_typing;
5158 fra.me.line = 1035;
5159 fra.me.meth = LOCATE_typing___AArrayExpr___do_typing;
5160 fra.me.has_broke = 0;
5161 fra.me.REG_size = 3;
5162 fra.me.REG[0] = NIT_NULL;
5163 fra.me.REG[1] = NIT_NULL;
5164 fra.me.REG[2] = NIT_NULL;
5165 fra.me.REG[0] = p0;
5166 fra.me.REG[1] = p1;
5167 fra.me.REG[2] = p2;
5168 /* ./syntax//typing.nit:1037 */
5169 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5170 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5171 /* ./syntax//typing.nit:1038 */
5172 REGB0 = TAG_Bool(true);
5173 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5174 stack_frame_head = fra.me.prev;
5175 return;
5176 }
5177 void typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5178 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5179 val_t REGB0;
5180 val_t REGB1;
5181 val_t tmp;
5182 static val_t once_value_2; /* Once value */
5183 static val_t once_value_3; /* Once value */
5184 static val_t once_value_4; /* Once value */
5185 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5186 fra.me.file = LOCATE_typing;
5187 fra.me.line = 1043;
5188 fra.me.meth = LOCATE_typing___ARangeExpr___after_typing;
5189 fra.me.has_broke = 0;
5190 fra.me.REG_size = 6;
5191 fra.me.REG[0] = NIT_NULL;
5192 fra.me.REG[1] = NIT_NULL;
5193 fra.me.REG[2] = NIT_NULL;
5194 fra.me.REG[3] = NIT_NULL;
5195 fra.me.REG[4] = NIT_NULL;
5196 fra.me.REG[5] = NIT_NULL;
5197 fra.me.REG[0] = p0;
5198 fra.me.REG[1] = p1;
5199 /* ./syntax//typing.nit:1045 */
5200 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5201 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5202 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5203 if (UNTAG_Bool(REGB0)) {
5204 REGB0 = TAG_Bool(true);
5205 } else {
5206 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5207 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5208 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5209 REGB0 = REGB1;
5210 }
5211 if (UNTAG_Bool(REGB0)) {
5212 goto label1;
5213 }
5214 /* ./syntax//typing.nit:1046 */
5215 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5216 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5217 /* ./syntax//typing.nit:1047 */
5218 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5219 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5220 /* ./syntax//typing.nit:1048 */
5221 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5222 if (UNTAG_Bool(REGB0)) {
5223 /* ./syntax//typing.nit:1049 */
5224 fra.me.REG[2] = fra.me.REG[3];
5225 } else {
5226 /* ./syntax//typing.nit:1050 */
5227 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5228 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5229 if (UNTAG_Bool(REGB0)) {
5230 /* ./syntax//typing.nit:1051 */
5231 REGB0 = TAG_Int(5);
5232 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
5233 if (!once_value_2) {
5234 fra.me.REG[5] = BOX_NativeString("Type error: ");
5235 REGB0 = TAG_Int(12);
5236 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5237 once_value_2 = fra.me.REG[5];
5238 register_static_object(&once_value_2);
5239 } else fra.me.REG[5] = once_value_2;
5240 fra.me.REG[5] = fra.me.REG[5];
5241 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5242 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5243 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5244 if (!once_value_3) {
5245 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5246 REGB0 = TAG_Int(19);
5247 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5248 once_value_3 = fra.me.REG[5];
5249 register_static_object(&once_value_3);
5250 } else fra.me.REG[5] = once_value_3;
5251 fra.me.REG[5] = fra.me.REG[5];
5252 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5253 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5254 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5255 if (!once_value_4) {
5256 fra.me.REG[3] = BOX_NativeString(".");
5257 REGB0 = TAG_Int(1);
5258 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5259 once_value_4 = fra.me.REG[3];
5260 register_static_object(&once_value_4);
5261 } else fra.me.REG[3] = once_value_4;
5262 fra.me.REG[3] = fra.me.REG[3];
5263 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5264 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5265 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5266 /* ./syntax//typing.nit:1052 */
5267 goto label1;
5268 }
5269 }
5270 /* ./syntax//typing.nit:1054 */
5271 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5272 /* ./syntax//typing.nit:1055 */
5273 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5274 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5275 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5276 if (UNTAG_Bool(REGB0)) {
5277 REGB0 = TAG_Bool(true);
5278 } else {
5279 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5280 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5281 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5282 REGB0 = REGB1;
5283 }
5284 if (UNTAG_Bool(REGB0)) {
5285 goto label1;
5286 }
5287 /* ./syntax//typing.nit:1056 */
5288 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5289 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5290 /* ./syntax//typing.nit:1057 */
5291 REGB0 = TAG_Bool(true);
5292 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5293 label1: while(0);
5294 stack_frame_head = fra.me.prev;
5295 return;
5296 }
5297 val_t typing___ASuperExpr___init_in_superclass(val_t p0){
5298 struct {struct stack_frame_t me;} fra;
5299 val_t tmp;
5300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5301 fra.me.file = LOCATE_typing;
5302 fra.me.line = 1062;
5303 fra.me.meth = LOCATE_typing___ASuperExpr___init_in_superclass;
5304 fra.me.has_broke = 0;
5305 fra.me.REG_size = 1;
5306 fra.me.REG[0] = NIT_NULL;
5307 fra.me.REG[0] = p0;
5308 /* ./syntax//typing.nit:1062 */
5309 fra.me.REG[0] = ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
5310 stack_frame_head = fra.me.prev;
5311 return fra.me.REG[0];
5312 }
5313 val_t typing___ASuperExpr___compute_raw_arguments(val_t p0){
5314 struct {struct stack_frame_t me;} fra;
5315 val_t tmp;
5316 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5317 fra.me.file = LOCATE_typing;
5318 fra.me.line = 1063;
5319 fra.me.meth = LOCATE_typing___ASuperExpr___compute_raw_arguments;
5320 fra.me.has_broke = 0;
5321 fra.me.REG_size = 1;
5322 fra.me.REG[0] = NIT_NULL;
5323 fra.me.REG[0] = p0;
5324 /* ./syntax//typing.nit:1063 */
5325 fra.me.REG[0] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5326 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5327 goto label1;
5328 label1: while(0);
5329 stack_frame_head = fra.me.prev;
5330 return fra.me.REG[0];
5331 }
5332 void typing___ASuperExpr___after_typing(val_t p0, val_t p1){
5333 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
5334 val_t REGB0;
5335 val_t REGB1;
5336 val_t REGB2;
5337 val_t tmp;
5338 static val_t once_value_1; /* Once value */
5339 static val_t once_value_2; /* Once value */
5340 static val_t once_value_3; /* Once value */
5341 static val_t once_value_5; /* Once value */
5342 static val_t once_value_6; /* Once value */
5343 static val_t once_value_8; /* Once value */
5344 static val_t once_value_9; /* Once value */
5345 static val_t once_value_10; /* Once value */
5346 static val_t once_value_11; /* Once value */
5347 static val_t once_value_12; /* Once value */
5348 static val_t once_value_13; /* Once value */
5349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5350 fra.me.file = LOCATE_typing;
5351 fra.me.line = 1064;
5352 fra.me.meth = LOCATE_typing___ASuperExpr___after_typing;
5353 fra.me.has_broke = 0;
5354 fra.me.REG_size = 9;
5355 fra.me.REG[0] = NIT_NULL;
5356 fra.me.REG[1] = NIT_NULL;
5357 fra.me.REG[2] = NIT_NULL;
5358 fra.me.REG[3] = NIT_NULL;
5359 fra.me.REG[4] = NIT_NULL;
5360 fra.me.REG[5] = NIT_NULL;
5361 fra.me.REG[6] = NIT_NULL;
5362 fra.me.REG[7] = NIT_NULL;
5363 fra.me.REG[8] = NIT_NULL;
5364 fra.me.REG[0] = p0;
5365 fra.me.REG[1] = p1;
5366 /* ./syntax//typing.nit:1066 */
5367 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5368 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
5369 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
5370 /* ./syntax//typing.nit:1067 */
5371 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5372 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5373 if (UNTAG_Bool(REGB0)) {
5374 /* ./syntax//typing.nit:1068 */
5375 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5376 REGB0 = TAG_Bool(true);
5377 CALL_abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
5378 } else {
5379 /* ./syntax//typing.nit:1069 */
5380 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5381 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
5382 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
5383 if (UNTAG_Bool(REGB0)) {
5384 /* ./syntax//typing.nit:1070 */
5385 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5386 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5387 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5388 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5389 /* ./../lib/standard//collection//array.nit:231 */
5390 fra.me.REG[3] = fra.me.REG[4];
5391 /* ./../lib/standard//collection//array.nit:234 */
5392 REGB0 = TAG_Int(0);
5393 /* ./../lib/standard//collection//array.nit:235 */
5394 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5395 if (UNTAG_Bool(REGB1)) {
5396 } else {
5397 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5398 }
5399 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5400 /* ./../lib/standard//collection//array.nit:236 */
5401 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[3]);
5402 /* ./../lib/standard//collection//array.nit:237 */
5403 while(1) {
5404 /* ./../lib/standard//collection//array.nit:23 */
5405 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5406 if (UNTAG_Bool(REGB1)) {
5407 } else {
5408 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5409 }
5410 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5411 /* ./../lib/standard//kernel.nit:212 */
5412 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5413 /* ./../lib/standard//collection//array.nit:237 */
5414 if (UNTAG_Bool(REGB1)) {
5415 /* ./../lib/standard//collection//array.nit:238 */
5416 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5417 if (UNTAG_Bool(REGB1)) {
5418 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5419 }
5420 /* ./../lib/standard//collection//array.nit:654 */
5421 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5422 /* ./syntax//typing.nit:1072 */
5423 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5424 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
5425 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5426 if (UNTAG_Bool(REGB1)) {
5427 /* ./syntax//typing.nit:1073 */
5428 REGB1 = TAG_Int(5);
5429 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
5430 if (!once_value_1) {
5431 fra.me.REG[8] = BOX_NativeString("Error: ");
5432 REGB1 = TAG_Int(7);
5433 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5434 once_value_1 = fra.me.REG[8];
5435 register_static_object(&once_value_1);
5436 } else fra.me.REG[8] = once_value_1;
5437 fra.me.REG[8] = fra.me.REG[8];
5438 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5439 fra.me.REG[8] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
5440 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
5441 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5442 if (!once_value_2) {
5443 fra.me.REG[8] = BOX_NativeString("::");
5444 REGB1 = TAG_Int(2);
5445 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5446 once_value_2 = fra.me.REG[8];
5447 register_static_object(&once_value_2);
5448 } else fra.me.REG[8] = once_value_2;
5449 fra.me.REG[8] = fra.me.REG[8];
5450 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5451 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5452 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5453 if (!once_value_3) {
5454 fra.me.REG[8] = BOX_NativeString(" is not a constructor.");
5455 REGB1 = TAG_Int(22);
5456 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5457 once_value_3 = fra.me.REG[8];
5458 register_static_object(&once_value_3);
5459 } else fra.me.REG[8] = once_value_3;
5460 fra.me.REG[8] = fra.me.REG[8];
5461 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5462 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5463 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
5464 } else {
5465 /* ./syntax//typing.nit:1075 */
5466 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5467 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5468 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
5469 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5470 }
5471 /* ./../lib/standard//collection//array.nit:239 */
5472 REGB1 = TAG_Int(1);
5473 /* ./../lib/standard//kernel.nit:215 */
5474 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5475 /* ./../lib/standard//collection//array.nit:239 */
5476 REGB0 = REGB1;
5477 } else {
5478 /* ./../lib/standard//collection//array.nit:237 */
5479 goto label4;
5480 }
5481 }
5482 label4: while(0);
5483 /* ./syntax//typing.nit:1078 */
5484 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5485 if (UNTAG_Bool(REGB0)) {
5486 /* ./syntax//typing.nit:1079 */
5487 REGB0 = TAG_Int(3);
5488 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5489 if (!once_value_5) {
5490 fra.me.REG[3] = BOX_NativeString("Error: No contructor named ");
5491 REGB0 = TAG_Int(27);
5492 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5493 once_value_5 = fra.me.REG[3];
5494 register_static_object(&once_value_5);
5495 } else fra.me.REG[3] = once_value_5;
5496 fra.me.REG[3] = fra.me.REG[3];
5497 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5498 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5499 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
5500 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5501 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5502 if (!once_value_6) {
5503 fra.me.REG[3] = BOX_NativeString(" in superclasses.");
5504 REGB0 = TAG_Int(17);
5505 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5506 once_value_6 = fra.me.REG[3];
5507 register_static_object(&once_value_6);
5508 } else fra.me.REG[3] = once_value_6;
5509 fra.me.REG[3] = fra.me.REG[3];
5510 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5511 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5512 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5513 /* ./syntax//typing.nit:1080 */
5514 goto label7;
5515 } else {
5516 /* ./../lib/standard//collection//array.nit:23 */
5517 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5518 if (UNTAG_Bool(REGB0)) {
5519 } else {
5520 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5521 }
5522 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5523 /* ./syntax//typing.nit:1081 */
5524 REGB1 = TAG_Int(1);
5525 /* ./../lib/standard//kernel.nit:214 */
5526 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
5527 /* ./syntax//typing.nit:1081 */
5528 if (UNTAG_Bool(REGB1)) {
5529 /* ./syntax//typing.nit:1082 */
5530 REGB1 = TAG_Int(5);
5531 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB1);
5532 if (!once_value_8) {
5533 fra.me.REG[3] = BOX_NativeString("Error: Conflicting contructors named ");
5534 REGB1 = TAG_Int(37);
5535 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5536 once_value_8 = fra.me.REG[3];
5537 register_static_object(&once_value_8);
5538 } else fra.me.REG[3] = once_value_8;
5539 fra.me.REG[3] = fra.me.REG[3];
5540 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5541 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5542 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
5543 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5544 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5545 if (!once_value_9) {
5546 fra.me.REG[3] = BOX_NativeString(" in superclasses: ");
5547 REGB1 = TAG_Int(18);
5548 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5549 once_value_9 = fra.me.REG[3];
5550 register_static_object(&once_value_9);
5551 } else fra.me.REG[3] = once_value_9;
5552 fra.me.REG[3] = fra.me.REG[3];
5553 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5554 if (!once_value_10) {
5555 fra.me.REG[3] = BOX_NativeString(", ");
5556 REGB1 = TAG_Int(2);
5557 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5558 once_value_10 = fra.me.REG[3];
5559 register_static_object(&once_value_10);
5560 } else fra.me.REG[3] = once_value_10;
5561 fra.me.REG[3] = fra.me.REG[3];
5562 fra.me.REG[3] = CALL_string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5563 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5564 if (!once_value_11) {
5565 fra.me.REG[3] = BOX_NativeString(".");
5566 REGB1 = TAG_Int(1);
5567 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5568 once_value_11 = fra.me.REG[3];
5569 register_static_object(&once_value_11);
5570 } else fra.me.REG[3] = once_value_11;
5571 fra.me.REG[3] = fra.me.REG[3];
5572 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5573 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5574 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5575 /* ./syntax//typing.nit:1083 */
5576 goto label7;
5577 }
5578 }
5579 /* ./syntax//typing.nit:1085 */
5580 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
5581 /* ./syntax//typing.nit:1086 */
5582 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5583 if (UNTAG_Bool(REGB1)) {
5584 } else {
5585 nit_abort("Assert failed", NULL, LOCATE_typing, 1086);
5586 }
5587 /* ./syntax//typing.nit:1087 */
5588 ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]) = fra.me.REG[4];
5589 /* ./syntax//typing.nit:1088 */
5590 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
5591 /* ./syntax//typing.nit:1089 */
5592 fra.me.REG[5] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5593 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
5594 REGB0 = TAG_Int(0);
5595 /* ./../lib/standard//kernel.nit:214 */
5596 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
5597 /* ./syntax//typing.nit:1089 */
5598 if (UNTAG_Bool(REGB0)) {
5599 /* ./syntax//typing.nit:1090 */
5600 fra.me.REG[5] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5601 fra.me.REG[5] = CALL_syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
5602 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5603 if (UNTAG_Bool(REGB0)) {
5604 } else {
5605 nit_abort("Cast failed", NULL, LOCATE_typing, 1090);
5606 }
5607 REGB0 = TAG_Bool(true);
5608 fra.me.REG[5] = CALL_typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], REGB0);
5609 /* ./syntax//typing.nit:1091 */
5610 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5611 fra.me.REG[3] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5612 CALL_typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
5613 }
5614 } else {
5615 /* ./syntax//typing.nit:1094 */
5616 REGB0 = TAG_Int(3);
5617 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
5618 if (!once_value_12) {
5619 fra.me.REG[4] = BOX_NativeString("Error: No super method to call for ");
5620 REGB0 = TAG_Int(35);
5621 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5622 once_value_12 = fra.me.REG[4];
5623 register_static_object(&once_value_12);
5624 } else fra.me.REG[4] = once_value_12;
5625 fra.me.REG[4] = fra.me.REG[4];
5626 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5627 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5628 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5629 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5630 if (!once_value_13) {
5631 fra.me.REG[4] = BOX_NativeString(".");
5632 REGB0 = TAG_Int(1);
5633 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5634 once_value_13 = fra.me.REG[4];
5635 register_static_object(&once_value_13);
5636 } else fra.me.REG[4] = once_value_13;
5637 fra.me.REG[4] = fra.me.REG[4];
5638 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5639 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5640 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
5641 /* ./syntax//typing.nit:1095 */
5642 goto label7;
5643 }
5644 }
5645 /* ./syntax//typing.nit:1098 */
5646 fra.me.REG[3] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
5647 fra.me.REG[4] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5648 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[4])(fra.me.REG[4]);
5649 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5650 if (UNTAG_Bool(REGB0)) {
5651 } else {
5652 nit_abort("Cast failed", NULL, LOCATE_typing, 1098);
5653 }
5654 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5655 if (UNTAG_Bool(REGB0)) {
5656 nit_abort("Reciever is null", NULL, LOCATE_typing, 1098);
5657 }
5658 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5659 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
5660 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5661 if (UNTAG_Bool(REGB0)) {
5662 } else {
5663 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5664 if (UNTAG_Bool(REGB1)) {
5665 REGB1 = TAG_Bool(false);
5666 REGB0 = REGB1;
5667 } else {
5668 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5669 REGB0 = REGB1;
5670 }
5671 }
5672 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5673 if (UNTAG_Bool(REGB0)) {
5674 /* ./syntax//typing.nit:1099 */
5675 fra.me.REG[4] = NEW_Array_array___Array___init();
5676 /* ./syntax//typing.nit:1100 */
5677 fra.me.REG[3] = NIT_NULL;
5678 /* ./../lib/standard//collection//array.nit:234 */
5679 REGB0 = TAG_Int(0);
5680 /* ./../lib/standard//collection//array.nit:235 */
5681 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5682 if (UNTAG_Bool(REGB1)) {
5683 } else {
5684 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5685 }
5686 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5687 /* ./../lib/standard//collection//array.nit:236 */
5688 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[2]);
5689 /* ./../lib/standard//collection//array.nit:237 */
5690 while(1) {
5691 /* ./../lib/standard//collection//array.nit:23 */
5692 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5693 if (UNTAG_Bool(REGB1)) {
5694 } else {
5695 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5696 }
5697 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5698 /* ./../lib/standard//kernel.nit:212 */
5699 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5700 /* ./../lib/standard//collection//array.nit:237 */
5701 if (UNTAG_Bool(REGB1)) {
5702 /* ./../lib/standard//collection//array.nit:238 */
5703 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5704 if (UNTAG_Bool(REGB1)) {
5705 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5706 }
5707 /* ./../lib/standard//collection//array.nit:654 */
5708 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5709 /* ./syntax//typing.nit:1102 */
5710 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5711 if (UNTAG_Bool(REGB1)) {
5712 } else {
5713 nit_abort("Assert failed", NULL, LOCATE_typing, 1102);
5714 }
5715 /* ./syntax//typing.nit:1103 */
5716 fra.me.REG[7] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5717 fra.me.REG[7] = CALL_syntax_base___Variable___stype(fra.me.REG[7])(fra.me.REG[7]);
5718 REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5719 if (UNTAG_Bool(REGB1)) {
5720 } else {
5721 nit_abort("Cast failed", NULL, LOCATE_typing, 1103);
5722 }
5723 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5724 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
5725 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5726 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5727 if (UNTAG_Bool(REGB1)) {
5728 nit_abort("Reciever is null", NULL, LOCATE_typing, 1103);
5729 }
5730 fra.me.REG[6] = CALL_static_type___MMType___for_module(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
5731 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5732 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
5733 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5734 if (UNTAG_Bool(REGB1)) {
5735 nit_abort("Reciever is null", NULL, LOCATE_typing, 1103);
5736 }
5737 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
5738 fra.me.REG[7] = CALL_static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5739 /* ./syntax//typing.nit:1104 */
5740 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
5741 /* ./syntax//typing.nit:1105 */
5742 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5743 if (UNTAG_Bool(REGB1)) {
5744 } else {
5745 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5746 if (UNTAG_Bool(REGB2)) {
5747 REGB2 = TAG_Bool(false);
5748 REGB1 = REGB2;
5749 } else {
5750 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5751 REGB1 = REGB2;
5752 }
5753 }
5754 if (UNTAG_Bool(REGB1)) {
5755 REGB1 = TAG_Bool(true);
5756 } else {
5757 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5758 if (UNTAG_Bool(REGB2)) {
5759 nit_abort("Reciever is null", NULL, LOCATE_typing, 1105);
5760 }
5761 REGB2 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
5762 REGB1 = REGB2;
5763 }
5764 if (UNTAG_Bool(REGB1)) {
5765 /* ./syntax//typing.nit:1106 */
5766 fra.me.REG[3] = fra.me.REG[7];
5767 }
5768 /* ./../lib/standard//collection//array.nit:239 */
5769 REGB1 = TAG_Int(1);
5770 /* ./../lib/standard//kernel.nit:215 */
5771 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5772 /* ./../lib/standard//collection//array.nit:239 */
5773 REGB0 = REGB1;
5774 } else {
5775 /* ./../lib/standard//collection//array.nit:237 */
5776 goto label14;
5777 }
5778 }
5779 label14: while(0);
5780 /* ./../lib/standard//collection//array.nit:234 */
5781 REGB0 = TAG_Int(0);
5782 /* ./../lib/standard//collection//array.nit:235 */
5783 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5784 if (UNTAG_Bool(REGB1)) {
5785 } else {
5786 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5787 }
5788 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
5789 /* ./../lib/standard//collection//array.nit:236 */
5790 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[4]);
5791 /* ./../lib/standard//collection//array.nit:237 */
5792 while(1) {
5793 /* ./../lib/standard//collection//array.nit:23 */
5794 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5795 if (UNTAG_Bool(REGB1)) {
5796 } else {
5797 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5798 }
5799 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
5800 /* ./../lib/standard//kernel.nit:212 */
5801 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5802 /* ./../lib/standard//collection//array.nit:237 */
5803 if (UNTAG_Bool(REGB1)) {
5804 /* ./../lib/standard//collection//array.nit:238 */
5805 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5806 if (UNTAG_Bool(REGB1)) {
5807 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5808 }
5809 /* ./../lib/standard//collection//array.nit:654 */
5810 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5811 /* ./syntax//typing.nit:1110 */
5812 REGB1 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
5813 if (UNTAG_Bool(REGB1)) {
5814 } else {
5815 nit_abort("Cast failed", NULL, LOCATE_typing, 1110);
5816 }
5817 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]);
5818 /* ./../lib/standard//collection//array.nit:239 */
5819 REGB1 = TAG_Int(1);
5820 /* ./../lib/standard//kernel.nit:215 */
5821 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5822 /* ./../lib/standard//collection//array.nit:239 */
5823 REGB0 = REGB1;
5824 } else {
5825 /* ./../lib/standard//collection//array.nit:237 */
5826 goto label15;
5827 }
5828 }
5829 label15: while(0);
5830 /* ./syntax//typing.nit:1112 */
5831 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5832 }
5833 /* ./syntax//typing.nit:1114 */
5834 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5835 /* ./syntax//typing.nit:1115 */
5836 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
5837 if (UNTAG_Bool(REGB0)) {
5838 } else {
5839 nit_abort("Assert failed", NULL, LOCATE_typing, 1115);
5840 }
5841 /* ./syntax//typing.nit:1116 */
5842 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[1];
5843 /* ./syntax//typing.nit:1117 */
5844 REGB0 = TAG_Bool(true);
5845 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5846 label7: while(0);
5847 stack_frame_head = fra.me.prev;
5848 return;
5849 }
5850 val_t typing___AAttrFormExpr___prop(val_t p0){
5851 struct {struct stack_frame_t me;} fra;
5852 val_t REGB0;
5853 val_t tmp;
5854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5855 fra.me.file = LOCATE_typing;
5856 fra.me.line = 1122;
5857 fra.me.meth = LOCATE_typing___AAttrFormExpr___prop;
5858 fra.me.has_broke = 0;
5859 fra.me.REG_size = 1;
5860 fra.me.REG[0] = NIT_NULL;
5861 fra.me.REG[0] = p0;
5862 /* ./syntax//typing.nit:1122 */
5863 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
5864 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5865 if (UNTAG_Bool(REGB0)) {
5866 } else {
5867 nit_abort("Cast failed", NULL, LOCATE_typing, 1122);
5868 }
5869 goto label1;
5870 label1: while(0);
5871 stack_frame_head = fra.me.prev;
5872 return fra.me.REG[0];
5873 }
5874 val_t typing___AAttrFormExpr___attr_type(val_t p0){
5875 struct {struct stack_frame_t me;} fra;
5876 val_t REGB0;
5877 val_t tmp;
5878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5879 fra.me.file = LOCATE_typing;
5880 fra.me.line = 1125;
5881 fra.me.meth = LOCATE_typing___AAttrFormExpr___attr_type;
5882 fra.me.has_broke = 0;
5883 fra.me.REG_size = 1;
5884 fra.me.REG[0] = NIT_NULL;
5885 fra.me.REG[0] = p0;
5886 /* ./syntax//typing.nit:1125 */
5887 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]);
5888 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5889 if (UNTAG_Bool(REGB0)) {
5890 } else {
5891 nit_abort("Cast failed", NULL, LOCATE_typing, 1125);
5892 }
5893 goto label1;
5894 label1: while(0);
5895 stack_frame_head = fra.me.prev;
5896 return fra.me.REG[0];
5897 }
5898 void typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
5899 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5900 val_t REGB0;
5901 val_t REGB1;
5902 val_t tmp;
5903 static val_t once_value_2; /* Once value */
5904 static val_t once_value_3; /* Once value */
5905 static val_t once_value_4; /* Once value */
5906 static val_t once_value_5; /* Once value */
5907 static val_t once_value_6; /* Once value */
5908 static val_t once_value_7; /* Once value */
5909 static val_t once_value_8; /* Once value */
5910 static val_t once_value_9; /* Once value */
5911 static val_t once_value_10; /* Once value */
5912 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5913 fra.me.file = LOCATE_typing;
5914 fra.me.line = 1128;
5915 fra.me.meth = LOCATE_typing___AAttrFormExpr___do_typing;
5916 fra.me.has_broke = 0;
5917 fra.me.REG_size = 7;
5918 fra.me.REG[0] = NIT_NULL;
5919 fra.me.REG[1] = NIT_NULL;
5920 fra.me.REG[2] = NIT_NULL;
5921 fra.me.REG[3] = NIT_NULL;
5922 fra.me.REG[4] = NIT_NULL;
5923 fra.me.REG[5] = NIT_NULL;
5924 fra.me.REG[6] = NIT_NULL;
5925 fra.me.REG[0] = p0;
5926 fra.me.REG[1] = p1;
5927 /* ./syntax//typing.nit:1131 */
5928 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5929 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5930 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5931 if (UNTAG_Bool(REGB0)) {
5932 goto label1;
5933 }
5934 /* ./syntax//typing.nit:1132 */
5935 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5936 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5937 /* ./syntax//typing.nit:1133 */
5938 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
5939 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
5940 /* ./syntax//typing.nit:1134 */
5941 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
5942 if (UNTAG_Bool(REGB0)) {
5943 /* ./syntax//typing.nit:1135 */
5944 REGB0 = TAG_Int(3);
5945 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
5946 if (!once_value_2) {
5947 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
5948 REGB0 = TAG_Int(18);
5949 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5950 once_value_2 = fra.me.REG[5];
5951 register_static_object(&once_value_2);
5952 } else fra.me.REG[5] = once_value_2;
5953 fra.me.REG[5] = fra.me.REG[5];
5954 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5955 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5956 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5957 if (!once_value_3) {
5958 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
5959 REGB0 = TAG_Int(19);
5960 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5961 once_value_3 = fra.me.REG[5];
5962 register_static_object(&once_value_3);
5963 } else fra.me.REG[5] = once_value_3;
5964 fra.me.REG[5] = fra.me.REG[5];
5965 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5966 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5967 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5968 /* ./syntax//typing.nit:1136 */
5969 goto label1;
5970 }
5971 /* ./syntax//typing.nit:1138 */
5972 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
5973 /* ./syntax//typing.nit:1139 */
5974 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5975 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5976 if (UNTAG_Bool(REGB0)) {
5977 /* ./syntax//typing.nit:1140 */
5978 REGB0 = TAG_Int(5);
5979 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5980 if (!once_value_4) {
5981 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
5982 REGB0 = TAG_Int(17);
5983 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
5984 once_value_4 = fra.me.REG[6];
5985 register_static_object(&once_value_4);
5986 } else fra.me.REG[6] = once_value_4;
5987 fra.me.REG[6] = fra.me.REG[6];
5988 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5989 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5990 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5991 if (!once_value_5) {
5992 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
5993 REGB0 = TAG_Int(19);
5994 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
5995 once_value_5 = fra.me.REG[6];
5996 register_static_object(&once_value_5);
5997 } else fra.me.REG[6] = once_value_5;
5998 fra.me.REG[6] = fra.me.REG[6];
5999 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6000 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6001 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6002 if (!once_value_6) {
6003 fra.me.REG[6] = BOX_NativeString(".");
6004 REGB0 = TAG_Int(1);
6005 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6006 once_value_6 = fra.me.REG[6];
6007 register_static_object(&once_value_6);
6008 } else fra.me.REG[6] = once_value_6;
6009 fra.me.REG[6] = fra.me.REG[6];
6010 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6011 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6012 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6013 /* ./syntax//typing.nit:1141 */
6014 goto label1;
6015 }
6016 /* ./syntax//typing.nit:1143 */
6017 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6018 /* ./syntax//typing.nit:1144 */
6019 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6020 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6021 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
6022 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6023 REGB0 = CALL_abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6024 REGB1 = TAG_Int(3);
6025 /* ./../lib/standard//kernel.nit:212 */
6026 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6027 /* ./syntax//typing.nit:1144 */
6028 if (UNTAG_Bool(REGB1)) {
6029 /* ./syntax//typing.nit:1145 */
6030 REGB1 = TAG_Int(7);
6031 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB1);
6032 if (!once_value_7) {
6033 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
6034 REGB1 = TAG_Int(17);
6035 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
6036 once_value_7 = fra.me.REG[5];
6037 register_static_object(&once_value_7);
6038 } else fra.me.REG[5] = once_value_7;
6039 fra.me.REG[5] = fra.me.REG[5];
6040 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
6041 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6042 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6043 if (!once_value_8) {
6044 fra.me.REG[3] = BOX_NativeString(" from ");
6045 REGB1 = TAG_Int(6);
6046 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6047 once_value_8 = fra.me.REG[3];
6048 register_static_object(&once_value_8);
6049 } else fra.me.REG[3] = once_value_8;
6050 fra.me.REG[3] = fra.me.REG[3];
6051 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6052 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6053 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
6054 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
6055 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6056 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6057 if (!once_value_9) {
6058 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
6059 REGB1 = TAG_Int(17);
6060 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6061 once_value_9 = fra.me.REG[3];
6062 register_static_object(&once_value_9);
6063 } else fra.me.REG[3] = once_value_9;
6064 fra.me.REG[3] = fra.me.REG[3];
6065 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6066 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6067 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6068 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6069 if (!once_value_10) {
6070 fra.me.REG[3] = BOX_NativeString("");
6071 REGB1 = TAG_Int(0);
6072 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6073 once_value_10 = fra.me.REG[3];
6074 register_static_object(&once_value_10);
6075 } else fra.me.REG[3] = once_value_10;
6076 fra.me.REG[3] = fra.me.REG[3];
6077 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6078 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6079 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
6080 }
6081 /* ./syntax//typing.nit:1147 */
6082 ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
6083 /* ./syntax//typing.nit:1148 */
6084 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
6085 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
6086 /* ./syntax//typing.nit:1149 */
6087 fra.me.REG[4] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6088 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
6089 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6090 if (UNTAG_Bool(REGB1)) {
6091 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6092 if (UNTAG_Bool(REGB1)) {
6093 nit_abort("Reciever is null", NULL, LOCATE_typing, 1149);
6094 }
6095 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
6096 fra.me.REG[2] = fra.me.REG[4];
6097 }
6098 /* ./syntax//typing.nit:1150 */
6099 ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
6100 label1: while(0);
6101 stack_frame_head = fra.me.prev;
6102 return;
6103 }
6104 void typing___AAttrExpr___after_typing(val_t p0, val_t p1){
6105 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6106 val_t REGB0;
6107 val_t REGB1;
6108 val_t tmp;
6109 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6110 fra.me.file = LOCATE_typing;
6111 fra.me.line = 1155;
6112 fra.me.meth = LOCATE_typing___AAttrExpr___after_typing;
6113 fra.me.has_broke = 0;
6114 fra.me.REG_size = 2;
6115 fra.me.REG[0] = NIT_NULL;
6116 fra.me.REG[1] = NIT_NULL;
6117 fra.me.REG[0] = p0;
6118 fra.me.REG[1] = p1;
6119 /* ./syntax//typing.nit:1157 */
6120 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6121 /* ./syntax//typing.nit:1158 */
6122 fra.me.REG[1] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6123 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6124 if (UNTAG_Bool(REGB0)) {
6125 } else {
6126 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6127 if (UNTAG_Bool(REGB1)) {
6128 REGB1 = TAG_Bool(false);
6129 REGB0 = REGB1;
6130 } else {
6131 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6132 REGB0 = REGB1;
6133 }
6134 }
6135 if (UNTAG_Bool(REGB0)) {
6136 goto label1;
6137 }
6138 /* ./syntax//typing.nit:1159 */
6139 fra.me.REG[1] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6140 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6141 /* ./syntax//typing.nit:1160 */
6142 REGB0 = TAG_Bool(true);
6143 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6144 label1: while(0);
6145 stack_frame_head = fra.me.prev;
6146 return;
6147 }
6148 void typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
6149 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6150 val_t REGB0;
6151 val_t REGB1;
6152 val_t tmp;
6153 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6154 fra.me.file = LOCATE_typing;
6155 fra.me.line = 1165;
6156 fra.me.meth = LOCATE_typing___AAttrAssignExpr___after_typing;
6157 fra.me.has_broke = 0;
6158 fra.me.REG_size = 4;
6159 fra.me.REG[0] = NIT_NULL;
6160 fra.me.REG[1] = NIT_NULL;
6161 fra.me.REG[2] = NIT_NULL;
6162 fra.me.REG[3] = NIT_NULL;
6163 fra.me.REG[0] = p0;
6164 fra.me.REG[1] = p1;
6165 /* ./syntax//typing.nit:1167 */
6166 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6167 /* ./syntax//typing.nit:1168 */
6168 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6169 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6170 if (UNTAG_Bool(REGB0)) {
6171 } else {
6172 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6173 if (UNTAG_Bool(REGB1)) {
6174 REGB1 = TAG_Bool(false);
6175 REGB0 = REGB1;
6176 } else {
6177 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6178 REGB0 = REGB1;
6179 }
6180 }
6181 if (UNTAG_Bool(REGB0)) {
6182 goto label1;
6183 }
6184 /* ./syntax//typing.nit:1169 */
6185 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6186 fra.me.REG[3] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6187 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6188 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6189 if (UNTAG_Bool(REGB0)) {
6190 goto label1;
6191 }
6192 /* ./syntax//typing.nit:1170 */
6193 REGB0 = TAG_Bool(true);
6194 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6195 label1: while(0);
6196 stack_frame_head = fra.me.prev;
6197 return;
6198 }
6199 void typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
6200 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6201 val_t REGB0;
6202 val_t REGB1;
6203 val_t tmp;
6204 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6205 fra.me.file = LOCATE_typing;
6206 fra.me.line = 1175;
6207 fra.me.meth = LOCATE_typing___AAttrReassignExpr___after_typing;
6208 fra.me.has_broke = 0;
6209 fra.me.REG_size = 4;
6210 fra.me.REG[0] = NIT_NULL;
6211 fra.me.REG[1] = NIT_NULL;
6212 fra.me.REG[2] = NIT_NULL;
6213 fra.me.REG[3] = NIT_NULL;
6214 fra.me.REG[0] = p0;
6215 fra.me.REG[1] = p1;
6216 /* ./syntax//typing.nit:1177 */
6217 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6218 /* ./syntax//typing.nit:1178 */
6219 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6220 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6221 if (UNTAG_Bool(REGB0)) {
6222 } else {
6223 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6224 if (UNTAG_Bool(REGB1)) {
6225 REGB1 = TAG_Bool(false);
6226 REGB0 = REGB1;
6227 } else {
6228 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6229 REGB0 = REGB1;
6230 }
6231 }
6232 if (UNTAG_Bool(REGB0)) {
6233 goto label1;
6234 }
6235 /* ./syntax//typing.nit:1179 */
6236 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6237 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]);
6238 /* ./syntax//typing.nit:1180 */
6239 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6240 if (UNTAG_Bool(REGB0)) {
6241 } else {
6242 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6243 if (UNTAG_Bool(REGB1)) {
6244 REGB1 = TAG_Bool(false);
6245 REGB0 = REGB1;
6246 } else {
6247 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6248 REGB0 = REGB1;
6249 }
6250 }
6251 if (UNTAG_Bool(REGB0)) {
6252 goto label1;
6253 }
6254 /* ./syntax//typing.nit:1181 */
6255 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6256 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6257 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]);
6258 /* ./syntax//typing.nit:1182 */
6259 REGB0 = TAG_Bool(true);
6260 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6261 label1: while(0);
6262 stack_frame_head = fra.me.prev;
6263 return;
6264 }
6265 void typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
6266 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6267 val_t REGB0;
6268 val_t REGB1;
6269 val_t tmp;
6270 static val_t once_value_2; /* Once value */
6271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6272 fra.me.file = LOCATE_typing;
6273 fra.me.line = 1187;
6274 fra.me.meth = LOCATE_typing___AIssetAttrExpr___after_typing;
6275 fra.me.has_broke = 0;
6276 fra.me.REG_size = 3;
6277 fra.me.REG[0] = NIT_NULL;
6278 fra.me.REG[1] = NIT_NULL;
6279 fra.me.REG[2] = NIT_NULL;
6280 fra.me.REG[0] = p0;
6281 fra.me.REG[1] = p1;
6282 /* ./syntax//typing.nit:1189 */
6283 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6284 /* ./syntax//typing.nit:1190 */
6285 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6286 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6287 if (UNTAG_Bool(REGB0)) {
6288 } else {
6289 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6290 if (UNTAG_Bool(REGB1)) {
6291 REGB1 = TAG_Bool(false);
6292 REGB0 = REGB1;
6293 } else {
6294 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6295 REGB0 = REGB1;
6296 }
6297 }
6298 if (UNTAG_Bool(REGB0)) {
6299 goto label1;
6300 }
6301 /* ./syntax//typing.nit:1191 */
6302 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6303 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
6304 if (UNTAG_Bool(REGB0)) {
6305 /* ./syntax//typing.nit:1192 */
6306 if (!once_value_2) {
6307 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
6308 REGB0 = TAG_Int(37);
6309 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
6310 once_value_2 = fra.me.REG[2];
6311 register_static_object(&once_value_2);
6312 } else fra.me.REG[2] = once_value_2;
6313 fra.me.REG[2] = fra.me.REG[2];
6314 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6315 }
6316 /* ./syntax//typing.nit:1194 */
6317 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
6318 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6319 /* ./syntax//typing.nit:1195 */
6320 REGB0 = TAG_Bool(true);
6321 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6322 label1: while(0);
6323 stack_frame_head = fra.me.prev;
6324 return;
6325 }
6326 val_t typing___AAbsAbsSendExpr___prop_signature(val_t p0){
6327 struct {struct stack_frame_t me;} fra;
6328 val_t REGB0;
6329 val_t tmp;
6330 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6331 fra.me.file = LOCATE_typing;
6332 fra.me.line = 1200;
6333 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___prop_signature;
6334 fra.me.has_broke = 0;
6335 fra.me.REG_size = 1;
6336 fra.me.REG[0] = NIT_NULL;
6337 fra.me.REG[0] = p0;
6338 /* ./syntax//typing.nit:1201 */
6339 fra.me.REG[0] = ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]);
6340 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6341 if (UNTAG_Bool(REGB0)) {
6342 } else {
6343 nit_abort("Cast failed", NULL, LOCATE_typing, 1201);
6344 }
6345 goto label1;
6346 label1: while(0);
6347 stack_frame_head = fra.me.prev;
6348 return fra.me.REG[0];
6349 }
6350 val_t typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
6351 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6352 val_t REGB0;
6353 val_t REGB1;
6354 val_t tmp;
6355 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6356 fra.me.file = LOCATE_typing;
6357 fra.me.line = 1204;
6358 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___raw_arguments;
6359 fra.me.has_broke = 0;
6360 fra.me.REG_size = 4;
6361 fra.me.REG[0] = NIT_NULL;
6362 fra.me.REG[1] = NIT_NULL;
6363 fra.me.REG[2] = NIT_NULL;
6364 fra.me.REG[3] = NIT_NULL;
6365 fra.me.REG[0] = p0;
6366 /* ./syntax//typing.nit:1207 */
6367 fra.me.REG[1] = ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
6368 /* ./syntax//typing.nit:1208 */
6369 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6370 if (UNTAG_Bool(REGB0)) {
6371 } else {
6372 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6373 if (UNTAG_Bool(REGB1)) {
6374 REGB1 = TAG_Bool(false);
6375 REGB0 = REGB1;
6376 } else {
6377 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6378 REGB0 = REGB1;
6379 }
6380 }
6381 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6382 if (UNTAG_Bool(REGB0)) {
6383 /* ./syntax//typing.nit:1209 */
6384 fra.me.REG[2] = fra.me.REG[1];
6385 goto label1;
6386 } else {
6387 /* ./syntax//typing.nit:1211 */
6388 fra.me.REG[3] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
6389 fra.me.REG[1] = fra.me.REG[3];
6390 /* ./syntax//typing.nit:1212 */
6391 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6392 if (UNTAG_Bool(REGB0)) {
6393 } else {
6394 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6395 if (UNTAG_Bool(REGB1)) {
6396 REGB1 = TAG_Bool(false);
6397 REGB0 = REGB1;
6398 } else {
6399 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6400 REGB0 = REGB1;
6401 }
6402 }
6403 if (UNTAG_Bool(REGB0)) {
6404 fra.me.REG[3] = NEW_Array_array___Array___init();
6405 fra.me.REG[1] = fra.me.REG[3];
6406 }
6407 /* ./syntax//typing.nit:1213 */
6408 ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
6409 /* ./syntax//typing.nit:1214 */
6410 fra.me.REG[2] = fra.me.REG[1];
6411 goto label1;
6412 }
6413 label1: while(0);
6414 stack_frame_head = fra.me.prev;
6415 return fra.me.REG[2];
6416 }
6417 val_t typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
6418 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6419 val_t REGB0;
6420 val_t tmp;
6421 static val_t once_value_1; /* Once value */
6422 static val_t once_value_2; /* Once value */
6423 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6424 fra.me.file = LOCATE_typing;
6425 fra.me.line = 1220;
6426 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___compute_raw_arguments;
6427 fra.me.has_broke = 0;
6428 fra.me.REG_size = 3;
6429 fra.me.REG[0] = NIT_NULL;
6430 fra.me.REG[1] = NIT_NULL;
6431 fra.me.REG[2] = NIT_NULL;
6432 fra.me.REG[0] = p0;
6433 /* ./syntax//typing.nit:1222 */
6434 REGB0 = TAG_Int(3);
6435 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
6436 if (!once_value_1) {
6437 fra.me.REG[2] = BOX_NativeString("");
6438 REGB0 = TAG_Int(0);
6439 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
6440 once_value_1 = fra.me.REG[2];
6441 register_static_object(&once_value_1);
6442 } else fra.me.REG[2] = once_value_1;
6443 fra.me.REG[2] = fra.me.REG[2];
6444 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6445 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
6446 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6447 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6448 if (!once_value_2) {
6449 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
6450 REGB0 = TAG_Int(25);
6451 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
6452 once_value_2 = fra.me.REG[2];
6453 register_static_object(&once_value_2);
6454 } else fra.me.REG[2] = once_value_2;
6455 fra.me.REG[2] = fra.me.REG[2];
6456 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6457 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
6458 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6459 /* ./syntax//typing.nit:1223 */
6460 fra.me.REG[1] = NIT_NULL;
6461 goto label3;
6462 label3: while(0);
6463 stack_frame_head = fra.me.prev;
6464 return fra.me.REG[1];
6465 }
6466 val_t typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
6467 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6468 val_t REGB0;
6469 val_t REGB1;
6470 val_t REGB2;
6471 val_t REGB3;
6472 val_t REGB4;
6473 val_t REGB5;
6474 val_t REGB6;
6475 val_t REGB7;
6476 val_t REGB8;
6477 val_t REGB9;
6478 val_t REGB10;
6479 val_t REGB11;
6480 val_t tmp;
6481 static val_t once_value_1; /* Once value */
6482 static val_t once_value_2; /* Once value */
6483 static val_t once_value_3; /* Once value */
6484 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6485 fra.me.file = LOCATE_typing;
6486 fra.me.line = 1226;
6487 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_signature;
6488 fra.me.has_broke = 0;
6489 fra.me.REG_size = 7;
6490 fra.me.REG[0] = NIT_NULL;
6491 fra.me.REG[1] = NIT_NULL;
6492 fra.me.REG[2] = NIT_NULL;
6493 fra.me.REG[3] = NIT_NULL;
6494 fra.me.REG[4] = NIT_NULL;
6495 fra.me.REG[5] = NIT_NULL;
6496 fra.me.REG[6] = NIT_NULL;
6497 fra.me.REG[0] = p0;
6498 fra.me.REG[1] = p1;
6499 fra.me.REG[2] = p2;
6500 fra.me.REG[3] = p3;
6501 fra.me.REG[4] = p4;
6502 /* ./syntax//typing.nit:1229 */
6503 REGB0 = CALL_vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
6504 /* ./syntax//typing.nit:1230 */
6505 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
6506 /* ./syntax//typing.nit:1232 */
6507 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6508 if (UNTAG_Bool(REGB2)) {
6509 } else {
6510 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6511 if (UNTAG_Bool(REGB3)) {
6512 REGB3 = TAG_Bool(false);
6513 REGB2 = REGB3;
6514 } else {
6515 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6516 REGB2 = REGB3;
6517 }
6518 }
6519 if (UNTAG_Bool(REGB2)) {
6520 REGB2 = TAG_Int(0);
6521 } else {
6522 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6523 if (UNTAG_Bool(REGB3)) {
6524 nit_abort("Reciever is null", NULL, LOCATE_typing, 1232);
6525 }
6526 /* ./../lib/standard//collection//array.nit:23 */
6527 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6528 if (UNTAG_Bool(REGB3)) {
6529 } else {
6530 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
6531 }
6532 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
6533 /* ./syntax//typing.nit:1232 */
6534 REGB2 = REGB3;
6535 }
6536 /* ./../lib/standard//kernel.nit:214 */
6537 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
6538 /* ./syntax//typing.nit:1233 */
6539 if (UNTAG_Bool(REGB3)) {
6540 REGB3 = TAG_Bool(true);
6541 } else {
6542 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
6543 if (UNTAG_Bool(REGB4)) {
6544 } else {
6545 /* ./../lib/standard//kernel.nit:207 */
6546 REGB5 = TAG_Bool((REGB1)==(REGB2));
6547 /* ./syntax//typing.nit:1233 */
6548 REGB4 = REGB5;
6549 }
6550 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
6551 if (UNTAG_Bool(REGB4)) {
6552 REGB4 = TAG_Int(1);
6553 /* ./../lib/standard//kernel.nit:216 */
6554 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
6555 /* ./syntax//typing.nit:1233 */
6556 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
6557 if (UNTAG_Bool(REGB5)) {
6558 } else {
6559 /* ./../lib/standard//kernel.nit:207 */
6560 REGB4 = TAG_Bool((REGB0)==(REGB4));
6561 /* ./syntax//typing.nit:1233 */
6562 REGB5 = REGB4;
6563 }
6564 } else {
6565 REGB4 = TAG_Bool(false);
6566 REGB5 = REGB4;
6567 }
6568 REGB3 = REGB5;
6569 }
6570 if (UNTAG_Bool(REGB3)) {
6571 /* ./syntax//typing.nit:1234 */
6572 REGB3 = TAG_Int(5);
6573 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB3);
6574 if (!once_value_1) {
6575 fra.me.REG[6] = BOX_NativeString("Error: arity missmatch; prototype is '");
6576 REGB3 = TAG_Int(38);
6577 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
6578 once_value_1 = fra.me.REG[6];
6579 register_static_object(&once_value_1);
6580 } else fra.me.REG[6] = once_value_1;
6581 fra.me.REG[6] = fra.me.REG[6];
6582 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6583 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6584 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6585 if (!once_value_2) {
6586 fra.me.REG[3] = BOX_NativeString("");
6587 REGB3 = TAG_Int(0);
6588 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
6589 once_value_2 = fra.me.REG[3];
6590 register_static_object(&once_value_2);
6591 } else fra.me.REG[3] = once_value_2;
6592 fra.me.REG[3] = fra.me.REG[3];
6593 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6594 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6595 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6596 if (!once_value_3) {
6597 fra.me.REG[3] = BOX_NativeString("'.");
6598 REGB3 = TAG_Int(2);
6599 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
6600 once_value_3 = fra.me.REG[3];
6601 register_static_object(&once_value_3);
6602 } else fra.me.REG[3] = once_value_3;
6603 fra.me.REG[3] = fra.me.REG[3];
6604 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6605 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6606 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6607 /* ./syntax//typing.nit:1235 */
6608 REGB3 = TAG_Bool(false);
6609 goto label4;
6610 }
6611 /* ./syntax//typing.nit:1237 */
6612 REGB5 = TAG_Int(0);
6613 /* ./syntax//typing.nit:1238 */
6614 REGB4 = TAG_Int(0);
6615 /* ./../lib/standard//kernel.nit:327 */
6616 REGB6 = REGB1;
6617 /* ./../lib/standard//kernel.nit:332 */
6618 while(1) {
6619 /* ./../lib/standard//kernel.nit:212 */
6620 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
6621 /* ./../lib/standard//kernel.nit:332 */
6622 if (UNTAG_Bool(REGB7)) {
6623 /* ./syntax//typing.nit:1238 */
6624 REGB7 = REGB4;
6625 /* ./syntax//typing.nit:1240 */
6626 fra.me.REG[5] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
6627 /* ./syntax//typing.nit:1241 */
6628 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
6629 if (UNTAG_Bool(REGB8)) {
6630 } else {
6631 /* ./../lib/standard//kernel.nit:207 */
6632 REGB7 = TAG_Bool((REGB7)==(REGB0));
6633 /* ./syntax//typing.nit:1241 */
6634 REGB8 = REGB7;
6635 }
6636 if (UNTAG_Bool(REGB8)) {
6637 /* ./syntax//typing.nit:1242 */
6638 REGB8 = TAG_Int(0);
6639 /* ./../lib/standard//kernel.nit:217 */
6640 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
6641 /* ./../lib/standard//kernel.nit:321 */
6642 while(1) {
6643 /* ./../lib/standard//kernel.nit:211 */
6644 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
6645 /* ./../lib/standard//kernel.nit:321 */
6646 if (UNTAG_Bool(REGB9)) {
6647 /* ./syntax//typing.nit:1243 */
6648 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6649 if (UNTAG_Bool(REGB9)) {
6650 nit_abort("Reciever is null", NULL, LOCATE_typing, 1243);
6651 }
6652 /* ./../lib/standard//collection//array.nit:243 */
6653 fra.me.REG[0] = fra.me.REG[4];
6654 REGB9 = REGB5;
6655 /* ./../lib/standard//collection//array.nit:245 */
6656 REGB10 = TAG_Int(0);
6657 /* ./../lib/standard//kernel.nit:213 */
6658 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
6659 /* ./../lib/standard//collection//array.nit:245 */
6660 if (UNTAG_Bool(REGB10)) {
6661 REGB10 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
6662 if (UNTAG_Bool(REGB10)) {
6663 } else {
6664 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
6665 }
6666 REGB10 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
6667 /* ./../lib/standard//kernel.nit:212 */
6668 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
6669 } else {
6670 /* ./../lib/standard//collection//array.nit:245 */
6671 REGB11 = TAG_Bool(false);
6672 REGB10 = REGB11;
6673 }
6674 if (UNTAG_Bool(REGB10)) {
6675 } else {
6676 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
6677 }
6678 /* ./../lib/standard//collection//array.nit:246 */
6679 fra.me.REG[0] = ATTR_array___Array____items(fra.me.REG[0]);
6680 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6681 if (UNTAG_Bool(REGB10)) {
6682 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
6683 }
6684 /* ./../lib/standard//collection//array.nit:654 */
6685 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
6686 /* ./../lib/standard//collection//array.nit:246 */
6687 goto label5;
6688 label5: while(0);
6689 /* ./syntax//typing.nit:1244 */
6690 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6691 /* ./syntax//typing.nit:1245 */
6692 REGB9 = TAG_Int(1);
6693 /* ./../lib/standard//kernel.nit:215 */
6694 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
6695 /* ./syntax//typing.nit:1245 */
6696 REGB5 = REGB9;
6697 /* ./../lib/standard//kernel.nit:323 */
6698 REGB9 = TAG_Int(1);
6699 /* ./../lib/standard//kernel.nit:215 */
6700 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
6701 /* ./../lib/standard//kernel.nit:323 */
6702 REGB8 = REGB9;
6703 } else {
6704 /* ./../lib/standard//kernel.nit:321 */
6705 goto label6;
6706 }
6707 }
6708 label6: while(0);
6709 } else {
6710 /* ./syntax//typing.nit:1248 */
6711 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6712 if (UNTAG_Bool(REGB8)) {
6713 nit_abort("Reciever is null", NULL, LOCATE_typing, 1248);
6714 }
6715 /* ./../lib/standard//collection//array.nit:243 */
6716 fra.me.REG[3] = fra.me.REG[4];
6717 REGB8 = REGB5;
6718 /* ./../lib/standard//collection//array.nit:245 */
6719 REGB7 = TAG_Int(0);
6720 /* ./../lib/standard//kernel.nit:213 */
6721 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
6722 /* ./../lib/standard//collection//array.nit:245 */
6723 if (UNTAG_Bool(REGB7)) {
6724 REGB7 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6725 if (UNTAG_Bool(REGB7)) {
6726 } else {
6727 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
6728 }
6729 REGB7 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
6730 /* ./../lib/standard//kernel.nit:212 */
6731 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
6732 } else {
6733 /* ./../lib/standard//collection//array.nit:245 */
6734 REGB9 = TAG_Bool(false);
6735 REGB7 = REGB9;
6736 }
6737 if (UNTAG_Bool(REGB7)) {
6738 } else {
6739 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
6740 }
6741 /* ./../lib/standard//collection//array.nit:246 */
6742 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
6743 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6744 if (UNTAG_Bool(REGB7)) {
6745 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
6746 }
6747 /* ./../lib/standard//collection//array.nit:654 */
6748 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
6749 /* ./../lib/standard//collection//array.nit:246 */
6750 goto label7;
6751 label7: while(0);
6752 /* ./syntax//typing.nit:1248 */
6753 fra.me.REG[0] = fra.me.REG[3];
6754 /* ./syntax//typing.nit:1249 */
6755 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6756 /* ./syntax//typing.nit:1250 */
6757 REGB8 = TAG_Int(1);
6758 /* ./../lib/standard//kernel.nit:215 */
6759 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
6760 /* ./syntax//typing.nit:1250 */
6761 REGB5 = REGB8;
6762 }
6763 /* ./../lib/standard//kernel.nit:334 */
6764 REGB8 = TAG_Int(1);
6765 /* ./../lib/standard//kernel.nit:215 */
6766 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
6767 /* ./../lib/standard//kernel.nit:334 */
6768 REGB4 = REGB8;
6769 } else {
6770 /* ./../lib/standard//kernel.nit:332 */
6771 goto label8;
6772 }
6773 }
6774 label8: while(0);
6775 /* ./syntax//typing.nit:1253 */
6776 REGB4 = TAG_Bool(true);
6777 REGB3 = REGB4;
6778 goto label4;
6779 label4: while(0);
6780 stack_frame_head = fra.me.prev;
6781 return REGB3;
6782 }
6783 val_t typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
6784 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
6785 val_t REGB0;
6786 val_t REGB1;
6787 val_t REGB2;
6788 val_t REGB3;
6789 val_t REGB4;
6790 val_t REGB5;
6791 val_t tmp;
6792 static val_t once_value_2; /* Once value */
6793 static val_t once_value_3; /* Once value */
6794 static val_t once_value_4; /* Once value */
6795 static val_t once_value_5; /* Once value */
6796 static val_t once_value_6; /* Once value */
6797 static val_t once_value_7; /* Once value */
6798 static val_t once_value_8; /* Once value */
6799 static val_t once_value_11; /* Once value */
6800 static val_t once_value_12; /* Once value */
6801 static val_t once_value_13; /* Once value */
6802 static val_t once_value_14; /* Once value */
6803 static val_t once_value_15; /* Once value */
6804 static val_t once_value_16; /* Once value */
6805 static val_t once_value_18; /* Once value */
6806 static val_t once_value_19; /* Once value */
6807 static val_t once_value_20; /* Once value */
6808 static val_t once_value_21; /* Once value */
6809 static val_t once_value_22; /* Once value */
6810 static val_t once_value_24; /* Once value */
6811 static val_t once_value_25; /* Once value */
6812 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6813 fra.me.file = LOCATE_typing;
6814 fra.me.line = 1256;
6815 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_closures;
6816 fra.me.has_broke = 0;
6817 fra.me.REG_size = 17;
6818 fra.me.REG[0] = NIT_NULL;
6819 fra.me.REG[1] = NIT_NULL;
6820 fra.me.REG[2] = NIT_NULL;
6821 fra.me.REG[3] = NIT_NULL;
6822 fra.me.REG[4] = NIT_NULL;
6823 fra.me.REG[5] = NIT_NULL;
6824 fra.me.REG[6] = NIT_NULL;
6825 fra.me.REG[7] = NIT_NULL;
6826 fra.me.REG[8] = NIT_NULL;
6827 fra.me.REG[9] = NIT_NULL;
6828 fra.me.REG[10] = NIT_NULL;
6829 fra.me.REG[11] = NIT_NULL;
6830 fra.me.REG[12] = NIT_NULL;
6831 fra.me.REG[13] = NIT_NULL;
6832 fra.me.REG[14] = NIT_NULL;
6833 fra.me.REG[15] = NIT_NULL;
6834 fra.me.REG[16] = NIT_NULL;
6835 fra.me.REG[0] = p0;
6836 fra.me.REG[1] = p1;
6837 fra.me.REG[2] = p2;
6838 fra.me.REG[3] = p3;
6839 fra.me.REG[4] = p4;
6840 /* ./syntax//typing.nit:1259 */
6841 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
6842 /* ./syntax//typing.nit:1260 */
6843 fra.me.REG[6] = CALL_static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
6844 /* ./syntax//typing.nit:1261 */
6845 REGB0 = TAG_Int(0);
6846 /* ./../lib/standard//collection//array.nit:231 */
6847 fra.me.REG[7] = fra.me.REG[6];
6848 /* ./../lib/standard//collection//array.nit:234 */
6849 REGB1 = TAG_Int(0);
6850 /* ./../lib/standard//collection//array.nit:235 */
6851 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
6852 if (UNTAG_Bool(REGB2)) {
6853 } else {
6854 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
6855 }
6856 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
6857 /* ./../lib/standard//collection//array.nit:236 */
6858 fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[7]);
6859 /* ./../lib/standard//collection//array.nit:237 */
6860 while(1) {
6861 /* ./../lib/standard//collection//array.nit:23 */
6862 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
6863 if (UNTAG_Bool(REGB2)) {
6864 } else {
6865 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
6866 }
6867 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
6868 /* ./../lib/standard//kernel.nit:212 */
6869 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
6870 /* ./../lib/standard//collection//array.nit:237 */
6871 if (UNTAG_Bool(REGB2)) {
6872 /* ./../lib/standard//collection//array.nit:238 */
6873 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6874 if (UNTAG_Bool(REGB2)) {
6875 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
6876 }
6877 /* ./../lib/standard//collection//array.nit:654 */
6878 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
6879 /* ./syntax//typing.nit:1263 */
6880 REGB2 = CALL_static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
6881 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6882 if (UNTAG_Bool(REGB2)) {
6883 REGB2 = TAG_Int(1);
6884 /* ./../lib/standard//kernel.nit:215 */
6885 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
6886 /* ./syntax//typing.nit:1263 */
6887 REGB0 = REGB2;
6888 }
6889 /* ./../lib/standard//collection//array.nit:239 */
6890 REGB2 = TAG_Int(1);
6891 /* ./../lib/standard//kernel.nit:215 */
6892 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
6893 /* ./../lib/standard//collection//array.nit:239 */
6894 REGB1 = REGB2;
6895 } else {
6896 /* ./../lib/standard//collection//array.nit:237 */
6897 goto label1;
6898 }
6899 }
6900 label1: while(0);
6901 /* ./syntax//typing.nit:1265 */
6902 REGB1 = TAG_Int(0);
6903 /* ./syntax//typing.nit:1266 */
6904 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6905 if (UNTAG_Bool(REGB2)) {
6906 } else {
6907 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6908 if (UNTAG_Bool(REGB3)) {
6909 REGB3 = TAG_Bool(false);
6910 REGB2 = REGB3;
6911 } else {
6912 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6913 REGB2 = REGB3;
6914 }
6915 }
6916 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6917 if (UNTAG_Bool(REGB2)) {
6918 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6919 if (UNTAG_Bool(REGB2)) {
6920 nit_abort("Reciever is null", NULL, LOCATE_typing, 1266);
6921 }
6922 /* ./../lib/standard//collection//array.nit:23 */
6923 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6924 if (UNTAG_Bool(REGB2)) {
6925 } else {
6926 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
6927 }
6928 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
6929 /* ./syntax//typing.nit:1266 */
6930 REGB1 = REGB2;
6931 }
6932 /* ./../lib/standard//collection//array.nit:23 */
6933 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6934 if (UNTAG_Bool(REGB2)) {
6935 } else {
6936 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
6937 }
6938 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6939 /* ./syntax//typing.nit:1267 */
6940 REGB3 = TAG_Int(0);
6941 /* ./../lib/standard//kernel.nit:214 */
6942 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
6943 /* ./syntax//typing.nit:1267 */
6944 if (UNTAG_Bool(REGB3)) {
6945 /* ./syntax//typing.nit:1268 */
6946 REGB3 = TAG_Int(0);
6947 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
6948 if (UNTAG_Bool(REGB2)) {
6949 } else {
6950 /* ./../lib/standard//kernel.nit:207 */
6951 REGB3 = TAG_Bool((REGB1)==(REGB3));
6952 /* ./syntax//typing.nit:1268 */
6953 REGB2 = REGB3;
6954 }
6955 if (UNTAG_Bool(REGB2)) {
6956 REGB2 = TAG_Int(0);
6957 /* ./../lib/standard//kernel.nit:214 */
6958 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
6959 } else {
6960 /* ./syntax//typing.nit:1268 */
6961 REGB3 = TAG_Bool(false);
6962 REGB2 = REGB3;
6963 }
6964 if (UNTAG_Bool(REGB2)) {
6965 /* ./syntax//typing.nit:1269 */
6966 REGB2 = TAG_Int(5);
6967 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
6968 if (!once_value_2) {
6969 fra.me.REG[7] = BOX_NativeString("Error: ");
6970 REGB2 = TAG_Int(7);
6971 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
6972 once_value_2 = fra.me.REG[7];
6973 register_static_object(&once_value_2);
6974 } else fra.me.REG[7] = once_value_2;
6975 fra.me.REG[7] = fra.me.REG[7];
6976 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6977 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6978 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6979 if (!once_value_3) {
6980 fra.me.REG[7] = BOX_NativeString(" requires ");
6981 REGB2 = TAG_Int(10);
6982 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
6983 once_value_3 = fra.me.REG[7];
6984 register_static_object(&once_value_3);
6985 } else fra.me.REG[7] = once_value_3;
6986 fra.me.REG[7] = fra.me.REG[7];
6987 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6988 /* ./../lib/standard//collection//array.nit:23 */
6989 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
6990 if (UNTAG_Bool(REGB2)) {
6991 } else {
6992 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
6993 }
6994 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
6995 /* ./syntax//typing.nit:1269 */
6996 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
6997 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6998 if (!once_value_4) {
6999 fra.me.REG[7] = BOX_NativeString(" blocks.");
7000 REGB2 = TAG_Int(8);
7001 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7002 once_value_4 = fra.me.REG[7];
7003 register_static_object(&once_value_4);
7004 } else fra.me.REG[7] = once_value_4;
7005 fra.me.REG[7] = fra.me.REG[7];
7006 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7007 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7008 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7009 } else {
7010 /* ./../lib/standard//collection//array.nit:23 */
7011 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7012 if (UNTAG_Bool(REGB2)) {
7013 } else {
7014 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7015 }
7016 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7017 /* ./../lib/standard//kernel.nit:214 */
7018 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7019 /* ./syntax//typing.nit:1270 */
7020 if (UNTAG_Bool(REGB2)) {
7021 REGB2 = TAG_Bool(true);
7022 } else {
7023 /* ./../lib/standard//kernel.nit:212 */
7024 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
7025 /* ./syntax//typing.nit:1270 */
7026 REGB2 = REGB0;
7027 }
7028 if (UNTAG_Bool(REGB2)) {
7029 /* ./syntax//typing.nit:1271 */
7030 REGB2 = TAG_Int(7);
7031 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
7032 if (!once_value_5) {
7033 fra.me.REG[7] = BOX_NativeString("Error: ");
7034 REGB2 = TAG_Int(7);
7035 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7036 once_value_5 = fra.me.REG[7];
7037 register_static_object(&once_value_5);
7038 } else fra.me.REG[7] = once_value_5;
7039 fra.me.REG[7] = fra.me.REG[7];
7040 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7041 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7042 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7043 if (!once_value_6) {
7044 fra.me.REG[7] = BOX_NativeString(" requires ");
7045 REGB2 = TAG_Int(10);
7046 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7047 once_value_6 = fra.me.REG[7];
7048 register_static_object(&once_value_6);
7049 } else fra.me.REG[7] = once_value_6;
7050 fra.me.REG[7] = fra.me.REG[7];
7051 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7052 /* ./../lib/standard//collection//array.nit:23 */
7053 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7054 if (UNTAG_Bool(REGB2)) {
7055 } else {
7056 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7057 }
7058 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7059 /* ./syntax//typing.nit:1271 */
7060 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
7061 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7062 if (!once_value_7) {
7063 fra.me.REG[7] = BOX_NativeString(" blocks, ");
7064 REGB2 = TAG_Int(9);
7065 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7066 once_value_7 = fra.me.REG[7];
7067 register_static_object(&once_value_7);
7068 } else fra.me.REG[7] = once_value_7;
7069 fra.me.REG[7] = fra.me.REG[7];
7070 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7071 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7072 if (UNTAG_Bool(REGB2)) {
7073 nit_abort("Reciever is null", NULL, LOCATE_typing, 1271);
7074 }
7075 /* ./../lib/standard//collection//array.nit:23 */
7076 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7077 if (UNTAG_Bool(REGB2)) {
7078 } else {
7079 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7080 }
7081 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7082 /* ./syntax//typing.nit:1271 */
7083 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
7084 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7085 if (!once_value_8) {
7086 fra.me.REG[7] = BOX_NativeString(" found.");
7087 REGB2 = TAG_Int(7);
7088 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7089 once_value_8 = fra.me.REG[7];
7090 register_static_object(&once_value_8);
7091 } else fra.me.REG[7] = once_value_8;
7092 fra.me.REG[7] = fra.me.REG[7];
7093 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7094 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7095 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7096 } else {
7097 /* ./syntax//typing.nit:1274 */
7098 fra.me.REG[8] = NIT_NULL;
7099 /* ./syntax//typing.nit:1275 */
7100 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7101 if (UNTAG_Bool(REGB2)) {
7102 } else {
7103 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7104 if (UNTAG_Bool(REGB0)) {
7105 REGB0 = TAG_Bool(false);
7106 REGB2 = REGB0;
7107 } else {
7108 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7109 REGB2 = REGB0;
7110 }
7111 }
7112 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7113 if (UNTAG_Bool(REGB2)) {
7114 fra.me.REG[7] = NEW_Array_array___Array___init();
7115 fra.me.REG[8] = fra.me.REG[7];
7116 }
7117 /* ./syntax//typing.nit:1278 */
7118 REGB2 = TAG_Int(0);
7119 /* ./../lib/standard//kernel.nit:214 */
7120 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7121 /* ./syntax//typing.nit:1278 */
7122 if (UNTAG_Bool(REGB2)) {
7123 REGB2 = TAG_Int(1);
7124 /* ./../lib/standard//kernel.nit:217 */
7125 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
7126 /* ./syntax//typing.nit:1278 */
7127 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7128 if (UNTAG_Bool(REGB0)) {
7129 nit_abort("Reciever is null", NULL, LOCATE_typing, 1278);
7130 }
7131 /* ./../lib/standard//collection//array.nit:243 */
7132 fra.me.REG[7] = fra.me.REG[4];
7133 /* ./../lib/standard//collection//array.nit:245 */
7134 REGB0 = TAG_Int(0);
7135 /* ./../lib/standard//kernel.nit:213 */
7136 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
7137 /* ./../lib/standard//collection//array.nit:245 */
7138 if (UNTAG_Bool(REGB0)) {
7139 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7140 if (UNTAG_Bool(REGB0)) {
7141 } else {
7142 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7143 }
7144 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7145 /* ./../lib/standard//kernel.nit:212 */
7146 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7147 } else {
7148 /* ./../lib/standard//collection//array.nit:245 */
7149 REGB3 = TAG_Bool(false);
7150 REGB0 = REGB3;
7151 }
7152 if (UNTAG_Bool(REGB0)) {
7153 } else {
7154 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7155 }
7156 /* ./../lib/standard//collection//array.nit:246 */
7157 fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[7]);
7158 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7159 if (UNTAG_Bool(REGB0)) {
7160 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7161 }
7162 /* ./../lib/standard//collection//array.nit:654 */
7163 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
7164 /* ./../lib/standard//collection//array.nit:246 */
7165 goto label9;
7166 label9: while(0);
7167 /* ./syntax//typing.nit:1278 */
7168 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7169 if (UNTAG_Bool(REGB2)) {
7170 nit_abort("Reciever is null", NULL, LOCATE_typing, 1278);
7171 }
7172 fra.me.REG[7] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
7173 } else {
7174 fra.me.REG[7] = NIT_NULL;
7175 }
7176 /* ./syntax//typing.nit:1281 */
7177 REGB2 = TAG_Int(0);
7178 /* ./../lib/standard//kernel.nit:327 */
7179 REGB0 = REGB1;
7180 /* ./../lib/standard//kernel.nit:332 */
7181 while(1) {
7182 /* ./../lib/standard//kernel.nit:212 */
7183 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7184 /* ./../lib/standard//kernel.nit:332 */
7185 if (UNTAG_Bool(REGB3)) {
7186 /* ./syntax//typing.nit:1281 */
7187 REGB3 = REGB2;
7188 /* ./syntax//typing.nit:1282 */
7189 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7190 if (UNTAG_Bool(REGB4)) {
7191 nit_abort("Reciever is null", NULL, LOCATE_typing, 1282);
7192 }
7193 /* ./../lib/standard//collection//array.nit:243 */
7194 fra.me.REG[9] = fra.me.REG[4];
7195 /* ./../lib/standard//collection//array.nit:245 */
7196 REGB4 = TAG_Int(0);
7197 /* ./../lib/standard//kernel.nit:213 */
7198 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
7199 /* ./../lib/standard//collection//array.nit:245 */
7200 if (UNTAG_Bool(REGB4)) {
7201 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
7202 if (UNTAG_Bool(REGB4)) {
7203 } else {
7204 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7205 }
7206 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[9]);
7207 /* ./../lib/standard//kernel.nit:212 */
7208 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
7209 } else {
7210 /* ./../lib/standard//collection//array.nit:245 */
7211 REGB5 = TAG_Bool(false);
7212 REGB4 = REGB5;
7213 }
7214 if (UNTAG_Bool(REGB4)) {
7215 } else {
7216 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7217 }
7218 /* ./../lib/standard//collection//array.nit:246 */
7219 fra.me.REG[9] = ATTR_array___Array____items(fra.me.REG[9]);
7220 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
7221 if (UNTAG_Bool(REGB4)) {
7222 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7223 }
7224 /* ./../lib/standard//collection//array.nit:654 */
7225 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
7226 /* ./../lib/standard//collection//array.nit:246 */
7227 goto label10;
7228 label10: while(0);
7229 /* ./syntax//typing.nit:1283 */
7230 fra.me.REG[10] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7231 fra.me.REG[10] = CALL_typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
7232 /* ./syntax//typing.nit:1284 */
7233 fra.me.REG[11] = CALL_static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
7234 /* ./syntax//typing.nit:1285 */
7235 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7236 if (UNTAG_Bool(REGB3)) {
7237 } else {
7238 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7239 if (UNTAG_Bool(REGB4)) {
7240 REGB4 = TAG_Bool(false);
7241 REGB3 = REGB4;
7242 } else {
7243 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
7244 REGB3 = REGB4;
7245 }
7246 }
7247 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
7248 if (UNTAG_Bool(REGB3)) {
7249 /* ./syntax//typing.nit:1286 */
7250 fra.me.REG[11] = NEW_EscapableClosure_scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
7251 /* ./syntax//typing.nit:1287 */
7252 fra.me.REG[12] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7253 CALL_scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
7254 /* ./syntax//typing.nit:1288 */
7255 CALL_typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
7256 /* ./syntax//typing.nit:1289 */
7257 fra.me.REG[11] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7258 CALL_scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
7259 } else {
7260 /* ./../lib/standard//collection//array.nit:23 */
7261 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7262 if (UNTAG_Bool(REGB3)) {
7263 } else {
7264 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7265 }
7266 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7267 /* ./syntax//typing.nit:1290 */
7268 REGB4 = TAG_Int(1);
7269 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
7270 if (UNTAG_Bool(REGB5)) {
7271 } else {
7272 /* ./../lib/standard//kernel.nit:207 */
7273 REGB4 = TAG_Bool((REGB3)==(REGB4));
7274 /* ./syntax//typing.nit:1290 */
7275 REGB5 = REGB4;
7276 }
7277 if (UNTAG_Bool(REGB5)) {
7278 /* ./syntax//typing.nit:1291 */
7279 fra.me.REG[11] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7280 REGB5 = TAG_Int(7);
7281 fra.me.REG[12] = NEW_Array_array___Array___with_capacity(REGB5);
7282 if (!once_value_11) {
7283 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
7284 REGB5 = TAG_Int(26);
7285 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7286 once_value_11 = fra.me.REG[13];
7287 register_static_object(&once_value_11);
7288 } else fra.me.REG[13] = once_value_11;
7289 fra.me.REG[13] = fra.me.REG[13];
7290 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7291 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
7292 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7293 if (!once_value_12) {
7294 fra.me.REG[13] = BOX_NativeString("' in ");
7295 REGB5 = TAG_Int(5);
7296 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7297 once_value_12 = fra.me.REG[13];
7298 register_static_object(&once_value_12);
7299 } else fra.me.REG[13] = once_value_12;
7300 fra.me.REG[13] = fra.me.REG[13];
7301 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7302 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7303 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7304 if (!once_value_13) {
7305 fra.me.REG[13] = BOX_NativeString("; only closure is !");
7306 REGB5 = TAG_Int(19);
7307 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7308 once_value_13 = fra.me.REG[13];
7309 register_static_object(&once_value_13);
7310 } else fra.me.REG[13] = once_value_13;
7311 fra.me.REG[13] = fra.me.REG[13];
7312 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7313 fra.me.REG[13] = CALL_abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
7314 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
7315 if (UNTAG_Bool(REGB5)) {
7316 nit_abort("Reciever is null", NULL, LOCATE_typing, 1291);
7317 }
7318 fra.me.REG[13] = CALL_static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
7319 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
7320 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7321 if (!once_value_14) {
7322 fra.me.REG[13] = BOX_NativeString(".");
7323 REGB5 = TAG_Int(1);
7324 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7325 once_value_14 = fra.me.REG[13];
7326 register_static_object(&once_value_14);
7327 } else fra.me.REG[13] = once_value_14;
7328 fra.me.REG[13] = fra.me.REG[13];
7329 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7330 fra.me.REG[12] = CALL_string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
7331 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
7332 } else {
7333 /* ./syntax//typing.nit:1293 */
7334 fra.me.REG[12] = NEW_Array_array___Array___init();
7335 /* ./../lib/standard//collection//array.nit:231 */
7336 fra.me.REG[11] = fra.me.REG[6];
7337 /* ./../lib/standard//collection//array.nit:234 */
7338 REGB5 = TAG_Int(0);
7339 /* ./../lib/standard//collection//array.nit:235 */
7340 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
7341 if (UNTAG_Bool(REGB4)) {
7342 } else {
7343 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
7344 }
7345 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[11]);
7346 /* ./../lib/standard//collection//array.nit:236 */
7347 fra.me.REG[13] = ATTR_array___Array____items(fra.me.REG[11]);
7348 /* ./../lib/standard//collection//array.nit:237 */
7349 while(1) {
7350 /* ./../lib/standard//collection//array.nit:23 */
7351 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
7352 if (UNTAG_Bool(REGB4)) {
7353 } else {
7354 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7355 }
7356 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[11]);
7357 /* ./../lib/standard//kernel.nit:212 */
7358 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
7359 /* ./../lib/standard//collection//array.nit:237 */
7360 if (UNTAG_Bool(REGB4)) {
7361 /* ./../lib/standard//collection//array.nit:238 */
7362 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
7363 if (UNTAG_Bool(REGB4)) {
7364 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
7365 }
7366 /* ./../lib/standard//collection//array.nit:654 */
7367 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
7368 /* ./syntax//typing.nit:1295 */
7369 REGB4 = TAG_Int(3);
7370 fra.me.REG[15] = NEW_Array_array___Array___with_capacity(REGB4);
7371 if (!once_value_15) {
7372 fra.me.REG[16] = BOX_NativeString("!");
7373 REGB4 = TAG_Int(1);
7374 fra.me.REG[16] = NEW_String_string___String___with_native(fra.me.REG[16], REGB4);
7375 once_value_15 = fra.me.REG[16];
7376 register_static_object(&once_value_15);
7377 } else fra.me.REG[16] = once_value_15;
7378 fra.me.REG[16] = fra.me.REG[16];
7379 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
7380 fra.me.REG[14] = CALL_static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
7381 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
7382 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
7383 if (!once_value_16) {
7384 fra.me.REG[14] = BOX_NativeString("");
7385 REGB4 = TAG_Int(0);
7386 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB4);
7387 once_value_16 = fra.me.REG[14];
7388 register_static_object(&once_value_16);
7389 } else fra.me.REG[14] = once_value_16;
7390 fra.me.REG[14] = fra.me.REG[14];
7391 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
7392 fra.me.REG[15] = CALL_string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
7393 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
7394 /* ./../lib/standard//collection//array.nit:239 */
7395 REGB4 = TAG_Int(1);
7396 /* ./../lib/standard//kernel.nit:215 */
7397 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
7398 /* ./../lib/standard//collection//array.nit:239 */
7399 REGB5 = REGB4;
7400 } else {
7401 /* ./../lib/standard//collection//array.nit:237 */
7402 goto label17;
7403 }
7404 }
7405 label17: while(0);
7406 /* ./syntax//typing.nit:1297 */
7407 fra.me.REG[9] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7408 REGB5 = TAG_Int(7);
7409 fra.me.REG[13] = NEW_Array_array___Array___with_capacity(REGB5);
7410 if (!once_value_18) {
7411 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
7412 REGB5 = TAG_Int(26);
7413 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB5);
7414 once_value_18 = fra.me.REG[11];
7415 register_static_object(&once_value_18);
7416 } else fra.me.REG[11] = once_value_18;
7417 fra.me.REG[11] = fra.me.REG[11];
7418 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
7419 fra.me.REG[10] = CALL_string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
7420 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7421 if (!once_value_19) {
7422 fra.me.REG[10] = BOX_NativeString("' in ");
7423 REGB5 = TAG_Int(5);
7424 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
7425 once_value_19 = fra.me.REG[10];
7426 register_static_object(&once_value_19);
7427 } else fra.me.REG[10] = once_value_19;
7428 fra.me.REG[10] = fra.me.REG[10];
7429 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7430 fra.me.REG[10] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7431 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7432 if (!once_value_20) {
7433 fra.me.REG[10] = BOX_NativeString("; only closures are ");
7434 REGB5 = TAG_Int(20);
7435 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
7436 once_value_20 = fra.me.REG[10];
7437 register_static_object(&once_value_20);
7438 } else fra.me.REG[10] = once_value_20;
7439 fra.me.REG[10] = fra.me.REG[10];
7440 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7441 if (!once_value_21) {
7442 fra.me.REG[10] = BOX_NativeString(",");
7443 REGB5 = TAG_Int(1);
7444 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
7445 once_value_21 = fra.me.REG[10];
7446 register_static_object(&once_value_21);
7447 } else fra.me.REG[10] = once_value_21;
7448 fra.me.REG[10] = fra.me.REG[10];
7449 fra.me.REG[10] = CALL_string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
7450 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7451 if (!once_value_22) {
7452 fra.me.REG[10] = BOX_NativeString(".");
7453 REGB5 = TAG_Int(1);
7454 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
7455 once_value_22 = fra.me.REG[10];
7456 register_static_object(&once_value_22);
7457 } else fra.me.REG[10] = once_value_22;
7458 fra.me.REG[10] = fra.me.REG[10];
7459 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
7460 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
7461 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
7462 }
7463 }
7464 /* ./../lib/standard//kernel.nit:334 */
7465 REGB5 = TAG_Int(1);
7466 /* ./../lib/standard//kernel.nit:215 */
7467 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
7468 /* ./../lib/standard//kernel.nit:334 */
7469 REGB2 = REGB5;
7470 } else {
7471 /* ./../lib/standard//kernel.nit:332 */
7472 goto label23;
7473 }
7474 }
7475 label23: while(0);
7476 /* ./syntax//typing.nit:1302 */
7477 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
7478 if (UNTAG_Bool(REGB2)) {
7479 } else {
7480 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
7481 if (UNTAG_Bool(REGB0)) {
7482 REGB0 = TAG_Bool(false);
7483 REGB2 = REGB0;
7484 } else {
7485 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
7486 REGB2 = REGB0;
7487 }
7488 }
7489 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7490 if (UNTAG_Bool(REGB2)) {
7491 /* ./syntax//typing.nit:1303 */
7492 fra.me.REG[8] = CALL_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[8]);
7493 fra.me.REG[5] = fra.me.REG[8];
7494 }
7495 }
7496 }
7497 } else {
7498 /* ./syntax//typing.nit:1306 */
7499 REGB2 = TAG_Int(0);
7500 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7501 if (UNTAG_Bool(REGB0)) {
7502 } else {
7503 /* ./../lib/standard//kernel.nit:207 */
7504 REGB2 = TAG_Bool((REGB1)==(REGB2));
7505 /* ./syntax//typing.nit:1306 */
7506 REGB0 = REGB2;
7507 }
7508 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7509 if (UNTAG_Bool(REGB0)) {
7510 /* ./syntax//typing.nit:1307 */
7511 REGB0 = TAG_Int(3);
7512 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
7513 if (!once_value_24) {
7514 fra.me.REG[6] = BOX_NativeString("Error: ");
7515 REGB0 = TAG_Int(7);
7516 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
7517 once_value_24 = fra.me.REG[6];
7518 register_static_object(&once_value_24);
7519 } else fra.me.REG[6] = once_value_24;
7520 fra.me.REG[6] = fra.me.REG[6];
7521 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
7522 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7523 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
7524 if (!once_value_25) {
7525 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
7526 REGB0 = TAG_Int(25);
7527 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7528 once_value_25 = fra.me.REG[3];
7529 register_static_object(&once_value_25);
7530 } else fra.me.REG[3] = once_value_25;
7531 fra.me.REG[3] = fra.me.REG[3];
7532 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
7533 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7534 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7535 }
7536 }
7537 /* ./syntax//typing.nit:1309 */
7538 goto label26;
7539 label26: while(0);
7540 stack_frame_head = fra.me.prev;
7541 return fra.me.REG[5];
7542 }
7543 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){
7544 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7545 val_t REGB0;
7546 val_t REGB1;
7547 val_t REGB2;
7548 val_t tmp;
7549 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7550 fra.me.file = LOCATE_typing;
7551 fra.me.line = 1314;
7552 fra.me.meth = LOCATE_typing___AAbsSendExpr___do_typing;
7553 fra.me.has_broke = 0;
7554 fra.me.REG_size = 7;
7555 fra.me.REG[0] = NIT_NULL;
7556 fra.me.REG[1] = NIT_NULL;
7557 fra.me.REG[2] = NIT_NULL;
7558 fra.me.REG[3] = NIT_NULL;
7559 fra.me.REG[4] = NIT_NULL;
7560 fra.me.REG[5] = NIT_NULL;
7561 fra.me.REG[6] = NIT_NULL;
7562 fra.me.REG[0] = p0;
7563 fra.me.REG[1] = p1;
7564 fra.me.REG[2] = p2;
7565 REGB0 = p3;
7566 REGB1 = p4;
7567 fra.me.REG[3] = p5;
7568 fra.me.REG[4] = p6;
7569 fra.me.REG[5] = p7;
7570 /* ./syntax//typing.nit:1317 */
7571 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]);
7572 /* ./syntax//typing.nit:1318 */
7573 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7574 if (UNTAG_Bool(REGB0)) {
7575 } else {
7576 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7577 if (UNTAG_Bool(REGB2)) {
7578 REGB2 = TAG_Bool(false);
7579 REGB0 = REGB2;
7580 } else {
7581 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
7582 REGB0 = REGB2;
7583 }
7584 }
7585 if (UNTAG_Bool(REGB0)) {
7586 goto label1;
7587 }
7588 /* ./syntax//typing.nit:1319 */
7589 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);
7590 /* ./syntax//typing.nit:1320 */
7591 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7592 if (UNTAG_Bool(REGB1)) {
7593 nit_abort("Reciever is null", NULL, LOCATE_typing, 1320);
7594 }
7595 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
7596 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]);
7597 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7598 if (UNTAG_Bool(REGB1)) {
7599 goto label1;
7600 }
7601 /* ./syntax//typing.nit:1321 */
7602 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7603 if (UNTAG_Bool(REGB1)) {
7604 nit_abort("Reciever is null", NULL, LOCATE_typing, 1321);
7605 }
7606 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
7607 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]);
7608 /* ./syntax//typing.nit:1322 */
7609 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7610 if (UNTAG_Bool(REGB1)) {
7611 } else {
7612 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7613 if (UNTAG_Bool(REGB0)) {
7614 REGB0 = TAG_Bool(false);
7615 REGB1 = REGB0;
7616 } else {
7617 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7618 REGB1 = REGB0;
7619 }
7620 }
7621 if (UNTAG_Bool(REGB1)) {
7622 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7623 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7624 if (UNTAG_Bool(REGB1)) {
7625 } else {
7626 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7627 if (UNTAG_Bool(REGB0)) {
7628 REGB0 = TAG_Bool(false);
7629 REGB1 = REGB0;
7630 } else {
7631 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7632 REGB1 = REGB0;
7633 }
7634 }
7635 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7636 } else {
7637 REGB0 = TAG_Bool(false);
7638 REGB1 = REGB0;
7639 }
7640 if (UNTAG_Bool(REGB1)) {
7641 goto label1;
7642 }
7643 /* ./syntax//typing.nit:1323 */
7644 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
7645 /* ./syntax//typing.nit:1324 */
7646 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
7647 /* ./syntax//typing.nit:1325 */
7648 ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
7649 label1: while(0);
7650 stack_frame_head = fra.me.prev;
7651 return;
7652 }
7653 val_t typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7654 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
7655 val_t REGB0;
7656 val_t REGB1;
7657 val_t REGB2;
7658 val_t REGB3;
7659 val_t tmp;
7660 static val_t once_value_1; /* Once value */
7661 static val_t once_value_2; /* Once value */
7662 static val_t once_value_3; /* Once value */
7663 static val_t once_value_4; /* Once value */
7664 static val_t once_value_5; /* Once value */
7665 static val_t once_value_6; /* Once value */
7666 static val_t once_value_8; /* Once value */
7667 static val_t once_value_9; /* Once value */
7668 static val_t once_value_10; /* Once value */
7669 static val_t once_value_11; /* Once value */
7670 static val_t once_value_12; /* Once value */
7671 static val_t once_value_13; /* Once value */
7672 static val_t once_value_14; /* Once value */
7673 static val_t once_value_15; /* Once value */
7674 static val_t once_value_16; /* Once value */
7675 static val_t once_value_17; /* Once value */
7676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7677 fra.me.file = LOCATE_typing;
7678 fra.me.line = 1328;
7679 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_property;
7680 fra.me.has_broke = 0;
7681 fra.me.REG_size = 10;
7682 fra.me.REG[0] = NIT_NULL;
7683 fra.me.REG[1] = NIT_NULL;
7684 fra.me.REG[2] = NIT_NULL;
7685 fra.me.REG[3] = NIT_NULL;
7686 fra.me.REG[4] = NIT_NULL;
7687 fra.me.REG[5] = NIT_NULL;
7688 fra.me.REG[6] = NIT_NULL;
7689 fra.me.REG[7] = NIT_NULL;
7690 fra.me.REG[8] = NIT_NULL;
7691 fra.me.REG[9] = NIT_NULL;
7692 fra.me.REG[0] = p0;
7693 fra.me.REG[1] = p1;
7694 fra.me.REG[2] = p2;
7695 REGB0 = p3;
7696 fra.me.REG[3] = p4;
7697 /* ./syntax//typing.nit:1330 */
7698 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
7699 if (UNTAG_Bool(REGB1)) {
7700 /* ./syntax//typing.nit:1331 */
7701 if (!once_value_1) {
7702 if (!once_value_2) {
7703 fra.me.REG[4] = BOX_NativeString("==");
7704 REGB1 = TAG_Int(2);
7705 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
7706 once_value_2 = fra.me.REG[4];
7707 register_static_object(&once_value_2);
7708 } else fra.me.REG[4] = once_value_2;
7709 fra.me.REG[4] = fra.me.REG[4];
7710 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
7711 once_value_1 = fra.me.REG[4];
7712 register_static_object(&once_value_1);
7713 } else fra.me.REG[4] = once_value_1;
7714 fra.me.REG[4] = fra.me.REG[4];
7715 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
7716 if (UNTAG_Bool(REGB1)) {
7717 } else {
7718 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7719 REGB1 = REGB2;
7720 }
7721 if (UNTAG_Bool(REGB1)) {
7722 REGB1 = TAG_Bool(true);
7723 } else {
7724 if (!once_value_3) {
7725 if (!once_value_4) {
7726 fra.me.REG[4] = BOX_NativeString("!=");
7727 REGB2 = TAG_Int(2);
7728 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB2);
7729 once_value_4 = fra.me.REG[4];
7730 register_static_object(&once_value_4);
7731 } else fra.me.REG[4] = once_value_4;
7732 fra.me.REG[4] = fra.me.REG[4];
7733 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
7734 once_value_3 = fra.me.REG[4];
7735 register_static_object(&once_value_3);
7736 } else fra.me.REG[4] = once_value_3;
7737 fra.me.REG[4] = fra.me.REG[4];
7738 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
7739 if (UNTAG_Bool(REGB2)) {
7740 } else {
7741 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7742 REGB2 = REGB3;
7743 }
7744 REGB1 = REGB2;
7745 }
7746 if (UNTAG_Bool(REGB1)) {
7747 /* ./syntax//typing.nit:1333 */
7748 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
7749 fra.me.REG[4] = CALL_static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
7750 fra.me.REG[2] = fra.me.REG[4];
7751 } else {
7752 /* ./syntax//typing.nit:1335 */
7753 REGB1 = TAG_Int(3);
7754 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
7755 if (!once_value_5) {
7756 fra.me.REG[5] = BOX_NativeString("Error: Method '");
7757 REGB1 = TAG_Int(15);
7758 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
7759 once_value_5 = fra.me.REG[5];
7760 register_static_object(&once_value_5);
7761 } else fra.me.REG[5] = once_value_5;
7762 fra.me.REG[5] = fra.me.REG[5];
7763 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7764 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7765 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7766 if (!once_value_6) {
7767 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
7768 REGB1 = TAG_Int(17);
7769 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
7770 once_value_6 = fra.me.REG[5];
7771 register_static_object(&once_value_6);
7772 } else fra.me.REG[5] = once_value_6;
7773 fra.me.REG[5] = fra.me.REG[5];
7774 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7775 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7776 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7777 /* ./syntax//typing.nit:1336 */
7778 fra.me.REG[4] = NIT_NULL;
7779 goto label7;
7780 }
7781 }
7782 /* ./syntax//typing.nit:1339 */
7783 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7784 /* ./syntax//typing.nit:1340 */
7785 fra.me.REG[6] = NIT_NULL;
7786 /* ./syntax//typing.nit:1341 */
7787 REGB1 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7788 if (UNTAG_Bool(REGB1)) {
7789 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7790 fra.me.REG[6] = fra.me.REG[7];
7791 }
7792 /* ./syntax//typing.nit:1342 */
7793 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
7794 if (UNTAG_Bool(REGB1)) {
7795 } else {
7796 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
7797 if (UNTAG_Bool(REGB2)) {
7798 REGB2 = TAG_Bool(false);
7799 REGB1 = REGB2;
7800 } else {
7801 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
7802 REGB1 = REGB2;
7803 }
7804 }
7805 if (UNTAG_Bool(REGB1)) {
7806 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7807 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
7808 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
7809 } else {
7810 REGB2 = TAG_Bool(false);
7811 REGB1 = REGB2;
7812 }
7813 if (UNTAG_Bool(REGB1)) {
7814 /* ./syntax//typing.nit:1343 */
7815 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7816 /* ./../lib/standard//collection//array.nit:23 */
7817 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7818 if (UNTAG_Bool(REGB1)) {
7819 } else {
7820 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7821 }
7822 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7823 /* ./syntax//typing.nit:1344 */
7824 REGB2 = TAG_Int(1);
7825 /* ./../lib/standard//kernel.nit:214 */
7826 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7827 /* ./syntax//typing.nit:1344 */
7828 if (UNTAG_Bool(REGB2)) {
7829 /* ./syntax//typing.nit:1345 */
7830 REGB2 = TAG_Int(5);
7831 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
7832 if (!once_value_8) {
7833 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
7834 REGB2 = TAG_Int(29);
7835 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
7836 once_value_8 = fra.me.REG[9];
7837 register_static_object(&once_value_8);
7838 } else fra.me.REG[9] = once_value_8;
7839 fra.me.REG[9] = fra.me.REG[9];
7840 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
7841 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7842 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
7843 if (!once_value_9) {
7844 fra.me.REG[9] = BOX_NativeString("' for ");
7845 REGB2 = TAG_Int(6);
7846 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
7847 once_value_9 = fra.me.REG[9];
7848 register_static_object(&once_value_9);
7849 } else fra.me.REG[9] = once_value_9;
7850 fra.me.REG[9] = fra.me.REG[9];
7851 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
7852 if (!once_value_10) {
7853 fra.me.REG[9] = BOX_NativeString(", ");
7854 REGB2 = TAG_Int(2);
7855 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
7856 once_value_10 = fra.me.REG[9];
7857 register_static_object(&once_value_10);
7858 } else fra.me.REG[9] = once_value_10;
7859 fra.me.REG[9] = fra.me.REG[9];
7860 fra.me.REG[9] = CALL_string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
7861 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
7862 if (!once_value_11) {
7863 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
7864 REGB2 = TAG_Int(27);
7865 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
7866 once_value_11 = fra.me.REG[9];
7867 register_static_object(&once_value_11);
7868 } else fra.me.REG[9] = once_value_11;
7869 fra.me.REG[9] = fra.me.REG[9];
7870 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
7871 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7872 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7873 /* ./syntax//typing.nit:1346 */
7874 fra.me.REG[4] = NIT_NULL;
7875 goto label7;
7876 } else {
7877 /* ./../lib/standard//collection//array.nit:23 */
7878 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7879 if (UNTAG_Bool(REGB2)) {
7880 } else {
7881 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7882 }
7883 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7884 /* ./syntax//typing.nit:1347 */
7885 REGB1 = TAG_Int(1);
7886 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
7887 if (UNTAG_Bool(REGB3)) {
7888 } else {
7889 /* ./../lib/standard//kernel.nit:207 */
7890 REGB1 = TAG_Bool((REGB2)==(REGB1));
7891 /* ./syntax//typing.nit:1347 */
7892 REGB3 = REGB1;
7893 }
7894 if (UNTAG_Bool(REGB3)) {
7895 /* ./syntax//typing.nit:1348 */
7896 fra.me.REG[7] = CALL_abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
7897 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7898 if (UNTAG_Bool(REGB3)) {
7899 nit_abort("Reciever is null", NULL, LOCATE_typing, 1348);
7900 }
7901 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
7902 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
7903 /* ./syntax//typing.nit:1349 */
7904 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
7905 if (UNTAG_Bool(REGB3)) {
7906 } else {
7907 nit_abort("Assert failed", NULL, LOCATE_typing, 1349);
7908 }
7909 /* ./syntax//typing.nit:1350 */
7910 fra.me.REG[6] = fra.me.REG[7];
7911 }
7912 }
7913 }
7914 /* ./syntax//typing.nit:1354 */
7915 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
7916 if (UNTAG_Bool(REGB3)) {
7917 } else {
7918 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
7919 if (UNTAG_Bool(REGB1)) {
7920 REGB1 = TAG_Bool(false);
7921 REGB3 = REGB1;
7922 } else {
7923 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
7924 REGB3 = REGB1;
7925 }
7926 }
7927 if (UNTAG_Bool(REGB3)) {
7928 /* ./syntax//typing.nit:1355 */
7929 if (UNTAG_Bool(REGB0)) {
7930 /* ./syntax//typing.nit:1356 */
7931 REGB0 = TAG_Int(5);
7932 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
7933 if (!once_value_12) {
7934 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
7935 REGB0 = TAG_Int(27);
7936 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
7937 once_value_12 = fra.me.REG[5];
7938 register_static_object(&once_value_12);
7939 } else fra.me.REG[5] = once_value_12;
7940 fra.me.REG[5] = fra.me.REG[5];
7941 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7942 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7943 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7944 if (!once_value_13) {
7945 fra.me.REG[5] = BOX_NativeString("' unknown in ");
7946 REGB0 = TAG_Int(13);
7947 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
7948 once_value_13 = fra.me.REG[5];
7949 register_static_object(&once_value_13);
7950 } else fra.me.REG[5] = once_value_13;
7951 fra.me.REG[5] = fra.me.REG[5];
7952 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7953 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7954 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7955 if (!once_value_14) {
7956 fra.me.REG[5] = BOX_NativeString(".");
7957 REGB0 = TAG_Int(1);
7958 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
7959 once_value_14 = fra.me.REG[5];
7960 register_static_object(&once_value_14);
7961 } else fra.me.REG[5] = once_value_14;
7962 fra.me.REG[5] = fra.me.REG[5];
7963 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7964 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
7965 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
7966 } else {
7967 /* ./syntax//typing.nit:1358 */
7968 REGB0 = TAG_Int(5);
7969 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
7970 if (!once_value_15) {
7971 fra.me.REG[5] = BOX_NativeString("Error: Method '");
7972 REGB0 = TAG_Int(15);
7973 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
7974 once_value_15 = fra.me.REG[5];
7975 register_static_object(&once_value_15);
7976 } else fra.me.REG[5] = once_value_15;
7977 fra.me.REG[5] = fra.me.REG[5];
7978 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
7979 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7980 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
7981 if (!once_value_16) {
7982 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
7983 REGB0 = TAG_Int(20);
7984 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
7985 once_value_16 = fra.me.REG[3];
7986 register_static_object(&once_value_16);
7987 } else fra.me.REG[3] = once_value_16;
7988 fra.me.REG[3] = fra.me.REG[3];
7989 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
7990 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7991 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
7992 if (!once_value_17) {
7993 fra.me.REG[2] = BOX_NativeString(".");
7994 REGB0 = TAG_Int(1);
7995 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
7996 once_value_17 = fra.me.REG[2];
7997 register_static_object(&once_value_17);
7998 } else fra.me.REG[2] = once_value_17;
7999 fra.me.REG[2] = fra.me.REG[2];
8000 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
8001 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8002 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8003 }
8004 /* ./syntax//typing.nit:1360 */
8005 fra.me.REG[4] = NIT_NULL;
8006 goto label7;
8007 }
8008 /* ./syntax//typing.nit:1362 */
8009 fra.me.REG[4] = fra.me.REG[6];
8010 goto label7;
8011 label7: while(0);
8012 stack_frame_head = fra.me.prev;
8013 return fra.me.REG[4];
8014 }
8015 val_t typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8016 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
8017 val_t REGB0;
8018 val_t tmp;
8019 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8020 fra.me.file = LOCATE_typing;
8021 fra.me.line = 1365;
8022 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_signature;
8023 fra.me.has_broke = 0;
8024 fra.me.REG_size = 6;
8025 fra.me.REG[0] = NIT_NULL;
8026 fra.me.REG[1] = NIT_NULL;
8027 fra.me.REG[2] = NIT_NULL;
8028 fra.me.REG[3] = NIT_NULL;
8029 fra.me.REG[4] = NIT_NULL;
8030 fra.me.REG[5] = NIT_NULL;
8031 fra.me.REG[0] = p0;
8032 fra.me.REG[1] = p1;
8033 fra.me.REG[2] = p2;
8034 fra.me.REG[3] = p3;
8035 REGB0 = p4;
8036 /* ./syntax//typing.nit:1368 */
8037 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
8038 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8039 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);
8040 /* ./syntax//typing.nit:1369 */
8041 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
8042 /* ./syntax//typing.nit:1370 */
8043 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8044 if (UNTAG_Bool(REGB0)) {
8045 fra.me.REG[3] = CALL_static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
8046 fra.me.REG[2] = fra.me.REG[3];
8047 }
8048 /* ./syntax//typing.nit:1371 */
8049 goto label1;
8050 label1: while(0);
8051 stack_frame_head = fra.me.prev;
8052 return fra.me.REG[2];
8053 }
8054 val_t typing___AAbsSendExpr___prop(val_t p0){
8055 struct {struct stack_frame_t me;} fra;
8056 val_t REGB0;
8057 val_t tmp;
8058 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8059 fra.me.file = LOCATE_typing;
8060 fra.me.line = 1374;
8061 fra.me.meth = LOCATE_typing___AAbsSendExpr___prop;
8062 fra.me.has_broke = 0;
8063 fra.me.REG_size = 1;
8064 fra.me.REG[0] = NIT_NULL;
8065 fra.me.REG[0] = p0;
8066 /* ./syntax//typing.nit:1375 */
8067 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8068 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
8069 if (UNTAG_Bool(REGB0)) {
8070 } else {
8071 nit_abort("Cast failed", NULL, LOCATE_typing, 1375);
8072 }
8073 goto label1;
8074 label1: while(0);
8075 stack_frame_head = fra.me.prev;
8076 return fra.me.REG[0];
8077 }
8078 val_t typing___AAbsSendExpr___return_type(val_t p0){
8079 struct {struct stack_frame_t me;} fra;
8080 val_t tmp;
8081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8082 fra.me.file = LOCATE_typing;
8083 fra.me.line = 1378;
8084 fra.me.meth = LOCATE_typing___AAbsSendExpr___return_type;
8085 fra.me.has_broke = 0;
8086 fra.me.REG_size = 1;
8087 fra.me.REG[0] = NIT_NULL;
8088 fra.me.REG[0] = p0;
8089 /* ./syntax//typing.nit:1378 */
8090 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]);
8091 stack_frame_head = fra.me.prev;
8092 return fra.me.REG[0];
8093 }
8094 void typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
8095 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
8096 val_t REGB0;
8097 val_t REGB1;
8098 val_t REGB2;
8099 val_t tmp;
8100 static val_t once_value_1; /* Once value */
8101 static val_t once_value_2; /* Once value */
8102 static val_t once_value_3; /* Once value */
8103 static val_t once_value_4; /* Once value */
8104 static val_t once_value_5; /* Once value */
8105 static val_t once_value_6; /* Once value */
8106 static val_t once_value_7; /* Once value */
8107 static val_t once_value_8; /* Once value */
8108 static val_t once_value_9; /* Once value */
8109 static val_t once_value_10; /* Once value */
8110 static val_t once_value_11; /* Once value */
8111 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8112 fra.me.file = LOCATE_typing;
8113 fra.me.line = 1385;
8114 fra.me.meth = LOCATE_typing___ASuperInitCall___register_super_init_call;
8115 fra.me.has_broke = 0;
8116 fra.me.REG_size = 11;
8117 fra.me.REG[0] = NIT_NULL;
8118 fra.me.REG[1] = NIT_NULL;
8119 fra.me.REG[2] = NIT_NULL;
8120 fra.me.REG[3] = NIT_NULL;
8121 fra.me.REG[4] = NIT_NULL;
8122 fra.me.REG[5] = NIT_NULL;
8123 fra.me.REG[6] = NIT_NULL;
8124 fra.me.REG[7] = NIT_NULL;
8125 fra.me.REG[8] = NIT_NULL;
8126 fra.me.REG[9] = NIT_NULL;
8127 fra.me.REG[10] = NIT_NULL;
8128 fra.me.REG[0] = p0;
8129 fra.me.REG[1] = p1;
8130 fra.me.REG[2] = p2;
8131 /* ./syntax//typing.nit:1387 */
8132 fra.me.REG[3] = CALL_parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
8133 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8134 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
8135 if (UNTAG_Bool(REGB0)) {
8136 } else {
8137 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8138 if (UNTAG_Bool(REGB1)) {
8139 REGB1 = TAG_Bool(false);
8140 REGB0 = REGB1;
8141 } else {
8142 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8143 REGB0 = REGB1;
8144 }
8145 }
8146 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8147 if (UNTAG_Bool(REGB0)) {
8148 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8149 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
8150 if (UNTAG_Bool(REGB0)) {
8151 } else {
8152 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
8153 REGB0 = REGB1;
8154 }
8155 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8156 } else {
8157 REGB1 = TAG_Bool(false);
8158 REGB0 = REGB1;
8159 }
8160 if (UNTAG_Bool(REGB0)) {
8161 /* ./syntax//typing.nit:1388 */
8162 REGB0 = TAG_Int(3);
8163 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
8164 if (!once_value_1) {
8165 fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
8166 REGB0 = TAG_Int(30);
8167 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8168 once_value_1 = fra.me.REG[3];
8169 register_static_object(&once_value_1);
8170 } else fra.me.REG[3] = once_value_1;
8171 fra.me.REG[3] = fra.me.REG[3];
8172 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8173 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8174 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8175 if (!once_value_2) {
8176 fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
8177 REGB0 = TAG_Int(29);
8178 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8179 once_value_2 = fra.me.REG[3];
8180 register_static_object(&once_value_2);
8181 } else fra.me.REG[3] = once_value_2;
8182 fra.me.REG[3] = fra.me.REG[3];
8183 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8184 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8185 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8186 }
8187 /* ./syntax//typing.nit:1390 */
8188 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8189 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
8190 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
8191 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
8192 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
8193 fra.me.REG[3] = CALL_abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8194 /* ./syntax//typing.nit:1391 */
8195 fra.me.REG[4] = NIT_NULL;
8196 /* ./syntax//typing.nit:1392 */
8197 fra.me.REG[5] = CALL_typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
8198 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
8199 if (UNTAG_Bool(REGB0)) {
8200 } else {
8201 nit_abort("Cast failed", NULL, LOCATE_typing, 1392);
8202 }
8203 /* ./syntax//typing.nit:1393 */
8204 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
8205 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8206 if (UNTAG_Bool(REGB0)) {
8207 /* ./syntax//typing.nit:1394 */
8208 fra.me.REG[6] = CALL_abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
8209 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8210 if (UNTAG_Bool(REGB0)) {
8211 nit_abort("Reciever is null", NULL, LOCATE_typing, 1394);
8212 }
8213 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
8214 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
8215 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
8216 fra.me.REG[4] = fra.me.REG[6];
8217 }
8218 /* ./syntax//typing.nit:1396 */
8219 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8220 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
8221 fra.me.REG[6] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
8222 /* ./syntax//typing.nit:1397 */
8223 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8224 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
8225 if (UNTAG_Bool(REGB0)) {
8226 } else {
8227 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
8228 REGB0 = REGB1;
8229 }
8230 if (UNTAG_Bool(REGB0)) {
8231 /* ./syntax//typing.nit:1398 */
8232 REGB0 = TAG_Bool(true);
8233 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
8234 } else {
8235 /* ./syntax//typing.nit:1399 */
8236 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
8237 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8238 if (UNTAG_Bool(REGB0)) {
8239 /* ./syntax//typing.nit:1400 */
8240 REGB0 = TAG_Int(5);
8241 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8242 if (!once_value_3) {
8243 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
8244 REGB0 = TAG_Int(28);
8245 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8246 once_value_3 = fra.me.REG[8];
8247 register_static_object(&once_value_3);
8248 } else fra.me.REG[8] = once_value_3;
8249 fra.me.REG[8] = fra.me.REG[8];
8250 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8251 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8252 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8253 if (!once_value_4) {
8254 fra.me.REG[8] = BOX_NativeString(" must be one in ");
8255 REGB0 = TAG_Int(16);
8256 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8257 once_value_4 = fra.me.REG[8];
8258 register_static_object(&once_value_4);
8259 } else fra.me.REG[8] = once_value_4;
8260 fra.me.REG[8] = fra.me.REG[8];
8261 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8262 if (!once_value_5) {
8263 fra.me.REG[8] = BOX_NativeString(", ");
8264 REGB0 = TAG_Int(2);
8265 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8266 once_value_5 = fra.me.REG[8];
8267 register_static_object(&once_value_5);
8268 } else fra.me.REG[8] = once_value_5;
8269 fra.me.REG[8] = fra.me.REG[8];
8270 fra.me.REG[8] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
8271 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8272 if (!once_value_6) {
8273 fra.me.REG[8] = BOX_NativeString(".");
8274 REGB0 = TAG_Int(1);
8275 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8276 once_value_6 = fra.me.REG[8];
8277 register_static_object(&once_value_6);
8278 } else fra.me.REG[8] = once_value_6;
8279 fra.me.REG[8] = fra.me.REG[8];
8280 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8281 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8282 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8283 } else {
8284 /* ./syntax//typing.nit:1401 */
8285 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
8286 if (UNTAG_Bool(REGB0)) {
8287 } else {
8288 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8289 REGB0 = REGB1;
8290 }
8291 if (UNTAG_Bool(REGB0)) {
8292 /* ./syntax//typing.nit:1402 */
8293 REGB0 = TAG_Int(3);
8294 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8295 if (!once_value_7) {
8296 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
8297 REGB0 = TAG_Int(54);
8298 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8299 once_value_7 = fra.me.REG[8];
8300 register_static_object(&once_value_7);
8301 } else fra.me.REG[8] = once_value_7;
8302 fra.me.REG[8] = fra.me.REG[8];
8303 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8304 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8305 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8306 if (!once_value_8) {
8307 fra.me.REG[8] = BOX_NativeString(" is allowed.");
8308 REGB0 = TAG_Int(12);
8309 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8310 once_value_8 = fra.me.REG[8];
8311 register_static_object(&once_value_8);
8312 } else fra.me.REG[8] = once_value_8;
8313 fra.me.REG[8] = fra.me.REG[8];
8314 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8315 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8316 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8317 } else {
8318 /* ./../lib/standard//collection//array.nit:234 */
8319 REGB0 = TAG_Int(0);
8320 /* ./../lib/standard//collection//array.nit:235 */
8321 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8322 if (UNTAG_Bool(REGB1)) {
8323 } else {
8324 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
8325 }
8326 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
8327 /* ./../lib/standard//collection//array.nit:236 */
8328 fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[6]);
8329 /* ./../lib/standard//collection//array.nit:237 */
8330 while(1) {
8331 /* ./../lib/standard//collection//array.nit:23 */
8332 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8333 if (UNTAG_Bool(REGB1)) {
8334 } else {
8335 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
8336 }
8337 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
8338 /* ./../lib/standard//kernel.nit:212 */
8339 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
8340 /* ./../lib/standard//collection//array.nit:237 */
8341 if (UNTAG_Bool(REGB1)) {
8342 /* ./../lib/standard//collection//array.nit:238 */
8343 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8344 if (UNTAG_Bool(REGB1)) {
8345 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
8346 }
8347 /* ./../lib/standard//collection//array.nit:654 */
8348 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
8349 /* ./syntax//typing.nit:1405 */
8350 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[4]));
8351 if (UNTAG_Bool(REGB1)) {
8352 } else {
8353 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
8354 REGB1 = REGB2;
8355 }
8356 if (UNTAG_Bool(REGB1)) {
8357 /* ./syntax//typing.nit:1406 */
8358 fra.me.REG[4] = NIT_NULL;
8359 } else {
8360 /* ./syntax//typing.nit:1407 */
8361 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[3]));
8362 if (UNTAG_Bool(REGB1)) {
8363 } else {
8364 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8365 REGB1 = REGB2;
8366 }
8367 if (UNTAG_Bool(REGB1)) {
8368 /* ./syntax//typing.nit:1408 */
8369 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8370 if (UNTAG_Bool(REGB1)) {
8371 } else {
8372 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8373 if (UNTAG_Bool(REGB2)) {
8374 REGB2 = TAG_Bool(false);
8375 REGB1 = REGB2;
8376 } else {
8377 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8378 REGB1 = REGB2;
8379 }
8380 }
8381 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8382 if (UNTAG_Bool(REGB1)) {
8383 /* ./syntax//typing.nit:1409 */
8384 REGB1 = TAG_Int(5);
8385 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
8386 if (!once_value_9) {
8387 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
8388 REGB1 = TAG_Int(22);
8389 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
8390 once_value_9 = fra.me.REG[10];
8391 register_static_object(&once_value_9);
8392 } else fra.me.REG[10] = once_value_9;
8393 fra.me.REG[10] = fra.me.REG[10];
8394 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
8395 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8396 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
8397 if (!once_value_10) {
8398 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
8399 REGB1 = TAG_Int(39);
8400 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
8401 once_value_10 = fra.me.REG[8];
8402 register_static_object(&once_value_10);
8403 } else fra.me.REG[8] = once_value_10;
8404 fra.me.REG[8] = fra.me.REG[8];
8405 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
8406 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8407 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
8408 if (!once_value_11) {
8409 fra.me.REG[8] = BOX_NativeString("");
8410 REGB1 = TAG_Int(0);
8411 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
8412 once_value_11 = fra.me.REG[8];
8413 register_static_object(&once_value_11);
8414 } else fra.me.REG[8] = once_value_11;
8415 fra.me.REG[8] = fra.me.REG[8];
8416 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
8417 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
8418 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[9]);
8419 }
8420 /* ./syntax//typing.nit:1411 */
8421 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
8422 /* ./syntax//typing.nit:1412 */
8423 goto label12;
8424 }
8425 }
8426 /* ./../lib/standard//collection//array.nit:239 */
8427 REGB1 = TAG_Int(1);
8428 /* ./../lib/standard//kernel.nit:215 */
8429 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
8430 /* ./../lib/standard//collection//array.nit:239 */
8431 REGB0 = REGB1;
8432 } else {
8433 /* ./../lib/standard//collection//array.nit:237 */
8434 goto label13;
8435 }
8436 }
8437 label13: while(0);
8438 label12: while(0);
8439 }
8440 }
8441 }
8442 stack_frame_head = fra.me.prev;
8443 return;
8444 }
8445 val_t typing___ANewExpr___compute_raw_arguments(val_t p0){
8446 struct {struct stack_frame_t me;} fra;
8447 val_t tmp;
8448 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8449 fra.me.file = LOCATE_typing;
8450 fra.me.line = 1421;
8451 fra.me.meth = LOCATE_typing___ANewExpr___compute_raw_arguments;
8452 fra.me.has_broke = 0;
8453 fra.me.REG_size = 1;
8454 fra.me.REG[0] = NIT_NULL;
8455 fra.me.REG[0] = p0;
8456 /* ./syntax//typing.nit:1421 */
8457 fra.me.REG[0] = CALL_parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
8458 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
8459 goto label1;
8460 label1: while(0);
8461 stack_frame_head = fra.me.prev;
8462 return fra.me.REG[0];
8463 }
8464 void typing___ANewExpr___after_typing(val_t p0, val_t p1){
8465 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
8466 val_t REGB0;
8467 val_t REGB1;
8468 val_t tmp;
8469 static val_t once_value_2; /* Once value */
8470 static val_t once_value_3; /* Once value */
8471 static val_t once_value_4; /* Once value */
8472 static val_t once_value_5; /* Once value */
8473 static val_t once_value_6; /* Once value */
8474 static val_t once_value_7; /* Once value */
8475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8476 fra.me.file = LOCATE_typing;
8477 fra.me.line = 1422;
8478 fra.me.meth = LOCATE_typing___ANewExpr___after_typing;
8479 fra.me.has_broke = 0;
8480 fra.me.REG_size = 5;
8481 fra.me.REG[0] = NIT_NULL;
8482 fra.me.REG[1] = NIT_NULL;
8483 fra.me.REG[2] = NIT_NULL;
8484 fra.me.REG[3] = NIT_NULL;
8485 fra.me.REG[4] = NIT_NULL;
8486 fra.me.REG[0] = p0;
8487 fra.me.REG[1] = p1;
8488 /* ./syntax//typing.nit:1424 */
8489 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
8490 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
8491 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8492 if (UNTAG_Bool(REGB0)) {
8493 goto label1;
8494 }
8495 /* ./syntax//typing.nit:1425 */
8496 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
8497 fra.me.REG[2] = CALL_syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
8498 /* ./syntax//typing.nit:1426 */
8499 fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
8500 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
8501 REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
8502 if (UNTAG_Bool(REGB0)) {
8503 /* ./syntax//typing.nit:1427 */
8504 REGB0 = TAG_Int(3);
8505 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
8506 if (!once_value_2) {
8507 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
8508 REGB0 = TAG_Int(41);
8509 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
8510 once_value_2 = fra.me.REG[4];
8511 register_static_object(&once_value_2);
8512 } else fra.me.REG[4] = once_value_2;
8513 fra.me.REG[4] = fra.me.REG[4];
8514 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8515 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
8516 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8517 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8518 if (!once_value_3) {
8519 fra.me.REG[4] = BOX_NativeString(".");
8520 REGB0 = TAG_Int(1);
8521 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
8522 once_value_3 = fra.me.REG[4];
8523 register_static_object(&once_value_3);
8524 } else fra.me.REG[4] = once_value_3;
8525 fra.me.REG[4] = fra.me.REG[4];
8526 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8527 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8528 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
8529 /* ./syntax//typing.nit:1428 */
8530 goto label1;
8531 }
8532 /* ./syntax//typing.nit:1431 */
8533 fra.me.REG[3] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
8534 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8535 if (UNTAG_Bool(REGB0)) {
8536 } else {
8537 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8538 if (UNTAG_Bool(REGB1)) {
8539 REGB1 = TAG_Bool(false);
8540 REGB0 = REGB1;
8541 } else {
8542 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8543 REGB0 = REGB1;
8544 }
8545 }
8546 if (UNTAG_Bool(REGB0)) {
8547 /* ./syntax//typing.nit:1432 */
8548 if (!once_value_4) {
8549 if (!once_value_5) {
8550 fra.me.REG[3] = BOX_NativeString("init");
8551 REGB0 = TAG_Int(4);
8552 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8553 once_value_5 = fra.me.REG[3];
8554 register_static_object(&once_value_5);
8555 } else fra.me.REG[3] = once_value_5;
8556 fra.me.REG[3] = fra.me.REG[3];
8557 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
8558 once_value_4 = fra.me.REG[3];
8559 register_static_object(&once_value_4);
8560 } else fra.me.REG[3] = once_value_4;
8561 fra.me.REG[3] = fra.me.REG[3];
8562 } else {
8563 /* ./syntax//typing.nit:1434 */
8564 fra.me.REG[4] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
8565 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8566 if (UNTAG_Bool(REGB0)) {
8567 nit_abort("Reciever is null", NULL, LOCATE_typing, 1434);
8568 }
8569 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8570 fra.me.REG[3] = fra.me.REG[4];
8571 }
8572 /* ./syntax//typing.nit:1437 */
8573 REGB0 = TAG_Bool(false);
8574 REGB1 = TAG_Bool(false);
8575 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8576 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);
8577 /* ./syntax//typing.nit:1438 */
8578 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8579 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8580 if (UNTAG_Bool(REGB1)) {
8581 } else {
8582 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8583 if (UNTAG_Bool(REGB0)) {
8584 REGB0 = TAG_Bool(false);
8585 REGB1 = REGB0;
8586 } else {
8587 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8588 REGB1 = REGB0;
8589 }
8590 }
8591 if (UNTAG_Bool(REGB1)) {
8592 goto label1;
8593 }
8594 /* ./syntax//typing.nit:1440 */
8595 fra.me.REG[4] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
8596 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8597 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
8598 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8599 if (UNTAG_Bool(REGB1)) {
8600 /* ./syntax//typing.nit:1441 */
8601 REGB1 = TAG_Int(3);
8602 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8603 if (!once_value_6) {
8604 fra.me.REG[3] = BOX_NativeString("Error: ");
8605 REGB1 = TAG_Int(7);
8606 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8607 once_value_6 = fra.me.REG[3];
8608 register_static_object(&once_value_6);
8609 } else fra.me.REG[3] = once_value_6;
8610 fra.me.REG[3] = fra.me.REG[3];
8611 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8612 fra.me.REG[3] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
8613 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8614 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8615 if (!once_value_7) {
8616 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
8617 REGB1 = TAG_Int(22);
8618 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8619 once_value_7 = fra.me.REG[3];
8620 register_static_object(&once_value_7);
8621 } else fra.me.REG[3] = once_value_7;
8622 fra.me.REG[3] = fra.me.REG[3];
8623 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8624 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8625 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8626 /* ./syntax//typing.nit:1442 */
8627 goto label1;
8628 }
8629 /* ./syntax//typing.nit:1444 */
8630 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
8631 /* ./syntax//typing.nit:1445 */
8632 REGB1 = TAG_Bool(true);
8633 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
8634 label1: while(0);
8635 stack_frame_head = fra.me.prev;
8636 return;
8637 }
8638 val_t typing___ASendExpr___name(val_t p0){
8639 struct {struct stack_frame_t me;} fra;
8640 val_t tmp;
8641 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8642 fra.me.file = LOCATE_typing;
8643 fra.me.line = 1451;
8644 fra.me.meth = LOCATE_typing___ASendExpr___name;
8645 fra.me.has_broke = 0;
8646 fra.me.REG_size = 0;
8647 /* ./syntax//typing.nit:1451 */
8648 nit_abort("Deferred method called", NULL, LOCATE_typing, 1451);
8649 stack_frame_head = fra.me.prev;
8650 return NIT_NULL;
8651 }
8652 val_t typing___ASendExpr___closure_defs(val_t p0){
8653 struct {struct stack_frame_t me;} fra;
8654 val_t tmp;
8655 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8656 fra.me.file = LOCATE_typing;
8657 fra.me.line = 1454;
8658 fra.me.meth = LOCATE_typing___ASendExpr___closure_defs;
8659 fra.me.has_broke = 0;
8660 fra.me.REG_size = 1;
8661 fra.me.REG[0] = NIT_NULL;
8662 fra.me.REG[0] = p0;
8663 /* ./syntax//typing.nit:1455 */
8664 fra.me.REG[0] = NIT_NULL;
8665 goto label1;
8666 label1: while(0);
8667 stack_frame_head = fra.me.prev;
8668 return fra.me.REG[0];
8669 }
8670 void typing___ASendExpr___after_typing(val_t p0, val_t p1){
8671 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8672 val_t tmp;
8673 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8674 fra.me.file = LOCATE_typing;
8675 fra.me.line = 1457;
8676 fra.me.meth = LOCATE_typing___ASendExpr___after_typing;
8677 fra.me.has_broke = 0;
8678 fra.me.REG_size = 2;
8679 fra.me.REG[0] = NIT_NULL;
8680 fra.me.REG[1] = NIT_NULL;
8681 fra.me.REG[0] = p0;
8682 fra.me.REG[1] = p1;
8683 /* ./syntax//typing.nit:1459 */
8684 CALL_typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8685 stack_frame_head = fra.me.prev;
8686 return;
8687 }
8688 void typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
8689 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
8690 val_t REGB0;
8691 val_t REGB1;
8692 val_t tmp;
8693 static val_t once_value_2; /* Once value */
8694 static val_t once_value_3; /* Once value */
8695 static val_t once_value_4; /* Once value */
8696 static val_t once_value_5; /* Once value */
8697 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8698 fra.me.file = LOCATE_typing;
8699 fra.me.line = 1462;
8700 fra.me.meth = LOCATE_typing___ASendExpr___do_all_typing;
8701 fra.me.has_broke = 0;
8702 fra.me.REG_size = 6;
8703 fra.me.REG[0] = NIT_NULL;
8704 fra.me.REG[1] = NIT_NULL;
8705 fra.me.REG[2] = NIT_NULL;
8706 fra.me.REG[3] = NIT_NULL;
8707 fra.me.REG[4] = NIT_NULL;
8708 fra.me.REG[5] = NIT_NULL;
8709 fra.me.REG[0] = p0;
8710 fra.me.REG[1] = p1;
8711 /* ./syntax//typing.nit:1464 */
8712 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8713 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8714 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8715 if (UNTAG_Bool(REGB0)) {
8716 goto label1;
8717 }
8718 /* ./syntax//typing.nit:1465 */
8719 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8720 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
8721 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8722 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
8723 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8724 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
8725 fra.me.REG[3] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
8726 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8727 fra.me.REG[5] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
8728 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]);
8729 /* ./syntax//typing.nit:1466 */
8730 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8731 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8732 if (UNTAG_Bool(REGB1)) {
8733 } else {
8734 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8735 if (UNTAG_Bool(REGB0)) {
8736 REGB0 = TAG_Bool(false);
8737 REGB1 = REGB0;
8738 } else {
8739 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8740 REGB1 = REGB0;
8741 }
8742 }
8743 if (UNTAG_Bool(REGB1)) {
8744 goto label1;
8745 }
8746 /* ./syntax//typing.nit:1467 */
8747 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8748 REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
8749 if (UNTAG_Bool(REGB1)) {
8750 } else {
8751 nit_abort("Cast failed", NULL, LOCATE_typing, 1467);
8752 }
8753 /* ./syntax//typing.nit:1469 */
8754 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
8755 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
8756 if (UNTAG_Bool(REGB1)) {
8757 /* ./syntax//typing.nit:1470 */
8758 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8759 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8760 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
8761 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8762 if (UNTAG_Bool(REGB1)) {
8763 /* ./syntax//typing.nit:1471 */
8764 REGB1 = TAG_Int(3);
8765 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8766 if (!once_value_2) {
8767 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
8768 REGB1 = TAG_Int(33);
8769 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8770 once_value_2 = fra.me.REG[3];
8771 register_static_object(&once_value_2);
8772 } else fra.me.REG[3] = once_value_2;
8773 fra.me.REG[3] = fra.me.REG[3];
8774 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8775 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8776 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8777 if (!once_value_3) {
8778 fra.me.REG[3] = BOX_NativeString(" in a method.");
8779 REGB1 = TAG_Int(13);
8780 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8781 once_value_3 = fra.me.REG[3];
8782 register_static_object(&once_value_3);
8783 } else fra.me.REG[3] = once_value_3;
8784 fra.me.REG[3] = fra.me.REG[3];
8785 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8786 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8787 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8788 } else {
8789 /* ./syntax//typing.nit:1472 */
8790 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8791 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
8792 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8793 if (UNTAG_Bool(REGB1)) {
8794 /* ./syntax//typing.nit:1473 */
8795 REGB1 = TAG_Int(3);
8796 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8797 if (!once_value_4) {
8798 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
8799 REGB1 = TAG_Int(19);
8800 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8801 once_value_4 = fra.me.REG[3];
8802 register_static_object(&once_value_4);
8803 } else fra.me.REG[3] = once_value_4;
8804 fra.me.REG[3] = fra.me.REG[3];
8805 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8806 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8807 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8808 if (!once_value_5) {
8809 fra.me.REG[3] = BOX_NativeString(" is not invoken on 'self'.");
8810 REGB1 = TAG_Int(26);
8811 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
8812 once_value_5 = fra.me.REG[3];
8813 register_static_object(&once_value_5);
8814 } else fra.me.REG[3] = once_value_5;
8815 fra.me.REG[3] = fra.me.REG[3];
8816 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8817 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8818 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8819 } else {
8820 /* ./syntax//typing.nit:1475 */
8821 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
8822 }
8823 }
8824 }
8825 /* ./syntax//typing.nit:1479 */
8826 fra.me.REG[5] = CALL_syntax_base___AAbsSendExpr___return_type(fra.me.REG[0])(fra.me.REG[0]);
8827 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
8828 /* ./syntax//typing.nit:1480 */
8829 REGB1 = TAG_Bool(true);
8830 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
8831 label1: while(0);
8832 stack_frame_head = fra.me.prev;
8833 return;
8834 }
8835 val_t typing___ASendReassignExpr___read_prop(val_t p0){
8836 struct {struct stack_frame_t me;} fra;
8837 val_t REGB0;
8838 val_t tmp;
8839 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8840 fra.me.file = LOCATE_typing;
8841 fra.me.line = 1485;
8842 fra.me.meth = LOCATE_typing___ASendReassignExpr___read_prop;
8843 fra.me.has_broke = 0;
8844 fra.me.REG_size = 1;
8845 fra.me.REG[0] = NIT_NULL;
8846 fra.me.REG[0] = p0;
8847 /* ./syntax//typing.nit:1485 */
8848 fra.me.REG[0] = ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]);
8849 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
8850 if (UNTAG_Bool(REGB0)) {
8851 } else {
8852 nit_abort("Cast failed", NULL, LOCATE_typing, 1485);
8853 }
8854 goto label1;
8855 label1: while(0);
8856 stack_frame_head = fra.me.prev;
8857 return fra.me.REG[0];
8858 }
8859 void typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
8860 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8861 val_t REGB0;
8862 val_t REGB1;
8863 val_t REGB2;
8864 val_t tmp;
8865 static val_t once_value_2; /* Once value */
8866 static val_t once_value_3; /* Once value */
8867 static val_t once_value_4; /* Once value */
8868 static val_t once_value_5; /* Once value */
8869 static val_t once_value_6; /* Once value */
8870 static val_t once_value_7; /* Once value */
8871 static val_t once_value_8; /* Once value */
8872 static val_t once_value_9; /* Once value */
8873 static val_t once_value_10; /* Once value */
8874 static val_t once_value_11; /* Once value */
8875 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8876 fra.me.file = LOCATE_typing;
8877 fra.me.line = 1487;
8878 fra.me.meth = LOCATE_typing___ASendReassignExpr___do_all_typing;
8879 fra.me.has_broke = 0;
8880 fra.me.REG_size = 7;
8881 fra.me.REG[0] = NIT_NULL;
8882 fra.me.REG[1] = NIT_NULL;
8883 fra.me.REG[2] = NIT_NULL;
8884 fra.me.REG[3] = NIT_NULL;
8885 fra.me.REG[4] = NIT_NULL;
8886 fra.me.REG[5] = NIT_NULL;
8887 fra.me.REG[6] = NIT_NULL;
8888 fra.me.REG[0] = p0;
8889 fra.me.REG[1] = p1;
8890 /* ./syntax//typing.nit:1489 */
8891 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8892 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8893 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8894 if (UNTAG_Bool(REGB0)) {
8895 goto label1;
8896 }
8897 /* ./syntax//typing.nit:1490 */
8898 fra.me.REG[2] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8899 /* ./syntax//typing.nit:1491 */
8900 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8901 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
8902 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8903 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
8904 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8905 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
8906 fra.me.REG[4] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
8907 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);
8908 /* ./syntax//typing.nit:1492 */
8909 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8910 /* ./syntax//typing.nit:1493 */
8911 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8912 if (UNTAG_Bool(REGB1)) {
8913 } else {
8914 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8915 if (UNTAG_Bool(REGB0)) {
8916 REGB0 = TAG_Bool(false);
8917 REGB1 = REGB0;
8918 } else {
8919 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8920 REGB1 = REGB0;
8921 }
8922 }
8923 if (UNTAG_Bool(REGB1)) {
8924 goto label1;
8925 }
8926 /* ./syntax//typing.nit:1494 */
8927 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8928 if (UNTAG_Bool(REGB1)) {
8929 nit_abort("Reciever is null", NULL, LOCATE_typing, 1494);
8930 }
8931 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
8932 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
8933 if (UNTAG_Bool(REGB1)) {
8934 /* ./syntax//typing.nit:1495 */
8935 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8936 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
8937 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
8938 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8939 if (UNTAG_Bool(REGB1)) {
8940 /* ./syntax//typing.nit:1496 */
8941 REGB1 = TAG_Int(3);
8942 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
8943 if (!once_value_2) {
8944 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
8945 REGB1 = TAG_Int(33);
8946 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8947 once_value_2 = fra.me.REG[5];
8948 register_static_object(&once_value_2);
8949 } else fra.me.REG[5] = once_value_2;
8950 fra.me.REG[5] = fra.me.REG[5];
8951 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8952 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8953 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8954 if (!once_value_3) {
8955 fra.me.REG[5] = BOX_NativeString(" in a method.");
8956 REGB1 = TAG_Int(13);
8957 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8958 once_value_3 = fra.me.REG[5];
8959 register_static_object(&once_value_3);
8960 } else fra.me.REG[5] = once_value_3;
8961 fra.me.REG[5] = fra.me.REG[5];
8962 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8963 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8964 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
8965 } else {
8966 /* ./syntax//typing.nit:1497 */
8967 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
8968 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
8969 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8970 if (UNTAG_Bool(REGB1)) {
8971 /* ./syntax//typing.nit:1498 */
8972 REGB1 = TAG_Int(3);
8973 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
8974 if (!once_value_4) {
8975 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
8976 REGB1 = TAG_Int(19);
8977 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8978 once_value_4 = fra.me.REG[5];
8979 register_static_object(&once_value_4);
8980 } else fra.me.REG[5] = once_value_4;
8981 fra.me.REG[5] = fra.me.REG[5];
8982 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8983 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8984 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8985 if (!once_value_5) {
8986 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
8987 REGB1 = TAG_Int(26);
8988 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8989 once_value_5 = fra.me.REG[5];
8990 register_static_object(&once_value_5);
8991 } else fra.me.REG[5] = once_value_5;
8992 fra.me.REG[5] = fra.me.REG[5];
8993 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8994 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8995 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
8996 }
8997 }
8998 }
8999 /* ./syntax//typing.nit:1501 */
9000 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9001 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
9002 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9003 if (UNTAG_Bool(REGB1)) {
9004 nit_abort("Reciever is null", NULL, LOCATE_typing, 1501);
9005 }
9006 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9007 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
9008 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
9009 if (UNTAG_Bool(REGB1)) {
9010 } else {
9011 nit_abort("Cast failed", NULL, LOCATE_typing, 1501);
9012 }
9013 /* ./syntax//typing.nit:1502 */
9014 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9015 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
9016 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9017 if (UNTAG_Bool(REGB1)) {
9018 fra.me.REG[5] = CALL_static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
9019 fra.me.REG[3] = fra.me.REG[5];
9020 }
9021 /* ./syntax//typing.nit:1504 */
9022 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]);
9023 /* ./syntax//typing.nit:1505 */
9024 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9025 if (UNTAG_Bool(REGB1)) {
9026 } else {
9027 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9028 if (UNTAG_Bool(REGB0)) {
9029 REGB0 = TAG_Bool(false);
9030 REGB1 = REGB0;
9031 } else {
9032 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9033 REGB1 = REGB0;
9034 }
9035 }
9036 if (UNTAG_Bool(REGB1)) {
9037 goto label1;
9038 }
9039 /* ./syntax//typing.nit:1506 */
9040 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9041 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
9042 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]);
9043 /* ./syntax//typing.nit:1508 */
9044 ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]) = fra.me.REG[4];
9045 /* ./syntax//typing.nit:1509 */
9046 fra.me.REG[5] = CALL_array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
9047 fra.me.REG[2] = fra.me.REG[5];
9048 /* ./syntax//typing.nit:1510 */
9049 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9050 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
9051 /* ./syntax//typing.nit:1512 */
9052 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9053 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
9054 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9055 REGB1 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
9056 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9057 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9058 REGB2 = TAG_Int(3);
9059 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB2);
9060 if (!once_value_6) {
9061 fra.me.REG[6] = BOX_NativeString("");
9062 REGB2 = TAG_Int(0);
9063 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
9064 once_value_6 = fra.me.REG[6];
9065 register_static_object(&once_value_6);
9066 } else fra.me.REG[6] = once_value_6;
9067 fra.me.REG[6] = fra.me.REG[6];
9068 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9069 fra.me.REG[6] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9070 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
9071 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9072 if (!once_value_7) {
9073 fra.me.REG[6] = BOX_NativeString("=");
9074 REGB2 = TAG_Int(1);
9075 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
9076 once_value_7 = fra.me.REG[6];
9077 register_static_object(&once_value_7);
9078 } else fra.me.REG[6] = once_value_7;
9079 fra.me.REG[6] = fra.me.REG[6];
9080 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9081 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9082 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9083 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);
9084 /* ./syntax//typing.nit:1513 */
9085 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9086 if (UNTAG_Bool(REGB0)) {
9087 nit_abort("Reciever is null", NULL, LOCATE_typing, 1513);
9088 }
9089 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9090 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
9091 if (UNTAG_Bool(REGB0)) {
9092 /* ./syntax//typing.nit:1514 */
9093 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9094 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9095 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
9096 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9097 if (UNTAG_Bool(REGB0)) {
9098 /* ./syntax//typing.nit:1515 */
9099 REGB0 = TAG_Int(3);
9100 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
9101 if (!once_value_8) {
9102 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
9103 REGB0 = TAG_Int(33);
9104 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9105 once_value_8 = fra.me.REG[3];
9106 register_static_object(&once_value_8);
9107 } else fra.me.REG[3] = once_value_8;
9108 fra.me.REG[3] = fra.me.REG[3];
9109 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9110 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9111 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9112 if (!once_value_9) {
9113 fra.me.REG[3] = BOX_NativeString(" in a method.");
9114 REGB0 = TAG_Int(13);
9115 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9116 once_value_9 = fra.me.REG[3];
9117 register_static_object(&once_value_9);
9118 } else fra.me.REG[3] = once_value_9;
9119 fra.me.REG[3] = fra.me.REG[3];
9120 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9121 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9122 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
9123 } else {
9124 /* ./syntax//typing.nit:1516 */
9125 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9126 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[2])(fra.me.REG[2]);
9127 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9128 if (UNTAG_Bool(REGB0)) {
9129 /* ./syntax//typing.nit:1517 */
9130 REGB0 = TAG_Int(3);
9131 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
9132 if (!once_value_10) {
9133 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
9134 REGB0 = TAG_Int(19);
9135 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9136 once_value_10 = fra.me.REG[3];
9137 register_static_object(&once_value_10);
9138 } else fra.me.REG[3] = once_value_10;
9139 fra.me.REG[3] = fra.me.REG[3];
9140 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9141 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9142 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
9143 if (!once_value_11) {
9144 fra.me.REG[4] = BOX_NativeString(" is not invoken on 'self'.");
9145 REGB0 = TAG_Int(26);
9146 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
9147 once_value_11 = fra.me.REG[4];
9148 register_static_object(&once_value_11);
9149 } else fra.me.REG[4] = once_value_11;
9150 fra.me.REG[4] = fra.me.REG[4];
9151 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
9152 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9153 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
9154 }
9155 }
9156 }
9157 /* ./syntax//typing.nit:1521 */
9158 REGB0 = TAG_Bool(true);
9159 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
9160 label1: while(0);
9161 stack_frame_head = fra.me.prev;
9162 return;
9163 }
9164 val_t typing___ABinopExpr___compute_raw_arguments(val_t p0){
9165 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9166 val_t REGB0;
9167 val_t tmp;
9168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9169 fra.me.file = LOCATE_typing;
9170 fra.me.line = 1526;
9171 fra.me.meth = LOCATE_typing___ABinopExpr___compute_raw_arguments;
9172 fra.me.has_broke = 0;
9173 fra.me.REG_size = 2;
9174 fra.me.REG[0] = NIT_NULL;
9175 fra.me.REG[1] = NIT_NULL;
9176 fra.me.REG[0] = p0;
9177 /* ./syntax//typing.nit:1526 */
9178 REGB0 = TAG_Int(1);
9179 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
9180 fra.me.REG[0] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
9181 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
9182 goto label1;
9183 label1: while(0);
9184 stack_frame_head = fra.me.prev;
9185 return fra.me.REG[1];
9186 }
9187 val_t typing___AEqExpr___name(val_t p0){
9188 struct {struct stack_frame_t me;} fra;
9189 val_t REGB0;
9190 val_t tmp;
9191 static val_t once_value_1; /* Once value */
9192 static val_t once_value_2; /* Once value */
9193 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9194 fra.me.file = LOCATE_typing;
9195 fra.me.line = 1529;
9196 fra.me.meth = LOCATE_typing___AEqExpr___name;
9197 fra.me.has_broke = 0;
9198 fra.me.REG_size = 1;
9199 fra.me.REG[0] = NIT_NULL;
9200 fra.me.REG[0] = p0;
9201 /* ./syntax//typing.nit:1529 */
9202 if (!once_value_1) {
9203 if (!once_value_2) {
9204 fra.me.REG[0] = BOX_NativeString("==");
9205 REGB0 = TAG_Int(2);
9206 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9207 once_value_2 = fra.me.REG[0];
9208 register_static_object(&once_value_2);
9209 } else fra.me.REG[0] = once_value_2;
9210 fra.me.REG[0] = fra.me.REG[0];
9211 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9212 once_value_1 = fra.me.REG[0];
9213 register_static_object(&once_value_1);
9214 } else fra.me.REG[0] = once_value_1;
9215 fra.me.REG[0] = fra.me.REG[0];
9216 goto label3;
9217 label3: while(0);
9218 stack_frame_head = fra.me.prev;
9219 return fra.me.REG[0];
9220 }
9221 void typing___AEqExpr___after_typing(val_t p0, val_t p1){
9222 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
9223 val_t REGB0;
9224 val_t REGB1;
9225 val_t tmp;
9226 static val_t once_value_2; /* Once value */
9227 static val_t once_value_3; /* Once value */
9228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9229 fra.me.file = LOCATE_typing;
9230 fra.me.line = 1530;
9231 fra.me.meth = LOCATE_typing___AEqExpr___after_typing;
9232 fra.me.has_broke = 0;
9233 fra.me.REG_size = 4;
9234 fra.me.REG[0] = NIT_NULL;
9235 fra.me.REG[1] = NIT_NULL;
9236 fra.me.REG[2] = NIT_NULL;
9237 fra.me.REG[3] = NIT_NULL;
9238 fra.me.REG[0] = p0;
9239 fra.me.REG[1] = p1;
9240 /* ./syntax//typing.nit:1530 */
9241 fra.me.REG[2] = fra.me.REG[0];
9242 fra.me.REG[3] = fra.me.REG[1];
9243 /* ./syntax//typing.nit:1532 */
9244 CALL_SUPER_typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9245 /* ./syntax//typing.nit:1533 */
9246 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9247 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9248 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9249 if (UNTAG_Bool(REGB0)) {
9250 REGB0 = TAG_Bool(true);
9251 } else {
9252 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9253 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9254 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9255 REGB0 = REGB1;
9256 }
9257 if (UNTAG_Bool(REGB0)) {
9258 goto label1;
9259 }
9260 /* ./syntax//typing.nit:1534 */
9261 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9262 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9263 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9264 if (UNTAG_Bool(REGB0)) {
9265 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9266 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9267 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9268 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9269 } else {
9270 REGB1 = TAG_Bool(false);
9271 REGB0 = REGB1;
9272 }
9273 if (UNTAG_Bool(REGB0)) {
9274 REGB0 = TAG_Bool(true);
9275 } else {
9276 /* ./syntax//typing.nit:1535 */
9277 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9278 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9279 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9280 /* ./syntax//typing.nit:1534 */
9281 REGB0 = REGB1;
9282 }
9283 if (UNTAG_Bool(REGB0)) {
9284 /* ./syntax//typing.nit:1535 */
9285 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9286 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9287 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9288 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9289 } else {
9290 /* ./syntax//typing.nit:1534 */
9291 REGB1 = TAG_Bool(false);
9292 REGB0 = REGB1;
9293 }
9294 if (UNTAG_Bool(REGB0)) {
9295 /* ./syntax//typing.nit:1536 */
9296 if (!once_value_2) {
9297 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
9298 REGB0 = TAG_Int(59);
9299 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9300 once_value_2 = fra.me.REG[1];
9301 register_static_object(&once_value_2);
9302 } else fra.me.REG[1] = once_value_2;
9303 fra.me.REG[1] = fra.me.REG[1];
9304 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9305 }
9306 /* ./syntax//typing.nit:1539 */
9307 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9308 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9309 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9310 if (UNTAG_Bool(REGB0)) {
9311 /* ./syntax//typing.nit:1540 */
9312 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9313 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9314 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9315 if (UNTAG_Bool(REGB0)) {
9316 /* ./syntax//typing.nit:1541 */
9317 if (!once_value_3) {
9318 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
9319 REGB0 = TAG_Int(43);
9320 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9321 once_value_3 = fra.me.REG[1];
9322 register_static_object(&once_value_3);
9323 } else fra.me.REG[1] = once_value_3;
9324 fra.me.REG[1] = fra.me.REG[1];
9325 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9326 } else {
9327 /* ./syntax//typing.nit:1543 */
9328 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9329 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
9330 }
9331 } else {
9332 /* ./syntax//typing.nit:1545 */
9333 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9334 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9335 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9336 if (UNTAG_Bool(REGB0)) {
9337 /* ./syntax//typing.nit:1546 */
9338 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9339 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
9340 }
9341 }
9342 label1: while(0);
9343 stack_frame_head = fra.me.prev;
9344 return;
9345 }
9346 void typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
9347 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9348 val_t REGB0;
9349 val_t REGB1;
9350 val_t tmp;
9351 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9352 fra.me.file = LOCATE_typing;
9353 fra.me.line = 1550;
9354 fra.me.meth = LOCATE_typing___AEqExpr___try_to_isa;
9355 fra.me.has_broke = 0;
9356 fra.me.REG_size = 5;
9357 fra.me.REG[0] = NIT_NULL;
9358 fra.me.REG[1] = NIT_NULL;
9359 fra.me.REG[2] = NIT_NULL;
9360 fra.me.REG[3] = NIT_NULL;
9361 fra.me.REG[4] = NIT_NULL;
9362 fra.me.REG[0] = p0;
9363 fra.me.REG[1] = p1;
9364 fra.me.REG[2] = p2;
9365 /* ./syntax//typing.nit:1552 */
9366 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
9367 /* ./syntax//typing.nit:1553 */
9368 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9369 if (UNTAG_Bool(REGB0)) {
9370 } else {
9371 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9372 if (UNTAG_Bool(REGB1)) {
9373 REGB1 = TAG_Bool(false);
9374 REGB0 = REGB1;
9375 } else {
9376 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9377 REGB0 = REGB1;
9378 }
9379 }
9380 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9381 if (UNTAG_Bool(REGB0)) {
9382 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9383 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
9384 } else {
9385 REGB1 = TAG_Bool(false);
9386 REGB0 = REGB1;
9387 }
9388 if (UNTAG_Bool(REGB0)) {
9389 /* ./syntax//typing.nit:1554 */
9390 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
9391 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9392 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
9393 fra.me.REG[2] = CALL_flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
9394 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
9395 /* ./syntax//typing.nit:1555 */
9396 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
9397 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
9398 fra.me.REG[1] = CALL_flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
9399 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
9400 }
9401 stack_frame_head = fra.me.prev;
9402 return;
9403 }
9404 val_t typing___ANeExpr___name(val_t p0){
9405 struct {struct stack_frame_t me;} fra;
9406 val_t REGB0;
9407 val_t tmp;
9408 static val_t once_value_1; /* Once value */
9409 static val_t once_value_2; /* Once value */
9410 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9411 fra.me.file = LOCATE_typing;
9412 fra.me.line = 1560;
9413 fra.me.meth = LOCATE_typing___ANeExpr___name;
9414 fra.me.has_broke = 0;
9415 fra.me.REG_size = 1;
9416 fra.me.REG[0] = NIT_NULL;
9417 fra.me.REG[0] = p0;
9418 /* ./syntax//typing.nit:1560 */
9419 if (!once_value_1) {
9420 if (!once_value_2) {
9421 fra.me.REG[0] = BOX_NativeString("!=");
9422 REGB0 = TAG_Int(2);
9423 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9424 once_value_2 = fra.me.REG[0];
9425 register_static_object(&once_value_2);
9426 } else fra.me.REG[0] = once_value_2;
9427 fra.me.REG[0] = fra.me.REG[0];
9428 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9429 once_value_1 = fra.me.REG[0];
9430 register_static_object(&once_value_1);
9431 } else fra.me.REG[0] = once_value_1;
9432 fra.me.REG[0] = fra.me.REG[0];
9433 goto label3;
9434 label3: while(0);
9435 stack_frame_head = fra.me.prev;
9436 return fra.me.REG[0];
9437 }
9438 void typing___ANeExpr___after_typing(val_t p0, val_t p1){
9439 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
9440 val_t REGB0;
9441 val_t REGB1;
9442 val_t tmp;
9443 static val_t once_value_2; /* Once value */
9444 static val_t once_value_3; /* Once value */
9445 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9446 fra.me.file = LOCATE_typing;
9447 fra.me.line = 1561;
9448 fra.me.meth = LOCATE_typing___ANeExpr___after_typing;
9449 fra.me.has_broke = 0;
9450 fra.me.REG_size = 4;
9451 fra.me.REG[0] = NIT_NULL;
9452 fra.me.REG[1] = NIT_NULL;
9453 fra.me.REG[2] = NIT_NULL;
9454 fra.me.REG[3] = NIT_NULL;
9455 fra.me.REG[0] = p0;
9456 fra.me.REG[1] = p1;
9457 /* ./syntax//typing.nit:1561 */
9458 fra.me.REG[2] = fra.me.REG[0];
9459 fra.me.REG[3] = fra.me.REG[1];
9460 /* ./syntax//typing.nit:1563 */
9461 CALL_SUPER_typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9462 /* ./syntax//typing.nit:1564 */
9463 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9464 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9465 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9466 if (UNTAG_Bool(REGB0)) {
9467 REGB0 = TAG_Bool(true);
9468 } else {
9469 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9470 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9471 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9472 REGB0 = REGB1;
9473 }
9474 if (UNTAG_Bool(REGB0)) {
9475 goto label1;
9476 }
9477 /* ./syntax//typing.nit:1565 */
9478 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9479 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9480 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9481 if (UNTAG_Bool(REGB0)) {
9482 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9483 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9484 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9485 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9486 } else {
9487 REGB1 = TAG_Bool(false);
9488 REGB0 = REGB1;
9489 }
9490 if (UNTAG_Bool(REGB0)) {
9491 REGB0 = TAG_Bool(true);
9492 } else {
9493 /* ./syntax//typing.nit:1566 */
9494 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9495 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9496 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9497 /* ./syntax//typing.nit:1565 */
9498 REGB0 = REGB1;
9499 }
9500 if (UNTAG_Bool(REGB0)) {
9501 /* ./syntax//typing.nit:1566 */
9502 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9503 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9504 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9505 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9506 } else {
9507 /* ./syntax//typing.nit:1565 */
9508 REGB1 = TAG_Bool(false);
9509 REGB0 = REGB1;
9510 }
9511 if (UNTAG_Bool(REGB0)) {
9512 /* ./syntax//typing.nit:1567 */
9513 if (!once_value_2) {
9514 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
9515 REGB0 = TAG_Int(59);
9516 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9517 once_value_2 = fra.me.REG[1];
9518 register_static_object(&once_value_2);
9519 } else fra.me.REG[1] = once_value_2;
9520 fra.me.REG[1] = fra.me.REG[1];
9521 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9522 }
9523 /* ./syntax//typing.nit:1570 */
9524 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9525 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9526 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9527 if (UNTAG_Bool(REGB0)) {
9528 /* ./syntax//typing.nit:1571 */
9529 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9530 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9531 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9532 if (UNTAG_Bool(REGB0)) {
9533 /* ./syntax//typing.nit:1572 */
9534 if (!once_value_3) {
9535 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
9536 REGB0 = TAG_Int(43);
9537 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9538 once_value_3 = fra.me.REG[1];
9539 register_static_object(&once_value_3);
9540 } else fra.me.REG[1] = once_value_3;
9541 fra.me.REG[1] = fra.me.REG[1];
9542 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9543 } else {
9544 /* ./syntax//typing.nit:1574 */
9545 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9546 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
9547 }
9548 } else {
9549 /* ./syntax//typing.nit:1576 */
9550 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9551 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9552 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9553 if (UNTAG_Bool(REGB0)) {
9554 /* ./syntax//typing.nit:1577 */
9555 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9556 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
9557 }
9558 }
9559 label1: while(0);
9560 stack_frame_head = fra.me.prev;
9561 return;
9562 }
9563 void typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
9564 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9565 val_t REGB0;
9566 val_t REGB1;
9567 val_t tmp;
9568 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9569 fra.me.file = LOCATE_typing;
9570 fra.me.line = 1581;
9571 fra.me.meth = LOCATE_typing___ANeExpr___try_to_isa;
9572 fra.me.has_broke = 0;
9573 fra.me.REG_size = 5;
9574 fra.me.REG[0] = NIT_NULL;
9575 fra.me.REG[1] = NIT_NULL;
9576 fra.me.REG[2] = NIT_NULL;
9577 fra.me.REG[3] = NIT_NULL;
9578 fra.me.REG[4] = NIT_NULL;
9579 fra.me.REG[0] = p0;
9580 fra.me.REG[1] = p1;
9581 fra.me.REG[2] = p2;
9582 /* ./syntax//typing.nit:1583 */
9583 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
9584 /* ./syntax//typing.nit:1584 */
9585 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9586 if (UNTAG_Bool(REGB0)) {
9587 } else {
9588 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9589 if (UNTAG_Bool(REGB1)) {
9590 REGB1 = TAG_Bool(false);
9591 REGB0 = REGB1;
9592 } else {
9593 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9594 REGB0 = REGB1;
9595 }
9596 }
9597 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9598 if (UNTAG_Bool(REGB0)) {
9599 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9600 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
9601 } else {
9602 REGB1 = TAG_Bool(false);
9603 REGB0 = REGB1;
9604 }
9605 if (UNTAG_Bool(REGB0)) {
9606 /* ./syntax//typing.nit:1585 */
9607 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
9608 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9609 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
9610 fra.me.REG[2] = CALL_flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
9611 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
9612 /* ./syntax//typing.nit:1586 */
9613 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
9614 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
9615 fra.me.REG[1] = CALL_flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
9616 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
9617 }
9618 stack_frame_head = fra.me.prev;
9619 return;
9620 }
9621 val_t typing___ALtExpr___name(val_t p0){
9622 struct {struct stack_frame_t me;} fra;
9623 val_t REGB0;
9624 val_t tmp;
9625 static val_t once_value_1; /* Once value */
9626 static val_t once_value_2; /* Once value */
9627 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9628 fra.me.file = LOCATE_typing;
9629 fra.me.line = 1591;
9630 fra.me.meth = LOCATE_typing___ALtExpr___name;
9631 fra.me.has_broke = 0;
9632 fra.me.REG_size = 1;
9633 fra.me.REG[0] = NIT_NULL;
9634 fra.me.REG[0] = p0;
9635 /* ./syntax//typing.nit:1591 */
9636 if (!once_value_1) {
9637 if (!once_value_2) {
9638 fra.me.REG[0] = BOX_NativeString("<");
9639 REGB0 = TAG_Int(1);
9640 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9641 once_value_2 = fra.me.REG[0];
9642 register_static_object(&once_value_2);
9643 } else fra.me.REG[0] = once_value_2;
9644 fra.me.REG[0] = fra.me.REG[0];
9645 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9646 once_value_1 = fra.me.REG[0];
9647 register_static_object(&once_value_1);
9648 } else fra.me.REG[0] = once_value_1;
9649 fra.me.REG[0] = fra.me.REG[0];
9650 goto label3;
9651 label3: while(0);
9652 stack_frame_head = fra.me.prev;
9653 return fra.me.REG[0];
9654 }
9655 val_t typing___ALeExpr___name(val_t p0){
9656 struct {struct stack_frame_t me;} fra;
9657 val_t REGB0;
9658 val_t tmp;
9659 static val_t once_value_1; /* Once value */
9660 static val_t once_value_2; /* Once value */
9661 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9662 fra.me.file = LOCATE_typing;
9663 fra.me.line = 1594;
9664 fra.me.meth = LOCATE_typing___ALeExpr___name;
9665 fra.me.has_broke = 0;
9666 fra.me.REG_size = 1;
9667 fra.me.REG[0] = NIT_NULL;
9668 fra.me.REG[0] = p0;
9669 /* ./syntax//typing.nit:1594 */
9670 if (!once_value_1) {
9671 if (!once_value_2) {
9672 fra.me.REG[0] = BOX_NativeString("<=");
9673 REGB0 = TAG_Int(2);
9674 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9675 once_value_2 = fra.me.REG[0];
9676 register_static_object(&once_value_2);
9677 } else fra.me.REG[0] = once_value_2;
9678 fra.me.REG[0] = fra.me.REG[0];
9679 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9680 once_value_1 = fra.me.REG[0];
9681 register_static_object(&once_value_1);
9682 } else fra.me.REG[0] = once_value_1;
9683 fra.me.REG[0] = fra.me.REG[0];
9684 goto label3;
9685 label3: while(0);
9686 stack_frame_head = fra.me.prev;
9687 return fra.me.REG[0];
9688 }
9689 val_t typing___ALlExpr___name(val_t p0){
9690 struct {struct stack_frame_t me;} fra;
9691 val_t REGB0;
9692 val_t tmp;
9693 static val_t once_value_1; /* Once value */
9694 static val_t once_value_2; /* Once value */
9695 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9696 fra.me.file = LOCATE_typing;
9697 fra.me.line = 1597;
9698 fra.me.meth = LOCATE_typing___ALlExpr___name;
9699 fra.me.has_broke = 0;
9700 fra.me.REG_size = 1;
9701 fra.me.REG[0] = NIT_NULL;
9702 fra.me.REG[0] = p0;
9703 /* ./syntax//typing.nit:1597 */
9704 if (!once_value_1) {
9705 if (!once_value_2) {
9706 fra.me.REG[0] = BOX_NativeString("<<");
9707 REGB0 = TAG_Int(2);
9708 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9709 once_value_2 = fra.me.REG[0];
9710 register_static_object(&once_value_2);
9711 } else fra.me.REG[0] = once_value_2;
9712 fra.me.REG[0] = fra.me.REG[0];
9713 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9714 once_value_1 = fra.me.REG[0];
9715 register_static_object(&once_value_1);
9716 } else fra.me.REG[0] = once_value_1;
9717 fra.me.REG[0] = fra.me.REG[0];
9718 goto label3;
9719 label3: while(0);
9720 stack_frame_head = fra.me.prev;
9721 return fra.me.REG[0];
9722 }
9723 val_t typing___AGtExpr___name(val_t p0){
9724 struct {struct stack_frame_t me;} fra;
9725 val_t REGB0;
9726 val_t tmp;
9727 static val_t once_value_1; /* Once value */
9728 static val_t once_value_2; /* Once value */
9729 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9730 fra.me.file = LOCATE_typing;
9731 fra.me.line = 1600;
9732 fra.me.meth = LOCATE_typing___AGtExpr___name;
9733 fra.me.has_broke = 0;
9734 fra.me.REG_size = 1;
9735 fra.me.REG[0] = NIT_NULL;
9736 fra.me.REG[0] = p0;
9737 /* ./syntax//typing.nit:1600 */
9738 if (!once_value_1) {
9739 if (!once_value_2) {
9740 fra.me.REG[0] = BOX_NativeString(">");
9741 REGB0 = TAG_Int(1);
9742 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9743 once_value_2 = fra.me.REG[0];
9744 register_static_object(&once_value_2);
9745 } else fra.me.REG[0] = once_value_2;
9746 fra.me.REG[0] = fra.me.REG[0];
9747 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9748 once_value_1 = fra.me.REG[0];
9749 register_static_object(&once_value_1);
9750 } else fra.me.REG[0] = once_value_1;
9751 fra.me.REG[0] = fra.me.REG[0];
9752 goto label3;
9753 label3: while(0);
9754 stack_frame_head = fra.me.prev;
9755 return fra.me.REG[0];
9756 }
9757 val_t typing___AGeExpr___name(val_t p0){
9758 struct {struct stack_frame_t me;} fra;
9759 val_t REGB0;
9760 val_t tmp;
9761 static val_t once_value_1; /* Once value */
9762 static val_t once_value_2; /* Once value */
9763 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9764 fra.me.file = LOCATE_typing;
9765 fra.me.line = 1603;
9766 fra.me.meth = LOCATE_typing___AGeExpr___name;
9767 fra.me.has_broke = 0;
9768 fra.me.REG_size = 1;
9769 fra.me.REG[0] = NIT_NULL;
9770 fra.me.REG[0] = p0;
9771 /* ./syntax//typing.nit:1603 */
9772 if (!once_value_1) {
9773 if (!once_value_2) {
9774 fra.me.REG[0] = BOX_NativeString(">=");
9775 REGB0 = TAG_Int(2);
9776 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9777 once_value_2 = fra.me.REG[0];
9778 register_static_object(&once_value_2);
9779 } else fra.me.REG[0] = once_value_2;
9780 fra.me.REG[0] = fra.me.REG[0];
9781 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9782 once_value_1 = fra.me.REG[0];
9783 register_static_object(&once_value_1);
9784 } else fra.me.REG[0] = once_value_1;
9785 fra.me.REG[0] = fra.me.REG[0];
9786 goto label3;
9787 label3: while(0);
9788 stack_frame_head = fra.me.prev;
9789 return fra.me.REG[0];
9790 }
9791 val_t typing___AGgExpr___name(val_t p0){
9792 struct {struct stack_frame_t me;} fra;
9793 val_t REGB0;
9794 val_t tmp;
9795 static val_t once_value_1; /* Once value */
9796 static val_t once_value_2; /* Once value */
9797 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9798 fra.me.file = LOCATE_typing;
9799 fra.me.line = 1606;
9800 fra.me.meth = LOCATE_typing___AGgExpr___name;
9801 fra.me.has_broke = 0;
9802 fra.me.REG_size = 1;
9803 fra.me.REG[0] = NIT_NULL;
9804 fra.me.REG[0] = p0;
9805 /* ./syntax//typing.nit:1606 */
9806 if (!once_value_1) {
9807 if (!once_value_2) {
9808 fra.me.REG[0] = BOX_NativeString(">>");
9809 REGB0 = TAG_Int(2);
9810 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9811 once_value_2 = fra.me.REG[0];
9812 register_static_object(&once_value_2);
9813 } else fra.me.REG[0] = once_value_2;
9814 fra.me.REG[0] = fra.me.REG[0];
9815 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9816 once_value_1 = fra.me.REG[0];
9817 register_static_object(&once_value_1);
9818 } else fra.me.REG[0] = once_value_1;
9819 fra.me.REG[0] = fra.me.REG[0];
9820 goto label3;
9821 label3: while(0);
9822 stack_frame_head = fra.me.prev;
9823 return fra.me.REG[0];
9824 }
9825 val_t typing___APlusExpr___name(val_t p0){
9826 struct {struct stack_frame_t me;} fra;
9827 val_t REGB0;
9828 val_t tmp;
9829 static val_t once_value_1; /* Once value */
9830 static val_t once_value_2; /* Once value */
9831 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9832 fra.me.file = LOCATE_typing;
9833 fra.me.line = 1609;
9834 fra.me.meth = LOCATE_typing___APlusExpr___name;
9835 fra.me.has_broke = 0;
9836 fra.me.REG_size = 1;
9837 fra.me.REG[0] = NIT_NULL;
9838 fra.me.REG[0] = p0;
9839 /* ./syntax//typing.nit:1609 */
9840 if (!once_value_1) {
9841 if (!once_value_2) {
9842 fra.me.REG[0] = BOX_NativeString("+");
9843 REGB0 = TAG_Int(1);
9844 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9845 once_value_2 = fra.me.REG[0];
9846 register_static_object(&once_value_2);
9847 } else fra.me.REG[0] = once_value_2;
9848 fra.me.REG[0] = fra.me.REG[0];
9849 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9850 once_value_1 = fra.me.REG[0];
9851 register_static_object(&once_value_1);
9852 } else fra.me.REG[0] = once_value_1;
9853 fra.me.REG[0] = fra.me.REG[0];
9854 goto label3;
9855 label3: while(0);
9856 stack_frame_head = fra.me.prev;
9857 return fra.me.REG[0];
9858 }
9859 val_t typing___AMinusExpr___name(val_t p0){
9860 struct {struct stack_frame_t me;} fra;
9861 val_t REGB0;
9862 val_t tmp;
9863 static val_t once_value_1; /* Once value */
9864 static val_t once_value_2; /* Once value */
9865 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9866 fra.me.file = LOCATE_typing;
9867 fra.me.line = 1612;
9868 fra.me.meth = LOCATE_typing___AMinusExpr___name;
9869 fra.me.has_broke = 0;
9870 fra.me.REG_size = 1;
9871 fra.me.REG[0] = NIT_NULL;
9872 fra.me.REG[0] = p0;
9873 /* ./syntax//typing.nit:1612 */
9874 if (!once_value_1) {
9875 if (!once_value_2) {
9876 fra.me.REG[0] = BOX_NativeString("-");
9877 REGB0 = TAG_Int(1);
9878 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9879 once_value_2 = fra.me.REG[0];
9880 register_static_object(&once_value_2);
9881 } else fra.me.REG[0] = once_value_2;
9882 fra.me.REG[0] = fra.me.REG[0];
9883 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9884 once_value_1 = fra.me.REG[0];
9885 register_static_object(&once_value_1);
9886 } else fra.me.REG[0] = once_value_1;
9887 fra.me.REG[0] = fra.me.REG[0];
9888 goto label3;
9889 label3: while(0);
9890 stack_frame_head = fra.me.prev;
9891 return fra.me.REG[0];
9892 }
9893 val_t typing___AStarshipExpr___name(val_t p0){
9894 struct {struct stack_frame_t me;} fra;
9895 val_t REGB0;
9896 val_t tmp;
9897 static val_t once_value_1; /* Once value */
9898 static val_t once_value_2; /* Once value */
9899 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9900 fra.me.file = LOCATE_typing;
9901 fra.me.line = 1615;
9902 fra.me.meth = LOCATE_typing___AStarshipExpr___name;
9903 fra.me.has_broke = 0;
9904 fra.me.REG_size = 1;
9905 fra.me.REG[0] = NIT_NULL;
9906 fra.me.REG[0] = p0;
9907 /* ./syntax//typing.nit:1615 */
9908 if (!once_value_1) {
9909 if (!once_value_2) {
9910 fra.me.REG[0] = BOX_NativeString("<=>");
9911 REGB0 = TAG_Int(3);
9912 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9913 once_value_2 = fra.me.REG[0];
9914 register_static_object(&once_value_2);
9915 } else fra.me.REG[0] = once_value_2;
9916 fra.me.REG[0] = fra.me.REG[0];
9917 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9918 once_value_1 = fra.me.REG[0];
9919 register_static_object(&once_value_1);
9920 } else fra.me.REG[0] = once_value_1;
9921 fra.me.REG[0] = fra.me.REG[0];
9922 goto label3;
9923 label3: while(0);
9924 stack_frame_head = fra.me.prev;
9925 return fra.me.REG[0];
9926 }
9927 val_t typing___AStarExpr___name(val_t p0){
9928 struct {struct stack_frame_t me;} fra;
9929 val_t REGB0;
9930 val_t tmp;
9931 static val_t once_value_1; /* Once value */
9932 static val_t once_value_2; /* Once value */
9933 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9934 fra.me.file = LOCATE_typing;
9935 fra.me.line = 1618;
9936 fra.me.meth = LOCATE_typing___AStarExpr___name;
9937 fra.me.has_broke = 0;
9938 fra.me.REG_size = 1;
9939 fra.me.REG[0] = NIT_NULL;
9940 fra.me.REG[0] = p0;
9941 /* ./syntax//typing.nit:1618 */
9942 if (!once_value_1) {
9943 if (!once_value_2) {
9944 fra.me.REG[0] = BOX_NativeString("*");
9945 REGB0 = TAG_Int(1);
9946 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9947 once_value_2 = fra.me.REG[0];
9948 register_static_object(&once_value_2);
9949 } else fra.me.REG[0] = once_value_2;
9950 fra.me.REG[0] = fra.me.REG[0];
9951 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9952 once_value_1 = fra.me.REG[0];
9953 register_static_object(&once_value_1);
9954 } else fra.me.REG[0] = once_value_1;
9955 fra.me.REG[0] = fra.me.REG[0];
9956 goto label3;
9957 label3: while(0);
9958 stack_frame_head = fra.me.prev;
9959 return fra.me.REG[0];
9960 }
9961 val_t typing___ASlashExpr___name(val_t p0){
9962 struct {struct stack_frame_t me;} fra;
9963 val_t REGB0;
9964 val_t tmp;
9965 static val_t once_value_1; /* Once value */
9966 static val_t once_value_2; /* Once value */
9967 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9968 fra.me.file = LOCATE_typing;
9969 fra.me.line = 1621;
9970 fra.me.meth = LOCATE_typing___ASlashExpr___name;
9971 fra.me.has_broke = 0;
9972 fra.me.REG_size = 1;
9973 fra.me.REG[0] = NIT_NULL;
9974 fra.me.REG[0] = p0;
9975 /* ./syntax//typing.nit:1621 */
9976 if (!once_value_1) {
9977 if (!once_value_2) {
9978 fra.me.REG[0] = BOX_NativeString("/");
9979 REGB0 = TAG_Int(1);
9980 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9981 once_value_2 = fra.me.REG[0];
9982 register_static_object(&once_value_2);
9983 } else fra.me.REG[0] = once_value_2;
9984 fra.me.REG[0] = fra.me.REG[0];
9985 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9986 once_value_1 = fra.me.REG[0];
9987 register_static_object(&once_value_1);
9988 } else fra.me.REG[0] = once_value_1;
9989 fra.me.REG[0] = fra.me.REG[0];
9990 goto label3;
9991 label3: while(0);
9992 stack_frame_head = fra.me.prev;
9993 return fra.me.REG[0];
9994 }
9995 val_t typing___APercentExpr___name(val_t p0){
9996 struct {struct stack_frame_t me;} fra;
9997 val_t REGB0;
9998 val_t tmp;
9999 static val_t once_value_1; /* Once value */
10000 static val_t once_value_2; /* Once value */
10001 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10002 fra.me.file = LOCATE_typing;
10003 fra.me.line = 1624;
10004 fra.me.meth = LOCATE_typing___APercentExpr___name;
10005 fra.me.has_broke = 0;
10006 fra.me.REG_size = 1;
10007 fra.me.REG[0] = NIT_NULL;
10008 fra.me.REG[0] = p0;
10009 /* ./syntax//typing.nit:1624 */
10010 if (!once_value_1) {
10011 if (!once_value_2) {
10012 fra.me.REG[0] = BOX_NativeString("%");
10013 REGB0 = TAG_Int(1);
10014 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10015 once_value_2 = fra.me.REG[0];
10016 register_static_object(&once_value_2);
10017 } else fra.me.REG[0] = once_value_2;
10018 fra.me.REG[0] = fra.me.REG[0];
10019 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10020 once_value_1 = fra.me.REG[0];
10021 register_static_object(&once_value_1);
10022 } else fra.me.REG[0] = once_value_1;
10023 fra.me.REG[0] = fra.me.REG[0];
10024 goto label3;
10025 label3: while(0);
10026 stack_frame_head = fra.me.prev;
10027 return fra.me.REG[0];
10028 }
10029 val_t typing___AUminusExpr___name(val_t p0){
10030 struct {struct stack_frame_t me;} fra;
10031 val_t REGB0;
10032 val_t tmp;
10033 static val_t once_value_1; /* Once value */
10034 static val_t once_value_2; /* Once value */
10035 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10036 fra.me.file = LOCATE_typing;
10037 fra.me.line = 1628;
10038 fra.me.meth = LOCATE_typing___AUminusExpr___name;
10039 fra.me.has_broke = 0;
10040 fra.me.REG_size = 1;
10041 fra.me.REG[0] = NIT_NULL;
10042 fra.me.REG[0] = p0;
10043 /* ./syntax//typing.nit:1628 */
10044 if (!once_value_1) {
10045 if (!once_value_2) {
10046 fra.me.REG[0] = BOX_NativeString("unary -");
10047 REGB0 = TAG_Int(7);
10048 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10049 once_value_2 = fra.me.REG[0];
10050 register_static_object(&once_value_2);
10051 } else fra.me.REG[0] = once_value_2;
10052 fra.me.REG[0] = fra.me.REG[0];
10053 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10054 once_value_1 = fra.me.REG[0];
10055 register_static_object(&once_value_1);
10056 } else fra.me.REG[0] = once_value_1;
10057 fra.me.REG[0] = fra.me.REG[0];
10058 goto label3;
10059 label3: while(0);
10060 stack_frame_head = fra.me.prev;
10061 return fra.me.REG[0];
10062 }
10063 val_t typing___AUminusExpr___compute_raw_arguments(val_t p0){
10064 struct {struct stack_frame_t me;} fra;
10065 val_t tmp;
10066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10067 fra.me.file = LOCATE_typing;
10068 fra.me.line = 1629;
10069 fra.me.meth = LOCATE_typing___AUminusExpr___compute_raw_arguments;
10070 fra.me.has_broke = 0;
10071 fra.me.REG_size = 1;
10072 fra.me.REG[0] = NIT_NULL;
10073 fra.me.REG[0] = p0;
10074 /* ./syntax//typing.nit:1629 */
10075 fra.me.REG[0] = NIT_NULL;
10076 goto label1;
10077 label1: while(0);
10078 stack_frame_head = fra.me.prev;
10079 return fra.me.REG[0];
10080 }
10081 void typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
10082 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
10083 val_t REGB0;
10084 val_t REGB1;
10085 val_t tmp;
10086 static val_t once_value_1; /* Once value */
10087 static val_t once_value_2; /* Once value */
10088 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10089 fra.me.file = LOCATE_typing;
10090 fra.me.line = 1633;
10091 fra.me.meth = LOCATE_typing___ACallFormExpr___after_typing;
10092 fra.me.has_broke = 0;
10093 fra.me.REG_size = 9;
10094 fra.me.REG[0] = NIT_NULL;
10095 fra.me.REG[1] = NIT_NULL;
10096 fra.me.REG[2] = NIT_NULL;
10097 fra.me.REG[3] = NIT_NULL;
10098 fra.me.REG[4] = NIT_NULL;
10099 fra.me.REG[5] = NIT_NULL;
10100 fra.me.REG[6] = NIT_NULL;
10101 fra.me.REG[7] = NIT_NULL;
10102 fra.me.REG[8] = NIT_NULL;
10103 fra.me.REG[0] = p0;
10104 fra.me.REG[1] = p1;
10105 /* ./syntax//typing.nit:1633 */
10106 fra.me.REG[2] = fra.me.REG[0];
10107 fra.me.REG[3] = fra.me.REG[1];
10108 /* ./syntax//typing.nit:1635 */
10109 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10110 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10111 if (UNTAG_Bool(REGB0)) {
10112 /* ./syntax//typing.nit:1636 */
10113 fra.me.REG[4] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10114 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10115 /* ./syntax//typing.nit:1637 */
10116 fra.me.REG[5] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
10117 fra.me.REG[5] = CALL_scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10118 /* ./syntax//typing.nit:1638 */
10119 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10120 if (UNTAG_Bool(REGB0)) {
10121 } else {
10122 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10123 if (UNTAG_Bool(REGB1)) {
10124 REGB1 = TAG_Bool(false);
10125 REGB0 = REGB1;
10126 } else {
10127 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10128 REGB0 = REGB1;
10129 }
10130 }
10131 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10132 if (UNTAG_Bool(REGB0)) {
10133 /* ./syntax//typing.nit:1640 */
10134 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_ClosureVariable, ID_ClosureVariable)) /*cast ClosureVariable*/;
10135 if (UNTAG_Bool(REGB0)) {
10136 /* ./syntax//typing.nit:1641 */
10137 fra.me.REG[6] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10138 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10139 fra.me.REG[8] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10140 fra.me.REG[8] = NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
10141 /* ./syntax//typing.nit:1642 */
10142 ATTR_typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10143 } else {
10144 /* ./syntax//typing.nit:1644 */
10145 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10146 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
10147 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10148 if (UNTAG_Bool(REGB0)) {
10149 /* ./syntax//typing.nit:1645 */
10150 REGB0 = TAG_Int(3);
10151 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
10152 if (!once_value_1) {
10153 fra.me.REG[6] = BOX_NativeString("Error: ");
10154 REGB0 = TAG_Int(7);
10155 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
10156 once_value_1 = fra.me.REG[6];
10157 register_static_object(&once_value_1);
10158 } else fra.me.REG[6] = once_value_1;
10159 fra.me.REG[6] = fra.me.REG[6];
10160 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
10161 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10162 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10163 if (!once_value_2) {
10164 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
10165 REGB0 = TAG_Int(29);
10166 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
10167 once_value_2 = fra.me.REG[4];
10168 register_static_object(&once_value_2);
10169 } else fra.me.REG[4] = once_value_2;
10170 fra.me.REG[4] = fra.me.REG[4];
10171 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10172 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10173 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
10174 /* ./syntax//typing.nit:1646 */
10175 goto label3;
10176 }
10177 /* ./syntax//typing.nit:1648 */
10178 fra.me.REG[7] = CALL_typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
10179 fra.me.REG[8] = fra.me.REG[7];
10180 /* ./syntax//typing.nit:1649 */
10181 ATTR_typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10182 }
10183 /* ./syntax//typing.nit:1651 */
10184 CALL_parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
10185 /* ./syntax//typing.nit:1652 */
10186 CALL_typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
10187 /* ./syntax//typing.nit:1653 */
10188 goto label3;
10189 }
10190 }
10191 /* ./syntax//typing.nit:1657 */
10192 CALL_SUPER_typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10193 label3: while(0);
10194 stack_frame_head = fra.me.prev;
10195 return;
10196 }
10197 val_t typing___ACallFormExpr___closure_defs(val_t p0){
10198 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10199 val_t REGB0;
10200 val_t tmp;
10201 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10202 fra.me.file = LOCATE_typing;
10203 fra.me.line = 1660;
10204 fra.me.meth = LOCATE_typing___ACallFormExpr___closure_defs;
10205 fra.me.has_broke = 0;
10206 fra.me.REG_size = 2;
10207 fra.me.REG[0] = NIT_NULL;
10208 fra.me.REG[1] = NIT_NULL;
10209 fra.me.REG[0] = p0;
10210 /* ./syntax//typing.nit:1662 */
10211 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10212 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
10213 if (UNTAG_Bool(REGB0)) {
10214 /* ./syntax//typing.nit:1663 */
10215 fra.me.REG[1] = NIT_NULL;
10216 goto label1;
10217 } else {
10218 /* ./syntax//typing.nit:1665 */
10219 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10220 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10221 fra.me.REG[1] = fra.me.REG[0];
10222 goto label1;
10223 }
10224 label1: while(0);
10225 stack_frame_head = fra.me.prev;
10226 return fra.me.REG[1];
10227 }
10228 val_t typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
10229 struct {struct stack_frame_t me;} fra;
10230 val_t tmp;
10231 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10232 fra.me.file = LOCATE_typing;
10233 fra.me.line = 1669;
10234 fra.me.meth = LOCATE_typing___ACallFormExpr___variable_create;
10235 fra.me.has_broke = 0;
10236 fra.me.REG_size = 0;
10237 /* ./syntax//typing.nit:1669 */
10238 nit_abort("Deferred method called", NULL, LOCATE_typing, 1669);
10239 stack_frame_head = fra.me.prev;
10240 return NIT_NULL;
10241 }
10242 val_t typing___ACallExpr___variable_create(val_t p0, val_t p1){
10243 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10244 val_t tmp;
10245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10246 fra.me.file = LOCATE_typing;
10247 fra.me.line = 1674;
10248 fra.me.meth = LOCATE_typing___ACallExpr___variable_create;
10249 fra.me.has_broke = 0;
10250 fra.me.REG_size = 2;
10251 fra.me.REG[0] = NIT_NULL;
10252 fra.me.REG[1] = NIT_NULL;
10253 fra.me.REG[0] = p0;
10254 fra.me.REG[1] = p1;
10255 /* ./syntax//typing.nit:1676 */
10256 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10257 fra.me.REG[0] = NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
10258 goto label1;
10259 label1: while(0);
10260 stack_frame_head = fra.me.prev;
10261 return fra.me.REG[0];
10262 }
10263 val_t typing___ACallExpr___name(val_t p0){
10264 struct {struct stack_frame_t me;} fra;
10265 val_t tmp;
10266 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10267 fra.me.file = LOCATE_typing;
10268 fra.me.line = 1679;
10269 fra.me.meth = LOCATE_typing___ACallExpr___name;
10270 fra.me.has_broke = 0;
10271 fra.me.REG_size = 1;
10272 fra.me.REG[0] = NIT_NULL;
10273 fra.me.REG[0] = p0;
10274 /* ./syntax//typing.nit:1679 */
10275 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10276 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10277 goto label1;
10278 label1: while(0);
10279 stack_frame_head = fra.me.prev;
10280 return fra.me.REG[0];
10281 }
10282 val_t typing___ACallExpr___compute_raw_arguments(val_t p0){
10283 struct {struct stack_frame_t me;} fra;
10284 val_t tmp;
10285 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10286 fra.me.file = LOCATE_typing;
10287 fra.me.line = 1680;
10288 fra.me.meth = LOCATE_typing___ACallExpr___compute_raw_arguments;
10289 fra.me.has_broke = 0;
10290 fra.me.REG_size = 1;
10291 fra.me.REG[0] = NIT_NULL;
10292 fra.me.REG[0] = p0;
10293 /* ./syntax//typing.nit:1680 */
10294 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10295 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10296 goto label1;
10297 label1: while(0);
10298 stack_frame_head = fra.me.prev;
10299 return fra.me.REG[0];
10300 }
10301 val_t typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
10302 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
10303 val_t tmp;
10304 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10305 fra.me.file = LOCATE_typing;
10306 fra.me.line = 1684;
10307 fra.me.meth = LOCATE_typing___ACallAssignExpr___variable_create;
10308 fra.me.has_broke = 0;
10309 fra.me.REG_size = 3;
10310 fra.me.REG[0] = NIT_NULL;
10311 fra.me.REG[1] = NIT_NULL;
10312 fra.me.REG[2] = NIT_NULL;
10313 fra.me.REG[0] = p0;
10314 fra.me.REG[1] = p1;
10315 /* ./syntax//typing.nit:1686 */
10316 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10317 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
10318 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10319 fra.me.REG[0] = NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10320 goto label1;
10321 label1: while(0);
10322 stack_frame_head = fra.me.prev;
10323 return fra.me.REG[0];
10324 }
10325 val_t typing___ACallAssignExpr___name(val_t p0){
10326 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10327 val_t REGB0;
10328 val_t tmp;
10329 static val_t once_value_1; /* Once value */
10330 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10331 fra.me.file = LOCATE_typing;
10332 fra.me.line = 1689;
10333 fra.me.meth = LOCATE_typing___ACallAssignExpr___name;
10334 fra.me.has_broke = 0;
10335 fra.me.REG_size = 2;
10336 fra.me.REG[0] = NIT_NULL;
10337 fra.me.REG[1] = NIT_NULL;
10338 fra.me.REG[0] = p0;
10339 /* ./syntax//typing.nit:1689 */
10340 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10341 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
10342 if (!once_value_1) {
10343 fra.me.REG[1] = BOX_NativeString("=");
10344 REGB0 = TAG_Int(1);
10345 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
10346 once_value_1 = fra.me.REG[1];
10347 register_static_object(&once_value_1);
10348 } else fra.me.REG[1] = once_value_1;
10349 fra.me.REG[1] = fra.me.REG[1];
10350 fra.me.REG[1] = CALL_string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10351 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
10352 goto label2;
10353 label2: while(0);
10354 stack_frame_head = fra.me.prev;
10355 return fra.me.REG[1];
10356 }
10357 val_t typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
10358 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10359 val_t tmp;
10360 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10361 fra.me.file = LOCATE_typing;
10362 fra.me.line = 1690;
10363 fra.me.meth = LOCATE_typing___ACallAssignExpr___compute_raw_arguments;
10364 fra.me.has_broke = 0;
10365 fra.me.REG_size = 2;
10366 fra.me.REG[0] = NIT_NULL;
10367 fra.me.REG[1] = NIT_NULL;
10368 fra.me.REG[0] = p0;
10369 /* ./syntax//typing.nit:1691 */
10370 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10371 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
10372 /* ./syntax//typing.nit:1692 */
10373 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10374 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10375 /* ./syntax//typing.nit:1693 */
10376 goto label1;
10377 label1: while(0);
10378 stack_frame_head = fra.me.prev;
10379 return fra.me.REG[1];
10380 }
10381 val_t typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
10382 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
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 = 1698;
10387 fra.me.meth = LOCATE_typing___ACallReassignExpr___variable_create;
10388 fra.me.has_broke = 0;
10389 fra.me.REG_size = 3;
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[0] = p0;
10394 fra.me.REG[1] = p1;
10395 /* ./syntax//typing.nit:1700 */
10396 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10397 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
10398 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10399 fra.me.REG[0] = NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10400 goto label1;
10401 label1: while(0);
10402 stack_frame_head = fra.me.prev;
10403 return fra.me.REG[0];
10404 }
10405 val_t typing___ACallReassignExpr___name(val_t p0){
10406 struct {struct stack_frame_t me;} fra;
10407 val_t tmp;
10408 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10409 fra.me.file = LOCATE_typing;
10410 fra.me.line = 1703;
10411 fra.me.meth = LOCATE_typing___ACallReassignExpr___name;
10412 fra.me.has_broke = 0;
10413 fra.me.REG_size = 1;
10414 fra.me.REG[0] = NIT_NULL;
10415 fra.me.REG[0] = p0;
10416 /* ./syntax//typing.nit:1703 */
10417 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10418 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10419 goto label1;
10420 label1: while(0);
10421 stack_frame_head = fra.me.prev;
10422 return fra.me.REG[0];
10423 }
10424 val_t typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
10425 struct {struct stack_frame_t me;} fra;
10426 val_t tmp;
10427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10428 fra.me.file = LOCATE_typing;
10429 fra.me.line = 1704;
10430 fra.me.meth = LOCATE_typing___ACallReassignExpr___compute_raw_arguments;
10431 fra.me.has_broke = 0;
10432 fra.me.REG_size = 1;
10433 fra.me.REG[0] = NIT_NULL;
10434 fra.me.REG[0] = p0;
10435 /* ./syntax//typing.nit:1704 */
10436 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10437 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10438 goto label1;
10439 label1: while(0);
10440 stack_frame_head = fra.me.prev;
10441 return fra.me.REG[0];
10442 }
10443 val_t typing___ABraExpr___name(val_t p0){
10444 struct {struct stack_frame_t me;} fra;
10445 val_t REGB0;
10446 val_t tmp;
10447 static val_t once_value_1; /* Once value */
10448 static val_t once_value_2; /* Once value */
10449 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10450 fra.me.file = LOCATE_typing;
10451 fra.me.line = 1708;
10452 fra.me.meth = LOCATE_typing___ABraExpr___name;
10453 fra.me.has_broke = 0;
10454 fra.me.REG_size = 1;
10455 fra.me.REG[0] = NIT_NULL;
10456 fra.me.REG[0] = p0;
10457 /* ./syntax//typing.nit:1708 */
10458 if (!once_value_1) {
10459 if (!once_value_2) {
10460 fra.me.REG[0] = BOX_NativeString("[]");
10461 REGB0 = TAG_Int(2);
10462 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10463 once_value_2 = fra.me.REG[0];
10464 register_static_object(&once_value_2);
10465 } else fra.me.REG[0] = once_value_2;
10466 fra.me.REG[0] = fra.me.REG[0];
10467 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10468 once_value_1 = fra.me.REG[0];
10469 register_static_object(&once_value_1);
10470 } else fra.me.REG[0] = once_value_1;
10471 fra.me.REG[0] = fra.me.REG[0];
10472 goto label3;
10473 label3: while(0);
10474 stack_frame_head = fra.me.prev;
10475 return fra.me.REG[0];
10476 }
10477 val_t typing___ABraExpr___compute_raw_arguments(val_t p0){
10478 struct {struct stack_frame_t me;} fra;
10479 val_t tmp;
10480 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10481 fra.me.file = LOCATE_typing;
10482 fra.me.line = 1709;
10483 fra.me.meth = LOCATE_typing___ABraExpr___compute_raw_arguments;
10484 fra.me.has_broke = 0;
10485 fra.me.REG_size = 1;
10486 fra.me.REG[0] = NIT_NULL;
10487 fra.me.REG[0] = p0;
10488 /* ./syntax//typing.nit:1709 */
10489 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10490 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10491 goto label1;
10492 label1: while(0);
10493 stack_frame_head = fra.me.prev;
10494 return fra.me.REG[0];
10495 }
10496 val_t typing___ABraExpr___closure_defs(val_t p0){
10497 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10498 val_t REGB0;
10499 val_t tmp;
10500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10501 fra.me.file = LOCATE_typing;
10502 fra.me.line = 1710;
10503 fra.me.meth = LOCATE_typing___ABraExpr___closure_defs;
10504 fra.me.has_broke = 0;
10505 fra.me.REG_size = 2;
10506 fra.me.REG[0] = NIT_NULL;
10507 fra.me.REG[1] = NIT_NULL;
10508 fra.me.REG[0] = p0;
10509 /* ./syntax//typing.nit:1712 */
10510 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10511 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
10512 if (UNTAG_Bool(REGB0)) {
10513 /* ./syntax//typing.nit:1713 */
10514 fra.me.REG[1] = NIT_NULL;
10515 goto label1;
10516 } else {
10517 /* ./syntax//typing.nit:1715 */
10518 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10519 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10520 fra.me.REG[1] = fra.me.REG[0];
10521 goto label1;
10522 }
10523 label1: while(0);
10524 stack_frame_head = fra.me.prev;
10525 return fra.me.REG[1];
10526 }
10527 val_t typing___ABraAssignExpr___name(val_t p0){
10528 struct {struct stack_frame_t me;} fra;
10529 val_t REGB0;
10530 val_t tmp;
10531 static val_t once_value_1; /* Once value */
10532 static val_t once_value_2; /* Once value */
10533 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10534 fra.me.file = LOCATE_typing;
10535 fra.me.line = 1721;
10536 fra.me.meth = LOCATE_typing___ABraAssignExpr___name;
10537 fra.me.has_broke = 0;
10538 fra.me.REG_size = 1;
10539 fra.me.REG[0] = NIT_NULL;
10540 fra.me.REG[0] = p0;
10541 /* ./syntax//typing.nit:1721 */
10542 if (!once_value_1) {
10543 if (!once_value_2) {
10544 fra.me.REG[0] = BOX_NativeString("[]=");
10545 REGB0 = TAG_Int(3);
10546 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10547 once_value_2 = fra.me.REG[0];
10548 register_static_object(&once_value_2);
10549 } else fra.me.REG[0] = once_value_2;
10550 fra.me.REG[0] = fra.me.REG[0];
10551 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10552 once_value_1 = fra.me.REG[0];
10553 register_static_object(&once_value_1);
10554 } else fra.me.REG[0] = once_value_1;
10555 fra.me.REG[0] = fra.me.REG[0];
10556 goto label3;
10557 label3: while(0);
10558 stack_frame_head = fra.me.prev;
10559 return fra.me.REG[0];
10560 }
10561 val_t typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
10562 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10563 val_t tmp;
10564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10565 fra.me.file = LOCATE_typing;
10566 fra.me.line = 1722;
10567 fra.me.meth = LOCATE_typing___ABraAssignExpr___compute_raw_arguments;
10568 fra.me.has_broke = 0;
10569 fra.me.REG_size = 2;
10570 fra.me.REG[0] = NIT_NULL;
10571 fra.me.REG[1] = NIT_NULL;
10572 fra.me.REG[0] = p0;
10573 /* ./syntax//typing.nit:1723 */
10574 fra.me.REG[1] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10575 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
10576 /* ./syntax//typing.nit:1724 */
10577 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10578 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10579 /* ./syntax//typing.nit:1725 */
10580 goto label1;
10581 label1: while(0);
10582 stack_frame_head = fra.me.prev;
10583 return fra.me.REG[1];
10584 }
10585 val_t typing___ABraReassignExpr___name(val_t p0){
10586 struct {struct stack_frame_t me;} fra;
10587 val_t REGB0;
10588 val_t tmp;
10589 static val_t once_value_1; /* Once value */
10590 static val_t once_value_2; /* Once value */
10591 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10592 fra.me.file = LOCATE_typing;
10593 fra.me.line = 1730;
10594 fra.me.meth = LOCATE_typing___ABraReassignExpr___name;
10595 fra.me.has_broke = 0;
10596 fra.me.REG_size = 1;
10597 fra.me.REG[0] = NIT_NULL;
10598 fra.me.REG[0] = p0;
10599 /* ./syntax//typing.nit:1730 */
10600 if (!once_value_1) {
10601 if (!once_value_2) {
10602 fra.me.REG[0] = BOX_NativeString("[]");
10603 REGB0 = TAG_Int(2);
10604 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10605 once_value_2 = fra.me.REG[0];
10606 register_static_object(&once_value_2);
10607 } else fra.me.REG[0] = once_value_2;
10608 fra.me.REG[0] = fra.me.REG[0];
10609 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10610 once_value_1 = fra.me.REG[0];
10611 register_static_object(&once_value_1);
10612 } else fra.me.REG[0] = once_value_1;
10613 fra.me.REG[0] = fra.me.REG[0];
10614 goto label3;
10615 label3: while(0);
10616 stack_frame_head = fra.me.prev;
10617 return fra.me.REG[0];
10618 }
10619 val_t typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
10620 struct {struct stack_frame_t me;} fra;
10621 val_t tmp;
10622 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10623 fra.me.file = LOCATE_typing;
10624 fra.me.line = 1731;
10625 fra.me.meth = LOCATE_typing___ABraReassignExpr___compute_raw_arguments;
10626 fra.me.has_broke = 0;
10627 fra.me.REG_size = 1;
10628 fra.me.REG[0] = NIT_NULL;
10629 fra.me.REG[0] = p0;
10630 /* ./syntax//typing.nit:1731 */
10631 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10632 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10633 goto label1;
10634 label1: while(0);
10635 stack_frame_head = fra.me.prev;
10636 return fra.me.REG[0];
10637 }
10638 val_t typing___AInitExpr___name(val_t p0){
10639 struct {struct stack_frame_t me;} fra;
10640 val_t REGB0;
10641 val_t tmp;
10642 static val_t once_value_1; /* Once value */
10643 static val_t once_value_2; /* Once value */
10644 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10645 fra.me.file = LOCATE_typing;
10646 fra.me.line = 1735;
10647 fra.me.meth = LOCATE_typing___AInitExpr___name;
10648 fra.me.has_broke = 0;
10649 fra.me.REG_size = 1;
10650 fra.me.REG[0] = NIT_NULL;
10651 fra.me.REG[0] = p0;
10652 /* ./syntax//typing.nit:1735 */
10653 if (!once_value_1) {
10654 if (!once_value_2) {
10655 fra.me.REG[0] = BOX_NativeString("init");
10656 REGB0 = TAG_Int(4);
10657 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10658 once_value_2 = fra.me.REG[0];
10659 register_static_object(&once_value_2);
10660 } else fra.me.REG[0] = once_value_2;
10661 fra.me.REG[0] = fra.me.REG[0];
10662 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10663 once_value_1 = fra.me.REG[0];
10664 register_static_object(&once_value_1);
10665 } else fra.me.REG[0] = once_value_1;
10666 fra.me.REG[0] = fra.me.REG[0];
10667 goto label3;
10668 label3: while(0);
10669 stack_frame_head = fra.me.prev;
10670 return fra.me.REG[0];
10671 }
10672 val_t typing___AInitExpr___compute_raw_arguments(val_t p0){
10673 struct {struct stack_frame_t me;} fra;
10674 val_t tmp;
10675 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10676 fra.me.file = LOCATE_typing;
10677 fra.me.line = 1736;
10678 fra.me.meth = LOCATE_typing___AInitExpr___compute_raw_arguments;
10679 fra.me.has_broke = 0;
10680 fra.me.REG_size = 1;
10681 fra.me.REG[0] = NIT_NULL;
10682 fra.me.REG[0] = p0;
10683 /* ./syntax//typing.nit:1736 */
10684 fra.me.REG[0] = CALL_parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10685 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10686 goto label1;
10687 label1: while(0);
10688 stack_frame_head = fra.me.prev;
10689 return fra.me.REG[0];
10690 }
10691 val_t typing___AClosureCallExpr___variable(val_t p0){
10692 struct {struct stack_frame_t me;} fra;
10693 val_t REGB0;
10694 val_t tmp;
10695 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10696 fra.me.file = LOCATE_typing;
10697 fra.me.line = 1741;
10698 fra.me.meth = LOCATE_typing___AClosureCallExpr___variable;
10699 fra.me.has_broke = 0;
10700 fra.me.REG_size = 1;
10701 fra.me.REG[0] = NIT_NULL;
10702 fra.me.REG[0] = p0;
10703 /* ./syntax//typing.nit:1741 */
10704 fra.me.REG[0] = ATTR_typing___AClosureCallExpr____variable(fra.me.REG[0]);
10705 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
10706 if (UNTAG_Bool(REGB0)) {
10707 } else {
10708 nit_abort("Cast failed", NULL, LOCATE_typing, 1741);
10709 }
10710 goto label1;
10711 label1: while(0);
10712 stack_frame_head = fra.me.prev;
10713 return fra.me.REG[0];
10714 }
10715 val_t typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
10716 struct {struct stack_frame_t me;} fra;
10717 val_t tmp;
10718 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10719 fra.me.file = LOCATE_typing;
10720 fra.me.line = 1742;
10721 fra.me.meth = LOCATE_typing___AClosureCallExpr___compute_raw_arguments;
10722 fra.me.has_broke = 0;
10723 fra.me.REG_size = 1;
10724 fra.me.REG[0] = NIT_NULL;
10725 fra.me.REG[0] = p0;
10726 /* ./syntax//typing.nit:1742 */
10727 fra.me.REG[0] = CALL_parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10728 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10729 goto label1;
10730 label1: while(0);
10731 stack_frame_head = fra.me.prev;
10732 return fra.me.REG[0];
10733 }
10734 void typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
10735 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10736 val_t REGB0;
10737 val_t REGB1;
10738 val_t tmp;
10739 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10740 fra.me.file = LOCATE_typing;
10741 fra.me.line = 1744;
10742 fra.me.meth = LOCATE_typing___AClosureCallExpr___after_typing;
10743 fra.me.has_broke = 0;
10744 fra.me.REG_size = 5;
10745 fra.me.REG[0] = NIT_NULL;
10746 fra.me.REG[1] = NIT_NULL;
10747 fra.me.REG[2] = NIT_NULL;
10748 fra.me.REG[3] = NIT_NULL;
10749 fra.me.REG[4] = NIT_NULL;
10750 fra.me.REG[0] = p0;
10751 fra.me.REG[1] = p1;
10752 /* ./syntax//typing.nit:1746 */
10753 fra.me.REG[2] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
10754 /* ./syntax//typing.nit:1747 */
10755 fra.me.REG[3] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
10756 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
10757 if (UNTAG_Bool(REGB0)) {
10758 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10759 }
10760 /* ./syntax//typing.nit:1748 */
10761 fra.me.REG[2] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
10762 fra.me.REG[2] = CALL_static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
10763 /* ./syntax//typing.nit:1749 */
10764 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10765 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10766 fra.me.REG[4] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10767 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]);
10768 /* ./syntax//typing.nit:1750 */
10769 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10770 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
10771 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10772 if (UNTAG_Bool(REGB1)) {
10773 /* ./syntax//typing.nit:1751 */
10774 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10775 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10776 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10777 fra.me.REG[3] = CALL_array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10778 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]);
10779 }
10780 /* ./syntax//typing.nit:1753 */
10781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10782 if (UNTAG_Bool(REGB0)) {
10783 goto label1;
10784 }
10785 /* ./syntax//typing.nit:1754 */
10786 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
10787 /* ./syntax//typing.nit:1755 */
10788 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
10789 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10790 /* ./syntax//typing.nit:1756 */
10791 REGB0 = TAG_Bool(true);
10792 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10793 label1: while(0);
10794 stack_frame_head = fra.me.prev;
10795 return;
10796 }
10797 val_t typing___AClosureId___to_symbol(val_t p0){
10798 struct {struct stack_frame_t me;} fra;
10799 val_t tmp;
10800 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10801 fra.me.file = LOCATE_typing;
10802 fra.me.line = 1761;
10803 fra.me.meth = LOCATE_typing___AClosureId___to_symbol;
10804 fra.me.has_broke = 0;
10805 fra.me.REG_size = 0;
10806 /* ./syntax//typing.nit:1761 */
10807 nit_abort("Deferred method called", NULL, LOCATE_typing, 1761);
10808 stack_frame_head = fra.me.prev;
10809 return NIT_NULL;
10810 }
10811 val_t typing___ASimpleClosureId___to_symbol(val_t p0){
10812 struct {struct stack_frame_t me;} fra;
10813 val_t tmp;
10814 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10815 fra.me.file = LOCATE_typing;
10816 fra.me.line = 1764;
10817 fra.me.meth = LOCATE_typing___ASimpleClosureId___to_symbol;
10818 fra.me.has_broke = 0;
10819 fra.me.REG_size = 1;
10820 fra.me.REG[0] = NIT_NULL;
10821 fra.me.REG[0] = p0;
10822 /* ./syntax//typing.nit:1764 */
10823 fra.me.REG[0] = CALL_parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
10824 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10825 goto label1;
10826 label1: while(0);
10827 stack_frame_head = fra.me.prev;
10828 return fra.me.REG[0];
10829 }
10830 val_t typing___ABreakClosureId___to_symbol(val_t p0){
10831 struct {struct stack_frame_t me;} fra;
10832 val_t tmp;
10833 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10834 fra.me.file = LOCATE_typing;
10835 fra.me.line = 1767;
10836 fra.me.meth = LOCATE_typing___ABreakClosureId___to_symbol;
10837 fra.me.has_broke = 0;
10838 fra.me.REG_size = 1;
10839 fra.me.REG[0] = NIT_NULL;
10840 fra.me.REG[0] = p0;
10841 /* ./syntax//typing.nit:1767 */
10842 fra.me.REG[0] = CALL_parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
10843 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10844 goto label1;
10845 label1: while(0);
10846 stack_frame_head = fra.me.prev;
10847 return fra.me.REG[0];
10848 }
10849 val_t typing___AClosureDef___closure(val_t p0){
10850 struct {struct stack_frame_t me;} fra;
10851 val_t REGB0;
10852 val_t tmp;
10853 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10854 fra.me.file = LOCATE_typing;
10855 fra.me.line = 1772;
10856 fra.me.meth = LOCATE_typing___AClosureDef___closure;
10857 fra.me.has_broke = 0;
10858 fra.me.REG_size = 1;
10859 fra.me.REG[0] = NIT_NULL;
10860 fra.me.REG[0] = p0;
10861 /* ./syntax//typing.nit:1772 */
10862 fra.me.REG[0] = ATTR_typing___AClosureDef____closure(fra.me.REG[0]);
10863 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
10864 if (UNTAG_Bool(REGB0)) {
10865 } else {
10866 nit_abort("Cast failed", NULL, LOCATE_typing, 1772);
10867 }
10868 goto label1;
10869 label1: while(0);
10870 stack_frame_head = fra.me.prev;
10871 return fra.me.REG[0];
10872 }
10873 val_t typing___AClosureDef___escapable(val_t p0){
10874 struct {struct stack_frame_t me;} fra;
10875 val_t tmp;
10876 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10877 fra.me.file = LOCATE_typing;
10878 fra.me.line = 1774;
10879 fra.me.meth = LOCATE_typing___AClosureDef___escapable;
10880 fra.me.has_broke = 0;
10881 fra.me.REG_size = 1;
10882 fra.me.REG[0] = NIT_NULL;
10883 fra.me.REG[0] = p0;
10884 /* ./syntax//typing.nit:1774 */
10885 fra.me.REG[0] = ATTR_typing___AClosureDef____escapable(fra.me.REG[0]);
10886 stack_frame_head = fra.me.prev;
10887 return fra.me.REG[0];
10888 }
10889 void typing___AClosureDef___accept_typing(val_t p0, val_t p1){
10890 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
10891 val_t REGB0;
10892 val_t tmp;
10893 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10894 fra.me.file = LOCATE_typing;
10895 fra.me.line = 1778;
10896 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing;
10897 fra.me.has_broke = 0;
10898 fra.me.REG_size = 3;
10899 fra.me.REG[0] = NIT_NULL;
10900 fra.me.REG[1] = NIT_NULL;
10901 fra.me.REG[2] = NIT_NULL;
10902 fra.me.REG[0] = p0;
10903 fra.me.REG[1] = p1;
10904 /* ./syntax//typing.nit:1778 */
10905 fra.me.REG[2] = fra.me.REG[0];
10906 /* ./syntax//typing.nit:1781 */
10907 REGB0 = TAG_Bool(ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
10908 if (UNTAG_Bool(REGB0)) {
10909 } else {
10910 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_typing, 1781);
10911 }
10912 REGB0 = ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2]);
10913 if (UNTAG_Bool(REGB0)) {
10914 CALL_SUPER_typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10915 }
10916 stack_frame_head = fra.me.prev;
10917 return;
10918 }
10919 void typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
10920 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
10921 val_t REGB0;
10922 val_t REGB1;
10923 val_t REGB2;
10924 val_t REGB3;
10925 val_t tmp;
10926 static val_t once_value_1; /* Once value */
10927 static val_t once_value_2; /* Once value */
10928 static val_t once_value_3; /* Once value */
10929 static val_t once_value_6; /* Once value */
10930 static val_t once_value_7; /* Once value */
10931 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10932 fra.me.file = LOCATE_typing;
10933 fra.me.line = 1784;
10934 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing2;
10935 fra.me.has_broke = 0;
10936 fra.me.REG_size = 8;
10937 fra.me.REG[0] = NIT_NULL;
10938 fra.me.REG[1] = NIT_NULL;
10939 fra.me.REG[2] = NIT_NULL;
10940 fra.me.REG[3] = NIT_NULL;
10941 fra.me.REG[4] = NIT_NULL;
10942 fra.me.REG[5] = NIT_NULL;
10943 fra.me.REG[6] = NIT_NULL;
10944 fra.me.REG[7] = NIT_NULL;
10945 fra.me.REG[0] = p0;
10946 fra.me.REG[1] = p1;
10947 fra.me.REG[2] = p2;
10948 /* ./syntax//typing.nit:1786 */
10949 ATTR_typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
10950 /* ./syntax//typing.nit:1788 */
10951 fra.me.REG[3] = CALL_scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
10952 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
10953 /* ./syntax//typing.nit:1789 */
10954 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
10955 fra.me.REG[4] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10956 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
10957 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
10958 if (UNTAG_Bool(REGB2)) {
10959 } else {
10960 /* ./../lib/standard//kernel.nit:207 */
10961 REGB1 = TAG_Bool((REGB0)==(REGB1));
10962 /* ./syntax//typing.nit:1789 */
10963 REGB2 = REGB1;
10964 }
10965 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
10966 if (UNTAG_Bool(REGB2)) {
10967 /* ./syntax//typing.nit:1790 */
10968 REGB2 = TAG_Int(5);
10969 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
10970 if (!once_value_1) {
10971 fra.me.REG[5] = BOX_NativeString("Error: ");
10972 REGB2 = TAG_Int(7);
10973 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10974 once_value_1 = fra.me.REG[5];
10975 register_static_object(&once_value_1);
10976 } else fra.me.REG[5] = once_value_1;
10977 fra.me.REG[5] = fra.me.REG[5];
10978 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10979 REGB2 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
10980 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
10981 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10982 if (!once_value_2) {
10983 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
10984 REGB2 = TAG_Int(36);
10985 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10986 once_value_2 = fra.me.REG[5];
10987 register_static_object(&once_value_2);
10988 } else fra.me.REG[5] = once_value_2;
10989 fra.me.REG[5] = fra.me.REG[5];
10990 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10991 fra.me.REG[5] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
10992 REGB2 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
10993 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
10994 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10995 if (!once_value_3) {
10996 fra.me.REG[5] = BOX_NativeString(" found.");
10997 REGB2 = TAG_Int(7);
10998 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
10999 once_value_3 = fra.me.REG[5];
11000 register_static_object(&once_value_3);
11001 } else fra.me.REG[5] = once_value_3;
11002 fra.me.REG[5] = fra.me.REG[5];
11003 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11004 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11005 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11006 /* ./syntax//typing.nit:1791 */
11007 goto label4;
11008 }
11009 /* ./syntax//typing.nit:1794 */
11010 fra.me.REG[4] = CALL_scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
11011 ATTR_typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
11012 /* ./syntax//typing.nit:1796 */
11013 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11014 CALL_scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
11015 /* ./syntax//typing.nit:1797 */
11016 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11017 /* ./syntax//typing.nit:1798 */
11018 fra.me.REG[5] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11019 /* ./syntax//typing.nit:1799 */
11020 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11021 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
11022 /* ./syntax//typing.nit:1800 */
11023 fra.me.REG[6] = NEW_Array_array___Array___init();
11024 CALL_syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
11025 /* ./syntax//typing.nit:1801 */
11026 REGB2 = TAG_Int(0);
11027 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11028 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
11029 /* ./../lib/standard//kernel.nit:332 */
11030 while(1) {
11031 /* ./../lib/standard//kernel.nit:212 */
11032 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
11033 /* ./../lib/standard//kernel.nit:332 */
11034 if (UNTAG_Bool(REGB0)) {
11035 /* ./syntax//typing.nit:1801 */
11036 REGB0 = REGB2;
11037 /* ./syntax//typing.nit:1802 */
11038 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11039 fra.me.REG[6] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
11040 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11041 if (UNTAG_Bool(REGB3)) {
11042 nit_abort("Reciever is null", NULL, LOCATE_typing, 1802);
11043 }
11044 fra.me.REG[6] = CALL_syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
11045 fra.me.REG[7] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11046 fra.me.REG[7] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
11047 fra.me.REG[7] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
11048 /* ./syntax//typing.nit:1803 */
11049 fra.me.REG[6] = CALL_syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
11050 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11051 if (UNTAG_Bool(REGB3)) {
11052 nit_abort("Reciever is null", NULL, LOCATE_typing, 1803);
11053 }
11054 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11055 /* ./syntax//typing.nit:1804 */
11056 fra.me.REG[6] = CALL_static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
11057 CALL_syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11058 /* ./syntax//typing.nit:1805 */
11059 fra.me.REG[6] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11060 CALL_scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11061 /* ./../lib/standard//kernel.nit:334 */
11062 REGB0 = TAG_Int(1);
11063 /* ./../lib/standard//kernel.nit:215 */
11064 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
11065 /* ./../lib/standard//kernel.nit:334 */
11066 REGB2 = REGB0;
11067 } else {
11068 /* ./../lib/standard//kernel.nit:332 */
11069 goto label5;
11070 }
11071 }
11072 label5: while(0);
11073 /* ./syntax//typing.nit:1808 */
11074 REGB2 = TAG_Bool(true);
11075 ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
11076 /* ./syntax//typing.nit:1809 */
11077 CALL_typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11078 /* ./syntax//typing.nit:1811 */
11079 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11080 REGB2 = CALL_flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
11081 REGB1 = TAG_Bool(false);
11082 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
11083 if (UNTAG_Bool(REGB0)) {
11084 } else {
11085 /* ./../lib/standard//kernel.nit:175 */
11086 REGB1 = TAG_Bool((REGB2)==(REGB1));
11087 /* ./syntax//typing.nit:1811 */
11088 REGB0 = REGB1;
11089 }
11090 if (UNTAG_Bool(REGB0)) {
11091 /* ./syntax//typing.nit:1812 */
11092 fra.me.REG[3] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11093 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
11094 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
11095 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11096 if (UNTAG_Bool(REGB0)) {
11097 } else {
11098 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11099 if (UNTAG_Bool(REGB1)) {
11100 REGB1 = TAG_Bool(false);
11101 REGB0 = REGB1;
11102 } else {
11103 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11104 REGB0 = REGB1;
11105 }
11106 }
11107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11108 if (UNTAG_Bool(REGB0)) {
11109 /* ./syntax//typing.nit:1813 */
11110 if (!once_value_6) {
11111 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
11112 REGB0 = TAG_Int(77);
11113 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
11114 once_value_6 = fra.me.REG[3];
11115 register_static_object(&once_value_6);
11116 } else fra.me.REG[3] = once_value_6;
11117 fra.me.REG[3] = fra.me.REG[3];
11118 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
11119 } else {
11120 /* ./syntax//typing.nit:1814 */
11121 fra.me.REG[3] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11122 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11123 if (UNTAG_Bool(REGB0)) {
11124 fra.me.REG[2] = CALL_scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
11125 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11126 if (UNTAG_Bool(REGB0)) {
11127 } else {
11128 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11129 if (UNTAG_Bool(REGB1)) {
11130 REGB1 = TAG_Bool(false);
11131 REGB0 = REGB1;
11132 } else {
11133 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
11134 REGB0 = REGB1;
11135 }
11136 }
11137 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11138 } else {
11139 REGB1 = TAG_Bool(false);
11140 REGB0 = REGB1;
11141 }
11142 if (UNTAG_Bool(REGB0)) {
11143 /* ./syntax//typing.nit:1815 */
11144 if (!once_value_7) {
11145 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
11146 REGB0 = TAG_Int(80);
11147 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
11148 once_value_7 = fra.me.REG[2];
11149 register_static_object(&once_value_7);
11150 } else fra.me.REG[2] = once_value_7;
11151 fra.me.REG[2] = fra.me.REG[2];
11152 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
11153 }
11154 }
11155 }
11156 /* ./syntax//typing.nit:1818 */
11157 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
11158 /* ./syntax//typing.nit:1819 */
11159 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
11160 /* ./syntax//typing.nit:1820 */
11161 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11162 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
11163 label4: while(0);
11164 stack_frame_head = fra.me.prev;
11165 return;
11166 }
11167 void typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
11168 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
11169 val_t REGB0;
11170 val_t REGB1;
11171 val_t tmp;
11172 static val_t once_value_2; /* Once value */
11173 static val_t once_value_3; /* Once value */
11174 static val_t once_value_4; /* Once value */
11175 static val_t once_value_5; /* Once value */
11176 static val_t once_value_6; /* Once value */
11177 static val_t once_value_7; /* Once value */
11178 static val_t once_value_8; /* Once value */
11179 static val_t once_value_9; /* Once value */
11180 static val_t once_value_10; /* Once value */
11181 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11182 fra.me.file = LOCATE_typing;
11183 fra.me.line = 1826;
11184 fra.me.meth = LOCATE_typing___ATypeCheckExpr___check_expr_cast;
11185 fra.me.has_broke = 0;
11186 fra.me.REG_size = 6;
11187 fra.me.REG[0] = NIT_NULL;
11188 fra.me.REG[1] = NIT_NULL;
11189 fra.me.REG[2] = NIT_NULL;
11190 fra.me.REG[3] = NIT_NULL;
11191 fra.me.REG[4] = NIT_NULL;
11192 fra.me.REG[5] = NIT_NULL;
11193 fra.me.REG[0] = p0;
11194 fra.me.REG[1] = p1;
11195 fra.me.REG[2] = p2;
11196 fra.me.REG[3] = p3;
11197 /* ./syntax//typing.nit:1828 */
11198 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
11199 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11200 if (UNTAG_Bool(REGB0)) {
11201 goto label1;
11202 }
11203 /* ./syntax//typing.nit:1829 */
11204 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
11205 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11206 if (UNTAG_Bool(REGB0)) {
11207 goto label1;
11208 }
11209 /* ./syntax//typing.nit:1830 */
11210 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11211 /* ./syntax//typing.nit:1831 */
11212 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
11213 /* ./syntax//typing.nit:1832 */
11214 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
11215 if (UNTAG_Bool(REGB0)) {
11216 } else {
11217 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11218 REGB0 = REGB1;
11219 }
11220 if (UNTAG_Bool(REGB0)) {
11221 /* ./syntax//typing.nit:1833 */
11222 REGB0 = TAG_Int(3);
11223 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11224 if (!once_value_2) {
11225 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11226 REGB0 = TAG_Int(33);
11227 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11228 once_value_2 = fra.me.REG[5];
11229 register_static_object(&once_value_2);
11230 } else fra.me.REG[5] = once_value_2;
11231 fra.me.REG[5] = fra.me.REG[5];
11232 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11233 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11234 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11235 if (!once_value_3) {
11236 fra.me.REG[5] = BOX_NativeString(".");
11237 REGB0 = TAG_Int(1);
11238 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11239 once_value_3 = fra.me.REG[5];
11240 register_static_object(&once_value_3);
11241 } else fra.me.REG[5] = once_value_3;
11242 fra.me.REG[5] = fra.me.REG[5];
11243 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11244 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11245 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11246 } else {
11247 /* ./syntax//typing.nit:1834 */
11248 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11249 if (UNTAG_Bool(REGB0)) {
11250 /* ./syntax//typing.nit:1835 */
11251 REGB0 = TAG_Int(5);
11252 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11253 if (!once_value_4) {
11254 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11255 REGB0 = TAG_Int(33);
11256 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11257 once_value_4 = fra.me.REG[5];
11258 register_static_object(&once_value_4);
11259 } else fra.me.REG[5] = once_value_4;
11260 fra.me.REG[5] = fra.me.REG[5];
11261 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11262 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11263 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11264 if (!once_value_5) {
11265 fra.me.REG[5] = BOX_NativeString(" since it is a ");
11266 REGB0 = TAG_Int(15);
11267 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11268 once_value_5 = fra.me.REG[5];
11269 register_static_object(&once_value_5);
11270 } else fra.me.REG[5] = once_value_5;
11271 fra.me.REG[5] = fra.me.REG[5];
11272 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11273 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
11274 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11275 if (!once_value_6) {
11276 fra.me.REG[5] = BOX_NativeString(".");
11277 REGB0 = TAG_Int(1);
11278 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11279 once_value_6 = fra.me.REG[5];
11280 register_static_object(&once_value_6);
11281 } else fra.me.REG[5] = once_value_6;
11282 fra.me.REG[5] = fra.me.REG[5];
11283 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11284 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11285 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11286 } else {
11287 /* ./syntax//typing.nit:1836 */
11288 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
11289 if (UNTAG_Bool(REGB0)) {
11290 /* ./syntax//typing.nit:1838 */
11291 REGB0 = TAG_Int(3);
11292 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11293 if (!once_value_7) {
11294 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
11295 REGB0 = TAG_Int(50);
11296 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11297 once_value_7 = fra.me.REG[5];
11298 register_static_object(&once_value_7);
11299 } else fra.me.REG[5] = once_value_7;
11300 fra.me.REG[5] = fra.me.REG[5];
11301 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11302 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11303 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11304 if (!once_value_8) {
11305 fra.me.REG[5] = BOX_NativeString(".");
11306 REGB0 = TAG_Int(1);
11307 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11308 once_value_8 = fra.me.REG[5];
11309 register_static_object(&once_value_8);
11310 } else fra.me.REG[5] = once_value_8;
11311 fra.me.REG[5] = fra.me.REG[5];
11312 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11313 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11314 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11315 } else {
11316 /* ./syntax//typing.nit:1839 */
11317 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
11318 if (UNTAG_Bool(REGB0)) {
11319 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11320 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
11321 if (UNTAG_Bool(REGB0)) {
11322 } else {
11323 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11324 REGB0 = REGB1;
11325 }
11326 } else {
11327 REGB1 = TAG_Bool(false);
11328 REGB0 = REGB1;
11329 }
11330 if (UNTAG_Bool(REGB0)) {
11331 /* ./syntax//typing.nit:1840 */
11332 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_MMTypeFormal, ID_MMTypeFormal)) /*cast MMTypeFormal*/;
11333 if (UNTAG_Bool(REGB0)) {
11334 fra.me.REG[3] = CALL_type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
11335 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
11336 } else {
11337 REGB1 = TAG_Bool(false);
11338 REGB0 = REGB1;
11339 }
11340 if (UNTAG_Bool(REGB0)) {
11341 } else {
11342 /* ./syntax//typing.nit:1846 */
11343 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AIsaExpr, ID_AIsaExpr)) /*cast AIsaExpr*/;
11344 if (UNTAG_Bool(REGB0)) {
11345 /* ./syntax//typing.nit:1847 */
11346 if (!once_value_9) {
11347 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
11348 REGB0 = TAG_Int(26);
11349 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
11350 once_value_9 = fra.me.REG[3];
11351 register_static_object(&once_value_9);
11352 } else fra.me.REG[3] = once_value_9;
11353 fra.me.REG[3] = fra.me.REG[3];
11354 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
11355 } else {
11356 /* ./syntax//typing.nit:1849 */
11357 if (!once_value_10) {
11358 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
11359 REGB0 = TAG_Int(32);
11360 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
11361 once_value_10 = fra.me.REG[3];
11362 register_static_object(&once_value_10);
11363 } else fra.me.REG[3] = once_value_10;
11364 fra.me.REG[3] = fra.me.REG[3];
11365 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
11366 }
11367 }
11368 }
11369 }
11370 }
11371 }
11372 label1: while(0);
11373 stack_frame_head = fra.me.prev;
11374 return;
11375 }
11376 void typing___AIsaExpr___after_typing(val_t p0, val_t p1){
11377 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11378 val_t REGB0;
11379 val_t REGB1;
11380 val_t tmp;
11381 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11382 fra.me.file = LOCATE_typing;
11383 fra.me.line = 1857;
11384 fra.me.meth = LOCATE_typing___AIsaExpr___after_typing;
11385 fra.me.has_broke = 0;
11386 fra.me.REG_size = 5;
11387 fra.me.REG[0] = NIT_NULL;
11388 fra.me.REG[1] = NIT_NULL;
11389 fra.me.REG[2] = NIT_NULL;
11390 fra.me.REG[3] = NIT_NULL;
11391 fra.me.REG[4] = NIT_NULL;
11392 fra.me.REG[0] = p0;
11393 fra.me.REG[1] = p1;
11394 /* ./syntax//typing.nit:1859 */
11395 fra.me.REG[2] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11396 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11397 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]);
11398 /* ./syntax//typing.nit:1860 */
11399 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11400 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
11401 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11402 if (UNTAG_Bool(REGB0)) {
11403 goto label1;
11404 }
11405 /* ./syntax//typing.nit:1861 */
11406 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11407 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
11408 /* ./syntax//typing.nit:1862 */
11409 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11410 if (UNTAG_Bool(REGB0)) {
11411 } else {
11412 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11413 if (UNTAG_Bool(REGB1)) {
11414 REGB1 = TAG_Bool(false);
11415 REGB0 = REGB1;
11416 } else {
11417 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11418 REGB0 = REGB1;
11419 }
11420 }
11421 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11422 if (UNTAG_Bool(REGB0)) {
11423 /* ./syntax//typing.nit:1863 */
11424 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11425 fra.me.REG[4] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11426 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
11427 fra.me.REG[4] = CALL_flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[4]);
11428 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
11429 }
11430 /* ./syntax//typing.nit:1865 */
11431 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
11432 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
11433 /* ./syntax//typing.nit:1866 */
11434 REGB0 = TAG_Bool(true);
11435 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11436 label1: while(0);
11437 stack_frame_head = fra.me.prev;
11438 return;
11439 }
11440 void typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
11441 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11442 val_t REGB0;
11443 val_t REGB1;
11444 val_t tmp;
11445 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11446 fra.me.file = LOCATE_typing;
11447 fra.me.line = 1872;
11448 fra.me.meth = LOCATE_typing___AAsCastExpr___after_typing;
11449 fra.me.has_broke = 0;
11450 fra.me.REG_size = 4;
11451 fra.me.REG[0] = NIT_NULL;
11452 fra.me.REG[1] = NIT_NULL;
11453 fra.me.REG[2] = NIT_NULL;
11454 fra.me.REG[3] = NIT_NULL;
11455 fra.me.REG[0] = p0;
11456 fra.me.REG[1] = p1;
11457 /* ./syntax//typing.nit:1874 */
11458 fra.me.REG[2] = CALL_parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11459 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11460 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]);
11461 /* ./syntax//typing.nit:1875 */
11462 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11463 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
11464 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11465 if (UNTAG_Bool(REGB0)) {
11466 goto label1;
11467 }
11468 /* ./syntax//typing.nit:1876 */
11469 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
11470 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
11471 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
11472 /* ./syntax//typing.nit:1877 */
11473 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
11474 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11475 if (UNTAG_Bool(REGB0)) {
11476 } else {
11477 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11478 if (UNTAG_Bool(REGB1)) {
11479 REGB1 = TAG_Bool(false);
11480 REGB0 = REGB1;
11481 } else {
11482 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11483 REGB0 = REGB1;
11484 }
11485 }
11486 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11487 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11488 label1: while(0);
11489 stack_frame_head = fra.me.prev;
11490 return;
11491 }
11492 void typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
11493 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11494 val_t REGB0;
11495 val_t tmp;
11496 static val_t once_value_2; /* Once value */
11497 static val_t once_value_3; /* Once value */
11498 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11499 fra.me.file = LOCATE_typing;
11500 fra.me.line = 1882;
11501 fra.me.meth = LOCATE_typing___AAsNotnullExpr___after_typing;
11502 fra.me.has_broke = 0;
11503 fra.me.REG_size = 5;
11504 fra.me.REG[0] = NIT_NULL;
11505 fra.me.REG[1] = NIT_NULL;
11506 fra.me.REG[2] = NIT_NULL;
11507 fra.me.REG[3] = NIT_NULL;
11508 fra.me.REG[4] = NIT_NULL;
11509 fra.me.REG[0] = p0;
11510 fra.me.REG[1] = p1;
11511 /* ./syntax//typing.nit:1884 */
11512 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11513 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
11514 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11515 if (UNTAG_Bool(REGB0)) {
11516 goto label1;
11517 }
11518 /* ./syntax//typing.nit:1885 */
11519 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11520 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11521 /* ./syntax//typing.nit:1886 */
11522 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
11523 if (UNTAG_Bool(REGB0)) {
11524 /* ./syntax//typing.nit:1887 */
11525 fra.me.REG[3] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11526 if (!once_value_2) {
11527 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
11528 REGB0 = TAG_Int(43);
11529 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
11530 once_value_2 = fra.me.REG[4];
11531 register_static_object(&once_value_2);
11532 } else fra.me.REG[4] = once_value_2;
11533 fra.me.REG[4] = fra.me.REG[4];
11534 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
11535 /* ./syntax//typing.nit:1888 */
11536 goto label1;
11537 } else {
11538 /* ./syntax//typing.nit:1889 */
11539 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
11540 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11541 if (UNTAG_Bool(REGB0)) {
11542 /* ./syntax//typing.nit:1890 */
11543 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11544 if (!once_value_3) {
11545 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
11546 REGB0 = TAG_Int(45);
11547 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
11548 once_value_3 = fra.me.REG[4];
11549 register_static_object(&once_value_3);
11550 } else fra.me.REG[4] = once_value_3;
11551 fra.me.REG[4] = fra.me.REG[4];
11552 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
11553 }
11554 }
11555 /* ./syntax//typing.nit:1892 */
11556 fra.me.REG[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11557 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
11558 fra.me.REG[4] = CALL_static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
11559 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
11560 /* ./syntax//typing.nit:1893 */
11561 REGB0 = TAG_Bool(true);
11562 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11563 label1: while(0);
11564 stack_frame_head = fra.me.prev;
11565 return;
11566 }
11567 void typing___AProxyExpr___after_typing(val_t p0, val_t p1){
11568 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11569 val_t REGB0;
11570 val_t tmp;
11571 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11572 fra.me.file = LOCATE_typing;
11573 fra.me.line = 1898;
11574 fra.me.meth = LOCATE_typing___AProxyExpr___after_typing;
11575 fra.me.has_broke = 0;
11576 fra.me.REG_size = 2;
11577 fra.me.REG[0] = NIT_NULL;
11578 fra.me.REG[1] = NIT_NULL;
11579 fra.me.REG[0] = p0;
11580 fra.me.REG[1] = p1;
11581 /* ./syntax//typing.nit:1900 */
11582 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11583 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11584 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11585 if (UNTAG_Bool(REGB0)) {
11586 goto label1;
11587 }
11588 /* ./syntax//typing.nit:1901 */
11589 REGB0 = TAG_Bool(true);
11590 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11591 /* ./syntax//typing.nit:1902 */
11592 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11593 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
11594 if (UNTAG_Bool(REGB0)) {
11595 goto label1;
11596 }
11597 /* ./syntax//typing.nit:1903 */
11598 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
11599 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11600 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
11601 label1: while(0);
11602 stack_frame_head = fra.me.prev;
11603 return;
11604 }
11605 void typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
11606 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11607 val_t REGB0;
11608 val_t REGB1;
11609 val_t tmp;
11610 static val_t once_value_1; /* Once value */
11611 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11612 fra.me.file = LOCATE_typing;
11613 fra.me.line = 1908;
11614 fra.me.meth = LOCATE_typing___AOnceExpr___accept_typing;
11615 fra.me.has_broke = 0;
11616 fra.me.REG_size = 5;
11617 fra.me.REG[0] = NIT_NULL;
11618 fra.me.REG[1] = NIT_NULL;
11619 fra.me.REG[2] = NIT_NULL;
11620 fra.me.REG[3] = NIT_NULL;
11621 fra.me.REG[4] = NIT_NULL;
11622 fra.me.REG[0] = p0;
11623 fra.me.REG[1] = p1;
11624 /* ./syntax//typing.nit:1908 */
11625 fra.me.REG[2] = fra.me.REG[0];
11626 fra.me.REG[3] = fra.me.REG[1];
11627 /* ./syntax//typing.nit:1910 */
11628 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
11629 REGB1 = TAG_Int(0);
11630 /* ./../lib/standard//kernel.nit:214 */
11631 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
11632 /* ./syntax//typing.nit:1910 */
11633 if (UNTAG_Bool(REGB1)) {
11634 /* ./syntax//typing.nit:1911 */
11635 if (!once_value_1) {
11636 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
11637 REGB1 = TAG_Int(34);
11638 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
11639 once_value_1 = fra.me.REG[4];
11640 register_static_object(&once_value_1);
11641 } else fra.me.REG[4] = once_value_1;
11642 fra.me.REG[4] = fra.me.REG[4];
11643 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
11644 }
11645 /* ./syntax//typing.nit:1913 */
11646 REGB1 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
11647 REGB0 = TAG_Int(1);
11648 /* ./../lib/standard//kernel.nit:215 */
11649 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
11650 /* ./syntax//typing.nit:1913 */
11651 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
11652 /* ./syntax//typing.nit:1915 */
11653 CALL_SUPER_typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11654 /* ./syntax//typing.nit:1917 */
11655 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
11656 REGB1 = TAG_Int(1);
11657 /* ./../lib/standard//kernel.nit:217 */
11658 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
11659 /* ./syntax//typing.nit:1917 */
11660 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
11661 stack_frame_head = fra.me.prev;
11662 return;
11663 }