ni: intro of frontier files between nit code and extern code
[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 constructor in ");
928 REGB2 = TAG_Int(55);
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 constructor in ");
976 REGB2 = TAG_Int(55);
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_extern(fra.me.REG[4])(fra.me.REG[4]);
1667 REGB3 = REGB4;
1668 }
1669 if (UNTAG_Bool(REGB3)) {
1670 REGB3 = TAG_Bool(true);
1671 } else {
1672 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1673 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1674 REGB3 = REGB4;
1675 }
1676 if (UNTAG_Bool(REGB3)) {
1677 /* ./syntax//typing.nit:256 */
1678 REGB3 = TAG_Int(1);
1679 /* ./../lib/standard//kernel.nit:215 */
1680 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1681 /* ./syntax//typing.nit:256 */
1682 REGB2 = REGB3;
1683 } else {
1684 /* ./syntax//typing.nit:257 */
1685 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1686 if (UNTAG_Bool(REGB3)) {
1687 } else {
1688 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1689 if (UNTAG_Bool(REGB4)) {
1690 REGB4 = TAG_Bool(false);
1691 REGB3 = REGB4;
1692 } else {
1693 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1694 REGB3 = REGB4;
1695 }
1696 }
1697 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1698 if (UNTAG_Bool(REGB3)) {
1699 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1700 REGB3 = CALL_partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
1701 if (UNTAG_Bool(REGB3)) {
1702 REGB3 = TAG_Bool(true);
1703 } else {
1704 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1705 if (UNTAG_Bool(REGB4)) {
1706 nit_abort("Reciever is null", NULL, LOCATE_typing, 257);
1707 }
1708 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1709 REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
1710 REGB3 = REGB4;
1711 }
1712 } else {
1713 REGB4 = TAG_Bool(false);
1714 REGB3 = REGB4;
1715 }
1716 if (UNTAG_Bool(REGB3)) {
1717 /* ./syntax//typing.nit:258 */
1718 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[5],fra.me.REG[1]));
1719 if (UNTAG_Bool(REGB3)) {
1720 } else {
1721 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1722 REGB3 = REGB4;
1723 }
1724 if (UNTAG_Bool(REGB3)) {
1725 REGB3 = TAG_Int(1);
1726 /* ./../lib/standard//kernel.nit:215 */
1727 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1728 /* ./syntax//typing.nit:258 */
1729 REGB2 = REGB3;
1730 }
1731 /* ./syntax//typing.nit:259 */
1732 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1733 REGB3 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1734 if (UNTAG_Bool(REGB3)) {
1735 } else {
1736 nit_abort("Cast failed", NULL, LOCATE_typing, 259);
1737 }
1738 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
1739 /* ./syntax//typing.nit:260 */
1740 REGB3 = TAG_Int(1);
1741 /* ./../lib/standard//kernel.nit:215 */
1742 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1743 /* ./syntax//typing.nit:260 */
1744 REGB0 = REGB3;
1745 /* ./../lib/standard//kernel.nit:212 */
1746 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1747 /* ./syntax//typing.nit:261 */
1748 if (UNTAG_Bool(REGB3)) {
1749 /* ./syntax//typing.nit:262 */
1750 fra.me.REG[4] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1751 /* ./../lib/standard//collection//array.nit:243 */
1752 REGB3 = REGB0;
1753 /* ./../lib/standard//collection//array.nit:245 */
1754 REGB4 = TAG_Int(0);
1755 /* ./../lib/standard//kernel.nit:213 */
1756 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1757 /* ./../lib/standard//collection//array.nit:245 */
1758 if (UNTAG_Bool(REGB4)) {
1759 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1760 if (UNTAG_Bool(REGB4)) {
1761 } else {
1762 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1763 }
1764 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1765 /* ./../lib/standard//kernel.nit:212 */
1766 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1767 } else {
1768 /* ./../lib/standard//collection//array.nit:245 */
1769 REGB5 = TAG_Bool(false);
1770 REGB4 = REGB5;
1771 }
1772 if (UNTAG_Bool(REGB4)) {
1773 } else {
1774 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1775 }
1776 /* ./../lib/standard//collection//array.nit:246 */
1777 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
1778 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1779 if (UNTAG_Bool(REGB4)) {
1780 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1781 }
1782 /* ./../lib/standard//collection//array.nit:654 */
1783 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
1784 /* ./../lib/standard//collection//array.nit:246 */
1785 goto label3;
1786 label3: while(0);
1787 /* ./syntax//typing.nit:262 */
1788 fra.me.REG[0] = fra.me.REG[4];
1789 /* ./syntax//typing.nit:263 */
1790 REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1791 if (UNTAG_Bool(REGB3)) {
1792 nit_abort("Reciever is null", NULL, LOCATE_typing, 263);
1793 }
1794 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1795 fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1796 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1797 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1798 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
1799 fra.me.REG[1] = fra.me.REG[6];
1800 } else {
1801 /* ./syntax//typing.nit:265 */
1802 fra.me.REG[0] = NIT_NULL;
1803 /* ./syntax//typing.nit:266 */
1804 fra.me.REG[1] = NIT_NULL;
1805 }
1806 } else {
1807 /* ./syntax//typing.nit:269 */
1808 fra.me.REG[6] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1809 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]);
1810 /* ./syntax//typing.nit:270 */
1811 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1812 if (UNTAG_Bool(REGB3)) {
1813 } else {
1814 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1815 if (UNTAG_Bool(REGB4)) {
1816 REGB4 = TAG_Bool(false);
1817 REGB3 = REGB4;
1818 } else {
1819 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1820 REGB3 = REGB4;
1821 }
1822 }
1823 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1824 if (UNTAG_Bool(REGB3)) {
1825 /* ./syntax//typing.nit:271 */
1826 fra.me.REG[5] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1827 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1828 }
1829 /* ./syntax//typing.nit:273 */
1830 REGB3 = TAG_Int(1);
1831 /* ./../lib/standard//kernel.nit:215 */
1832 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1833 /* ./syntax//typing.nit:273 */
1834 REGB2 = REGB3;
1835 }
1836 }
1837 } else {
1838 /* ./syntax//typing.nit:253 */
1839 goto label4;
1840 }
1841 }
1842 label4: while(0);
1843 }
1844 stack_frame_head = fra.me.prev;
1845 return;
1846 }
1847 void typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
1848 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1849 val_t REGB0;
1850 val_t tmp;
1851 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1852 fra.me.file = LOCATE_typing;
1853 fra.me.line = 281;
1854 fra.me.meth = LOCATE_typing___AExternInitPropdef___accept_typing;
1855 fra.me.has_broke = 0;
1856 fra.me.REG_size = 3;
1857 fra.me.REG[0] = NIT_NULL;
1858 fra.me.REG[1] = NIT_NULL;
1859 fra.me.REG[2] = NIT_NULL;
1860 fra.me.REG[0] = p0;
1861 fra.me.REG[1] = p1;
1862 /* ./syntax//typing.nit:281 */
1863 fra.me.REG[2] = fra.me.REG[1];
1864 /* ./syntax//typing.nit:283 */
1865 REGB0 = TAG_Bool(false);
1866 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
1867 /* ./syntax//typing.nit:284 */
1868 CALL_SUPER_typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1869 stack_frame_head = fra.me.prev;
1870 return;
1871 }
1872 void typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
1873 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1874 val_t tmp;
1875 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1876 fra.me.file = LOCATE_typing;
1877 fra.me.line = 286;
1878 fra.me.meth = LOCATE_typing___AExternInitPropdef___after_typing;
1879 fra.me.has_broke = 0;
1880 fra.me.REG_size = 2;
1881 fra.me.REG[0] = NIT_NULL;
1882 fra.me.REG[1] = NIT_NULL;
1883 fra.me.REG[0] = p0;
1884 fra.me.REG[1] = p1;
1885 /* ./syntax//typing.nit:288 */
1886 CALL_SUPER_typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1887 stack_frame_head = fra.me.prev;
1888 return;
1889 }
1890 void typing___AParam___after_typing(val_t p0, val_t p1){
1891 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1892 val_t tmp;
1893 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1894 fra.me.file = LOCATE_typing;
1895 fra.me.line = 293;
1896 fra.me.meth = LOCATE_typing___AParam___after_typing;
1897 fra.me.has_broke = 0;
1898 fra.me.REG_size = 2;
1899 fra.me.REG[0] = NIT_NULL;
1900 fra.me.REG[1] = NIT_NULL;
1901 fra.me.REG[0] = p0;
1902 fra.me.REG[1] = p1;
1903 /* ./syntax//typing.nit:295 */
1904 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
1905 fra.me.REG[0] = CALL_syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1906 CALL_scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1907 stack_frame_head = fra.me.prev;
1908 return;
1909 }
1910 val_t typing___AClosureDecl___escapable(val_t p0){
1911 struct {struct stack_frame_t me;} fra;
1912 val_t tmp;
1913 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1914 fra.me.file = LOCATE_typing;
1915 fra.me.line = 300;
1916 fra.me.meth = LOCATE_typing___AClosureDecl___escapable;
1917 fra.me.has_broke = 0;
1918 fra.me.REG_size = 1;
1919 fra.me.REG[0] = NIT_NULL;
1920 fra.me.REG[0] = p0;
1921 /* ./syntax//typing.nit:300 */
1922 fra.me.REG[0] = ATTR_typing___AClosureDecl____escapable(fra.me.REG[0]);
1923 stack_frame_head = fra.me.prev;
1924 return fra.me.REG[0];
1925 }
1926 void typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
1927 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1928 val_t REGB0;
1929 val_t REGB1;
1930 val_t REGB2;
1931 val_t tmp;
1932 static val_t once_value_1; /* Once value */
1933 static val_t once_value_2; /* Once value */
1934 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1935 fra.me.file = LOCATE_typing;
1936 fra.me.line = 303;
1937 fra.me.meth = LOCATE_typing___AClosureDecl___accept_typing;
1938 fra.me.has_broke = 0;
1939 fra.me.REG_size = 10;
1940 fra.me.REG[0] = NIT_NULL;
1941 fra.me.REG[1] = NIT_NULL;
1942 fra.me.REG[2] = NIT_NULL;
1943 fra.me.REG[3] = NIT_NULL;
1944 fra.me.REG[4] = NIT_NULL;
1945 fra.me.REG[5] = NIT_NULL;
1946 fra.me.REG[6] = NIT_NULL;
1947 fra.me.REG[7] = NIT_NULL;
1948 fra.me.REG[8] = NIT_NULL;
1949 fra.me.REG[9] = NIT_NULL;
1950 fra.me.REG[0] = p0;
1951 fra.me.REG[1] = p1;
1952 /* ./syntax//typing.nit:303 */
1953 fra.me.REG[2] = fra.me.REG[0];
1954 fra.me.REG[3] = fra.me.REG[1];
1955 /* ./syntax//typing.nit:306 */
1956 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1957 fra.me.REG[5] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1958 CALL_scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1959 /* ./syntax//typing.nit:308 */
1960 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1961 /* ./syntax//typing.nit:309 */
1962 fra.me.REG[4] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1963 /* ./syntax//typing.nit:310 */
1964 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1965 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1966 /* ./syntax//typing.nit:312 */
1967 fra.me.REG[6] = NIT_NULL;
1968 /* ./syntax//typing.nit:313 */
1969 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
1970 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
1971 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1972 if (UNTAG_Bool(REGB0)) {
1973 nit_abort("Reciever is null", NULL, LOCATE_typing, 313);
1974 }
1975 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
1976 /* ./syntax//typing.nit:314 */
1977 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1978 if (UNTAG_Bool(REGB0)) {
1979 } else {
1980 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1981 if (UNTAG_Bool(REGB1)) {
1982 REGB1 = TAG_Bool(false);
1983 REGB0 = REGB1;
1984 } else {
1985 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1986 REGB0 = REGB1;
1987 }
1988 }
1989 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1990 if (UNTAG_Bool(REGB0)) {
1991 fra.me.REG[8] = NEW_Array_array___Array___init();
1992 fra.me.REG[6] = fra.me.REG[8];
1993 }
1994 /* ./syntax//typing.nit:315 */
1995 fra.me.REG[8] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1996 fra.me.REG[8] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
1997 fra.me.REG[8] = NEW_EscapableClosure_scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
1998 /* ./syntax//typing.nit:316 */
1999 ATTR_typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2000 /* ./syntax//typing.nit:317 */
2001 fra.me.REG[9] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2002 CALL_scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2003 /* ./syntax//typing.nit:319 */
2004 REGB0 = TAG_Bool(true);
2005 CALL_typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2006 /* ./syntax//typing.nit:321 */
2007 CALL_SUPER_typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2008 /* ./syntax//typing.nit:323 */
2009 REGB0 = TAG_Bool(false);
2010 CALL_typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2011 /* ./syntax//typing.nit:325 */
2012 fra.me.REG[1] = CALL_parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2013 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2014 if (UNTAG_Bool(REGB0)) {
2015 } else {
2016 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2017 if (UNTAG_Bool(REGB1)) {
2018 REGB1 = TAG_Bool(false);
2019 REGB0 = REGB1;
2020 } else {
2021 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2022 REGB0 = REGB1;
2023 }
2024 }
2025 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2026 if (UNTAG_Bool(REGB0)) {
2027 /* ./syntax//typing.nit:326 */
2028 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2029 REGB0 = CALL_flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2030 REGB1 = TAG_Bool(false);
2031 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2032 if (UNTAG_Bool(REGB2)) {
2033 } else {
2034 /* ./../lib/standard//kernel.nit:175 */
2035 REGB1 = TAG_Bool((REGB0)==(REGB1));
2036 /* ./syntax//typing.nit:326 */
2037 REGB2 = REGB1;
2038 }
2039 if (UNTAG_Bool(REGB2)) {
2040 /* ./syntax//typing.nit:327 */
2041 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2042 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2043 fra.me.REG[1] = CALL_static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2044 fra.me.REG[1] = CALL_static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2045 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2046 if (UNTAG_Bool(REGB2)) {
2047 } else {
2048 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2049 if (UNTAG_Bool(REGB1)) {
2050 REGB1 = TAG_Bool(false);
2051 REGB2 = REGB1;
2052 } else {
2053 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2054 REGB2 = REGB1;
2055 }
2056 }
2057 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2058 if (UNTAG_Bool(REGB2)) {
2059 /* ./syntax//typing.nit:328 */
2060 if (!once_value_1) {
2061 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2062 REGB2 = TAG_Int(77);
2063 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB2);
2064 once_value_1 = fra.me.REG[1];
2065 register_static_object(&once_value_1);
2066 } else fra.me.REG[1] = once_value_1;
2067 fra.me.REG[1] = fra.me.REG[1];
2068 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2069 } else {
2070 /* ./syntax//typing.nit:329 */
2071 fra.me.REG[1] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2072 fra.me.REG[1] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2073 REGB2 = CALL_static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2074 if (UNTAG_Bool(REGB2)) {
2075 fra.me.REG[8] = CALL_scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2076 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2077 if (UNTAG_Bool(REGB2)) {
2078 } else {
2079 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2080 if (UNTAG_Bool(REGB1)) {
2081 REGB1 = TAG_Bool(false);
2082 REGB2 = REGB1;
2083 } else {
2084 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2085 REGB2 = REGB1;
2086 }
2087 }
2088 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2089 } else {
2090 REGB1 = TAG_Bool(false);
2091 REGB2 = REGB1;
2092 }
2093 if (UNTAG_Bool(REGB2)) {
2094 /* ./syntax//typing.nit:330 */
2095 if (!once_value_2) {
2096 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2097 REGB2 = TAG_Int(80);
2098 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
2099 once_value_2 = fra.me.REG[8];
2100 register_static_object(&once_value_2);
2101 } else fra.me.REG[8] = once_value_2;
2102 fra.me.REG[8] = fra.me.REG[8];
2103 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2104 }
2105 }
2106 }
2107 }
2108 /* ./syntax//typing.nit:334 */
2109 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2110 if (UNTAG_Bool(REGB2)) {
2111 } else {
2112 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2113 if (UNTAG_Bool(REGB1)) {
2114 REGB1 = TAG_Bool(false);
2115 REGB2 = REGB1;
2116 } else {
2117 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2118 REGB2 = REGB1;
2119 }
2120 }
2121 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2122 if (UNTAG_Bool(REGB2)) {
2123 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2124 if (UNTAG_Bool(REGB2)) {
2125 nit_abort("Reciever is null", NULL, LOCATE_typing, 334);
2126 }
2127 /* ./../lib/standard//collection//array.nit:234 */
2128 REGB2 = TAG_Int(0);
2129 /* ./../lib/standard//collection//array.nit:235 */
2130 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2131 if (UNTAG_Bool(REGB1)) {
2132 } else {
2133 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
2134 }
2135 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
2136 /* ./../lib/standard//collection//array.nit:236 */
2137 fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[6]);
2138 /* ./../lib/standard//collection//array.nit:237 */
2139 while(1) {
2140 /* ./../lib/standard//collection//array.nit:23 */
2141 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2142 if (UNTAG_Bool(REGB1)) {
2143 } else {
2144 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
2145 }
2146 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
2147 /* ./../lib/standard//kernel.nit:212 */
2148 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2149 /* ./../lib/standard//collection//array.nit:237 */
2150 if (UNTAG_Bool(REGB1)) {
2151 /* ./../lib/standard//collection//array.nit:238 */
2152 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2153 if (UNTAG_Bool(REGB1)) {
2154 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
2155 }
2156 /* ./../lib/standard//collection//array.nit:654 */
2157 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2158 /* ./syntax//typing.nit:335 */
2159 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2160 /* ./../lib/standard//collection//array.nit:239 */
2161 REGB1 = TAG_Int(1);
2162 /* ./../lib/standard//kernel.nit:215 */
2163 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2164 /* ./../lib/standard//collection//array.nit:239 */
2165 REGB2 = REGB1;
2166 } else {
2167 /* ./../lib/standard//collection//array.nit:237 */
2168 goto label3;
2169 }
2170 }
2171 label3: while(0);
2172 }
2173 /* ./syntax//typing.nit:338 */
2174 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2175 /* ./syntax//typing.nit:339 */
2176 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2177 /* ./syntax//typing.nit:340 */
2178 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2179 CALL_scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2180 stack_frame_head = fra.me.prev;
2181 return;
2182 }
2183 val_t typing___AType___stype(val_t p0){
2184 struct {struct stack_frame_t me;} fra;
2185 val_t REGB0;
2186 val_t tmp;
2187 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2188 fra.me.file = LOCATE_typing;
2189 fra.me.line = 345;
2190 fra.me.meth = LOCATE_typing___AType___stype;
2191 fra.me.has_broke = 0;
2192 fra.me.REG_size = 1;
2193 fra.me.REG[0] = NIT_NULL;
2194 fra.me.REG[0] = p0;
2195 /* ./syntax//typing.nit:345 */
2196 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
2197 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2198 if (UNTAG_Bool(REGB0)) {
2199 } else {
2200 nit_abort("Cast failed", NULL, LOCATE_typing, 345);
2201 }
2202 goto label1;
2203 label1: while(0);
2204 stack_frame_head = fra.me.prev;
2205 return fra.me.REG[0];
2206 }
2207 val_t typing___AType___is_typed(val_t p0){
2208 struct {struct stack_frame_t me;} fra;
2209 val_t REGB0;
2210 val_t REGB1;
2211 val_t tmp;
2212 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2213 fra.me.file = LOCATE_typing;
2214 fra.me.line = 346;
2215 fra.me.meth = LOCATE_typing___AType___is_typed;
2216 fra.me.has_broke = 0;
2217 fra.me.REG_size = 1;
2218 fra.me.REG[0] = NIT_NULL;
2219 fra.me.REG[0] = p0;
2220 /* ./syntax//typing.nit:346 */
2221 fra.me.REG[0] = ATTR_typing___AType____stype(fra.me.REG[0]);
2222 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2223 if (UNTAG_Bool(REGB0)) {
2224 } else {
2225 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2226 if (UNTAG_Bool(REGB1)) {
2227 REGB1 = TAG_Bool(false);
2228 REGB0 = REGB1;
2229 } else {
2230 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2231 REGB0 = REGB1;
2232 }
2233 }
2234 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2235 goto label1;
2236 label1: while(0);
2237 stack_frame_head = fra.me.prev;
2238 return REGB0;
2239 }
2240 void typing___AType___after_typing(val_t p0, val_t p1){
2241 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2242 val_t tmp;
2243 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2244 fra.me.file = LOCATE_typing;
2245 fra.me.line = 349;
2246 fra.me.meth = LOCATE_typing___AType___after_typing;
2247 fra.me.has_broke = 0;
2248 fra.me.REG_size = 2;
2249 fra.me.REG[0] = NIT_NULL;
2250 fra.me.REG[1] = NIT_NULL;
2251 fra.me.REG[0] = p0;
2252 fra.me.REG[1] = p1;
2253 /* ./syntax//typing.nit:351 */
2254 fra.me.REG[1] = CALL_syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2255 ATTR_typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2256 stack_frame_head = fra.me.prev;
2257 return;
2258 }
2259 val_t typing___AExpr___is_typed(val_t p0){
2260 struct {struct stack_frame_t me;} fra;
2261 val_t REGB0;
2262 val_t tmp;
2263 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2264 fra.me.file = LOCATE_typing;
2265 fra.me.line = 356;
2266 fra.me.meth = LOCATE_typing___AExpr___is_typed;
2267 fra.me.has_broke = 0;
2268 fra.me.REG_size = 1;
2269 fra.me.REG[0] = NIT_NULL;
2270 fra.me.REG[0] = p0;
2271 /* ./syntax//typing.nit:356 */
2272 REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2273 if (UNTAG_Bool(REGB0)) {
2274 } else {
2275 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_typing, 356);
2276 }
2277 REGB0 = ATTR_typing___AExpr____is_typed(fra.me.REG[0]);
2278 stack_frame_head = fra.me.prev;
2279 return REGB0;
2280 }
2281 val_t typing___AExpr___is_statement(val_t p0){
2282 struct {struct stack_frame_t me;} fra;
2283 val_t REGB0;
2284 val_t REGB1;
2285 val_t tmp;
2286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2287 fra.me.file = LOCATE_typing;
2288 fra.me.line = 357;
2289 fra.me.meth = LOCATE_typing___AExpr___is_statement;
2290 fra.me.has_broke = 0;
2291 fra.me.REG_size = 1;
2292 fra.me.REG[0] = NIT_NULL;
2293 fra.me.REG[0] = p0;
2294 /* ./syntax//typing.nit:357 */
2295 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2296 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2297 if (UNTAG_Bool(REGB0)) {
2298 } else {
2299 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2300 if (UNTAG_Bool(REGB1)) {
2301 REGB1 = TAG_Bool(false);
2302 REGB0 = REGB1;
2303 } else {
2304 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2305 REGB0 = REGB1;
2306 }
2307 }
2308 goto label1;
2309 label1: while(0);
2310 stack_frame_head = fra.me.prev;
2311 return REGB0;
2312 }
2313 val_t typing___AExpr___stype(val_t p0){
2314 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2315 val_t REGB0;
2316 val_t tmp;
2317 static val_t once_value_1; /* Once value */
2318 static val_t once_value_2; /* Once value */
2319 static val_t once_value_3; /* Once value */
2320 static val_t once_value_4; /* Once value */
2321 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2322 fra.me.file = LOCATE_typing;
2323 fra.me.line = 358;
2324 fra.me.meth = LOCATE_typing___AExpr___stype;
2325 fra.me.has_broke = 0;
2326 fra.me.REG_size = 3;
2327 fra.me.REG[0] = NIT_NULL;
2328 fra.me.REG[1] = NIT_NULL;
2329 fra.me.REG[2] = NIT_NULL;
2330 fra.me.REG[0] = p0;
2331 /* ./syntax//typing.nit:360 */
2332 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[0])(fra.me.REG[0]);
2333 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2334 if (UNTAG_Bool(REGB0)) {
2335 /* ./syntax//typing.nit:361 */
2336 REGB0 = TAG_Int(3);
2337 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2338 if (!once_value_1) {
2339 fra.me.REG[2] = BOX_NativeString("");
2340 REGB0 = TAG_Int(0);
2341 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2342 once_value_1 = fra.me.REG[2];
2343 register_static_object(&once_value_1);
2344 } else fra.me.REG[2] = once_value_1;
2345 fra.me.REG[2] = fra.me.REG[2];
2346 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2347 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2348 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2349 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2350 if (!once_value_2) {
2351 fra.me.REG[2] = BOX_NativeString(": not is_typed");
2352 REGB0 = TAG_Int(14);
2353 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2354 once_value_2 = fra.me.REG[2];
2355 register_static_object(&once_value_2);
2356 } else fra.me.REG[2] = once_value_2;
2357 fra.me.REG[2] = fra.me.REG[2];
2358 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2359 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2360 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2361 /* ./syntax//typing.nit:362 */
2362 nit_abort("Aborted", NULL, LOCATE_typing, 362);
2363 }
2364 /* ./syntax//typing.nit:364 */
2365 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[0])(fra.me.REG[0]);
2366 if (UNTAG_Bool(REGB0)) {
2367 /* ./syntax//typing.nit:365 */
2368 REGB0 = TAG_Int(3);
2369 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
2370 if (!once_value_3) {
2371 fra.me.REG[2] = BOX_NativeString("");
2372 REGB0 = TAG_Int(0);
2373 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2374 once_value_3 = fra.me.REG[2];
2375 register_static_object(&once_value_3);
2376 } else fra.me.REG[2] = once_value_3;
2377 fra.me.REG[2] = fra.me.REG[2];
2378 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2379 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2380 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2381 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2382 if (!once_value_4) {
2383 fra.me.REG[2] = BOX_NativeString(": is_statement");
2384 REGB0 = TAG_Int(14);
2385 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2386 once_value_4 = fra.me.REG[2];
2387 register_static_object(&once_value_4);
2388 } else fra.me.REG[2] = once_value_4;
2389 fra.me.REG[2] = fra.me.REG[2];
2390 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2391 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2392 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2393 /* ./syntax//typing.nit:366 */
2394 nit_abort("Aborted", NULL, LOCATE_typing, 366);
2395 }
2396 /* ./syntax//typing.nit:368 */
2397 fra.me.REG[0] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
2398 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2399 if (UNTAG_Bool(REGB0)) {
2400 } else {
2401 nit_abort("Cast failed", NULL, LOCATE_typing, 368);
2402 }
2403 goto label5;
2404 label5: while(0);
2405 stack_frame_head = fra.me.prev;
2406 return fra.me.REG[0];
2407 }
2408 void typing___AExpr___after_typing(val_t p0, val_t p1){
2409 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2410 val_t REGB0;
2411 val_t tmp;
2412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2413 fra.me.file = LOCATE_typing;
2414 fra.me.line = 372;
2415 fra.me.meth = LOCATE_typing___AExpr___after_typing;
2416 fra.me.has_broke = 0;
2417 fra.me.REG_size = 2;
2418 fra.me.REG[0] = NIT_NULL;
2419 fra.me.REG[1] = NIT_NULL;
2420 fra.me.REG[0] = p0;
2421 fra.me.REG[1] = p1;
2422 /* ./syntax//typing.nit:375 */
2423 REGB0 = TAG_Bool(true);
2424 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2425 stack_frame_head = fra.me.prev;
2426 return;
2427 }
2428 val_t typing___AExpr___is_implicit_self(val_t p0){
2429 struct {struct stack_frame_t me;} fra;
2430 val_t REGB0;
2431 val_t tmp;
2432 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2433 fra.me.file = LOCATE_typing;
2434 fra.me.line = 378;
2435 fra.me.meth = LOCATE_typing___AExpr___is_implicit_self;
2436 fra.me.has_broke = 0;
2437 fra.me.REG_size = 1;
2438 fra.me.REG[0] = NIT_NULL;
2439 fra.me.REG[0] = p0;
2440 /* ./syntax//typing.nit:379 */
2441 REGB0 = TAG_Bool(false);
2442 goto label1;
2443 label1: while(0);
2444 stack_frame_head = fra.me.prev;
2445 return REGB0;
2446 }
2447 val_t typing___AExpr___is_self(val_t p0){
2448 struct {struct stack_frame_t me;} fra;
2449 val_t REGB0;
2450 val_t tmp;
2451 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2452 fra.me.file = LOCATE_typing;
2453 fra.me.line = 381;
2454 fra.me.meth = LOCATE_typing___AExpr___is_self;
2455 fra.me.has_broke = 0;
2456 fra.me.REG_size = 1;
2457 fra.me.REG[0] = NIT_NULL;
2458 fra.me.REG[0] = p0;
2459 /* ./syntax//typing.nit:382 */
2460 REGB0 = TAG_Bool(false);
2461 goto label1;
2462 label1: while(0);
2463 stack_frame_head = fra.me.prev;
2464 return REGB0;
2465 }
2466 val_t typing___AExpr___its_variable(val_t p0){
2467 struct {struct stack_frame_t me;} fra;
2468 val_t tmp;
2469 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2470 fra.me.file = LOCATE_typing;
2471 fra.me.line = 384;
2472 fra.me.meth = LOCATE_typing___AExpr___its_variable;
2473 fra.me.has_broke = 0;
2474 fra.me.REG_size = 1;
2475 fra.me.REG[0] = NIT_NULL;
2476 fra.me.REG[0] = p0;
2477 /* ./syntax//typing.nit:385 */
2478 fra.me.REG[0] = NIT_NULL;
2479 goto label1;
2480 label1: while(0);
2481 stack_frame_head = fra.me.prev;
2482 return fra.me.REG[0];
2483 }
2484 val_t typing___AExpr___if_true_flow_ctx(val_t p0){
2485 struct {struct stack_frame_t me;} fra;
2486 val_t tmp;
2487 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2488 fra.me.file = LOCATE_typing;
2489 fra.me.line = 387;
2490 fra.me.meth = LOCATE_typing___AExpr___if_true_flow_ctx;
2491 fra.me.has_broke = 0;
2492 fra.me.REG_size = 1;
2493 fra.me.REG[0] = NIT_NULL;
2494 fra.me.REG[0] = p0;
2495 /* ./syntax//typing.nit:387 */
2496 fra.me.REG[0] = ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2497 stack_frame_head = fra.me.prev;
2498 return fra.me.REG[0];
2499 }
2500 val_t typing___AExpr___if_false_flow_ctx(val_t p0){
2501 struct {struct stack_frame_t me;} fra;
2502 val_t tmp;
2503 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2504 fra.me.file = LOCATE_typing;
2505 fra.me.line = 390;
2506 fra.me.meth = LOCATE_typing___AExpr___if_false_flow_ctx;
2507 fra.me.has_broke = 0;
2508 fra.me.REG_size = 1;
2509 fra.me.REG[0] = NIT_NULL;
2510 fra.me.REG[0] = p0;
2511 /* ./syntax//typing.nit:390 */
2512 fra.me.REG[0] = ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2513 stack_frame_head = fra.me.prev;
2514 return fra.me.REG[0];
2515 }
2516 val_t typing___AVardeclExpr___variable(val_t p0){
2517 struct {struct stack_frame_t me;} fra;
2518 val_t REGB0;
2519 val_t tmp;
2520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2521 fra.me.file = LOCATE_typing;
2522 fra.me.line = 396;
2523 fra.me.meth = LOCATE_typing___AVardeclExpr___variable;
2524 fra.me.has_broke = 0;
2525 fra.me.REG_size = 1;
2526 fra.me.REG[0] = NIT_NULL;
2527 fra.me.REG[0] = p0;
2528 /* ./syntax//typing.nit:396 */
2529 fra.me.REG[0] = ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]);
2530 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2531 if (UNTAG_Bool(REGB0)) {
2532 } else {
2533 nit_abort("Cast failed", NULL, LOCATE_typing, 396);
2534 }
2535 goto label1;
2536 label1: while(0);
2537 stack_frame_head = fra.me.prev;
2538 return fra.me.REG[0];
2539 }
2540 void typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2541 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2542 val_t REGB0;
2543 val_t REGB1;
2544 val_t tmp;
2545 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2546 fra.me.file = LOCATE_typing;
2547 fra.me.line = 398;
2548 fra.me.meth = LOCATE_typing___AVardeclExpr___after_typing;
2549 fra.me.has_broke = 0;
2550 fra.me.REG_size = 5;
2551 fra.me.REG[0] = NIT_NULL;
2552 fra.me.REG[1] = NIT_NULL;
2553 fra.me.REG[2] = NIT_NULL;
2554 fra.me.REG[3] = NIT_NULL;
2555 fra.me.REG[4] = NIT_NULL;
2556 fra.me.REG[0] = p0;
2557 fra.me.REG[1] = p1;
2558 /* ./syntax//typing.nit:400 */
2559 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2560 fra.me.REG[2] = CALL_syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2561 fra.me.REG[3] = CALL_parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2562 fra.me.REG[3] = NEW_VarVariable_syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2563 /* ./syntax//typing.nit:401 */
2564 ATTR_typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2565 /* ./syntax//typing.nit:402 */
2566 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2567 CALL_scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2568 /* ./syntax//typing.nit:403 */
2569 fra.me.REG[2] = CALL_parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2570 /* ./syntax//typing.nit:404 */
2571 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2572 if (UNTAG_Bool(REGB0)) {
2573 } else {
2574 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2575 if (UNTAG_Bool(REGB1)) {
2576 REGB1 = TAG_Bool(false);
2577 REGB0 = REGB1;
2578 } else {
2579 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2580 REGB0 = REGB1;
2581 }
2582 }
2583 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2584 if (UNTAG_Bool(REGB0)) {
2585 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2586 }
2587 /* ./syntax//typing.nit:406 */
2588 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2589 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2590 if (UNTAG_Bool(REGB0)) {
2591 } else {
2592 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2593 if (UNTAG_Bool(REGB1)) {
2594 REGB1 = TAG_Bool(false);
2595 REGB0 = REGB1;
2596 } else {
2597 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2598 REGB0 = REGB1;
2599 }
2600 }
2601 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2602 if (UNTAG_Bool(REGB0)) {
2603 /* ./syntax//typing.nit:407 */
2604 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2605 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2606 if (UNTAG_Bool(REGB0)) {
2607 nit_abort("Reciever is null", NULL, LOCATE_typing, 407);
2608 }
2609 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2610 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2611 if (UNTAG_Bool(REGB0)) {
2612 goto label1;
2613 }
2614 /* ./syntax//typing.nit:408 */
2615 fra.me.REG[4] = CALL_parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2616 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2617 if (UNTAG_Bool(REGB0)) {
2618 nit_abort("Reciever is null", NULL, LOCATE_typing, 408);
2619 }
2620 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2621 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2622 /* ./syntax//typing.nit:409 */
2623 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2624 if (UNTAG_Bool(REGB0)) {
2625 } else {
2626 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2627 if (UNTAG_Bool(REGB1)) {
2628 REGB1 = TAG_Bool(false);
2629 REGB0 = REGB1;
2630 } else {
2631 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2632 REGB0 = REGB1;
2633 }
2634 }
2635 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2636 if (UNTAG_Bool(REGB0)) {
2637 /* ./syntax//typing.nit:410 */
2638 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2639 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2640 }
2641 } else {
2642 /* ./syntax//typing.nit:412 */
2643 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2644 if (UNTAG_Bool(REGB0)) {
2645 } else {
2646 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2647 if (UNTAG_Bool(REGB1)) {
2648 REGB1 = TAG_Bool(false);
2649 REGB0 = REGB1;
2650 } else {
2651 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2652 REGB0 = REGB1;
2653 }
2654 }
2655 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2656 if (UNTAG_Bool(REGB0)) {
2657 /* ./syntax//typing.nit:413 */
2658 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2659 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2660 if (UNTAG_Bool(REGB0)) {
2661 goto label1;
2662 }
2663 /* ./syntax//typing.nit:414 */
2664 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2665 if (UNTAG_Bool(REGB0)) {
2666 nit_abort("Reciever is null", NULL, LOCATE_typing, 414);
2667 }
2668 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2669 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2670 } else {
2671 /* ./syntax//typing.nit:416 */
2672 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2673 fra.me.REG[1] = CALL_static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2674 CALL_syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2675 }
2676 }
2677 /* ./syntax//typing.nit:418 */
2678 REGB0 = TAG_Bool(true);
2679 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2680 label1: while(0);
2681 stack_frame_head = fra.me.prev;
2682 return;
2683 }
2684 void typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2685 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2686 val_t REGB0;
2687 val_t tmp;
2688 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2689 fra.me.file = LOCATE_typing;
2690 fra.me.line = 423;
2691 fra.me.meth = LOCATE_typing___ABlockExpr___accept_typing;
2692 fra.me.has_broke = 0;
2693 fra.me.REG_size = 3;
2694 fra.me.REG[0] = NIT_NULL;
2695 fra.me.REG[1] = NIT_NULL;
2696 fra.me.REG[2] = NIT_NULL;
2697 fra.me.REG[0] = p0;
2698 fra.me.REG[1] = p1;
2699 /* ./syntax//typing.nit:425 */
2700 fra.me.REG[2] = CALL_parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2701 CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_typing___ABlockExpr___accept_typing_1));
2702 /* ./syntax//typing.nit:434 */
2703 REGB0 = TAG_Bool(true);
2704 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2705 stack_frame_head = fra.me.prev;
2706 return;
2707 }
2708 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){
2709 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2710 val_t REGB0;
2711 fun_t CREG[1];
2712 val_t tmp;
2713 static val_t once_value_2; /* Once value */
2714 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2715 fra.me.file = LOCATE_typing;
2716 fra.me.line = 0;
2717 fra.me.meth = LOCATE_typing___ABlockExpr___accept_typing;
2718 fra.me.has_broke = 0;
2719 fra.me.REG_size = 2;
2720 fra.me.REG[0] = NIT_NULL;
2721 fra.me.REG[1] = NIT_NULL;
2722 fra.me.closure_ctx = closctx_param;
2723 fra.me.closure_funs = CREG;
2724 fra.me.REG[0] = p0;
2725 CREG[0] = clos_fun0;
2726 /* ./syntax//typing.nit:426 */
2727 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2728 REGB0 = CALL_flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2729 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2730 if (UNTAG_Bool(REGB0)) {
2731 /* ./syntax//typing.nit:427 */
2732 CALL_parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2733 } else {
2734 /* ./syntax//typing.nit:428 */
2735 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2736 REGB0 = CALL_flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
2737 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2738 if (UNTAG_Bool(REGB0)) {
2739 /* ./syntax//typing.nit:429 */
2740 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2741 REGB0 = TAG_Bool(true);
2742 CALL_flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
2743 /* ./syntax//typing.nit:430 */
2744 if (!once_value_2) {
2745 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
2746 REGB0 = TAG_Int(29);
2747 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
2748 once_value_2 = fra.me.REG[1];
2749 register_static_object(&once_value_2);
2750 } else fra.me.REG[1] = once_value_2;
2751 fra.me.REG[1] = fra.me.REG[1];
2752 CALL_syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
2753 }
2754 }
2755 stack_frame_head = fra.me.prev;
2756 return;
2757 }
2758 void typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2759 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2760 val_t REGB0;
2761 val_t REGB1;
2762 val_t tmp;
2763 static val_t once_value_1; /* Once value */
2764 static val_t once_value_3; /* Once value */
2765 static val_t once_value_4; /* Once value */
2766 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2767 fra.me.file = LOCATE_typing;
2768 fra.me.line = 439;
2769 fra.me.meth = LOCATE_typing___AReturnExpr___after_typing;
2770 fra.me.has_broke = 0;
2771 fra.me.REG_size = 5;
2772 fra.me.REG[0] = NIT_NULL;
2773 fra.me.REG[1] = NIT_NULL;
2774 fra.me.REG[2] = NIT_NULL;
2775 fra.me.REG[3] = NIT_NULL;
2776 fra.me.REG[4] = NIT_NULL;
2777 fra.me.REG[0] = p0;
2778 fra.me.REG[1] = p1;
2779 /* ./syntax//typing.nit:441 */
2780 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2781 /* ./syntax//typing.nit:442 */
2782 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2783 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2784 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2785 if (UNTAG_Bool(REGB0)) {
2786 nit_abort("Reciever is null", NULL, LOCATE_typing, 442);
2787 }
2788 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2789 /* ./syntax//typing.nit:444 */
2790 REGB0 = CALL_typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
2791 if (UNTAG_Bool(REGB0)) {
2792 /* ./syntax//typing.nit:445 */
2793 if (!once_value_1) {
2794 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
2795 REGB0 = TAG_Int(82);
2796 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2797 once_value_1 = fra.me.REG[3];
2798 register_static_object(&once_value_1);
2799 } else fra.me.REG[3] = once_value_1;
2800 fra.me.REG[3] = fra.me.REG[3];
2801 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2802 /* ./syntax//typing.nit:446 */
2803 goto label2;
2804 }
2805 /* ./syntax//typing.nit:449 */
2806 fra.me.REG[3] = CALL_parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2807 /* ./syntax//typing.nit:450 */
2808 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2809 if (UNTAG_Bool(REGB0)) {
2810 } else {
2811 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2812 if (UNTAG_Bool(REGB1)) {
2813 REGB1 = TAG_Bool(false);
2814 REGB0 = REGB1;
2815 } else {
2816 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2817 REGB0 = REGB1;
2818 }
2819 }
2820 if (UNTAG_Bool(REGB0)) {
2821 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2822 if (UNTAG_Bool(REGB0)) {
2823 } else {
2824 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2825 if (UNTAG_Bool(REGB1)) {
2826 REGB1 = TAG_Bool(false);
2827 REGB0 = REGB1;
2828 } else {
2829 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2830 REGB0 = REGB1;
2831 }
2832 }
2833 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2834 } else {
2835 REGB1 = TAG_Bool(false);
2836 REGB0 = REGB1;
2837 }
2838 if (UNTAG_Bool(REGB0)) {
2839 /* ./syntax//typing.nit:451 */
2840 if (!once_value_3) {
2841 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2842 REGB0 = TAG_Int(42);
2843 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2844 once_value_3 = fra.me.REG[4];
2845 register_static_object(&once_value_3);
2846 } else fra.me.REG[4] = once_value_3;
2847 fra.me.REG[4] = fra.me.REG[4];
2848 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2849 } else {
2850 /* ./syntax//typing.nit:452 */
2851 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2852 if (UNTAG_Bool(REGB0)) {
2853 } else {
2854 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2855 if (UNTAG_Bool(REGB1)) {
2856 REGB1 = TAG_Bool(false);
2857 REGB0 = REGB1;
2858 } else {
2859 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2860 REGB0 = REGB1;
2861 }
2862 }
2863 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2864 if (UNTAG_Bool(REGB0)) {
2865 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2866 if (UNTAG_Bool(REGB0)) {
2867 } else {
2868 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2869 if (UNTAG_Bool(REGB1)) {
2870 REGB1 = TAG_Bool(false);
2871 REGB0 = REGB1;
2872 } else {
2873 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2874 REGB0 = REGB1;
2875 }
2876 }
2877 } else {
2878 REGB1 = TAG_Bool(false);
2879 REGB0 = REGB1;
2880 }
2881 if (UNTAG_Bool(REGB0)) {
2882 /* ./syntax//typing.nit:453 */
2883 if (!once_value_4) {
2884 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
2885 REGB0 = TAG_Int(40);
2886 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
2887 once_value_4 = fra.me.REG[4];
2888 register_static_object(&once_value_4);
2889 } else fra.me.REG[4] = once_value_4;
2890 fra.me.REG[4] = fra.me.REG[4];
2891 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2892 } else {
2893 /* ./syntax//typing.nit:454 */
2894 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2895 if (UNTAG_Bool(REGB0)) {
2896 } else {
2897 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2898 if (UNTAG_Bool(REGB1)) {
2899 REGB1 = TAG_Bool(false);
2900 REGB0 = REGB1;
2901 } else {
2902 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2903 REGB0 = REGB1;
2904 }
2905 }
2906 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2907 if (UNTAG_Bool(REGB0)) {
2908 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2909 if (UNTAG_Bool(REGB0)) {
2910 } else {
2911 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2912 if (UNTAG_Bool(REGB1)) {
2913 REGB1 = TAG_Bool(false);
2914 REGB0 = REGB1;
2915 } else {
2916 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2917 REGB0 = REGB1;
2918 }
2919 }
2920 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2921 } else {
2922 REGB1 = TAG_Bool(false);
2923 REGB0 = REGB1;
2924 }
2925 if (UNTAG_Bool(REGB0)) {
2926 /* ./syntax//typing.nit:455 */
2927 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2928 }
2929 }
2930 }
2931 /* ./syntax//typing.nit:457 */
2932 REGB0 = TAG_Bool(true);
2933 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2934 label2: while(0);
2935 stack_frame_head = fra.me.prev;
2936 return;
2937 }
2938 void typing___AContinueExpr___after_typing(val_t p0, val_t p1){
2939 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2940 val_t REGB0;
2941 val_t REGB1;
2942 val_t tmp;
2943 static val_t once_value_2; /* Once value */
2944 static val_t once_value_3; /* Once value */
2945 static val_t once_value_4; /* Once value */
2946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2947 fra.me.file = LOCATE_typing;
2948 fra.me.line = 462;
2949 fra.me.meth = LOCATE_typing___AContinueExpr___after_typing;
2950 fra.me.has_broke = 0;
2951 fra.me.REG_size = 4;
2952 fra.me.REG[0] = NIT_NULL;
2953 fra.me.REG[1] = NIT_NULL;
2954 fra.me.REG[2] = NIT_NULL;
2955 fra.me.REG[3] = NIT_NULL;
2956 fra.me.REG[0] = p0;
2957 fra.me.REG[1] = p1;
2958 /* ./syntax//typing.nit:464 */
2959 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2960 /* ./syntax//typing.nit:465 */
2961 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2962 fra.me.REG[2] = CALL_scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2963 /* ./syntax//typing.nit:466 */
2964 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2965 if (UNTAG_Bool(REGB0)) {
2966 } else {
2967 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2968 if (UNTAG_Bool(REGB1)) {
2969 REGB1 = TAG_Bool(false);
2970 REGB0 = REGB1;
2971 } else {
2972 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2973 REGB0 = REGB1;
2974 }
2975 }
2976 if (UNTAG_Bool(REGB0)) {
2977 goto label1;
2978 }
2979 /* ./syntax//typing.nit:468 */
2980 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2981 if (UNTAG_Bool(REGB0)) {
2982 nit_abort("Reciever is null", NULL, LOCATE_typing, 468);
2983 }
2984 REGB0 = CALL_scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
2985 if (UNTAG_Bool(REGB0)) {
2986 /* ./syntax//typing.nit:469 */
2987 if (!once_value_2) {
2988 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
2989 REGB0 = TAG_Int(39);
2990 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
2991 once_value_2 = fra.me.REG[3];
2992 register_static_object(&once_value_2);
2993 } else fra.me.REG[3] = once_value_2;
2994 fra.me.REG[3] = fra.me.REG[3];
2995 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2996 /* ./syntax//typing.nit:470 */
2997 goto label1;
2998 }
2999 /* ./syntax//typing.nit:473 */
3000 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3001 if (UNTAG_Bool(REGB0)) {
3002 nit_abort("Reciever is null", NULL, LOCATE_typing, 473);
3003 }
3004 fra.me.REG[2] = CALL_scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3005 /* ./syntax//typing.nit:474 */
3006 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3007 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3008 if (UNTAG_Bool(REGB0)) {
3009 } else {
3010 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3011 if (UNTAG_Bool(REGB1)) {
3012 REGB1 = TAG_Bool(false);
3013 REGB0 = REGB1;
3014 } else {
3015 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3016 REGB0 = REGB1;
3017 }
3018 }
3019 if (UNTAG_Bool(REGB0)) {
3020 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3021 if (UNTAG_Bool(REGB0)) {
3022 } else {
3023 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3024 if (UNTAG_Bool(REGB1)) {
3025 REGB1 = TAG_Bool(false);
3026 REGB0 = REGB1;
3027 } else {
3028 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3029 REGB0 = REGB1;
3030 }
3031 }
3032 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3033 } else {
3034 REGB1 = TAG_Bool(false);
3035 REGB0 = REGB1;
3036 }
3037 if (UNTAG_Bool(REGB0)) {
3038 /* ./syntax//typing.nit:475 */
3039 if (!once_value_3) {
3040 fra.me.REG[3] = BOX_NativeString("Error: continue with a value required in this block.");
3041 REGB0 = TAG_Int(52);
3042 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3043 once_value_3 = fra.me.REG[3];
3044 register_static_object(&once_value_3);
3045 } else fra.me.REG[3] = once_value_3;
3046 fra.me.REG[3] = fra.me.REG[3];
3047 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3048 } else {
3049 /* ./syntax//typing.nit:476 */
3050 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3051 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3052 if (UNTAG_Bool(REGB0)) {
3053 } else {
3054 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3055 if (UNTAG_Bool(REGB1)) {
3056 REGB1 = TAG_Bool(false);
3057 REGB0 = REGB1;
3058 } else {
3059 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3060 REGB0 = REGB1;
3061 }
3062 }
3063 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3064 if (UNTAG_Bool(REGB0)) {
3065 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3066 if (UNTAG_Bool(REGB0)) {
3067 } else {
3068 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3069 if (UNTAG_Bool(REGB1)) {
3070 REGB1 = TAG_Bool(false);
3071 REGB0 = REGB1;
3072 } else {
3073 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3074 REGB0 = REGB1;
3075 }
3076 }
3077 } else {
3078 REGB1 = TAG_Bool(false);
3079 REGB0 = REGB1;
3080 }
3081 if (UNTAG_Bool(REGB0)) {
3082 /* ./syntax//typing.nit:477 */
3083 if (!once_value_4) {
3084 fra.me.REG[3] = BOX_NativeString("Error: continue without value required in this block.");
3085 REGB0 = TAG_Int(53);
3086 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3087 once_value_4 = fra.me.REG[3];
3088 register_static_object(&once_value_4);
3089 } else fra.me.REG[3] = once_value_4;
3090 fra.me.REG[3] = fra.me.REG[3];
3091 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3092 } else {
3093 /* ./syntax//typing.nit:478 */
3094 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3095 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3096 if (UNTAG_Bool(REGB0)) {
3097 } else {
3098 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3099 if (UNTAG_Bool(REGB1)) {
3100 REGB1 = TAG_Bool(false);
3101 REGB0 = REGB1;
3102 } else {
3103 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3104 REGB0 = REGB1;
3105 }
3106 }
3107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3108 if (UNTAG_Bool(REGB0)) {
3109 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3110 if (UNTAG_Bool(REGB0)) {
3111 } else {
3112 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3113 if (UNTAG_Bool(REGB1)) {
3114 REGB1 = TAG_Bool(false);
3115 REGB0 = REGB1;
3116 } else {
3117 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3118 REGB0 = REGB1;
3119 }
3120 }
3121 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3122 } else {
3123 REGB1 = TAG_Bool(false);
3124 REGB0 = REGB1;
3125 }
3126 if (UNTAG_Bool(REGB0)) {
3127 /* ./syntax//typing.nit:479 */
3128 fra.me.REG[3] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3129 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3130 if (UNTAG_Bool(REGB0)) {
3131 } else {
3132 nit_abort("Cast failed", NULL, LOCATE_typing, 479);
3133 }
3134 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3135 }
3136 }
3137 }
3138 /* ./syntax//typing.nit:481 */
3139 REGB0 = TAG_Bool(true);
3140 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3141 label1: while(0);
3142 stack_frame_head = fra.me.prev;
3143 return;
3144 }
3145 void typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3146 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3147 val_t REGB0;
3148 val_t REGB1;
3149 val_t tmp;
3150 static val_t once_value_2; /* Once value */
3151 static val_t once_value_3; /* Once value */
3152 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3153 fra.me.file = LOCATE_typing;
3154 fra.me.line = 486;
3155 fra.me.meth = LOCATE_typing___ABreakExpr___after_typing;
3156 fra.me.has_broke = 0;
3157 fra.me.REG_size = 5;
3158 fra.me.REG[0] = NIT_NULL;
3159 fra.me.REG[1] = NIT_NULL;
3160 fra.me.REG[2] = NIT_NULL;
3161 fra.me.REG[3] = NIT_NULL;
3162 fra.me.REG[4] = NIT_NULL;
3163 fra.me.REG[0] = p0;
3164 fra.me.REG[1] = p1;
3165 /* ./syntax//typing.nit:488 */
3166 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3167 /* ./syntax//typing.nit:489 */
3168 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3169 /* ./syntax//typing.nit:490 */
3170 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3171 fra.me.REG[3] = CALL_scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3172 /* ./syntax//typing.nit:491 */
3173 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3174 if (UNTAG_Bool(REGB0)) {
3175 } else {
3176 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3177 if (UNTAG_Bool(REGB1)) {
3178 REGB1 = TAG_Bool(false);
3179 REGB0 = REGB1;
3180 } else {
3181 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3182 REGB0 = REGB1;
3183 }
3184 }
3185 if (UNTAG_Bool(REGB0)) {
3186 goto label1;
3187 }
3188 /* ./syntax//typing.nit:493 */
3189 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3190 if (UNTAG_Bool(REGB0)) {
3191 nit_abort("Reciever is null", NULL, LOCATE_typing, 493);
3192 }
3193 fra.me.REG[4] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3194 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3195 /* ./syntax//typing.nit:495 */
3196 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3197 if (UNTAG_Bool(REGB0)) {
3198 nit_abort("Reciever is null", NULL, LOCATE_typing, 495);
3199 }
3200 fra.me.REG[3] = CALL_scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3201 /* ./syntax//typing.nit:496 */
3202 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3203 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3204 if (UNTAG_Bool(REGB0)) {
3205 } else {
3206 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3207 if (UNTAG_Bool(REGB1)) {
3208 REGB1 = TAG_Bool(false);
3209 REGB0 = REGB1;
3210 } else {
3211 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3212 REGB0 = REGB1;
3213 }
3214 }
3215 if (UNTAG_Bool(REGB0)) {
3216 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3217 if (UNTAG_Bool(REGB0)) {
3218 } else {
3219 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3220 if (UNTAG_Bool(REGB1)) {
3221 REGB1 = TAG_Bool(false);
3222 REGB0 = REGB1;
3223 } else {
3224 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3225 REGB0 = REGB1;
3226 }
3227 }
3228 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3229 } else {
3230 REGB1 = TAG_Bool(false);
3231 REGB0 = REGB1;
3232 }
3233 if (UNTAG_Bool(REGB0)) {
3234 /* ./syntax//typing.nit:497 */
3235 if (!once_value_2) {
3236 fra.me.REG[2] = BOX_NativeString("Error: break with a value required in this block.");
3237 REGB0 = TAG_Int(49);
3238 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3239 once_value_2 = fra.me.REG[2];
3240 register_static_object(&once_value_2);
3241 } else fra.me.REG[2] = once_value_2;
3242 fra.me.REG[2] = fra.me.REG[2];
3243 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3244 } else {
3245 /* ./syntax//typing.nit:498 */
3246 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3247 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3248 if (UNTAG_Bool(REGB0)) {
3249 } else {
3250 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3251 if (UNTAG_Bool(REGB1)) {
3252 REGB1 = TAG_Bool(false);
3253 REGB0 = REGB1;
3254 } else {
3255 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3256 REGB0 = REGB1;
3257 }
3258 }
3259 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3260 if (UNTAG_Bool(REGB0)) {
3261 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3262 if (UNTAG_Bool(REGB0)) {
3263 } else {
3264 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3265 if (UNTAG_Bool(REGB1)) {
3266 REGB1 = TAG_Bool(false);
3267 REGB0 = REGB1;
3268 } else {
3269 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3270 REGB0 = REGB1;
3271 }
3272 }
3273 } else {
3274 REGB1 = TAG_Bool(false);
3275 REGB0 = REGB1;
3276 }
3277 if (UNTAG_Bool(REGB0)) {
3278 /* ./syntax//typing.nit:499 */
3279 if (!once_value_3) {
3280 fra.me.REG[2] = BOX_NativeString("Error: break without value required in this block.");
3281 REGB0 = TAG_Int(50);
3282 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
3283 once_value_3 = fra.me.REG[2];
3284 register_static_object(&once_value_3);
3285 } else fra.me.REG[2] = once_value_3;
3286 fra.me.REG[2] = fra.me.REG[2];
3287 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3288 } else {
3289 /* ./syntax//typing.nit:500 */
3290 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3291 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3292 if (UNTAG_Bool(REGB0)) {
3293 } else {
3294 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3295 if (UNTAG_Bool(REGB1)) {
3296 REGB1 = TAG_Bool(false);
3297 REGB0 = REGB1;
3298 } else {
3299 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3300 REGB0 = REGB1;
3301 }
3302 }
3303 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3304 if (UNTAG_Bool(REGB0)) {
3305 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3306 if (UNTAG_Bool(REGB0)) {
3307 } else {
3308 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3309 if (UNTAG_Bool(REGB1)) {
3310 REGB1 = TAG_Bool(false);
3311 REGB0 = REGB1;
3312 } else {
3313 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3314 REGB0 = REGB1;
3315 }
3316 }
3317 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3318 } else {
3319 REGB1 = TAG_Bool(false);
3320 REGB0 = REGB1;
3321 }
3322 if (UNTAG_Bool(REGB0)) {
3323 /* ./syntax//typing.nit:502 */
3324 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3325 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AExpr, ID_AExpr)) /*cast AExpr*/;
3326 if (UNTAG_Bool(REGB0)) {
3327 } else {
3328 nit_abort("Cast failed", NULL, LOCATE_typing, 502);
3329 }
3330 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3331 if (UNTAG_Bool(REGB0)) {
3332 nit_abort("Reciever is null", NULL, LOCATE_typing, 502);
3333 }
3334 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3335 }
3336 }
3337 }
3338 /* ./syntax//typing.nit:504 */
3339 REGB0 = TAG_Bool(true);
3340 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3341 label1: while(0);
3342 stack_frame_head = fra.me.prev;
3343 return;
3344 }
3345 void typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3346 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3347 val_t REGB0;
3348 val_t tmp;
3349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3350 fra.me.file = LOCATE_typing;
3351 fra.me.line = 509;
3352 fra.me.meth = LOCATE_typing___AAbortExpr___after_typing;
3353 fra.me.has_broke = 0;
3354 fra.me.REG_size = 2;
3355 fra.me.REG[0] = NIT_NULL;
3356 fra.me.REG[1] = NIT_NULL;
3357 fra.me.REG[0] = p0;
3358 fra.me.REG[1] = p1;
3359 /* ./syntax//typing.nit:511 */
3360 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3361 /* ./syntax//typing.nit:512 */
3362 REGB0 = TAG_Bool(true);
3363 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3364 stack_frame_head = fra.me.prev;
3365 return;
3366 }
3367 val_t typing___AAbsControl___escapable(val_t p0){
3368 struct {struct stack_frame_t me;} fra;
3369 val_t tmp;
3370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3371 fra.me.file = LOCATE_typing;
3372 fra.me.line = 519;
3373 fra.me.meth = LOCATE_typing___AAbsControl___escapable;
3374 fra.me.has_broke = 0;
3375 fra.me.REG_size = 1;
3376 fra.me.REG[0] = NIT_NULL;
3377 fra.me.REG[0] = p0;
3378 /* ./syntax//typing.nit:519 */
3379 fra.me.REG[0] = ATTR_typing___AAbsControl____escapable(fra.me.REG[0]);
3380 stack_frame_head = fra.me.prev;
3381 return fra.me.REG[0];
3382 }
3383 void typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3384 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3385 val_t REGB0;
3386 val_t REGB1;
3387 val_t tmp;
3388 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3389 fra.me.file = LOCATE_typing;
3390 fra.me.line = 522;
3391 fra.me.meth = LOCATE_typing___AAbsControl___process_control;
3392 fra.me.has_broke = 0;
3393 fra.me.REG_size = 7;
3394 fra.me.REG[0] = NIT_NULL;
3395 fra.me.REG[1] = NIT_NULL;
3396 fra.me.REG[2] = NIT_NULL;
3397 fra.me.REG[3] = NIT_NULL;
3398 fra.me.REG[4] = NIT_NULL;
3399 fra.me.REG[5] = NIT_NULL;
3400 fra.me.REG[6] = NIT_NULL;
3401 fra.me.REG[0] = p0;
3402 fra.me.REG[1] = p1;
3403 fra.me.REG[2] = p2;
3404 fra.me.REG[3] = p3;
3405 REGB0 = p4;
3406 /* ./syntax//typing.nit:526 */
3407 ATTR_typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3408 /* ./syntax//typing.nit:527 */
3409 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3410 CALL_scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3411 /* ./syntax//typing.nit:530 */
3412 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3413 /* ./syntax//typing.nit:531 */
3414 fra.me.REG[4] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3415 /* ./syntax//typing.nit:532 */
3416 if (UNTAG_Bool(REGB0)) {
3417 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3418 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3419 }
3420 /* ./syntax//typing.nit:535 */
3421 CALL_typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3422 /* ./syntax//typing.nit:538 */
3423 fra.me.REG[5] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3424 REGB1 = CALL_flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3425 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3426 if (UNTAG_Bool(REGB1)) {
3427 /* ./syntax//typing.nit:539 */
3428 fra.me.REG[5] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3429 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3430 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3431 }
3432 /* ./syntax//typing.nit:543 */
3433 fra.me.REG[6] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3434 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3435 if (UNTAG_Bool(REGB1)) {
3436 /* ./syntax//typing.nit:544 */
3437 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3438 /* ./syntax//typing.nit:545 */
3439 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3440 } else {
3441 /* ./syntax//typing.nit:547 */
3442 fra.me.REG[2] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3443 fra.me.REG[2] = CALL_flow___FlowContext___merge(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[2]);
3444 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3445 }
3446 /* ./syntax//typing.nit:550 */
3447 if (UNTAG_Bool(REGB0)) {
3448 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3449 }
3450 /* ./syntax//typing.nit:551 */
3451 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3452 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3453 /* ./syntax//typing.nit:552 */
3454 REGB0 = TAG_Bool(true);
3455 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3456 stack_frame_head = fra.me.prev;
3457 return;
3458 }
3459 void typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3460 struct {struct stack_frame_t me;} fra;
3461 val_t tmp;
3462 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3463 fra.me.file = LOCATE_typing;
3464 fra.me.line = 555;
3465 fra.me.meth = LOCATE_typing___AAbsControl___process_control_inside;
3466 fra.me.has_broke = 0;
3467 fra.me.REG_size = 0;
3468 /* ./syntax//typing.nit:555 */
3469 nit_abort("Deferred method called", NULL, LOCATE_typing, 555);
3470 stack_frame_head = fra.me.prev;
3471 return;
3472 }
3473 void typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3474 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3475 val_t REGB0;
3476 val_t tmp;
3477 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3478 fra.me.file = LOCATE_typing;
3479 fra.me.line = 561;
3480 fra.me.meth = LOCATE_typing___ADoExpr___accept_typing;
3481 fra.me.has_broke = 0;
3482 fra.me.REG_size = 4;
3483 fra.me.REG[0] = NIT_NULL;
3484 fra.me.REG[1] = NIT_NULL;
3485 fra.me.REG[2] = NIT_NULL;
3486 fra.me.REG[3] = NIT_NULL;
3487 fra.me.REG[0] = p0;
3488 fra.me.REG[1] = p1;
3489 /* ./syntax//typing.nit:563 */
3490 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3491 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3492 REGB0 = TAG_Bool(false);
3493 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);
3494 stack_frame_head = fra.me.prev;
3495 return;
3496 }
3497 void typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3498 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3499 val_t tmp;
3500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3501 fra.me.file = LOCATE_typing;
3502 fra.me.line = 566;
3503 fra.me.meth = LOCATE_typing___ADoExpr___process_control_inside;
3504 fra.me.has_broke = 0;
3505 fra.me.REG_size = 2;
3506 fra.me.REG[0] = NIT_NULL;
3507 fra.me.REG[1] = NIT_NULL;
3508 fra.me.REG[0] = p0;
3509 fra.me.REG[1] = p1;
3510 /* ./syntax//typing.nit:568 */
3511 fra.me.REG[0] = CALL_parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3512 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3513 stack_frame_head = fra.me.prev;
3514 return;
3515 }
3516 void typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3517 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3518 val_t REGB0;
3519 val_t tmp;
3520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3521 fra.me.file = LOCATE_typing;
3522 fra.me.line = 573;
3523 fra.me.meth = LOCATE_typing___AIfExpr___accept_typing;
3524 fra.me.has_broke = 0;
3525 fra.me.REG_size = 5;
3526 fra.me.REG[0] = NIT_NULL;
3527 fra.me.REG[1] = NIT_NULL;
3528 fra.me.REG[2] = NIT_NULL;
3529 fra.me.REG[3] = NIT_NULL;
3530 fra.me.REG[4] = NIT_NULL;
3531 fra.me.REG[0] = p0;
3532 fra.me.REG[1] = p1;
3533 /* ./syntax//typing.nit:575 */
3534 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3535 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3536 /* ./syntax//typing.nit:576 */
3537 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3538 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3539 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3540 /* ./syntax//typing.nit:579 */
3541 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3542 /* ./syntax//typing.nit:580 */
3543 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3544 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3545 /* ./syntax//typing.nit:583 */
3546 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3547 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3548 /* ./syntax//typing.nit:586 */
3549 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3550 /* ./syntax//typing.nit:589 */
3551 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3552 /* ./syntax//typing.nit:590 */
3553 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3554 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3555 /* ./syntax//typing.nit:593 */
3556 fra.me.REG[3] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3557 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3558 /* ./syntax//typing.nit:596 */
3559 fra.me.REG[3] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3560 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3561 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]);
3562 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3563 /* ./syntax//typing.nit:597 */
3564 REGB0 = TAG_Bool(true);
3565 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3566 stack_frame_head = fra.me.prev;
3567 return;
3568 }
3569 void typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3570 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3571 val_t REGB0;
3572 val_t tmp;
3573 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3574 fra.me.file = LOCATE_typing;
3575 fra.me.line = 603;
3576 fra.me.meth = LOCATE_typing___AWhileExpr___accept_typing;
3577 fra.me.has_broke = 0;
3578 fra.me.REG_size = 4;
3579 fra.me.REG[0] = NIT_NULL;
3580 fra.me.REG[1] = NIT_NULL;
3581 fra.me.REG[2] = NIT_NULL;
3582 fra.me.REG[3] = NIT_NULL;
3583 fra.me.REG[0] = p0;
3584 fra.me.REG[1] = p1;
3585 /* ./syntax//typing.nit:605 */
3586 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3587 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3588 REGB0 = TAG_Bool(true);
3589 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);
3590 stack_frame_head = fra.me.prev;
3591 return;
3592 }
3593 void typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3594 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3595 val_t REGB0;
3596 val_t tmp;
3597 static val_t once_value_1; /* Once value */
3598 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3599 fra.me.file = LOCATE_typing;
3600 fra.me.line = 608;
3601 fra.me.meth = LOCATE_typing___AWhileExpr___process_control_inside;
3602 fra.me.has_broke = 0;
3603 fra.me.REG_size = 5;
3604 fra.me.REG[0] = NIT_NULL;
3605 fra.me.REG[1] = NIT_NULL;
3606 fra.me.REG[2] = NIT_NULL;
3607 fra.me.REG[3] = NIT_NULL;
3608 fra.me.REG[4] = NIT_NULL;
3609 fra.me.REG[0] = p0;
3610 fra.me.REG[1] = p1;
3611 /* ./syntax//typing.nit:610 */
3612 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3613 /* ./syntax//typing.nit:613 */
3614 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3615 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3616 /* ./syntax//typing.nit:614 */
3617 fra.me.REG[3] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3618 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3619 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3620 /* ./syntax//typing.nit:616 */
3621 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3622 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_ATrueExpr, ID_ATrueExpr)) /*cast ATrueExpr*/;
3623 if (UNTAG_Bool(REGB0)) {
3624 /* ./syntax//typing.nit:617 */
3625 if (!once_value_1) {
3626 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3627 REGB0 = TAG_Int(47);
3628 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3629 once_value_1 = fra.me.REG[4];
3630 register_static_object(&once_value_1);
3631 } else fra.me.REG[4] = once_value_1;
3632 fra.me.REG[4] = fra.me.REG[4];
3633 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3634 }
3635 /* ./syntax//typing.nit:621 */
3636 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3637 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3638 /* ./syntax//typing.nit:624 */
3639 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3640 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3641 /* ./syntax//typing.nit:627 */
3642 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3643 /* ./syntax//typing.nit:628 */
3644 fra.me.REG[2] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3645 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3646 /* ./syntax//typing.nit:629 */
3647 fra.me.REG[0] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3648 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3649 if (UNTAG_Bool(REGB0)) {
3650 nit_abort("Reciever is null", NULL, LOCATE_typing, 629);
3651 }
3652 fra.me.REG[0] = CALL_scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3653 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3654 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3655 stack_frame_head = fra.me.prev;
3656 return;
3657 }
3658 void typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3659 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3660 val_t REGB0;
3661 val_t tmp;
3662 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3663 fra.me.file = LOCATE_typing;
3664 fra.me.line = 635;
3665 fra.me.meth = LOCATE_typing___ALoopExpr___accept_typing;
3666 fra.me.has_broke = 0;
3667 fra.me.REG_size = 4;
3668 fra.me.REG[0] = NIT_NULL;
3669 fra.me.REG[1] = NIT_NULL;
3670 fra.me.REG[2] = NIT_NULL;
3671 fra.me.REG[3] = NIT_NULL;
3672 fra.me.REG[0] = p0;
3673 fra.me.REG[1] = p1;
3674 /* ./syntax//typing.nit:637 */
3675 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3676 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3677 REGB0 = TAG_Bool(true);
3678 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);
3679 stack_frame_head = fra.me.prev;
3680 return;
3681 }
3682 void typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
3683 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3684 val_t tmp;
3685 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3686 fra.me.file = LOCATE_typing;
3687 fra.me.line = 640;
3688 fra.me.meth = LOCATE_typing___ALoopExpr___process_control_inside;
3689 fra.me.has_broke = 0;
3690 fra.me.REG_size = 3;
3691 fra.me.REG[0] = NIT_NULL;
3692 fra.me.REG[1] = NIT_NULL;
3693 fra.me.REG[2] = NIT_NULL;
3694 fra.me.REG[0] = p0;
3695 fra.me.REG[1] = p1;
3696 /* ./syntax//typing.nit:643 */
3697 fra.me.REG[2] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3698 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3699 /* ./syntax//typing.nit:646 */
3700 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3701 stack_frame_head = fra.me.prev;
3702 return;
3703 }
3704 val_t typing___AForExpr___variable(val_t p0){
3705 struct {struct stack_frame_t me;} fra;
3706 val_t REGB0;
3707 val_t tmp;
3708 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3709 fra.me.file = LOCATE_typing;
3710 fra.me.line = 653;
3711 fra.me.meth = LOCATE_typing___AForExpr___variable;
3712 fra.me.has_broke = 0;
3713 fra.me.REG_size = 1;
3714 fra.me.REG[0] = NIT_NULL;
3715 fra.me.REG[0] = p0;
3716 /* ./syntax//typing.nit:653 */
3717 fra.me.REG[0] = ATTR_typing___AForExpr____variable(fra.me.REG[0]);
3718 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3719 if (UNTAG_Bool(REGB0)) {
3720 } else {
3721 nit_abort("Cast failed", NULL, LOCATE_typing, 653);
3722 }
3723 goto label1;
3724 label1: while(0);
3725 stack_frame_head = fra.me.prev;
3726 return fra.me.REG[0];
3727 }
3728 void typing___AForExpr___accept_typing(val_t p0, val_t p1){
3729 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3730 val_t REGB0;
3731 val_t tmp;
3732 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3733 fra.me.file = LOCATE_typing;
3734 fra.me.line = 655;
3735 fra.me.meth = LOCATE_typing___AForExpr___accept_typing;
3736 fra.me.has_broke = 0;
3737 fra.me.REG_size = 4;
3738 fra.me.REG[0] = NIT_NULL;
3739 fra.me.REG[1] = NIT_NULL;
3740 fra.me.REG[2] = NIT_NULL;
3741 fra.me.REG[3] = NIT_NULL;
3742 fra.me.REG[0] = p0;
3743 fra.me.REG[1] = p1;
3744 /* ./syntax//typing.nit:657 */
3745 fra.me.REG[2] = NEW_EscapableBlock_scope___EscapableBlock___init(fra.me.REG[0]);
3746 fra.me.REG[3] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3747 REGB0 = TAG_Bool(true);
3748 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);
3749 stack_frame_head = fra.me.prev;
3750 return;
3751 }
3752 void typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3753 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3754 val_t REGB0;
3755 val_t tmp;
3756 static val_t once_value_2; /* Once value */
3757 static val_t once_value_3; /* Once value */
3758 static val_t once_value_4; /* Once value */
3759 static val_t once_value_5; /* Once value */
3760 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3761 fra.me.file = LOCATE_typing;
3762 fra.me.line = 660;
3763 fra.me.meth = LOCATE_typing___AForExpr___process_control_inside;
3764 fra.me.has_broke = 0;
3765 fra.me.REG_size = 6;
3766 fra.me.REG[0] = NIT_NULL;
3767 fra.me.REG[1] = NIT_NULL;
3768 fra.me.REG[2] = NIT_NULL;
3769 fra.me.REG[3] = NIT_NULL;
3770 fra.me.REG[4] = NIT_NULL;
3771 fra.me.REG[5] = NIT_NULL;
3772 fra.me.REG[0] = p0;
3773 fra.me.REG[1] = p1;
3774 /* ./syntax//typing.nit:662 */
3775 fra.me.REG[2] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3776 CALL_scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3777 /* ./syntax//typing.nit:663 */
3778 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3779 /* ./syntax//typing.nit:666 */
3780 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3781 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3782 fra.me.REG[4] = CALL_parser_nodes___AForExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3783 fra.me.REG[4] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[3], fra.me.REG[4]);
3784 /* ./syntax//typing.nit:667 */
3785 ATTR_typing___AForExpr____variable(fra.me.REG[0]) = fra.me.REG[4];
3786 /* ./syntax//typing.nit:668 */
3787 fra.me.REG[3] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3788 CALL_scope___ScopeContext___add_variable(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3789 /* ./syntax//typing.nit:671 */
3790 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3791 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3792 /* ./syntax//typing.nit:673 */
3793 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3794 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___type_collection(fra.me.REG[1])(fra.me.REG[1]);
3795 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
3796 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3797 if (UNTAG_Bool(REGB0)) {
3798 goto label1;
3799 }
3800 /* ./syntax//typing.nit:674 */
3801 fra.me.REG[5] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3802 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
3803 /* ./syntax//typing.nit:677 */
3804 if (!once_value_2) {
3805 if (!once_value_3) {
3806 fra.me.REG[3] = BOX_NativeString("iterator");
3807 REGB0 = TAG_Int(8);
3808 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3809 once_value_3 = fra.me.REG[3];
3810 register_static_object(&once_value_3);
3811 } else fra.me.REG[3] = once_value_3;
3812 fra.me.REG[3] = fra.me.REG[3];
3813 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3814 once_value_2 = fra.me.REG[3];
3815 register_static_object(&once_value_2);
3816 } else fra.me.REG[3] = once_value_2;
3817 fra.me.REG[3] = fra.me.REG[3];
3818 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]);
3819 /* ./syntax//typing.nit:678 */
3820 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3821 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
3822 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3823 if (UNTAG_Bool(REGB0)) {
3824 } else {
3825 nit_abort("Cast failed", NULL, LOCATE_typing, 678);
3826 }
3827 /* ./syntax//typing.nit:679 */
3828 if (!once_value_4) {
3829 if (!once_value_5) {
3830 fra.me.REG[3] = BOX_NativeString("item");
3831 REGB0 = TAG_Int(4);
3832 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
3833 once_value_5 = fra.me.REG[3];
3834 register_static_object(&once_value_5);
3835 } else fra.me.REG[3] = once_value_5;
3836 fra.me.REG[3] = fra.me.REG[3];
3837 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
3838 once_value_4 = fra.me.REG[3];
3839 register_static_object(&once_value_4);
3840 } else fra.me.REG[3] = once_value_4;
3841 fra.me.REG[3] = fra.me.REG[3];
3842 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]);
3843 /* ./syntax//typing.nit:680 */
3844 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3845 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
3846 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3847 if (UNTAG_Bool(REGB0)) {
3848 } else {
3849 nit_abort("Cast failed", NULL, LOCATE_typing, 680);
3850 }
3851 /* ./syntax//typing.nit:681 */
3852 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3853 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
3854 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3855 if (UNTAG_Bool(REGB0)) {
3856 fra.me.REG[3] = CALL_static_type___MMType___not_for_self(fra.me.REG[5])(fra.me.REG[5]);
3857 fra.me.REG[5] = fra.me.REG[3];
3858 }
3859 /* ./syntax//typing.nit:682 */
3860 CALL_syntax_base___Variable___stype__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3861 /* ./syntax//typing.nit:685 */
3862 fra.me.REG[0] = CALL_parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3863 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3864 /* ./syntax//typing.nit:688 */
3865 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3866 /* ./syntax//typing.nit:689 */
3867 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3868 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3869 label1: while(0);
3870 stack_frame_head = fra.me.prev;
3871 return;
3872 }
3873 void typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
3874 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3875 val_t REGB0;
3876 val_t REGB1;
3877 val_t tmp;
3878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3879 fra.me.file = LOCATE_typing;
3880 fra.me.line = 694;
3881 fra.me.meth = LOCATE_typing___AAssertExpr___accept_typing;
3882 fra.me.has_broke = 0;
3883 fra.me.REG_size = 4;
3884 fra.me.REG[0] = NIT_NULL;
3885 fra.me.REG[1] = NIT_NULL;
3886 fra.me.REG[2] = NIT_NULL;
3887 fra.me.REG[3] = NIT_NULL;
3888 fra.me.REG[0] = p0;
3889 fra.me.REG[1] = p1;
3890 /* ./syntax//typing.nit:697 */
3891 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3892 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3893 /* ./syntax//typing.nit:698 */
3894 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3895 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3896 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3897 /* ./syntax//typing.nit:701 */
3898 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3899 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3900 if (UNTAG_Bool(REGB0)) {
3901 } else {
3902 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3903 if (UNTAG_Bool(REGB1)) {
3904 REGB1 = TAG_Bool(false);
3905 REGB0 = REGB1;
3906 } else {
3907 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3908 REGB0 = REGB1;
3909 }
3910 }
3911 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3912 if (UNTAG_Bool(REGB0)) {
3913 /* ./syntax//typing.nit:702 */
3914 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3915 /* ./syntax//typing.nit:703 */
3916 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3917 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3918 /* ./syntax//typing.nit:704 */
3919 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3920 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3921 /* ./syntax//typing.nit:705 */
3922 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3923 }
3924 /* ./syntax//typing.nit:709 */
3925 fra.me.REG[3] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3926 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3927 /* ./syntax//typing.nit:710 */
3928 REGB0 = TAG_Bool(true);
3929 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3930 stack_frame_head = fra.me.prev;
3931 return;
3932 }
3933 val_t typing___AVarFormExpr___variable(val_t p0){
3934 struct {struct stack_frame_t me;} fra;
3935 val_t REGB0;
3936 val_t tmp;
3937 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3938 fra.me.file = LOCATE_typing;
3939 fra.me.line = 716;
3940 fra.me.meth = LOCATE_typing___AVarFormExpr___variable;
3941 fra.me.has_broke = 0;
3942 fra.me.REG_size = 1;
3943 fra.me.REG[0] = NIT_NULL;
3944 fra.me.REG[0] = p0;
3945 /* ./syntax//typing.nit:716 */
3946 fra.me.REG[0] = ATTR_typing___AVarFormExpr____variable(fra.me.REG[0]);
3947 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
3948 if (UNTAG_Bool(REGB0)) {
3949 } else {
3950 nit_abort("Cast failed", NULL, LOCATE_typing, 716);
3951 }
3952 goto label1;
3953 label1: while(0);
3954 stack_frame_head = fra.me.prev;
3955 return fra.me.REG[0];
3956 }
3957 val_t typing___AVarExpr___its_variable(val_t p0){
3958 struct {struct stack_frame_t me;} fra;
3959 val_t tmp;
3960 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3961 fra.me.file = LOCATE_typing;
3962 fra.me.line = 720;
3963 fra.me.meth = LOCATE_typing___AVarExpr___its_variable;
3964 fra.me.has_broke = 0;
3965 fra.me.REG_size = 1;
3966 fra.me.REG[0] = NIT_NULL;
3967 fra.me.REG[0] = p0;
3968 /* ./syntax//typing.nit:720 */
3969 fra.me.REG[0] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3970 goto label1;
3971 label1: while(0);
3972 stack_frame_head = fra.me.prev;
3973 return fra.me.REG[0];
3974 }
3975 void typing___AVarExpr___after_typing(val_t p0, val_t p1){
3976 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3977 val_t REGB0;
3978 val_t REGB1;
3979 val_t tmp;
3980 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3981 fra.me.file = LOCATE_typing;
3982 fra.me.line = 722;
3983 fra.me.meth = LOCATE_typing___AVarExpr___after_typing;
3984 fra.me.has_broke = 0;
3985 fra.me.REG_size = 4;
3986 fra.me.REG[0] = NIT_NULL;
3987 fra.me.REG[1] = NIT_NULL;
3988 fra.me.REG[2] = NIT_NULL;
3989 fra.me.REG[3] = NIT_NULL;
3990 fra.me.REG[0] = p0;
3991 fra.me.REG[1] = p1;
3992 /* ./syntax//typing.nit:724 */
3993 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3994 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3995 CALL_flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
3996 /* ./syntax//typing.nit:725 */
3997 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3998 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3999 fra.me.REG[3] = CALL_flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4000 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4001 /* ./syntax//typing.nit:726 */
4002 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
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 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4017 stack_frame_head = fra.me.prev;
4018 return;
4019 }
4020 void typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4021 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4022 val_t REGB0;
4023 val_t REGB1;
4024 val_t tmp;
4025 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4026 fra.me.file = LOCATE_typing;
4027 fra.me.line = 731;
4028 fra.me.meth = LOCATE_typing___AVarAssignExpr___after_typing;
4029 fra.me.has_broke = 0;
4030 fra.me.REG_size = 5;
4031 fra.me.REG[0] = NIT_NULL;
4032 fra.me.REG[1] = NIT_NULL;
4033 fra.me.REG[2] = NIT_NULL;
4034 fra.me.REG[3] = NIT_NULL;
4035 fra.me.REG[4] = NIT_NULL;
4036 fra.me.REG[0] = p0;
4037 fra.me.REG[1] = p1;
4038 /* ./syntax//typing.nit:733 */
4039 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4040 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4041 /* ./syntax//typing.nit:736 */
4042 fra.me.REG[2] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4043 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4044 fra.me.REG[3] = CALL_flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4045 /* ./syntax//typing.nit:737 */
4046 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4047 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4048 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4049 if (UNTAG_Bool(REGB0)) {
4050 goto label1;
4051 }
4052 /* ./syntax//typing.nit:738 */
4053 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4054 if (UNTAG_Bool(REGB0)) {
4055 } else {
4056 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4057 if (UNTAG_Bool(REGB1)) {
4058 REGB1 = TAG_Bool(false);
4059 REGB0 = REGB1;
4060 } else {
4061 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4062 REGB0 = REGB1;
4063 }
4064 }
4065 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4066 if (UNTAG_Bool(REGB0)) {
4067 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4068 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4069 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4070 } else {
4071 REGB1 = TAG_Bool(false);
4072 REGB0 = REGB1;
4073 }
4074 if (UNTAG_Bool(REGB0)) {
4075 goto label1;
4076 }
4077 /* ./syntax//typing.nit:741 */
4078 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4079 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4080 fra.me.REG[4] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4081 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4082 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]);
4083 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4084 /* ./syntax//typing.nit:743 */
4085 REGB0 = TAG_Bool(true);
4086 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4087 label1: while(0);
4088 stack_frame_head = fra.me.prev;
4089 return;
4090 }
4091 val_t typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4092 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4093 val_t REGB0;
4094 val_t REGB1;
4095 val_t tmp;
4096 static val_t once_value_2; /* Once value */
4097 static val_t once_value_3; /* Once value */
4098 static val_t once_value_4; /* Once value */
4099 static val_t once_value_5; /* Once value */
4100 static val_t once_value_6; /* Once value */
4101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4102 fra.me.file = LOCATE_typing;
4103 fra.me.line = 748;
4104 fra.me.meth = LOCATE_typing___AReassignFormExpr___do_rvalue_typing;
4105 fra.me.has_broke = 0;
4106 fra.me.REG_size = 8;
4107 fra.me.REG[0] = NIT_NULL;
4108 fra.me.REG[1] = NIT_NULL;
4109 fra.me.REG[2] = NIT_NULL;
4110 fra.me.REG[3] = NIT_NULL;
4111 fra.me.REG[4] = NIT_NULL;
4112 fra.me.REG[5] = NIT_NULL;
4113 fra.me.REG[6] = NIT_NULL;
4114 fra.me.REG[7] = NIT_NULL;
4115 fra.me.REG[0] = p0;
4116 fra.me.REG[1] = p1;
4117 fra.me.REG[2] = p2;
4118 /* ./syntax//typing.nit:753 */
4119 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4120 if (UNTAG_Bool(REGB0)) {
4121 } else {
4122 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4123 if (UNTAG_Bool(REGB1)) {
4124 REGB1 = TAG_Bool(false);
4125 REGB0 = REGB1;
4126 } else {
4127 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4128 REGB0 = REGB1;
4129 }
4130 }
4131 if (UNTAG_Bool(REGB0)) {
4132 /* ./syntax//typing.nit:754 */
4133 fra.me.REG[3] = NIT_NULL;
4134 goto label1;
4135 }
4136 /* ./syntax//typing.nit:756 */
4137 fra.me.REG[4] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4138 fra.me.REG[4] = CALL_typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4139 /* ./syntax//typing.nit:757 */
4140 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
4141 if (UNTAG_Bool(REGB0)) {
4142 /* ./syntax//typing.nit:758 */
4143 REGB0 = TAG_Int(3);
4144 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
4145 if (!once_value_2) {
4146 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4147 REGB0 = TAG_Int(15);
4148 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4149 once_value_2 = fra.me.REG[6];
4150 register_static_object(&once_value_2);
4151 } else fra.me.REG[6] = once_value_2;
4152 fra.me.REG[6] = fra.me.REG[6];
4153 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4154 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4155 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4156 if (!once_value_3) {
4157 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4158 REGB0 = TAG_Int(17);
4159 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4160 once_value_3 = fra.me.REG[6];
4161 register_static_object(&once_value_3);
4162 } else fra.me.REG[6] = once_value_3;
4163 fra.me.REG[6] = fra.me.REG[6];
4164 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4165 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4166 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4167 /* ./syntax//typing.nit:759 */
4168 fra.me.REG[3] = NIT_NULL;
4169 goto label1;
4170 }
4171 /* ./syntax//typing.nit:761 */
4172 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4173 if (UNTAG_Bool(REGB0)) {
4174 nit_abort("Reciever is null", NULL, LOCATE_typing, 761);
4175 }
4176 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4177 /* ./syntax//typing.nit:762 */
4178 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4179 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4180 if (UNTAG_Bool(REGB0)) {
4181 /* ./syntax//typing.nit:763 */
4182 REGB0 = TAG_Int(5);
4183 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
4184 if (!once_value_4) {
4185 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4186 REGB0 = TAG_Int(15);
4187 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4188 once_value_4 = fra.me.REG[7];
4189 register_static_object(&once_value_4);
4190 } else fra.me.REG[7] = once_value_4;
4191 fra.me.REG[7] = fra.me.REG[7];
4192 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4193 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4194 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4195 if (!once_value_5) {
4196 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4197 REGB0 = TAG_Int(20);
4198 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4199 once_value_5 = fra.me.REG[7];
4200 register_static_object(&once_value_5);
4201 } else fra.me.REG[7] = once_value_5;
4202 fra.me.REG[7] = fra.me.REG[7];
4203 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4204 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4205 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4206 if (!once_value_6) {
4207 fra.me.REG[7] = BOX_NativeString(".");
4208 REGB0 = TAG_Int(1);
4209 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
4210 once_value_6 = fra.me.REG[7];
4211 register_static_object(&once_value_6);
4212 } else fra.me.REG[7] = once_value_6;
4213 fra.me.REG[7] = fra.me.REG[7];
4214 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4215 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4216 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4217 /* ./syntax//typing.nit:764 */
4218 fra.me.REG[3] = NIT_NULL;
4219 goto label1;
4220 }
4221 /* ./syntax//typing.nit:766 */
4222 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4223 /* ./syntax//typing.nit:767 */
4224 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4225 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4226 REGB0 = TAG_Bool(false);
4227 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);
4228 /* ./syntax//typing.nit:768 */
4229 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4230 /* ./syntax//typing.nit:769 */
4231 ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4232 /* ./syntax//typing.nit:770 */
4233 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4234 REGB0 = TAG_Int(0);
4235 fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4236 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4237 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4238 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4239 if (UNTAG_Bool(REGB0)) {
4240 fra.me.REG[3] = NIT_NULL;
4241 goto label1;
4242 }
4243 /* ./syntax//typing.nit:771 */
4244 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4245 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4246 if (UNTAG_Bool(REGB0)) {
4247 nit_abort("Reciever is null", NULL, LOCATE_typing, 771);
4248 }
4249 fra.me.REG[2] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4250 fra.me.REG[3] = fra.me.REG[2];
4251 goto label1;
4252 label1: while(0);
4253 stack_frame_head = fra.me.prev;
4254 return fra.me.REG[3];
4255 }
4256 val_t typing___AReassignFormExpr___assign_method(val_t p0){
4257 struct {struct stack_frame_t me;} fra;
4258 val_t REGB0;
4259 val_t tmp;
4260 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4261 fra.me.file = LOCATE_typing;
4262 fra.me.line = 774;
4263 fra.me.meth = LOCATE_typing___AReassignFormExpr___assign_method;
4264 fra.me.has_broke = 0;
4265 fra.me.REG_size = 1;
4266 fra.me.REG[0] = NIT_NULL;
4267 fra.me.REG[0] = p0;
4268 /* ./syntax//typing.nit:774 */
4269 fra.me.REG[0] = ATTR_typing___AReassignFormExpr____assign_method(fra.me.REG[0]);
4270 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4271 if (UNTAG_Bool(REGB0)) {
4272 } else {
4273 nit_abort("Cast failed", NULL, LOCATE_typing, 774);
4274 }
4275 goto label1;
4276 label1: while(0);
4277 stack_frame_head = fra.me.prev;
4278 return fra.me.REG[0];
4279 }
4280 void typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4281 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4282 val_t REGB0;
4283 val_t REGB1;
4284 val_t tmp;
4285 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4286 fra.me.file = LOCATE_typing;
4287 fra.me.line = 779;
4288 fra.me.meth = LOCATE_typing___AVarReassignExpr___after_typing;
4289 fra.me.has_broke = 0;
4290 fra.me.REG_size = 5;
4291 fra.me.REG[0] = NIT_NULL;
4292 fra.me.REG[1] = NIT_NULL;
4293 fra.me.REG[2] = NIT_NULL;
4294 fra.me.REG[3] = NIT_NULL;
4295 fra.me.REG[4] = NIT_NULL;
4296 fra.me.REG[0] = p0;
4297 fra.me.REG[1] = p1;
4298 /* ./syntax//typing.nit:781 */
4299 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4300 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4301 CALL_flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4302 /* ./syntax//typing.nit:782 */
4303 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4304 CALL_typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4305 /* ./syntax//typing.nit:783 */
4306 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4307 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4308 fra.me.REG[2] = CALL_flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4309 /* ./syntax//typing.nit:784 */
4310 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]);
4311 /* ./syntax//typing.nit:785 */
4312 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4313 if (UNTAG_Bool(REGB0)) {
4314 } else {
4315 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4316 if (UNTAG_Bool(REGB1)) {
4317 REGB1 = TAG_Bool(false);
4318 REGB0 = REGB1;
4319 } else {
4320 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4321 REGB0 = REGB1;
4322 }
4323 }
4324 if (UNTAG_Bool(REGB0)) {
4325 goto label1;
4326 }
4327 /* ./syntax//typing.nit:788 */
4328 fra.me.REG[3] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4329 fra.me.REG[4] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4330 fra.me.REG[4] = CALL_flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4331 /* ./syntax//typing.nit:789 */
4332 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4333 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4334 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4335 if (UNTAG_Bool(REGB0)) {
4336 goto label1;
4337 }
4338 /* ./syntax//typing.nit:790 */
4339 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4340 if (UNTAG_Bool(REGB0)) {
4341 } else {
4342 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4343 if (UNTAG_Bool(REGB1)) {
4344 REGB1 = TAG_Bool(false);
4345 REGB0 = REGB1;
4346 } else {
4347 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4348 REGB0 = REGB1;
4349 }
4350 }
4351 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4352 if (UNTAG_Bool(REGB0)) {
4353 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4354 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]);
4355 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4356 } else {
4357 REGB1 = TAG_Bool(false);
4358 REGB0 = REGB1;
4359 }
4360 if (UNTAG_Bool(REGB0)) {
4361 goto label1;
4362 }
4363 /* ./syntax//typing.nit:793 */
4364 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4365 fra.me.REG[3] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4366 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]);
4367 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4368 /* ./syntax//typing.nit:795 */
4369 REGB0 = TAG_Bool(true);
4370 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4371 label1: while(0);
4372 stack_frame_head = fra.me.prev;
4373 return;
4374 }
4375 val_t typing___AAssignOp___method_name(val_t p0){
4376 struct {struct stack_frame_t me;} fra;
4377 val_t tmp;
4378 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4379 fra.me.file = LOCATE_typing;
4380 fra.me.line = 800;
4381 fra.me.meth = LOCATE_typing___AAssignOp___method_name;
4382 fra.me.has_broke = 0;
4383 fra.me.REG_size = 0;
4384 /* ./syntax//typing.nit:800 */
4385 nit_abort("Deferred method called", NULL, LOCATE_typing, 800);
4386 stack_frame_head = fra.me.prev;
4387 return NIT_NULL;
4388 }
4389 val_t typing___APlusAssignOp___method_name(val_t p0){
4390 struct {struct stack_frame_t me;} fra;
4391 val_t REGB0;
4392 val_t tmp;
4393 static val_t once_value_1; /* Once value */
4394 static val_t once_value_2; /* Once value */
4395 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4396 fra.me.file = LOCATE_typing;
4397 fra.me.line = 803;
4398 fra.me.meth = LOCATE_typing___APlusAssignOp___method_name;
4399 fra.me.has_broke = 0;
4400 fra.me.REG_size = 1;
4401 fra.me.REG[0] = NIT_NULL;
4402 fra.me.REG[0] = p0;
4403 /* ./syntax//typing.nit:803 */
4404 if (!once_value_1) {
4405 if (!once_value_2) {
4406 fra.me.REG[0] = BOX_NativeString("+");
4407 REGB0 = TAG_Int(1);
4408 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4409 once_value_2 = fra.me.REG[0];
4410 register_static_object(&once_value_2);
4411 } else fra.me.REG[0] = once_value_2;
4412 fra.me.REG[0] = fra.me.REG[0];
4413 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4414 once_value_1 = fra.me.REG[0];
4415 register_static_object(&once_value_1);
4416 } else fra.me.REG[0] = once_value_1;
4417 fra.me.REG[0] = fra.me.REG[0];
4418 goto label3;
4419 label3: while(0);
4420 stack_frame_head = fra.me.prev;
4421 return fra.me.REG[0];
4422 }
4423 val_t typing___AMinusAssignOp___method_name(val_t p0){
4424 struct {struct stack_frame_t me;} fra;
4425 val_t REGB0;
4426 val_t tmp;
4427 static val_t once_value_1; /* Once value */
4428 static val_t once_value_2; /* Once value */
4429 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4430 fra.me.file = LOCATE_typing;
4431 fra.me.line = 806;
4432 fra.me.meth = LOCATE_typing___AMinusAssignOp___method_name;
4433 fra.me.has_broke = 0;
4434 fra.me.REG_size = 1;
4435 fra.me.REG[0] = NIT_NULL;
4436 fra.me.REG[0] = p0;
4437 /* ./syntax//typing.nit:806 */
4438 if (!once_value_1) {
4439 if (!once_value_2) {
4440 fra.me.REG[0] = BOX_NativeString("-");
4441 REGB0 = TAG_Int(1);
4442 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
4443 once_value_2 = fra.me.REG[0];
4444 register_static_object(&once_value_2);
4445 } else fra.me.REG[0] = once_value_2;
4446 fra.me.REG[0] = fra.me.REG[0];
4447 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4448 once_value_1 = fra.me.REG[0];
4449 register_static_object(&once_value_1);
4450 } else fra.me.REG[0] = once_value_1;
4451 fra.me.REG[0] = fra.me.REG[0];
4452 goto label3;
4453 label3: while(0);
4454 stack_frame_head = fra.me.prev;
4455 return fra.me.REG[0];
4456 }
4457 val_t typing___ASelfExpr___variable(val_t p0){
4458 struct {struct stack_frame_t me;} fra;
4459 val_t REGB0;
4460 val_t tmp;
4461 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4462 fra.me.file = LOCATE_typing;
4463 fra.me.line = 811;
4464 fra.me.meth = LOCATE_typing___ASelfExpr___variable;
4465 fra.me.has_broke = 0;
4466 fra.me.REG_size = 1;
4467 fra.me.REG[0] = NIT_NULL;
4468 fra.me.REG[0] = p0;
4469 /* ./syntax//typing.nit:811 */
4470 fra.me.REG[0] = ATTR_typing___ASelfExpr____variable(fra.me.REG[0]);
4471 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4472 if (UNTAG_Bool(REGB0)) {
4473 } else {
4474 nit_abort("Cast failed", NULL, LOCATE_typing, 811);
4475 }
4476 goto label1;
4477 label1: while(0);
4478 stack_frame_head = fra.me.prev;
4479 return fra.me.REG[0];
4480 }
4481 val_t typing___ASelfExpr___its_variable(val_t p0){
4482 struct {struct stack_frame_t me;} fra;
4483 val_t tmp;
4484 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4485 fra.me.file = LOCATE_typing;
4486 fra.me.line = 813;
4487 fra.me.meth = LOCATE_typing___ASelfExpr___its_variable;
4488 fra.me.has_broke = 0;
4489 fra.me.REG_size = 1;
4490 fra.me.REG[0] = NIT_NULL;
4491 fra.me.REG[0] = p0;
4492 /* ./syntax//typing.nit:813 */
4493 fra.me.REG[0] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4494 goto label1;
4495 label1: while(0);
4496 stack_frame_head = fra.me.prev;
4497 return fra.me.REG[0];
4498 }
4499 void typing___ASelfExpr___after_typing(val_t p0, val_t p1){
4500 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4501 val_t REGB0;
4502 val_t tmp;
4503 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4504 fra.me.file = LOCATE_typing;
4505 fra.me.line = 815;
4506 fra.me.meth = LOCATE_typing___ASelfExpr___after_typing;
4507 fra.me.has_broke = 0;
4508 fra.me.REG_size = 3;
4509 fra.me.REG[0] = NIT_NULL;
4510 fra.me.REG[1] = NIT_NULL;
4511 fra.me.REG[2] = NIT_NULL;
4512 fra.me.REG[0] = p0;
4513 fra.me.REG[1] = p1;
4514 /* ./syntax//typing.nit:817 */
4515 fra.me.REG[2] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
4516 ATTR_typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
4517 /* ./syntax//typing.nit:818 */
4518 fra.me.REG[1] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4519 fra.me.REG[2] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4520 fra.me.REG[2] = CALL_flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4521 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4522 /* ./syntax//typing.nit:819 */
4523 REGB0 = TAG_Bool(true);
4524 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4525 stack_frame_head = fra.me.prev;
4526 return;
4527 }
4528 val_t typing___ASelfExpr___is_self(val_t p0){
4529 struct {struct stack_frame_t me;} fra;
4530 val_t REGB0;
4531 val_t tmp;
4532 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4533 fra.me.file = LOCATE_typing;
4534 fra.me.line = 822;
4535 fra.me.meth = LOCATE_typing___ASelfExpr___is_self;
4536 fra.me.has_broke = 0;
4537 fra.me.REG_size = 1;
4538 fra.me.REG[0] = NIT_NULL;
4539 fra.me.REG[0] = p0;
4540 /* ./syntax//typing.nit:822 */
4541 REGB0 = TAG_Bool(true);
4542 goto label1;
4543 label1: while(0);
4544 stack_frame_head = fra.me.prev;
4545 return REGB0;
4546 }
4547 val_t typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
4548 struct {struct stack_frame_t me;} fra;
4549 val_t REGB0;
4550 val_t tmp;
4551 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4552 fra.me.file = LOCATE_typing;
4553 fra.me.line = 826;
4554 fra.me.meth = LOCATE_typing___AImplicitSelfExpr___is_implicit_self;
4555 fra.me.has_broke = 0;
4556 fra.me.REG_size = 1;
4557 fra.me.REG[0] = NIT_NULL;
4558 fra.me.REG[0] = p0;
4559 /* ./syntax//typing.nit:826 */
4560 REGB0 = TAG_Bool(true);
4561 goto label1;
4562 label1: while(0);
4563 stack_frame_head = fra.me.prev;
4564 return REGB0;
4565 }
4566 void typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
4567 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4568 val_t REGB0;
4569 val_t REGB1;
4570 val_t tmp;
4571 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4572 fra.me.file = LOCATE_typing;
4573 fra.me.line = 830;
4574 fra.me.meth = LOCATE_typing___AIfexprExpr___accept_typing;
4575 fra.me.has_broke = 0;
4576 fra.me.REG_size = 5;
4577 fra.me.REG[0] = NIT_NULL;
4578 fra.me.REG[1] = NIT_NULL;
4579 fra.me.REG[2] = NIT_NULL;
4580 fra.me.REG[3] = NIT_NULL;
4581 fra.me.REG[4] = NIT_NULL;
4582 fra.me.REG[0] = p0;
4583 fra.me.REG[1] = p1;
4584 /* ./syntax//typing.nit:832 */
4585 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4586 /* ./syntax//typing.nit:835 */
4587 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4588 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4589 /* ./syntax//typing.nit:836 */
4590 fra.me.REG[3] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4591 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4592 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4593 /* ./syntax//typing.nit:839 */
4594 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4595 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4596 /* ./syntax//typing.nit:842 */
4597 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4598 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4599 /* ./syntax//typing.nit:845 */
4600 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4601 /* ./syntax//typing.nit:848 */
4602 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4603 /* ./syntax//typing.nit:849 */
4604 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4605 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4606 /* ./syntax//typing.nit:852 */
4607 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4608 CALL_typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4609 /* ./syntax//typing.nit:855 */
4610 fra.me.REG[2] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4611 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4612 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]);
4613 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4614 /* ./syntax//typing.nit:857 */
4615 REGB0 = TAG_Int(2);
4616 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4617 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
4618 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4619 fra.me.REG[4] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4620 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4621 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]);
4622 /* ./syntax//typing.nit:858 */
4623 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4624 if (UNTAG_Bool(REGB0)) {
4625 } else {
4626 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4627 if (UNTAG_Bool(REGB1)) {
4628 REGB1 = TAG_Bool(false);
4629 REGB0 = REGB1;
4630 } else {
4631 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4632 REGB0 = REGB1;
4633 }
4634 }
4635 if (UNTAG_Bool(REGB0)) {
4636 goto label1;
4637 }
4638 /* ./syntax//typing.nit:860 */
4639 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4640 /* ./syntax//typing.nit:861 */
4641 REGB0 = TAG_Bool(true);
4642 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4643 label1: while(0);
4644 stack_frame_head = fra.me.prev;
4645 return;
4646 }
4647 void typing___ABoolExpr___after_typing(val_t p0, val_t p1){
4648 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4649 val_t REGB0;
4650 val_t tmp;
4651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4652 fra.me.file = LOCATE_typing;
4653 fra.me.line = 866;
4654 fra.me.meth = LOCATE_typing___ABoolExpr___after_typing;
4655 fra.me.has_broke = 0;
4656 fra.me.REG_size = 2;
4657 fra.me.REG[0] = NIT_NULL;
4658 fra.me.REG[1] = NIT_NULL;
4659 fra.me.REG[0] = p0;
4660 fra.me.REG[1] = p1;
4661 /* ./syntax//typing.nit:868 */
4662 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4663 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4664 /* ./syntax//typing.nit:869 */
4665 REGB0 = TAG_Bool(true);
4666 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4667 stack_frame_head = fra.me.prev;
4668 return;
4669 }
4670 void typing___AOrExpr___accept_typing(val_t p0, val_t p1){
4671 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4672 val_t REGB0;
4673 val_t REGB1;
4674 val_t tmp;
4675 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4676 fra.me.file = LOCATE_typing;
4677 fra.me.line = 874;
4678 fra.me.meth = LOCATE_typing___AOrExpr___accept_typing;
4679 fra.me.has_broke = 0;
4680 fra.me.REG_size = 5;
4681 fra.me.REG[0] = NIT_NULL;
4682 fra.me.REG[1] = NIT_NULL;
4683 fra.me.REG[2] = NIT_NULL;
4684 fra.me.REG[3] = NIT_NULL;
4685 fra.me.REG[4] = NIT_NULL;
4686 fra.me.REG[0] = p0;
4687 fra.me.REG[1] = p1;
4688 /* ./syntax//typing.nit:876 */
4689 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4690 /* ./syntax//typing.nit:877 */
4691 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4692 /* ./syntax//typing.nit:878 */
4693 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4694 /* ./syntax//typing.nit:881 */
4695 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4696 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4697 /* ./syntax//typing.nit:884 */
4698 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4699 CALL_typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4700 /* ./syntax//typing.nit:887 */
4701 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4702 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4703 /* ./syntax//typing.nit:888 */
4704 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4705 fra.me.REG[4] = CALL_typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4706 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4707 if (UNTAG_Bool(REGB0)) {
4708 } else {
4709 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4710 if (UNTAG_Bool(REGB1)) {
4711 REGB1 = TAG_Bool(false);
4712 REGB0 = REGB1;
4713 } else {
4714 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4715 REGB0 = REGB1;
4716 }
4717 }
4718 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4719 if (UNTAG_Bool(REGB0)) {
4720 /* ./syntax//typing.nit:889 */
4721 fra.me.REG[4] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4722 fra.me.REG[4] = CALL_typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4723 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4724 } else {
4725 /* ./syntax//typing.nit:891 */
4726 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4727 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4728 }
4729 /* ./syntax//typing.nit:894 */
4730 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4731 /* ./syntax//typing.nit:896 */
4732 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4733 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4734 /* ./syntax//typing.nit:897 */
4735 fra.me.REG[2] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4736 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4737 /* ./syntax//typing.nit:898 */
4738 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4739 /* ./syntax//typing.nit:899 */
4740 REGB0 = TAG_Bool(true);
4741 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4742 stack_frame_head = fra.me.prev;
4743 return;
4744 }
4745 void typing___AAndExpr___accept_typing(val_t p0, val_t p1){
4746 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4747 val_t REGB0;
4748 val_t REGB1;
4749 val_t tmp;
4750 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4751 fra.me.file = LOCATE_typing;
4752 fra.me.line = 904;
4753 fra.me.meth = LOCATE_typing___AAndExpr___accept_typing;
4754 fra.me.has_broke = 0;
4755 fra.me.REG_size = 5;
4756 fra.me.REG[0] = NIT_NULL;
4757 fra.me.REG[1] = NIT_NULL;
4758 fra.me.REG[2] = NIT_NULL;
4759 fra.me.REG[3] = NIT_NULL;
4760 fra.me.REG[4] = NIT_NULL;
4761 fra.me.REG[0] = p0;
4762 fra.me.REG[1] = p1;
4763 /* ./syntax//typing.nit:906 */
4764 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4765 /* ./syntax//typing.nit:907 */
4766 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4767 /* ./syntax//typing.nit:910 */
4768 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4769 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4770 /* ./syntax//typing.nit:913 */
4771 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4772 CALL_typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4773 /* ./syntax//typing.nit:916 */
4774 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4775 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4776 /* ./syntax//typing.nit:917 */
4777 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4778 fra.me.REG[4] = CALL_typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4779 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4780 if (UNTAG_Bool(REGB0)) {
4781 } else {
4782 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4783 if (UNTAG_Bool(REGB1)) {
4784 REGB1 = TAG_Bool(false);
4785 REGB0 = REGB1;
4786 } else {
4787 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4788 REGB0 = REGB1;
4789 }
4790 }
4791 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4792 if (UNTAG_Bool(REGB0)) {
4793 /* ./syntax//typing.nit:918 */
4794 fra.me.REG[4] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4795 fra.me.REG[4] = CALL_typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
4796 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4797 } else {
4798 /* ./syntax//typing.nit:920 */
4799 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4800 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
4801 }
4802 /* ./syntax//typing.nit:923 */
4803 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4804 /* ./syntax//typing.nit:925 */
4805 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4806 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4807 /* ./syntax//typing.nit:926 */
4808 fra.me.REG[2] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4809 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4810 /* ./syntax//typing.nit:927 */
4811 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4812 /* ./syntax//typing.nit:928 */
4813 REGB0 = TAG_Bool(true);
4814 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4815 stack_frame_head = fra.me.prev;
4816 return;
4817 }
4818 void typing___ANotExpr___after_typing(val_t p0, val_t p1){
4819 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4820 val_t REGB0;
4821 val_t tmp;
4822 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4823 fra.me.file = LOCATE_typing;
4824 fra.me.line = 933;
4825 fra.me.meth = LOCATE_typing___ANotExpr___after_typing;
4826 fra.me.has_broke = 0;
4827 fra.me.REG_size = 4;
4828 fra.me.REG[0] = NIT_NULL;
4829 fra.me.REG[1] = NIT_NULL;
4830 fra.me.REG[2] = NIT_NULL;
4831 fra.me.REG[3] = NIT_NULL;
4832 fra.me.REG[0] = p0;
4833 fra.me.REG[1] = p1;
4834 /* ./syntax//typing.nit:935 */
4835 fra.me.REG[2] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4836 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4837 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4838 /* ./syntax//typing.nit:938 */
4839 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4840 fra.me.REG[3] = ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
4841 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
4842 /* ./syntax//typing.nit:939 */
4843 fra.me.REG[3] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4844 fra.me.REG[3] = ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
4845 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
4846 /* ./syntax//typing.nit:941 */
4847 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4848 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4849 /* ./syntax//typing.nit:942 */
4850 REGB0 = TAG_Bool(true);
4851 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4852 stack_frame_head = fra.me.prev;
4853 return;
4854 }
4855 void typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
4856 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4857 val_t REGB0;
4858 val_t REGB1;
4859 val_t tmp;
4860 static val_t once_value_1; /* Once value */
4861 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4862 fra.me.file = LOCATE_typing;
4863 fra.me.line = 947;
4864 fra.me.meth = LOCATE_typing___AOrElseExpr___after_typing;
4865 fra.me.has_broke = 0;
4866 fra.me.REG_size = 7;
4867 fra.me.REG[0] = NIT_NULL;
4868 fra.me.REG[1] = NIT_NULL;
4869 fra.me.REG[2] = NIT_NULL;
4870 fra.me.REG[3] = NIT_NULL;
4871 fra.me.REG[4] = NIT_NULL;
4872 fra.me.REG[5] = NIT_NULL;
4873 fra.me.REG[6] = NIT_NULL;
4874 fra.me.REG[0] = p0;
4875 fra.me.REG[1] = p1;
4876 /* ./syntax//typing.nit:949 */
4877 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4878 /* ./syntax//typing.nit:952 */
4879 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4880 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4881 /* ./syntax//typing.nit:953 */
4882 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4883 CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4884 /* ./syntax//typing.nit:956 */
4885 fra.me.REG[3] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4886 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4887 /* ./syntax//typing.nit:957 */
4888 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4889 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4890 if (UNTAG_Bool(REGB0)) {
4891 /* ./syntax//typing.nit:958 */
4892 fra.me.REG[4] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4893 if (!once_value_1) {
4894 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
4895 REGB0 = TAG_Int(60);
4896 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4897 once_value_1 = fra.me.REG[5];
4898 register_static_object(&once_value_1);
4899 } else fra.me.REG[5] = once_value_1;
4900 fra.me.REG[5] = fra.me.REG[5];
4901 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4902 } else {
4903 /* ./syntax//typing.nit:960 */
4904 fra.me.REG[5] = CALL_static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
4905 fra.me.REG[3] = fra.me.REG[5];
4906 }
4907 /* ./syntax//typing.nit:964 */
4908 fra.me.REG[5] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4909 fra.me.REG[5] = CALL_typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
4910 /* ./syntax//typing.nit:965 */
4911 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4912 if (UNTAG_Bool(REGB0)) {
4913 } else {
4914 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4915 if (UNTAG_Bool(REGB1)) {
4916 REGB1 = TAG_Bool(false);
4917 REGB0 = REGB1;
4918 } else {
4919 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4920 REGB0 = REGB1;
4921 }
4922 }
4923 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4924 if (UNTAG_Bool(REGB0)) {
4925 /* ./syntax//typing.nit:966 */
4926 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4927 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
4928 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]);
4929 }
4930 /* ./syntax//typing.nit:970 */
4931 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4932 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
4933 /* ./syntax//typing.nit:971 */
4934 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4935 CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
4936 /* ./syntax//typing.nit:974 */
4937 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4938 /* ./syntax//typing.nit:977 */
4939 REGB0 = TAG_Int(1);
4940 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4941 fra.me.REG[6] = CALL_parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4942 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
4943 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]);
4944 /* ./syntax//typing.nit:978 */
4945 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4946 if (UNTAG_Bool(REGB0)) {
4947 } else {
4948 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4949 if (UNTAG_Bool(REGB1)) {
4950 REGB1 = TAG_Bool(false);
4951 REGB0 = REGB1;
4952 } else {
4953 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4954 REGB0 = REGB1;
4955 }
4956 }
4957 if (UNTAG_Bool(REGB0)) {
4958 goto label2;
4959 }
4960 /* ./syntax//typing.nit:980 */
4961 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4962 /* ./syntax//typing.nit:981 */
4963 REGB0 = TAG_Bool(true);
4964 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4965 label2: while(0);
4966 stack_frame_head = fra.me.prev;
4967 return;
4968 }
4969 void typing___AIntExpr___after_typing(val_t p0, val_t p1){
4970 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4971 val_t REGB0;
4972 val_t tmp;
4973 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4974 fra.me.file = LOCATE_typing;
4975 fra.me.line = 986;
4976 fra.me.meth = LOCATE_typing___AIntExpr___after_typing;
4977 fra.me.has_broke = 0;
4978 fra.me.REG_size = 2;
4979 fra.me.REG[0] = NIT_NULL;
4980 fra.me.REG[1] = NIT_NULL;
4981 fra.me.REG[0] = p0;
4982 fra.me.REG[1] = p1;
4983 /* ./syntax//typing.nit:988 */
4984 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
4985 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
4986 /* ./syntax//typing.nit:989 */
4987 REGB0 = TAG_Bool(true);
4988 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4989 stack_frame_head = fra.me.prev;
4990 return;
4991 }
4992 void typing___AFloatExpr___after_typing(val_t p0, val_t p1){
4993 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4994 val_t REGB0;
4995 val_t tmp;
4996 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4997 fra.me.file = LOCATE_typing;
4998 fra.me.line = 994;
4999 fra.me.meth = LOCATE_typing___AFloatExpr___after_typing;
5000 fra.me.has_broke = 0;
5001 fra.me.REG_size = 2;
5002 fra.me.REG[0] = NIT_NULL;
5003 fra.me.REG[1] = NIT_NULL;
5004 fra.me.REG[0] = p0;
5005 fra.me.REG[1] = p1;
5006 /* ./syntax//typing.nit:996 */
5007 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5008 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5009 /* ./syntax//typing.nit:997 */
5010 REGB0 = TAG_Bool(true);
5011 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5012 stack_frame_head = fra.me.prev;
5013 return;
5014 }
5015 void typing___ACharExpr___after_typing(val_t p0, val_t p1){
5016 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5017 val_t REGB0;
5018 val_t tmp;
5019 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5020 fra.me.file = LOCATE_typing;
5021 fra.me.line = 1002;
5022 fra.me.meth = LOCATE_typing___ACharExpr___after_typing;
5023 fra.me.has_broke = 0;
5024 fra.me.REG_size = 2;
5025 fra.me.REG[0] = NIT_NULL;
5026 fra.me.REG[1] = NIT_NULL;
5027 fra.me.REG[0] = p0;
5028 fra.me.REG[1] = p1;
5029 /* ./syntax//typing.nit:1004 */
5030 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5031 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5032 /* ./syntax//typing.nit:1005 */
5033 REGB0 = TAG_Bool(true);
5034 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5035 stack_frame_head = fra.me.prev;
5036 return;
5037 }
5038 void typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5039 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5040 val_t REGB0;
5041 val_t tmp;
5042 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5043 fra.me.file = LOCATE_typing;
5044 fra.me.line = 1010;
5045 fra.me.meth = LOCATE_typing___AStringFormExpr___after_typing;
5046 fra.me.has_broke = 0;
5047 fra.me.REG_size = 2;
5048 fra.me.REG[0] = NIT_NULL;
5049 fra.me.REG[1] = NIT_NULL;
5050 fra.me.REG[0] = p0;
5051 fra.me.REG[1] = p1;
5052 /* ./syntax//typing.nit:1012 */
5053 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5054 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5055 /* ./syntax//typing.nit:1013 */
5056 REGB0 = TAG_Bool(true);
5057 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5058 stack_frame_head = fra.me.prev;
5059 return;
5060 }
5061 val_t typing___ASuperstringExpr___atype(val_t p0){
5062 struct {struct stack_frame_t me;} fra;
5063 val_t REGB0;
5064 val_t tmp;
5065 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5066 fra.me.file = LOCATE_typing;
5067 fra.me.line = 1018;
5068 fra.me.meth = LOCATE_typing___ASuperstringExpr___atype;
5069 fra.me.has_broke = 0;
5070 fra.me.REG_size = 1;
5071 fra.me.REG[0] = NIT_NULL;
5072 fra.me.REG[0] = p0;
5073 /* ./syntax//typing.nit:1018 */
5074 fra.me.REG[0] = ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]);
5075 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5076 if (UNTAG_Bool(REGB0)) {
5077 } else {
5078 nit_abort("Cast failed", NULL, LOCATE_typing, 1018);
5079 }
5080 goto label1;
5081 label1: while(0);
5082 stack_frame_head = fra.me.prev;
5083 return fra.me.REG[0];
5084 }
5085 void typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5086 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5087 val_t REGB0;
5088 val_t tmp;
5089 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5090 fra.me.file = LOCATE_typing;
5091 fra.me.line = 1020;
5092 fra.me.meth = LOCATE_typing___ASuperstringExpr___after_typing;
5093 fra.me.has_broke = 0;
5094 fra.me.REG_size = 5;
5095 fra.me.REG[0] = NIT_NULL;
5096 fra.me.REG[1] = NIT_NULL;
5097 fra.me.REG[2] = NIT_NULL;
5098 fra.me.REG[3] = NIT_NULL;
5099 fra.me.REG[4] = NIT_NULL;
5100 fra.me.REG[0] = p0;
5101 fra.me.REG[1] = p1;
5102 /* ./syntax//typing.nit:1022 */
5103 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5104 /* ./syntax//typing.nit:1023 */
5105 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5106 /* ./syntax//typing.nit:1024 */
5107 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5108 /* ./syntax//typing.nit:1025 */
5109 fra.me.REG[4] = CALL_parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5110 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_typing___ASuperstringExpr___after_typing_1));
5111 /* ./syntax//typing.nit:1026 */
5112 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5113 /* ./syntax//typing.nit:1027 */
5114 ATTR_typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5115 /* ./syntax//typing.nit:1028 */
5116 REGB0 = TAG_Bool(true);
5117 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5118 stack_frame_head = fra.me.prev;
5119 return;
5120 }
5121 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){
5122 struct {struct stack_frame_t me;} fra;
5123 fun_t CREG[1];
5124 val_t tmp;
5125 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5126 fra.me.file = LOCATE_typing;
5127 fra.me.line = 0;
5128 fra.me.meth = LOCATE_typing___ASuperstringExpr___after_typing;
5129 fra.me.has_broke = 0;
5130 fra.me.REG_size = 1;
5131 fra.me.REG[0] = NIT_NULL;
5132 fra.me.closure_ctx = closctx_param;
5133 fra.me.closure_funs = CREG;
5134 fra.me.REG[0] = p0;
5135 CREG[0] = clos_fun0;
5136 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5137 stack_frame_head = fra.me.prev;
5138 return;
5139 }
5140 void typing___ANullExpr___after_typing(val_t p0, val_t p1){
5141 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5142 val_t REGB0;
5143 val_t tmp;
5144 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5145 fra.me.file = LOCATE_typing;
5146 fra.me.line = 1033;
5147 fra.me.meth = LOCATE_typing___ANullExpr___after_typing;
5148 fra.me.has_broke = 0;
5149 fra.me.REG_size = 2;
5150 fra.me.REG[0] = NIT_NULL;
5151 fra.me.REG[1] = NIT_NULL;
5152 fra.me.REG[0] = p0;
5153 fra.me.REG[1] = p1;
5154 /* ./syntax//typing.nit:1035 */
5155 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5156 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5157 /* ./syntax//typing.nit:1036 */
5158 REGB0 = TAG_Bool(true);
5159 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5160 stack_frame_head = fra.me.prev;
5161 return;
5162 }
5163 void typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5164 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5165 val_t REGB0;
5166 val_t REGB1;
5167 val_t tmp;
5168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5169 fra.me.file = LOCATE_typing;
5170 fra.me.line = 1041;
5171 fra.me.meth = LOCATE_typing___AArrayExpr___after_typing;
5172 fra.me.has_broke = 0;
5173 fra.me.REG_size = 3;
5174 fra.me.REG[0] = NIT_NULL;
5175 fra.me.REG[1] = NIT_NULL;
5176 fra.me.REG[2] = NIT_NULL;
5177 fra.me.REG[0] = p0;
5178 fra.me.REG[1] = p1;
5179 /* ./syntax//typing.nit:1043 */
5180 fra.me.REG[2] = CALL_parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5181 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]);
5182 /* ./syntax//typing.nit:1044 */
5183 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5184 if (UNTAG_Bool(REGB0)) {
5185 } else {
5186 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5187 if (UNTAG_Bool(REGB1)) {
5188 REGB1 = TAG_Bool(false);
5189 REGB0 = REGB1;
5190 } else {
5191 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5192 REGB0 = REGB1;
5193 }
5194 }
5195 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5196 if (UNTAG_Bool(REGB0)) {
5197 CALL_typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5198 }
5199 stack_frame_head = fra.me.prev;
5200 return;
5201 }
5202 void typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5203 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5204 val_t REGB0;
5205 val_t tmp;
5206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5207 fra.me.file = LOCATE_typing;
5208 fra.me.line = 1047;
5209 fra.me.meth = LOCATE_typing___AArrayExpr___do_typing;
5210 fra.me.has_broke = 0;
5211 fra.me.REG_size = 3;
5212 fra.me.REG[0] = NIT_NULL;
5213 fra.me.REG[1] = NIT_NULL;
5214 fra.me.REG[2] = NIT_NULL;
5215 fra.me.REG[0] = p0;
5216 fra.me.REG[1] = p1;
5217 fra.me.REG[2] = p2;
5218 /* ./syntax//typing.nit:1049 */
5219 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5220 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5221 /* ./syntax//typing.nit:1050 */
5222 REGB0 = TAG_Bool(true);
5223 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5224 stack_frame_head = fra.me.prev;
5225 return;
5226 }
5227 void typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5228 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5229 val_t REGB0;
5230 val_t REGB1;
5231 val_t tmp;
5232 static val_t once_value_2; /* Once value */
5233 static val_t once_value_3; /* Once value */
5234 static val_t once_value_4; /* Once value */
5235 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5236 fra.me.file = LOCATE_typing;
5237 fra.me.line = 1055;
5238 fra.me.meth = LOCATE_typing___ARangeExpr___after_typing;
5239 fra.me.has_broke = 0;
5240 fra.me.REG_size = 6;
5241 fra.me.REG[0] = NIT_NULL;
5242 fra.me.REG[1] = NIT_NULL;
5243 fra.me.REG[2] = NIT_NULL;
5244 fra.me.REG[3] = NIT_NULL;
5245 fra.me.REG[4] = NIT_NULL;
5246 fra.me.REG[5] = NIT_NULL;
5247 fra.me.REG[0] = p0;
5248 fra.me.REG[1] = p1;
5249 /* ./syntax//typing.nit:1057 */
5250 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5251 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5252 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5253 if (UNTAG_Bool(REGB0)) {
5254 REGB0 = TAG_Bool(true);
5255 } else {
5256 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5257 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5258 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5259 REGB0 = REGB1;
5260 }
5261 if (UNTAG_Bool(REGB0)) {
5262 goto label1;
5263 }
5264 /* ./syntax//typing.nit:1058 */
5265 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5266 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5267 /* ./syntax//typing.nit:1059 */
5268 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5269 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5270 /* ./syntax//typing.nit:1060 */
5271 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5272 if (UNTAG_Bool(REGB0)) {
5273 /* ./syntax//typing.nit:1061 */
5274 fra.me.REG[2] = fra.me.REG[3];
5275 } else {
5276 /* ./syntax//typing.nit:1062 */
5277 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5278 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5279 if (UNTAG_Bool(REGB0)) {
5280 /* ./syntax//typing.nit:1063 */
5281 REGB0 = TAG_Int(5);
5282 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
5283 if (!once_value_2) {
5284 fra.me.REG[5] = BOX_NativeString("Type error: ");
5285 REGB0 = TAG_Int(12);
5286 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5287 once_value_2 = fra.me.REG[5];
5288 register_static_object(&once_value_2);
5289 } else fra.me.REG[5] = once_value_2;
5290 fra.me.REG[5] = fra.me.REG[5];
5291 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5292 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5293 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5294 if (!once_value_3) {
5295 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5296 REGB0 = TAG_Int(19);
5297 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
5298 once_value_3 = fra.me.REG[5];
5299 register_static_object(&once_value_3);
5300 } else fra.me.REG[5] = once_value_3;
5301 fra.me.REG[5] = fra.me.REG[5];
5302 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5303 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5304 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5305 if (!once_value_4) {
5306 fra.me.REG[3] = BOX_NativeString(".");
5307 REGB0 = TAG_Int(1);
5308 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5309 once_value_4 = fra.me.REG[3];
5310 register_static_object(&once_value_4);
5311 } else fra.me.REG[3] = once_value_4;
5312 fra.me.REG[3] = fra.me.REG[3];
5313 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5314 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5315 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5316 /* ./syntax//typing.nit:1064 */
5317 goto label1;
5318 }
5319 }
5320 /* ./syntax//typing.nit:1066 */
5321 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5322 /* ./syntax//typing.nit:1067 */
5323 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5324 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5325 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5326 if (UNTAG_Bool(REGB0)) {
5327 REGB0 = TAG_Bool(true);
5328 } else {
5329 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5330 REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5331 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5332 REGB0 = REGB1;
5333 }
5334 if (UNTAG_Bool(REGB0)) {
5335 goto label1;
5336 }
5337 /* ./syntax//typing.nit:1068 */
5338 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5339 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5340 /* ./syntax//typing.nit:1069 */
5341 REGB0 = TAG_Bool(true);
5342 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5343 label1: while(0);
5344 stack_frame_head = fra.me.prev;
5345 return;
5346 }
5347 val_t typing___ASuperExpr___init_in_superclass(val_t p0){
5348 struct {struct stack_frame_t me;} fra;
5349 val_t tmp;
5350 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5351 fra.me.file = LOCATE_typing;
5352 fra.me.line = 1074;
5353 fra.me.meth = LOCATE_typing___ASuperExpr___init_in_superclass;
5354 fra.me.has_broke = 0;
5355 fra.me.REG_size = 1;
5356 fra.me.REG[0] = NIT_NULL;
5357 fra.me.REG[0] = p0;
5358 /* ./syntax//typing.nit:1074 */
5359 fra.me.REG[0] = ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
5360 stack_frame_head = fra.me.prev;
5361 return fra.me.REG[0];
5362 }
5363 val_t typing___ASuperExpr___compute_raw_arguments(val_t p0){
5364 struct {struct stack_frame_t me;} fra;
5365 val_t tmp;
5366 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5367 fra.me.file = LOCATE_typing;
5368 fra.me.line = 1075;
5369 fra.me.meth = LOCATE_typing___ASuperExpr___compute_raw_arguments;
5370 fra.me.has_broke = 0;
5371 fra.me.REG_size = 1;
5372 fra.me.REG[0] = NIT_NULL;
5373 fra.me.REG[0] = p0;
5374 /* ./syntax//typing.nit:1075 */
5375 fra.me.REG[0] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5376 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5377 goto label1;
5378 label1: while(0);
5379 stack_frame_head = fra.me.prev;
5380 return fra.me.REG[0];
5381 }
5382 void typing___ASuperExpr___after_typing(val_t p0, val_t p1){
5383 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
5384 val_t REGB0;
5385 val_t REGB1;
5386 val_t REGB2;
5387 val_t tmp;
5388 static val_t once_value_1; /* Once value */
5389 static val_t once_value_2; /* Once value */
5390 static val_t once_value_3; /* Once value */
5391 static val_t once_value_5; /* Once value */
5392 static val_t once_value_6; /* Once value */
5393 static val_t once_value_8; /* Once value */
5394 static val_t once_value_9; /* Once value */
5395 static val_t once_value_10; /* Once value */
5396 static val_t once_value_11; /* Once value */
5397 static val_t once_value_12; /* Once value */
5398 static val_t once_value_13; /* Once value */
5399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5400 fra.me.file = LOCATE_typing;
5401 fra.me.line = 1076;
5402 fra.me.meth = LOCATE_typing___ASuperExpr___after_typing;
5403 fra.me.has_broke = 0;
5404 fra.me.REG_size = 9;
5405 fra.me.REG[0] = NIT_NULL;
5406 fra.me.REG[1] = NIT_NULL;
5407 fra.me.REG[2] = NIT_NULL;
5408 fra.me.REG[3] = NIT_NULL;
5409 fra.me.REG[4] = NIT_NULL;
5410 fra.me.REG[5] = NIT_NULL;
5411 fra.me.REG[6] = NIT_NULL;
5412 fra.me.REG[7] = NIT_NULL;
5413 fra.me.REG[8] = NIT_NULL;
5414 fra.me.REG[0] = p0;
5415 fra.me.REG[1] = p1;
5416 /* ./syntax//typing.nit:1078 */
5417 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5418 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
5419 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
5420 /* ./syntax//typing.nit:1079 */
5421 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5422 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5423 if (UNTAG_Bool(REGB0)) {
5424 /* ./syntax//typing.nit:1080 */
5425 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5426 REGB0 = TAG_Bool(true);
5427 CALL_abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
5428 } else {
5429 /* ./syntax//typing.nit:1081 */
5430 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5431 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
5432 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
5433 if (UNTAG_Bool(REGB0)) {
5434 /* ./syntax//typing.nit:1082 */
5435 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5436 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5437 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5438 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5439 /* ./../lib/standard//collection//array.nit:231 */
5440 fra.me.REG[3] = fra.me.REG[4];
5441 /* ./../lib/standard//collection//array.nit:234 */
5442 REGB0 = TAG_Int(0);
5443 /* ./../lib/standard//collection//array.nit:235 */
5444 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5445 if (UNTAG_Bool(REGB1)) {
5446 } else {
5447 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5448 }
5449 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5450 /* ./../lib/standard//collection//array.nit:236 */
5451 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[3]);
5452 /* ./../lib/standard//collection//array.nit:237 */
5453 while(1) {
5454 /* ./../lib/standard//collection//array.nit:23 */
5455 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5456 if (UNTAG_Bool(REGB1)) {
5457 } else {
5458 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5459 }
5460 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5461 /* ./../lib/standard//kernel.nit:212 */
5462 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5463 /* ./../lib/standard//collection//array.nit:237 */
5464 if (UNTAG_Bool(REGB1)) {
5465 /* ./../lib/standard//collection//array.nit:238 */
5466 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5467 if (UNTAG_Bool(REGB1)) {
5468 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5469 }
5470 /* ./../lib/standard//collection//array.nit:654 */
5471 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5472 /* ./syntax//typing.nit:1084 */
5473 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5474 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
5475 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5476 if (UNTAG_Bool(REGB1)) {
5477 /* ./syntax//typing.nit:1085 */
5478 REGB1 = TAG_Int(5);
5479 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
5480 if (!once_value_1) {
5481 fra.me.REG[8] = BOX_NativeString("Error: ");
5482 REGB1 = TAG_Int(7);
5483 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5484 once_value_1 = fra.me.REG[8];
5485 register_static_object(&once_value_1);
5486 } else fra.me.REG[8] = once_value_1;
5487 fra.me.REG[8] = fra.me.REG[8];
5488 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5489 fra.me.REG[8] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
5490 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
5491 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5492 if (!once_value_2) {
5493 fra.me.REG[8] = BOX_NativeString("::");
5494 REGB1 = TAG_Int(2);
5495 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5496 once_value_2 = fra.me.REG[8];
5497 register_static_object(&once_value_2);
5498 } else fra.me.REG[8] = once_value_2;
5499 fra.me.REG[8] = fra.me.REG[8];
5500 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5501 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5502 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5503 if (!once_value_3) {
5504 fra.me.REG[8] = BOX_NativeString(" is not a constructor.");
5505 REGB1 = TAG_Int(22);
5506 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
5507 once_value_3 = fra.me.REG[8];
5508 register_static_object(&once_value_3);
5509 } else fra.me.REG[8] = once_value_3;
5510 fra.me.REG[8] = fra.me.REG[8];
5511 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5512 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5513 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
5514 } else {
5515 /* ./syntax//typing.nit:1087 */
5516 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5517 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5518 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
5519 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5520 }
5521 /* ./../lib/standard//collection//array.nit:239 */
5522 REGB1 = TAG_Int(1);
5523 /* ./../lib/standard//kernel.nit:215 */
5524 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5525 /* ./../lib/standard//collection//array.nit:239 */
5526 REGB0 = REGB1;
5527 } else {
5528 /* ./../lib/standard//collection//array.nit:237 */
5529 goto label4;
5530 }
5531 }
5532 label4: while(0);
5533 /* ./syntax//typing.nit:1090 */
5534 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5535 if (UNTAG_Bool(REGB0)) {
5536 /* ./syntax//typing.nit:1091 */
5537 REGB0 = TAG_Int(3);
5538 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5539 if (!once_value_5) {
5540 fra.me.REG[3] = BOX_NativeString("Error: No contructor named ");
5541 REGB0 = TAG_Int(27);
5542 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5543 once_value_5 = fra.me.REG[3];
5544 register_static_object(&once_value_5);
5545 } else fra.me.REG[3] = once_value_5;
5546 fra.me.REG[3] = fra.me.REG[3];
5547 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5548 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5549 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
5550 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5551 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5552 if (!once_value_6) {
5553 fra.me.REG[3] = BOX_NativeString(" in superclasses.");
5554 REGB0 = TAG_Int(17);
5555 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
5556 once_value_6 = fra.me.REG[3];
5557 register_static_object(&once_value_6);
5558 } else fra.me.REG[3] = once_value_6;
5559 fra.me.REG[3] = fra.me.REG[3];
5560 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5561 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5562 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5563 /* ./syntax//typing.nit:1092 */
5564 goto label7;
5565 } else {
5566 /* ./../lib/standard//collection//array.nit:23 */
5567 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5568 if (UNTAG_Bool(REGB0)) {
5569 } else {
5570 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5571 }
5572 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5573 /* ./syntax//typing.nit:1093 */
5574 REGB1 = TAG_Int(1);
5575 /* ./../lib/standard//kernel.nit:214 */
5576 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
5577 /* ./syntax//typing.nit:1093 */
5578 if (UNTAG_Bool(REGB1)) {
5579 /* ./syntax//typing.nit:1094 */
5580 REGB1 = TAG_Int(5);
5581 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB1);
5582 if (!once_value_8) {
5583 fra.me.REG[3] = BOX_NativeString("Error: Conflicting contructors named ");
5584 REGB1 = TAG_Int(37);
5585 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5586 once_value_8 = fra.me.REG[3];
5587 register_static_object(&once_value_8);
5588 } else fra.me.REG[3] = once_value_8;
5589 fra.me.REG[3] = fra.me.REG[3];
5590 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5591 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5592 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
5593 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5594 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5595 if (!once_value_9) {
5596 fra.me.REG[3] = BOX_NativeString(" in superclasses: ");
5597 REGB1 = TAG_Int(18);
5598 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5599 once_value_9 = fra.me.REG[3];
5600 register_static_object(&once_value_9);
5601 } else fra.me.REG[3] = once_value_9;
5602 fra.me.REG[3] = fra.me.REG[3];
5603 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5604 if (!once_value_10) {
5605 fra.me.REG[3] = BOX_NativeString(", ");
5606 REGB1 = TAG_Int(2);
5607 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5608 once_value_10 = fra.me.REG[3];
5609 register_static_object(&once_value_10);
5610 } else fra.me.REG[3] = once_value_10;
5611 fra.me.REG[3] = fra.me.REG[3];
5612 fra.me.REG[3] = CALL_string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5613 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5614 if (!once_value_11) {
5615 fra.me.REG[3] = BOX_NativeString(".");
5616 REGB1 = TAG_Int(1);
5617 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
5618 once_value_11 = fra.me.REG[3];
5619 register_static_object(&once_value_11);
5620 } else fra.me.REG[3] = once_value_11;
5621 fra.me.REG[3] = fra.me.REG[3];
5622 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5623 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5624 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5625 /* ./syntax//typing.nit:1095 */
5626 goto label7;
5627 }
5628 }
5629 /* ./syntax//typing.nit:1097 */
5630 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
5631 /* ./syntax//typing.nit:1098 */
5632 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5633 if (UNTAG_Bool(REGB1)) {
5634 } else {
5635 nit_abort("Assert failed", NULL, LOCATE_typing, 1098);
5636 }
5637 /* ./syntax//typing.nit:1099 */
5638 ATTR_typing___ASuperExpr____init_in_superclass(fra.me.REG[0]) = fra.me.REG[4];
5639 /* ./syntax//typing.nit:1100 */
5640 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
5641 /* ./syntax//typing.nit:1101 */
5642 fra.me.REG[5] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5643 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
5644 REGB0 = TAG_Int(0);
5645 /* ./../lib/standard//kernel.nit:214 */
5646 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
5647 /* ./syntax//typing.nit:1101 */
5648 if (UNTAG_Bool(REGB0)) {
5649 /* ./syntax//typing.nit:1102 */
5650 fra.me.REG[5] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5651 fra.me.REG[5] = CALL_syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
5652 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5653 if (UNTAG_Bool(REGB0)) {
5654 } else {
5655 nit_abort("Cast failed", NULL, LOCATE_typing, 1102);
5656 }
5657 REGB0 = TAG_Bool(true);
5658 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);
5659 /* ./syntax//typing.nit:1103 */
5660 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5661 fra.me.REG[3] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5662 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]);
5663 }
5664 } else {
5665 /* ./syntax//typing.nit:1106 */
5666 REGB0 = TAG_Int(3);
5667 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
5668 if (!once_value_12) {
5669 fra.me.REG[4] = BOX_NativeString("Error: No super method to call for ");
5670 REGB0 = TAG_Int(35);
5671 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5672 once_value_12 = fra.me.REG[4];
5673 register_static_object(&once_value_12);
5674 } else fra.me.REG[4] = once_value_12;
5675 fra.me.REG[4] = fra.me.REG[4];
5676 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5677 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5678 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5679 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5680 if (!once_value_13) {
5681 fra.me.REG[4] = BOX_NativeString(".");
5682 REGB0 = TAG_Int(1);
5683 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
5684 once_value_13 = fra.me.REG[4];
5685 register_static_object(&once_value_13);
5686 } else fra.me.REG[4] = once_value_13;
5687 fra.me.REG[4] = fra.me.REG[4];
5688 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5689 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5690 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
5691 /* ./syntax//typing.nit:1107 */
5692 goto label7;
5693 }
5694 }
5695 /* ./syntax//typing.nit:1110 */
5696 fra.me.REG[3] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
5697 fra.me.REG[4] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5698 fra.me.REG[4] = CALL_syntax_base___Variable___stype(fra.me.REG[4])(fra.me.REG[4]);
5699 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5700 if (UNTAG_Bool(REGB0)) {
5701 } else {
5702 nit_abort("Cast failed", NULL, LOCATE_typing, 1110);
5703 }
5704 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5705 if (UNTAG_Bool(REGB0)) {
5706 nit_abort("Reciever is null", NULL, LOCATE_typing, 1110);
5707 }
5708 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5709 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
5710 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5711 if (UNTAG_Bool(REGB0)) {
5712 } else {
5713 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5714 if (UNTAG_Bool(REGB1)) {
5715 REGB1 = TAG_Bool(false);
5716 REGB0 = REGB1;
5717 } else {
5718 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5719 REGB0 = REGB1;
5720 }
5721 }
5722 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5723 if (UNTAG_Bool(REGB0)) {
5724 /* ./syntax//typing.nit:1111 */
5725 fra.me.REG[4] = NEW_Array_array___Array___init();
5726 /* ./syntax//typing.nit:1112 */
5727 fra.me.REG[3] = NIT_NULL;
5728 /* ./../lib/standard//collection//array.nit:234 */
5729 REGB0 = TAG_Int(0);
5730 /* ./../lib/standard//collection//array.nit:235 */
5731 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5732 if (UNTAG_Bool(REGB1)) {
5733 } else {
5734 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5735 }
5736 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5737 /* ./../lib/standard//collection//array.nit:236 */
5738 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[2]);
5739 /* ./../lib/standard//collection//array.nit:237 */
5740 while(1) {
5741 /* ./../lib/standard//collection//array.nit:23 */
5742 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5743 if (UNTAG_Bool(REGB1)) {
5744 } else {
5745 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5746 }
5747 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
5748 /* ./../lib/standard//kernel.nit:212 */
5749 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5750 /* ./../lib/standard//collection//array.nit:237 */
5751 if (UNTAG_Bool(REGB1)) {
5752 /* ./../lib/standard//collection//array.nit:238 */
5753 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5754 if (UNTAG_Bool(REGB1)) {
5755 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5756 }
5757 /* ./../lib/standard//collection//array.nit:654 */
5758 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5759 /* ./syntax//typing.nit:1114 */
5760 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
5761 if (UNTAG_Bool(REGB1)) {
5762 } else {
5763 nit_abort("Assert failed", NULL, LOCATE_typing, 1114);
5764 }
5765 /* ./syntax//typing.nit:1115 */
5766 fra.me.REG[7] = CALL_typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5767 fra.me.REG[7] = CALL_syntax_base___Variable___stype(fra.me.REG[7])(fra.me.REG[7]);
5768 REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5769 if (UNTAG_Bool(REGB1)) {
5770 } else {
5771 nit_abort("Cast failed", NULL, LOCATE_typing, 1115);
5772 }
5773 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5774 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
5775 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5776 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5777 if (UNTAG_Bool(REGB1)) {
5778 nit_abort("Reciever is null", NULL, LOCATE_typing, 1115);
5779 }
5780 fra.me.REG[6] = CALL_static_type___MMType___for_module(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
5781 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5782 fra.me.REG[7] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
5783 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5784 if (UNTAG_Bool(REGB1)) {
5785 nit_abort("Reciever is null", NULL, LOCATE_typing, 1115);
5786 }
5787 fra.me.REG[7] = CALL_static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
5788 fra.me.REG[7] = CALL_static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5789 /* ./syntax//typing.nit:1116 */
5790 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
5791 /* ./syntax//typing.nit:1117 */
5792 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5793 if (UNTAG_Bool(REGB1)) {
5794 } else {
5795 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5796 if (UNTAG_Bool(REGB2)) {
5797 REGB2 = TAG_Bool(false);
5798 REGB1 = REGB2;
5799 } else {
5800 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5801 REGB1 = REGB2;
5802 }
5803 }
5804 if (UNTAG_Bool(REGB1)) {
5805 REGB1 = TAG_Bool(true);
5806 } else {
5807 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5808 if (UNTAG_Bool(REGB2)) {
5809 nit_abort("Reciever is null", NULL, LOCATE_typing, 1117);
5810 }
5811 REGB2 = CALL_static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
5812 REGB1 = REGB2;
5813 }
5814 if (UNTAG_Bool(REGB1)) {
5815 /* ./syntax//typing.nit:1118 */
5816 fra.me.REG[3] = fra.me.REG[7];
5817 }
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 label14;
5827 }
5828 }
5829 label14: while(0);
5830 /* ./../lib/standard//collection//array.nit:234 */
5831 REGB0 = TAG_Int(0);
5832 /* ./../lib/standard//collection//array.nit:235 */
5833 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5834 if (UNTAG_Bool(REGB1)) {
5835 } else {
5836 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5837 }
5838 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
5839 /* ./../lib/standard//collection//array.nit:236 */
5840 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[4]);
5841 /* ./../lib/standard//collection//array.nit:237 */
5842 while(1) {
5843 /* ./../lib/standard//collection//array.nit:23 */
5844 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5845 if (UNTAG_Bool(REGB1)) {
5846 } else {
5847 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5848 }
5849 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
5850 /* ./../lib/standard//kernel.nit:212 */
5851 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5852 /* ./../lib/standard//collection//array.nit:237 */
5853 if (UNTAG_Bool(REGB1)) {
5854 /* ./../lib/standard//collection//array.nit:238 */
5855 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5856 if (UNTAG_Bool(REGB1)) {
5857 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5858 }
5859 /* ./../lib/standard//collection//array.nit:654 */
5860 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5861 /* ./syntax//typing.nit:1122 */
5862 REGB1 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
5863 if (UNTAG_Bool(REGB1)) {
5864 } else {
5865 nit_abort("Cast failed", NULL, LOCATE_typing, 1122);
5866 }
5867 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]);
5868 /* ./../lib/standard//collection//array.nit:239 */
5869 REGB1 = TAG_Int(1);
5870 /* ./../lib/standard//kernel.nit:215 */
5871 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5872 /* ./../lib/standard//collection//array.nit:239 */
5873 REGB0 = REGB1;
5874 } else {
5875 /* ./../lib/standard//collection//array.nit:237 */
5876 goto label15;
5877 }
5878 }
5879 label15: while(0);
5880 /* ./syntax//typing.nit:1124 */
5881 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5882 }
5883 /* ./syntax//typing.nit:1126 */
5884 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5885 /* ./syntax//typing.nit:1127 */
5886 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
5887 if (UNTAG_Bool(REGB0)) {
5888 } else {
5889 nit_abort("Assert failed", NULL, LOCATE_typing, 1127);
5890 }
5891 /* ./syntax//typing.nit:1128 */
5892 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[1];
5893 /* ./syntax//typing.nit:1129 */
5894 REGB0 = TAG_Bool(true);
5895 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5896 label7: while(0);
5897 stack_frame_head = fra.me.prev;
5898 return;
5899 }
5900 val_t typing___AExternCall___target_class_name(val_t p0){
5901 struct {struct stack_frame_t me;} fra;
5902 val_t tmp;
5903 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5904 fra.me.file = LOCATE_typing;
5905 fra.me.line = 1134;
5906 fra.me.meth = LOCATE_typing___AExternCall___target_class_name;
5907 fra.me.has_broke = 0;
5908 fra.me.REG_size = 1;
5909 fra.me.REG[0] = NIT_NULL;
5910 fra.me.REG[0] = p0;
5911 /* ./syntax//typing.nit:1134 */
5912 fra.me.REG[0] = NIT_NULL;
5913 goto label1;
5914 label1: while(0);
5915 stack_frame_head = fra.me.prev;
5916 return fra.me.REG[0];
5917 }
5918 val_t typing___AExternCall___target_method_name(val_t p0){
5919 struct {struct stack_frame_t me;} fra;
5920 val_t tmp;
5921 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5922 fra.me.file = LOCATE_typing;
5923 fra.me.line = 1135;
5924 fra.me.meth = LOCATE_typing___AExternCall___target_method_name;
5925 fra.me.has_broke = 0;
5926 fra.me.REG_size = 0;
5927 /* ./syntax//typing.nit:1135 */
5928 nit_abort("Deferred method called", NULL, LOCATE_typing, 1135);
5929 stack_frame_head = fra.me.prev;
5930 return NIT_NULL;
5931 }
5932 void typing___AExternCall___after_typing(val_t p0, val_t p1){
5933 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5934 val_t REGB0;
5935 val_t REGB1;
5936 val_t tmp;
5937 static val_t once_value_1; /* Once value */
5938 static val_t once_value_2; /* Once value */
5939 static val_t once_value_4; /* Once value */
5940 static val_t once_value_5; /* Once value */
5941 static val_t once_value_6; /* Once value */
5942 static val_t once_value_7; /* Once value */
5943 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5944 fra.me.file = LOCATE_typing;
5945 fra.me.line = 1137;
5946 fra.me.meth = LOCATE_typing___AExternCall___after_typing;
5947 fra.me.has_broke = 0;
5948 fra.me.REG_size = 7;
5949 fra.me.REG[0] = NIT_NULL;
5950 fra.me.REG[1] = NIT_NULL;
5951 fra.me.REG[2] = NIT_NULL;
5952 fra.me.REG[3] = NIT_NULL;
5953 fra.me.REG[4] = NIT_NULL;
5954 fra.me.REG[5] = NIT_NULL;
5955 fra.me.REG[6] = NIT_NULL;
5956 fra.me.REG[0] = p0;
5957 fra.me.REG[1] = p1;
5958 /* ./syntax//typing.nit:1139 */
5959 fra.me.REG[2] = CALL_typing___AExternCall___target_class_name(fra.me.REG[0])(fra.me.REG[0]);
5960 /* ./syntax//typing.nit:1140 */
5961 fra.me.REG[3] = CALL_typing___AExternCall___target_method_name(fra.me.REG[0])(fra.me.REG[0]);
5962 /* ./syntax//typing.nit:1147 */
5963 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5964 if (UNTAG_Bool(REGB0)) {
5965 } else {
5966 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5967 if (UNTAG_Bool(REGB1)) {
5968 REGB1 = TAG_Bool(false);
5969 REGB0 = REGB1;
5970 } else {
5971 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5972 REGB0 = REGB1;
5973 }
5974 }
5975 if (UNTAG_Bool(REGB0)) {
5976 /* ./syntax//typing.nit:1148 */
5977 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5978 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
5979 } else {
5980 /* ./syntax//typing.nit:1150 */
5981 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5982 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
5983 REGB0 = CALL_abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
5984 if (UNTAG_Bool(REGB0)) {
5985 /* ./syntax//typing.nit:1151 */
5986 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5987 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
5988 fra.me.REG[5] = CALL_abstractmetamodel___MMModule___global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
5989 /* ./syntax//typing.nit:1152 */
5990 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5991 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
5992 fra.me.REG[5] = CALL_abstractmetamodel___MMModule_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
5993 fra.me.REG[4] = fra.me.REG[5];
5994 } else {
5995 /* ./syntax//typing.nit:1154 */
5996 REGB0 = TAG_Int(3);
5997 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
5998 if (!once_value_1) {
5999 fra.me.REG[6] = BOX_NativeString("Error: class ");
6000 REGB0 = TAG_Int(13);
6001 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6002 once_value_1 = fra.me.REG[6];
6003 register_static_object(&once_value_1);
6004 } else fra.me.REG[6] = once_value_1;
6005 fra.me.REG[6] = fra.me.REG[6];
6006 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6007 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6008 if (UNTAG_Bool(REGB0)) {
6009 nit_abort("Reciever is null", NULL, LOCATE_typing, 1154);
6010 }
6011 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6012 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6013 if (!once_value_2) {
6014 fra.me.REG[2] = BOX_NativeString(", not found.");
6015 REGB0 = TAG_Int(12);
6016 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
6017 once_value_2 = fra.me.REG[2];
6018 register_static_object(&once_value_2);
6019 } else fra.me.REG[2] = once_value_2;
6020 fra.me.REG[2] = fra.me.REG[2];
6021 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6022 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6023 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6024 /* ./syntax//typing.nit:1155 */
6025 goto label3;
6026 }
6027 }
6028 /* ./syntax//typing.nit:1159 */
6029 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6030 if (UNTAG_Bool(REGB0)) {
6031 /* ./syntax//typing.nit:1160 */
6032 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6033 /* ./syntax//typing.nit:1162 */
6034 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6035 /* ./syntax//typing.nit:1164 */
6036 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
6037 if (UNTAG_Bool(REGB0)) {
6038 } else {
6039 /* ./syntax//typing.nit:1167 */
6040 REGB0 = TAG_Int(3);
6041 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
6042 if (!once_value_4) {
6043 fra.me.REG[6] = BOX_NativeString("Error: property ");
6044 REGB0 = TAG_Int(16);
6045 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6046 once_value_4 = fra.me.REG[6];
6047 register_static_object(&once_value_4);
6048 } else fra.me.REG[6] = once_value_4;
6049 fra.me.REG[6] = fra.me.REG[6];
6050 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6051 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6052 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6053 if (!once_value_5) {
6054 fra.me.REG[6] = BOX_NativeString(" is not a method.");
6055 REGB0 = TAG_Int(17);
6056 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6057 once_value_5 = fra.me.REG[6];
6058 register_static_object(&once_value_5);
6059 } else fra.me.REG[6] = once_value_5;
6060 fra.me.REG[6] = fra.me.REG[6];
6061 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6062 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6063 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6064 /* ./syntax//typing.nit:1168 */
6065 goto label3;
6066 }
6067 } else {
6068 /* ./syntax//typing.nit:1171 */
6069 REGB0 = TAG_Int(3);
6070 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
6071 if (!once_value_6) {
6072 fra.me.REG[6] = BOX_NativeString("Error: property ");
6073 REGB0 = TAG_Int(16);
6074 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6075 once_value_6 = fra.me.REG[6];
6076 register_static_object(&once_value_6);
6077 } else fra.me.REG[6] = once_value_6;
6078 fra.me.REG[6] = fra.me.REG[6];
6079 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6080 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6081 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6082 if (!once_value_7) {
6083 fra.me.REG[3] = BOX_NativeString(" not found in target class.");
6084 REGB0 = TAG_Int(27);
6085 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
6086 once_value_7 = fra.me.REG[3];
6087 register_static_object(&once_value_7);
6088 } else fra.me.REG[3] = once_value_7;
6089 fra.me.REG[3] = fra.me.REG[3];
6090 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6091 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6092 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6093 /* ./syntax//typing.nit:1172 */
6094 goto label3;
6095 }
6096 /* ./syntax//typing.nit:1175 */
6097 fra.me.REG[5] = NEW_MMExplicitImport_abstractmetamodel___MMExplicitImport___init(fra.me.REG[4], fra.me.REG[5]);
6098 /* ./syntax//typing.nit:1176 */
6099 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6100 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
6101 if (UNTAG_Bool(REGB0)) {
6102 } else {
6103 nit_abort("Cast failed", NULL, LOCATE_typing, 1176);
6104 }
6105 fra.me.REG[1] = CALL_abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
6106 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6107 label3: while(0);
6108 stack_frame_head = fra.me.prev;
6109 return;
6110 }
6111 val_t typing___ALocalPropExternCall___target_class_name(val_t p0){
6112 struct {struct stack_frame_t me;} fra;
6113 val_t tmp;
6114 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6115 fra.me.file = LOCATE_typing;
6116 fra.me.line = 1181;
6117 fra.me.meth = LOCATE_typing___ALocalPropExternCall___target_class_name;
6118 fra.me.has_broke = 0;
6119 fra.me.REG_size = 1;
6120 fra.me.REG[0] = NIT_NULL;
6121 fra.me.REG[0] = p0;
6122 /* ./syntax//typing.nit:1181 */
6123 fra.me.REG[0] = NIT_NULL;
6124 goto label1;
6125 label1: while(0);
6126 stack_frame_head = fra.me.prev;
6127 return fra.me.REG[0];
6128 }
6129 val_t typing___ALocalPropExternCall___target_method_name(val_t p0){
6130 struct {struct stack_frame_t me;} fra;
6131 val_t REGB0;
6132 val_t tmp;
6133 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6134 fra.me.file = LOCATE_typing;
6135 fra.me.line = 1182;
6136 fra.me.meth = LOCATE_typing___ALocalPropExternCall___target_method_name;
6137 fra.me.has_broke = 0;
6138 fra.me.REG_size = 1;
6139 fra.me.REG[0] = NIT_NULL;
6140 fra.me.REG[0] = p0;
6141 /* ./syntax//typing.nit:1182 */
6142 fra.me.REG[0] = CALL_parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
6143 fra.me.REG[0] = CALL_syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
6144 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_Symbol, ID_Symbol)) /*cast Symbol*/;
6145 if (UNTAG_Bool(REGB0)) {
6146 } else {
6147 nit_abort("Cast failed", NULL, LOCATE_typing, 1182);
6148 }
6149 goto label1;
6150 label1: while(0);
6151 stack_frame_head = fra.me.prev;
6152 return fra.me.REG[0];
6153 }
6154 void typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
6155 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6156 val_t REGB0;
6157 val_t tmp;
6158 static val_t once_value_1; /* Once value */
6159 static val_t once_value_2; /* Once value */
6160 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6161 fra.me.file = LOCATE_typing;
6162 fra.me.line = 1186;
6163 fra.me.meth = LOCATE_typing___ASuperExternCall___after_typing;
6164 fra.me.has_broke = 0;
6165 fra.me.REG_size = 4;
6166 fra.me.REG[0] = NIT_NULL;
6167 fra.me.REG[1] = NIT_NULL;
6168 fra.me.REG[2] = NIT_NULL;
6169 fra.me.REG[3] = NIT_NULL;
6170 fra.me.REG[0] = p0;
6171 fra.me.REG[1] = p1;
6172 /* ./syntax//typing.nit:1188 */
6173 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6174 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
6175 fra.me.REG[2] = CALL_partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
6176 /* ./syntax//typing.nit:1189 */
6177 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
6178 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6179 if (UNTAG_Bool(REGB0)) {
6180 /* ./syntax//typing.nit:1190 */
6181 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6182 REGB0 = TAG_Bool(true);
6183 CALL_abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
6184 } else {
6185 /* ./syntax//typing.nit:1192 */
6186 REGB0 = TAG_Int(3);
6187 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
6188 if (!once_value_1) {
6189 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
6190 REGB0 = TAG_Int(35);
6191 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
6192 once_value_1 = fra.me.REG[3];
6193 register_static_object(&once_value_1);
6194 } else fra.me.REG[3] = once_value_1;
6195 fra.me.REG[3] = fra.me.REG[3];
6196 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6197 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6198 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6199 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6200 if (!once_value_2) {
6201 fra.me.REG[3] = BOX_NativeString(".");
6202 REGB0 = TAG_Int(1);
6203 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
6204 once_value_2 = fra.me.REG[3];
6205 register_static_object(&once_value_2);
6206 } else fra.me.REG[3] = once_value_2;
6207 fra.me.REG[3] = fra.me.REG[3];
6208 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6209 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6210 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6211 /* ./syntax//typing.nit:1193 */
6212 goto label3;
6213 }
6214 label3: while(0);
6215 stack_frame_head = fra.me.prev;
6216 return;
6217 }
6218 val_t typing___AFullPropExternCall___target_class_name(val_t p0){
6219 struct {struct stack_frame_t me;} fra;
6220 val_t tmp;
6221 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6222 fra.me.file = LOCATE_typing;
6223 fra.me.line = 1199;
6224 fra.me.meth = LOCATE_typing___AFullPropExternCall___target_class_name;
6225 fra.me.has_broke = 0;
6226 fra.me.REG_size = 1;
6227 fra.me.REG[0] = NIT_NULL;
6228 fra.me.REG[0] = p0;
6229 /* ./syntax//typing.nit:1199 */
6230 fra.me.REG[0] = CALL_parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6231 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6232 goto label1;
6233 label1: while(0);
6234 stack_frame_head = fra.me.prev;
6235 return fra.me.REG[0];
6236 }
6237 val_t typing___AFullPropExternCall___target_method_name(val_t p0){
6238 struct {struct stack_frame_t me;} fra;
6239 val_t REGB0;
6240 val_t tmp;
6241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6242 fra.me.file = LOCATE_typing;
6243 fra.me.line = 1200;
6244 fra.me.meth = LOCATE_typing___AFullPropExternCall___target_method_name;
6245 fra.me.has_broke = 0;
6246 fra.me.REG_size = 1;
6247 fra.me.REG[0] = NIT_NULL;
6248 fra.me.REG[0] = p0;
6249 /* ./syntax//typing.nit:1200 */
6250 fra.me.REG[0] = CALL_parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
6251 fra.me.REG[0] = CALL_syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
6252 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_Symbol, ID_Symbol)) /*cast Symbol*/;
6253 if (UNTAG_Bool(REGB0)) {
6254 } else {
6255 nit_abort("Cast failed", NULL, LOCATE_typing, 1200);
6256 }
6257 goto label1;
6258 label1: while(0);
6259 stack_frame_head = fra.me.prev;
6260 return fra.me.REG[0];
6261 }
6262 val_t typing___AInitPropExternCall___target_class_name(val_t p0){
6263 struct {struct stack_frame_t me;} fra;
6264 val_t tmp;
6265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6266 fra.me.file = LOCATE_typing;
6267 fra.me.line = 1204;
6268 fra.me.meth = LOCATE_typing___AInitPropExternCall___target_class_name;
6269 fra.me.has_broke = 0;
6270 fra.me.REG_size = 1;
6271 fra.me.REG[0] = NIT_NULL;
6272 fra.me.REG[0] = p0;
6273 /* ./syntax//typing.nit:1204 */
6274 fra.me.REG[0] = CALL_parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6275 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6276 goto label1;
6277 label1: while(0);
6278 stack_frame_head = fra.me.prev;
6279 return fra.me.REG[0];
6280 }
6281 val_t typing___AInitPropExternCall___target_method_name(val_t p0){
6282 struct {struct stack_frame_t me;} fra;
6283 val_t REGB0;
6284 val_t tmp;
6285 static val_t once_value_1; /* Once value */
6286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6287 fra.me.file = LOCATE_typing;
6288 fra.me.line = 1205;
6289 fra.me.meth = LOCATE_typing___AInitPropExternCall___target_method_name;
6290 fra.me.has_broke = 0;
6291 fra.me.REG_size = 1;
6292 fra.me.REG[0] = NIT_NULL;
6293 fra.me.REG[0] = p0;
6294 /* ./syntax//typing.nit:1205 */
6295 if (!once_value_1) {
6296 fra.me.REG[0] = BOX_NativeString("init");
6297 REGB0 = TAG_Int(4);
6298 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
6299 once_value_1 = fra.me.REG[0];
6300 register_static_object(&once_value_1);
6301 } else fra.me.REG[0] = once_value_1;
6302 fra.me.REG[0] = fra.me.REG[0];
6303 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6304 goto label2;
6305 label2: while(0);
6306 stack_frame_head = fra.me.prev;
6307 return fra.me.REG[0];
6308 }
6309 val_t typing___ACastExternCall___from_type(val_t p0){
6310 struct {struct stack_frame_t me;} fra;
6311 val_t tmp;
6312 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6313 fra.me.file = LOCATE_typing;
6314 fra.me.line = 1209;
6315 fra.me.meth = LOCATE_typing___ACastExternCall___from_type;
6316 fra.me.has_broke = 0;
6317 fra.me.REG_size = 0;
6318 /* ./syntax//typing.nit:1209 */
6319 nit_abort("Deferred method called", NULL, LOCATE_typing, 1209);
6320 stack_frame_head = fra.me.prev;
6321 return NIT_NULL;
6322 }
6323 val_t typing___ACastExternCall___to_type(val_t p0){
6324 struct {struct stack_frame_t me;} fra;
6325 val_t tmp;
6326 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6327 fra.me.file = LOCATE_typing;
6328 fra.me.line = 1210;
6329 fra.me.meth = LOCATE_typing___ACastExternCall___to_type;
6330 fra.me.has_broke = 0;
6331 fra.me.REG_size = 0;
6332 /* ./syntax//typing.nit:1210 */
6333 nit_abort("Deferred method called", NULL, LOCATE_typing, 1210);
6334 stack_frame_head = fra.me.prev;
6335 return NIT_NULL;
6336 }
6337 void typing___ACastExternCall___after_typing(val_t p0, val_t p1){
6338 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6339 val_t REGB0;
6340 val_t REGB1;
6341 val_t tmp;
6342 static val_t once_value_1; /* Once value */
6343 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6344 fra.me.file = LOCATE_typing;
6345 fra.me.line = 1212;
6346 fra.me.meth = LOCATE_typing___ACastExternCall___after_typing;
6347 fra.me.has_broke = 0;
6348 fra.me.REG_size = 4;
6349 fra.me.REG[0] = NIT_NULL;
6350 fra.me.REG[1] = NIT_NULL;
6351 fra.me.REG[2] = NIT_NULL;
6352 fra.me.REG[3] = NIT_NULL;
6353 fra.me.REG[0] = p0;
6354 fra.me.REG[1] = p1;
6355 /* ./syntax//typing.nit:1214 */
6356 fra.me.REG[2] = CALL_typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6357 fra.me.REG[3] = CALL_typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6358 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
6359 if (UNTAG_Bool(REGB0)) {
6360 } else {
6361 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6362 REGB0 = REGB1;
6363 }
6364 if (UNTAG_Bool(REGB0)) {
6365 /* ./syntax//typing.nit:1216 */
6366 if (!once_value_1) {
6367 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
6368 REGB0 = TAG_Int(44);
6369 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
6370 once_value_1 = fra.me.REG[3];
6371 register_static_object(&once_value_1);
6372 } else fra.me.REG[3] = once_value_1;
6373 fra.me.REG[3] = fra.me.REG[3];
6374 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
6375 }
6376 /* ./syntax//typing.nit:1219 */
6377 fra.me.REG[3] = CALL_typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6378 fra.me.REG[0] = CALL_typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6379 fra.me.REG[0] = NEW_MMImportedCast_static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[0]);
6380 /* ./syntax//typing.nit:1220 */
6381 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6382 /* ./syntax//typing.nit:1221 */
6383 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
6384 if (UNTAG_Bool(REGB0)) {
6385 } else {
6386 nit_abort("Assert failed", NULL, LOCATE_typing, 1221);
6387 }
6388 /* ./syntax//typing.nit:1222 */
6389 fra.me.REG[1] = CALL_static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
6390 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6391 stack_frame_head = fra.me.prev;
6392 return;
6393 }
6394 val_t typing___ACastAsExternCall___from_type(val_t p0){
6395 struct {struct stack_frame_t me;} fra;
6396 val_t tmp;
6397 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6398 fra.me.file = LOCATE_typing;
6399 fra.me.line = 1227;
6400 fra.me.meth = LOCATE_typing___ACastAsExternCall___from_type;
6401 fra.me.has_broke = 0;
6402 fra.me.REG_size = 1;
6403 fra.me.REG[0] = NIT_NULL;
6404 fra.me.REG[0] = p0;
6405 /* ./syntax//typing.nit:1227 */
6406 fra.me.REG[0] = CALL_parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
6407 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6408 goto label1;
6409 label1: while(0);
6410 stack_frame_head = fra.me.prev;
6411 return fra.me.REG[0];
6412 }
6413 val_t typing___ACastAsExternCall___to_type(val_t p0){
6414 struct {struct stack_frame_t me;} fra;
6415 val_t tmp;
6416 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6417 fra.me.file = LOCATE_typing;
6418 fra.me.line = 1228;
6419 fra.me.meth = LOCATE_typing___ACastAsExternCall___to_type;
6420 fra.me.has_broke = 0;
6421 fra.me.REG_size = 1;
6422 fra.me.REG[0] = NIT_NULL;
6423 fra.me.REG[0] = p0;
6424 /* ./syntax//typing.nit:1228 */
6425 fra.me.REG[0] = CALL_parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
6426 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6427 goto label1;
6428 label1: while(0);
6429 stack_frame_head = fra.me.prev;
6430 return fra.me.REG[0];
6431 }
6432 val_t typing___AAsNullableExternCall___from_type(val_t p0){
6433 struct {struct stack_frame_t me;} fra;
6434 val_t tmp;
6435 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6436 fra.me.file = LOCATE_typing;
6437 fra.me.line = 1232;
6438 fra.me.meth = LOCATE_typing___AAsNullableExternCall___from_type;
6439 fra.me.has_broke = 0;
6440 fra.me.REG_size = 1;
6441 fra.me.REG[0] = NIT_NULL;
6442 fra.me.REG[0] = p0;
6443 /* ./syntax//typing.nit:1232 */
6444 fra.me.REG[0] = CALL_parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6445 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6446 goto label1;
6447 label1: while(0);
6448 stack_frame_head = fra.me.prev;
6449 return fra.me.REG[0];
6450 }
6451 val_t typing___AAsNullableExternCall___to_type(val_t p0){
6452 struct {struct stack_frame_t me;} fra;
6453 val_t tmp;
6454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6455 fra.me.file = LOCATE_typing;
6456 fra.me.line = 1233;
6457 fra.me.meth = LOCATE_typing___AAsNullableExternCall___to_type;
6458 fra.me.has_broke = 0;
6459 fra.me.REG_size = 1;
6460 fra.me.REG[0] = NIT_NULL;
6461 fra.me.REG[0] = p0;
6462 /* ./syntax//typing.nit:1233 */
6463 fra.me.REG[0] = CALL_parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6464 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6465 fra.me.REG[0] = CALL_static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
6466 goto label1;
6467 label1: while(0);
6468 stack_frame_head = fra.me.prev;
6469 return fra.me.REG[0];
6470 }
6471 val_t typing___AAsNotNullableExternCall___from_type(val_t p0){
6472 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6473 val_t REGB0;
6474 val_t tmp;
6475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6476 fra.me.file = LOCATE_typing;
6477 fra.me.line = 1237;
6478 fra.me.meth = LOCATE_typing___AAsNotNullableExternCall___from_type;
6479 fra.me.has_broke = 0;
6480 fra.me.REG_size = 2;
6481 fra.me.REG[0] = NIT_NULL;
6482 fra.me.REG[1] = NIT_NULL;
6483 fra.me.REG[0] = p0;
6484 /* ./syntax//typing.nit:1239 */
6485 fra.me.REG[0] = CALL_parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6486 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6487 /* ./syntax//typing.nit:1240 */
6488 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
6489 if (UNTAG_Bool(REGB0)) {
6490 /* ./syntax//typing.nit:1242 */
6491 fra.me.REG[1] = fra.me.REG[0];
6492 goto label1;
6493 } else {
6494 /* ./syntax//typing.nit:1244 */
6495 fra.me.REG[0] = CALL_static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
6496 fra.me.REG[1] = fra.me.REG[0];
6497 goto label1;
6498 }
6499 label1: while(0);
6500 stack_frame_head = fra.me.prev;
6501 return fra.me.REG[1];
6502 }
6503 val_t typing___AAsNotNullableExternCall___to_type(val_t p0){
6504 struct {struct stack_frame_t me;} fra;
6505 val_t tmp;
6506 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6507 fra.me.file = LOCATE_typing;
6508 fra.me.line = 1247;
6509 fra.me.meth = LOCATE_typing___AAsNotNullableExternCall___to_type;
6510 fra.me.has_broke = 0;
6511 fra.me.REG_size = 1;
6512 fra.me.REG[0] = NIT_NULL;
6513 fra.me.REG[0] = p0;
6514 /* ./syntax//typing.nit:1247 */
6515 fra.me.REG[0] = CALL_parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6516 fra.me.REG[0] = CALL_syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6517 fra.me.REG[0] = CALL_static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
6518 goto label1;
6519 label1: while(0);
6520 stack_frame_head = fra.me.prev;
6521 return fra.me.REG[0];
6522 }
6523 val_t typing___AAttrFormExpr___prop(val_t p0){
6524 struct {struct stack_frame_t me;} fra;
6525 val_t REGB0;
6526 val_t tmp;
6527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6528 fra.me.file = LOCATE_typing;
6529 fra.me.line = 1251;
6530 fra.me.meth = LOCATE_typing___AAttrFormExpr___prop;
6531 fra.me.has_broke = 0;
6532 fra.me.REG_size = 1;
6533 fra.me.REG[0] = NIT_NULL;
6534 fra.me.REG[0] = p0;
6535 /* ./syntax//typing.nit:1251 */
6536 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6537 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6538 if (UNTAG_Bool(REGB0)) {
6539 } else {
6540 nit_abort("Cast failed", NULL, LOCATE_typing, 1251);
6541 }
6542 goto label1;
6543 label1: while(0);
6544 stack_frame_head = fra.me.prev;
6545 return fra.me.REG[0];
6546 }
6547 val_t typing___AAttrFormExpr___attr_type(val_t p0){
6548 struct {struct stack_frame_t me;} fra;
6549 val_t REGB0;
6550 val_t tmp;
6551 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6552 fra.me.file = LOCATE_typing;
6553 fra.me.line = 1254;
6554 fra.me.meth = LOCATE_typing___AAttrFormExpr___attr_type;
6555 fra.me.has_broke = 0;
6556 fra.me.REG_size = 1;
6557 fra.me.REG[0] = NIT_NULL;
6558 fra.me.REG[0] = p0;
6559 /* ./syntax//typing.nit:1254 */
6560 fra.me.REG[0] = ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]);
6561 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6562 if (UNTAG_Bool(REGB0)) {
6563 } else {
6564 nit_abort("Cast failed", NULL, LOCATE_typing, 1254);
6565 }
6566 goto label1;
6567 label1: while(0);
6568 stack_frame_head = fra.me.prev;
6569 return fra.me.REG[0];
6570 }
6571 void typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
6572 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6573 val_t REGB0;
6574 val_t REGB1;
6575 val_t tmp;
6576 static val_t once_value_2; /* Once value */
6577 static val_t once_value_3; /* Once value */
6578 static val_t once_value_4; /* Once value */
6579 static val_t once_value_5; /* Once value */
6580 static val_t once_value_6; /* Once value */
6581 static val_t once_value_7; /* Once value */
6582 static val_t once_value_8; /* Once value */
6583 static val_t once_value_9; /* Once value */
6584 static val_t once_value_10; /* Once value */
6585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6586 fra.me.file = LOCATE_typing;
6587 fra.me.line = 1257;
6588 fra.me.meth = LOCATE_typing___AAttrFormExpr___do_typing;
6589 fra.me.has_broke = 0;
6590 fra.me.REG_size = 7;
6591 fra.me.REG[0] = NIT_NULL;
6592 fra.me.REG[1] = NIT_NULL;
6593 fra.me.REG[2] = NIT_NULL;
6594 fra.me.REG[3] = NIT_NULL;
6595 fra.me.REG[4] = NIT_NULL;
6596 fra.me.REG[5] = NIT_NULL;
6597 fra.me.REG[6] = NIT_NULL;
6598 fra.me.REG[0] = p0;
6599 fra.me.REG[1] = p1;
6600 /* ./syntax//typing.nit:1260 */
6601 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6602 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6603 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6604 if (UNTAG_Bool(REGB0)) {
6605 goto label1;
6606 }
6607 /* ./syntax//typing.nit:1261 */
6608 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6609 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6610 /* ./syntax//typing.nit:1262 */
6611 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
6612 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
6613 /* ./syntax//typing.nit:1263 */
6614 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
6615 if (UNTAG_Bool(REGB0)) {
6616 /* ./syntax//typing.nit:1264 */
6617 REGB0 = TAG_Int(3);
6618 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
6619 if (!once_value_2) {
6620 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
6621 REGB0 = TAG_Int(18);
6622 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
6623 once_value_2 = fra.me.REG[5];
6624 register_static_object(&once_value_2);
6625 } else fra.me.REG[5] = once_value_2;
6626 fra.me.REG[5] = fra.me.REG[5];
6627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6628 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6629 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6630 if (!once_value_3) {
6631 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
6632 REGB0 = TAG_Int(19);
6633 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
6634 once_value_3 = fra.me.REG[5];
6635 register_static_object(&once_value_3);
6636 } else fra.me.REG[5] = once_value_3;
6637 fra.me.REG[5] = fra.me.REG[5];
6638 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6639 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6640 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6641 /* ./syntax//typing.nit:1265 */
6642 goto label1;
6643 }
6644 /* ./syntax//typing.nit:1267 */
6645 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
6646 /* ./syntax//typing.nit:1268 */
6647 REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6648 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6649 if (UNTAG_Bool(REGB0)) {
6650 /* ./syntax//typing.nit:1269 */
6651 REGB0 = TAG_Int(5);
6652 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
6653 if (!once_value_4) {
6654 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
6655 REGB0 = TAG_Int(17);
6656 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6657 once_value_4 = fra.me.REG[6];
6658 register_static_object(&once_value_4);
6659 } else fra.me.REG[6] = once_value_4;
6660 fra.me.REG[6] = fra.me.REG[6];
6661 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6662 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6663 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6664 if (!once_value_5) {
6665 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
6666 REGB0 = TAG_Int(19);
6667 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6668 once_value_5 = fra.me.REG[6];
6669 register_static_object(&once_value_5);
6670 } else fra.me.REG[6] = once_value_5;
6671 fra.me.REG[6] = fra.me.REG[6];
6672 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6673 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6674 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6675 if (!once_value_6) {
6676 fra.me.REG[6] = BOX_NativeString(".");
6677 REGB0 = TAG_Int(1);
6678 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
6679 once_value_6 = fra.me.REG[6];
6680 register_static_object(&once_value_6);
6681 } else fra.me.REG[6] = once_value_6;
6682 fra.me.REG[6] = fra.me.REG[6];
6683 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6684 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6685 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6686 /* ./syntax//typing.nit:1270 */
6687 goto label1;
6688 }
6689 /* ./syntax//typing.nit:1272 */
6690 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6691 /* ./syntax//typing.nit:1273 */
6692 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6693 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6694 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
6695 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6696 REGB0 = CALL_abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6697 REGB1 = TAG_Int(3);
6698 /* ./../lib/standard//kernel.nit:212 */
6699 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6700 /* ./syntax//typing.nit:1273 */
6701 if (UNTAG_Bool(REGB1)) {
6702 /* ./syntax//typing.nit:1274 */
6703 REGB1 = TAG_Int(7);
6704 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB1);
6705 if (!once_value_7) {
6706 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
6707 REGB1 = TAG_Int(17);
6708 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
6709 once_value_7 = fra.me.REG[5];
6710 register_static_object(&once_value_7);
6711 } else fra.me.REG[5] = once_value_7;
6712 fra.me.REG[5] = fra.me.REG[5];
6713 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
6714 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6715 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6716 if (!once_value_8) {
6717 fra.me.REG[3] = BOX_NativeString(" from ");
6718 REGB1 = TAG_Int(6);
6719 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6720 once_value_8 = fra.me.REG[3];
6721 register_static_object(&once_value_8);
6722 } else fra.me.REG[3] = once_value_8;
6723 fra.me.REG[3] = fra.me.REG[3];
6724 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6725 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6726 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
6727 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
6728 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6729 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6730 if (!once_value_9) {
6731 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
6732 REGB1 = TAG_Int(17);
6733 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6734 once_value_9 = fra.me.REG[3];
6735 register_static_object(&once_value_9);
6736 } else fra.me.REG[3] = once_value_9;
6737 fra.me.REG[3] = fra.me.REG[3];
6738 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6739 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6740 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6741 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6742 if (!once_value_10) {
6743 fra.me.REG[3] = BOX_NativeString("");
6744 REGB1 = TAG_Int(0);
6745 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
6746 once_value_10 = fra.me.REG[3];
6747 register_static_object(&once_value_10);
6748 } else fra.me.REG[3] = once_value_10;
6749 fra.me.REG[3] = fra.me.REG[3];
6750 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6751 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6752 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
6753 }
6754 /* ./syntax//typing.nit:1276 */
6755 ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
6756 /* ./syntax//typing.nit:1277 */
6757 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
6758 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
6759 /* ./syntax//typing.nit:1278 */
6760 fra.me.REG[4] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6761 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
6762 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6763 if (UNTAG_Bool(REGB1)) {
6764 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6765 if (UNTAG_Bool(REGB1)) {
6766 nit_abort("Reciever is null", NULL, LOCATE_typing, 1278);
6767 }
6768 fra.me.REG[4] = CALL_static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
6769 fra.me.REG[2] = fra.me.REG[4];
6770 }
6771 /* ./syntax//typing.nit:1279 */
6772 ATTR_typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
6773 label1: while(0);
6774 stack_frame_head = fra.me.prev;
6775 return;
6776 }
6777 void typing___AAttrExpr___after_typing(val_t p0, val_t p1){
6778 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6779 val_t REGB0;
6780 val_t REGB1;
6781 val_t tmp;
6782 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6783 fra.me.file = LOCATE_typing;
6784 fra.me.line = 1284;
6785 fra.me.meth = LOCATE_typing___AAttrExpr___after_typing;
6786 fra.me.has_broke = 0;
6787 fra.me.REG_size = 2;
6788 fra.me.REG[0] = NIT_NULL;
6789 fra.me.REG[1] = NIT_NULL;
6790 fra.me.REG[0] = p0;
6791 fra.me.REG[1] = p1;
6792 /* ./syntax//typing.nit:1286 */
6793 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6794 /* ./syntax//typing.nit:1287 */
6795 fra.me.REG[1] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6796 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6797 if (UNTAG_Bool(REGB0)) {
6798 } else {
6799 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6800 if (UNTAG_Bool(REGB1)) {
6801 REGB1 = TAG_Bool(false);
6802 REGB0 = REGB1;
6803 } else {
6804 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6805 REGB0 = REGB1;
6806 }
6807 }
6808 if (UNTAG_Bool(REGB0)) {
6809 goto label1;
6810 }
6811 /* ./syntax//typing.nit:1288 */
6812 fra.me.REG[1] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6813 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6814 /* ./syntax//typing.nit:1289 */
6815 REGB0 = TAG_Bool(true);
6816 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6817 label1: while(0);
6818 stack_frame_head = fra.me.prev;
6819 return;
6820 }
6821 void typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
6822 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6823 val_t REGB0;
6824 val_t REGB1;
6825 val_t tmp;
6826 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6827 fra.me.file = LOCATE_typing;
6828 fra.me.line = 1294;
6829 fra.me.meth = LOCATE_typing___AAttrAssignExpr___after_typing;
6830 fra.me.has_broke = 0;
6831 fra.me.REG_size = 4;
6832 fra.me.REG[0] = NIT_NULL;
6833 fra.me.REG[1] = NIT_NULL;
6834 fra.me.REG[2] = NIT_NULL;
6835 fra.me.REG[3] = NIT_NULL;
6836 fra.me.REG[0] = p0;
6837 fra.me.REG[1] = p1;
6838 /* ./syntax//typing.nit:1296 */
6839 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6840 /* ./syntax//typing.nit:1297 */
6841 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6842 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6843 if (UNTAG_Bool(REGB0)) {
6844 } else {
6845 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6846 if (UNTAG_Bool(REGB1)) {
6847 REGB1 = TAG_Bool(false);
6848 REGB0 = REGB1;
6849 } else {
6850 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6851 REGB0 = REGB1;
6852 }
6853 }
6854 if (UNTAG_Bool(REGB0)) {
6855 goto label1;
6856 }
6857 /* ./syntax//typing.nit:1298 */
6858 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6859 fra.me.REG[3] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6860 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6861 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6862 if (UNTAG_Bool(REGB0)) {
6863 goto label1;
6864 }
6865 /* ./syntax//typing.nit:1299 */
6866 REGB0 = TAG_Bool(true);
6867 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6868 label1: while(0);
6869 stack_frame_head = fra.me.prev;
6870 return;
6871 }
6872 void typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
6873 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6874 val_t REGB0;
6875 val_t REGB1;
6876 val_t tmp;
6877 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6878 fra.me.file = LOCATE_typing;
6879 fra.me.line = 1304;
6880 fra.me.meth = LOCATE_typing___AAttrReassignExpr___after_typing;
6881 fra.me.has_broke = 0;
6882 fra.me.REG_size = 4;
6883 fra.me.REG[0] = NIT_NULL;
6884 fra.me.REG[1] = NIT_NULL;
6885 fra.me.REG[2] = NIT_NULL;
6886 fra.me.REG[3] = NIT_NULL;
6887 fra.me.REG[0] = p0;
6888 fra.me.REG[1] = p1;
6889 /* ./syntax//typing.nit:1306 */
6890 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6891 /* ./syntax//typing.nit:1307 */
6892 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6893 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6894 if (UNTAG_Bool(REGB0)) {
6895 } else {
6896 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6897 if (UNTAG_Bool(REGB1)) {
6898 REGB1 = TAG_Bool(false);
6899 REGB0 = REGB1;
6900 } else {
6901 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6902 REGB0 = REGB1;
6903 }
6904 }
6905 if (UNTAG_Bool(REGB0)) {
6906 goto label1;
6907 }
6908 /* ./syntax//typing.nit:1308 */
6909 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6910 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]);
6911 /* ./syntax//typing.nit:1309 */
6912 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6913 if (UNTAG_Bool(REGB0)) {
6914 } else {
6915 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6916 if (UNTAG_Bool(REGB1)) {
6917 REGB1 = TAG_Bool(false);
6918 REGB0 = REGB1;
6919 } else {
6920 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6921 REGB0 = REGB1;
6922 }
6923 }
6924 if (UNTAG_Bool(REGB0)) {
6925 goto label1;
6926 }
6927 /* ./syntax//typing.nit:1310 */
6928 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6929 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6930 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]);
6931 /* ./syntax//typing.nit:1311 */
6932 REGB0 = TAG_Bool(true);
6933 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6934 label1: while(0);
6935 stack_frame_head = fra.me.prev;
6936 return;
6937 }
6938 void typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
6939 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6940 val_t REGB0;
6941 val_t REGB1;
6942 val_t tmp;
6943 static val_t once_value_2; /* Once value */
6944 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6945 fra.me.file = LOCATE_typing;
6946 fra.me.line = 1316;
6947 fra.me.meth = LOCATE_typing___AIssetAttrExpr___after_typing;
6948 fra.me.has_broke = 0;
6949 fra.me.REG_size = 3;
6950 fra.me.REG[0] = NIT_NULL;
6951 fra.me.REG[1] = NIT_NULL;
6952 fra.me.REG[2] = NIT_NULL;
6953 fra.me.REG[0] = p0;
6954 fra.me.REG[1] = p1;
6955 /* ./syntax//typing.nit:1318 */
6956 CALL_typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6957 /* ./syntax//typing.nit:1319 */
6958 fra.me.REG[2] = ATTR_typing___AAttrFormExpr____prop(fra.me.REG[0]);
6959 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6960 if (UNTAG_Bool(REGB0)) {
6961 } else {
6962 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6963 if (UNTAG_Bool(REGB1)) {
6964 REGB1 = TAG_Bool(false);
6965 REGB0 = REGB1;
6966 } else {
6967 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6968 REGB0 = REGB1;
6969 }
6970 }
6971 if (UNTAG_Bool(REGB0)) {
6972 goto label1;
6973 }
6974 /* ./syntax//typing.nit:1320 */
6975 fra.me.REG[2] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6976 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
6977 if (UNTAG_Bool(REGB0)) {
6978 /* ./syntax//typing.nit:1321 */
6979 if (!once_value_2) {
6980 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
6981 REGB0 = TAG_Int(37);
6982 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
6983 once_value_2 = fra.me.REG[2];
6984 register_static_object(&once_value_2);
6985 } else fra.me.REG[2] = once_value_2;
6986 fra.me.REG[2] = fra.me.REG[2];
6987 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6988 }
6989 /* ./syntax//typing.nit:1323 */
6990 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
6991 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6992 /* ./syntax//typing.nit:1324 */
6993 REGB0 = TAG_Bool(true);
6994 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6995 label1: while(0);
6996 stack_frame_head = fra.me.prev;
6997 return;
6998 }
6999 val_t typing___AAbsAbsSendExpr___prop_signature(val_t p0){
7000 struct {struct stack_frame_t me;} fra;
7001 val_t REGB0;
7002 val_t tmp;
7003 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7004 fra.me.file = LOCATE_typing;
7005 fra.me.line = 1329;
7006 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___prop_signature;
7007 fra.me.has_broke = 0;
7008 fra.me.REG_size = 1;
7009 fra.me.REG[0] = NIT_NULL;
7010 fra.me.REG[0] = p0;
7011 /* ./syntax//typing.nit:1330 */
7012 fra.me.REG[0] = ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]);
7013 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
7014 if (UNTAG_Bool(REGB0)) {
7015 } else {
7016 nit_abort("Cast failed", NULL, LOCATE_typing, 1330);
7017 }
7018 goto label1;
7019 label1: while(0);
7020 stack_frame_head = fra.me.prev;
7021 return fra.me.REG[0];
7022 }
7023 val_t typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
7024 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7025 val_t REGB0;
7026 val_t REGB1;
7027 val_t tmp;
7028 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7029 fra.me.file = LOCATE_typing;
7030 fra.me.line = 1333;
7031 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___raw_arguments;
7032 fra.me.has_broke = 0;
7033 fra.me.REG_size = 4;
7034 fra.me.REG[0] = NIT_NULL;
7035 fra.me.REG[1] = NIT_NULL;
7036 fra.me.REG[2] = NIT_NULL;
7037 fra.me.REG[3] = NIT_NULL;
7038 fra.me.REG[0] = p0;
7039 /* ./syntax//typing.nit:1336 */
7040 fra.me.REG[1] = ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
7041 /* ./syntax//typing.nit:1337 */
7042 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7043 if (UNTAG_Bool(REGB0)) {
7044 } else {
7045 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7046 if (UNTAG_Bool(REGB1)) {
7047 REGB1 = TAG_Bool(false);
7048 REGB0 = REGB1;
7049 } else {
7050 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7051 REGB0 = REGB1;
7052 }
7053 }
7054 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7055 if (UNTAG_Bool(REGB0)) {
7056 /* ./syntax//typing.nit:1338 */
7057 fra.me.REG[2] = fra.me.REG[1];
7058 goto label1;
7059 } else {
7060 /* ./syntax//typing.nit:1340 */
7061 fra.me.REG[3] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7062 fra.me.REG[1] = fra.me.REG[3];
7063 /* ./syntax//typing.nit:1341 */
7064 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7065 if (UNTAG_Bool(REGB0)) {
7066 } else {
7067 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7068 if (UNTAG_Bool(REGB1)) {
7069 REGB1 = TAG_Bool(false);
7070 REGB0 = REGB1;
7071 } else {
7072 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7073 REGB0 = REGB1;
7074 }
7075 }
7076 if (UNTAG_Bool(REGB0)) {
7077 fra.me.REG[3] = NEW_Array_array___Array___init();
7078 fra.me.REG[1] = fra.me.REG[3];
7079 }
7080 /* ./syntax//typing.nit:1342 */
7081 ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
7082 /* ./syntax//typing.nit:1343 */
7083 fra.me.REG[2] = fra.me.REG[1];
7084 goto label1;
7085 }
7086 label1: while(0);
7087 stack_frame_head = fra.me.prev;
7088 return fra.me.REG[2];
7089 }
7090 val_t typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
7091 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7092 val_t REGB0;
7093 val_t tmp;
7094 static val_t once_value_1; /* Once value */
7095 static val_t once_value_2; /* Once value */
7096 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7097 fra.me.file = LOCATE_typing;
7098 fra.me.line = 1349;
7099 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___compute_raw_arguments;
7100 fra.me.has_broke = 0;
7101 fra.me.REG_size = 3;
7102 fra.me.REG[0] = NIT_NULL;
7103 fra.me.REG[1] = NIT_NULL;
7104 fra.me.REG[2] = NIT_NULL;
7105 fra.me.REG[0] = p0;
7106 /* ./syntax//typing.nit:1351 */
7107 REGB0 = TAG_Int(3);
7108 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
7109 if (!once_value_1) {
7110 fra.me.REG[2] = BOX_NativeString("");
7111 REGB0 = TAG_Int(0);
7112 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
7113 once_value_1 = fra.me.REG[2];
7114 register_static_object(&once_value_1);
7115 } else fra.me.REG[2] = once_value_1;
7116 fra.me.REG[2] = fra.me.REG[2];
7117 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7118 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
7119 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7120 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7121 if (!once_value_2) {
7122 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
7123 REGB0 = TAG_Int(25);
7124 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
7125 once_value_2 = fra.me.REG[2];
7126 register_static_object(&once_value_2);
7127 } else fra.me.REG[2] = once_value_2;
7128 fra.me.REG[2] = fra.me.REG[2];
7129 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7130 fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
7131 CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7132 /* ./syntax//typing.nit:1352 */
7133 fra.me.REG[1] = NIT_NULL;
7134 goto label3;
7135 label3: while(0);
7136 stack_frame_head = fra.me.prev;
7137 return fra.me.REG[1];
7138 }
7139 val_t typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7140 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7141 val_t REGB0;
7142 val_t REGB1;
7143 val_t REGB2;
7144 val_t REGB3;
7145 val_t REGB4;
7146 val_t REGB5;
7147 val_t REGB6;
7148 val_t REGB7;
7149 val_t REGB8;
7150 val_t REGB9;
7151 val_t REGB10;
7152 val_t REGB11;
7153 val_t tmp;
7154 static val_t once_value_1; /* Once value */
7155 static val_t once_value_2; /* Once value */
7156 static val_t once_value_3; /* Once value */
7157 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7158 fra.me.file = LOCATE_typing;
7159 fra.me.line = 1355;
7160 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_signature;
7161 fra.me.has_broke = 0;
7162 fra.me.REG_size = 7;
7163 fra.me.REG[0] = NIT_NULL;
7164 fra.me.REG[1] = NIT_NULL;
7165 fra.me.REG[2] = NIT_NULL;
7166 fra.me.REG[3] = NIT_NULL;
7167 fra.me.REG[4] = NIT_NULL;
7168 fra.me.REG[5] = NIT_NULL;
7169 fra.me.REG[6] = NIT_NULL;
7170 fra.me.REG[0] = p0;
7171 fra.me.REG[1] = p1;
7172 fra.me.REG[2] = p2;
7173 fra.me.REG[3] = p3;
7174 fra.me.REG[4] = p4;
7175 /* ./syntax//typing.nit:1358 */
7176 REGB0 = CALL_vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
7177 /* ./syntax//typing.nit:1359 */
7178 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
7179 /* ./syntax//typing.nit:1361 */
7180 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7181 if (UNTAG_Bool(REGB2)) {
7182 } else {
7183 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7184 if (UNTAG_Bool(REGB3)) {
7185 REGB3 = TAG_Bool(false);
7186 REGB2 = REGB3;
7187 } else {
7188 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7189 REGB2 = REGB3;
7190 }
7191 }
7192 if (UNTAG_Bool(REGB2)) {
7193 REGB2 = TAG_Int(0);
7194 } else {
7195 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7196 if (UNTAG_Bool(REGB3)) {
7197 nit_abort("Reciever is null", NULL, LOCATE_typing, 1361);
7198 }
7199 /* ./../lib/standard//collection//array.nit:23 */
7200 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7201 if (UNTAG_Bool(REGB3)) {
7202 } else {
7203 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7204 }
7205 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7206 /* ./syntax//typing.nit:1361 */
7207 REGB2 = REGB3;
7208 }
7209 /* ./../lib/standard//kernel.nit:214 */
7210 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7211 /* ./syntax//typing.nit:1362 */
7212 if (UNTAG_Bool(REGB3)) {
7213 REGB3 = TAG_Bool(true);
7214 } else {
7215 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7216 if (UNTAG_Bool(REGB4)) {
7217 } else {
7218 /* ./../lib/standard//kernel.nit:207 */
7219 REGB5 = TAG_Bool((REGB1)==(REGB2));
7220 /* ./syntax//typing.nit:1362 */
7221 REGB4 = REGB5;
7222 }
7223 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
7224 if (UNTAG_Bool(REGB4)) {
7225 REGB4 = TAG_Int(1);
7226 /* ./../lib/standard//kernel.nit:216 */
7227 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
7228 /* ./syntax//typing.nit:1362 */
7229 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
7230 if (UNTAG_Bool(REGB5)) {
7231 } else {
7232 /* ./../lib/standard//kernel.nit:207 */
7233 REGB4 = TAG_Bool((REGB0)==(REGB4));
7234 /* ./syntax//typing.nit:1362 */
7235 REGB5 = REGB4;
7236 }
7237 } else {
7238 REGB4 = TAG_Bool(false);
7239 REGB5 = REGB4;
7240 }
7241 REGB3 = REGB5;
7242 }
7243 if (UNTAG_Bool(REGB3)) {
7244 /* ./syntax//typing.nit:1363 */
7245 REGB3 = TAG_Int(5);
7246 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB3);
7247 if (!once_value_1) {
7248 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
7249 REGB3 = TAG_Int(37);
7250 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB3);
7251 once_value_1 = fra.me.REG[6];
7252 register_static_object(&once_value_1);
7253 } else fra.me.REG[6] = once_value_1;
7254 fra.me.REG[6] = fra.me.REG[6];
7255 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7256 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7257 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7258 if (!once_value_2) {
7259 fra.me.REG[3] = BOX_NativeString("");
7260 REGB3 = TAG_Int(0);
7261 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
7262 once_value_2 = fra.me.REG[3];
7263 register_static_object(&once_value_2);
7264 } else fra.me.REG[3] = once_value_2;
7265 fra.me.REG[3] = fra.me.REG[3];
7266 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7267 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7268 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7269 if (!once_value_3) {
7270 fra.me.REG[3] = BOX_NativeString("'.");
7271 REGB3 = TAG_Int(2);
7272 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB3);
7273 once_value_3 = fra.me.REG[3];
7274 register_static_object(&once_value_3);
7275 } else fra.me.REG[3] = once_value_3;
7276 fra.me.REG[3] = fra.me.REG[3];
7277 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7278 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7279 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7280 /* ./syntax//typing.nit:1364 */
7281 REGB3 = TAG_Bool(false);
7282 goto label4;
7283 }
7284 /* ./syntax//typing.nit:1366 */
7285 REGB5 = TAG_Int(0);
7286 /* ./syntax//typing.nit:1367 */
7287 REGB4 = TAG_Int(0);
7288 /* ./../lib/standard//kernel.nit:327 */
7289 REGB6 = REGB1;
7290 /* ./../lib/standard//kernel.nit:332 */
7291 while(1) {
7292 /* ./../lib/standard//kernel.nit:212 */
7293 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
7294 /* ./../lib/standard//kernel.nit:332 */
7295 if (UNTAG_Bool(REGB7)) {
7296 /* ./syntax//typing.nit:1367 */
7297 REGB7 = REGB4;
7298 /* ./syntax//typing.nit:1369 */
7299 fra.me.REG[5] = CALL_static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
7300 /* ./syntax//typing.nit:1370 */
7301 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
7302 if (UNTAG_Bool(REGB8)) {
7303 } else {
7304 /* ./../lib/standard//kernel.nit:207 */
7305 REGB7 = TAG_Bool((REGB7)==(REGB0));
7306 /* ./syntax//typing.nit:1370 */
7307 REGB8 = REGB7;
7308 }
7309 if (UNTAG_Bool(REGB8)) {
7310 /* ./syntax//typing.nit:1371 */
7311 REGB8 = TAG_Int(0);
7312 /* ./../lib/standard//kernel.nit:217 */
7313 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
7314 /* ./../lib/standard//kernel.nit:321 */
7315 while(1) {
7316 /* ./../lib/standard//kernel.nit:211 */
7317 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
7318 /* ./../lib/standard//kernel.nit:321 */
7319 if (UNTAG_Bool(REGB9)) {
7320 /* ./syntax//typing.nit:1372 */
7321 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7322 if (UNTAG_Bool(REGB9)) {
7323 nit_abort("Reciever is null", NULL, LOCATE_typing, 1372);
7324 }
7325 /* ./../lib/standard//collection//array.nit:243 */
7326 fra.me.REG[0] = fra.me.REG[4];
7327 REGB9 = REGB5;
7328 /* ./../lib/standard//collection//array.nit:245 */
7329 REGB10 = TAG_Int(0);
7330 /* ./../lib/standard//kernel.nit:213 */
7331 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
7332 /* ./../lib/standard//collection//array.nit:245 */
7333 if (UNTAG_Bool(REGB10)) {
7334 REGB10 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
7335 if (UNTAG_Bool(REGB10)) {
7336 } else {
7337 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7338 }
7339 REGB10 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
7340 /* ./../lib/standard//kernel.nit:212 */
7341 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
7342 } else {
7343 /* ./../lib/standard//collection//array.nit:245 */
7344 REGB11 = TAG_Bool(false);
7345 REGB10 = REGB11;
7346 }
7347 if (UNTAG_Bool(REGB10)) {
7348 } else {
7349 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7350 }
7351 /* ./../lib/standard//collection//array.nit:246 */
7352 fra.me.REG[0] = ATTR_array___Array____items(fra.me.REG[0]);
7353 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
7354 if (UNTAG_Bool(REGB10)) {
7355 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7356 }
7357 /* ./../lib/standard//collection//array.nit:654 */
7358 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
7359 /* ./../lib/standard//collection//array.nit:246 */
7360 goto label5;
7361 label5: while(0);
7362 /* ./syntax//typing.nit:1373 */
7363 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7364 /* ./syntax//typing.nit:1374 */
7365 REGB9 = TAG_Int(1);
7366 /* ./../lib/standard//kernel.nit:215 */
7367 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
7368 /* ./syntax//typing.nit:1374 */
7369 REGB5 = REGB9;
7370 /* ./../lib/standard//kernel.nit:323 */
7371 REGB9 = TAG_Int(1);
7372 /* ./../lib/standard//kernel.nit:215 */
7373 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
7374 /* ./../lib/standard//kernel.nit:323 */
7375 REGB8 = REGB9;
7376 } else {
7377 /* ./../lib/standard//kernel.nit:321 */
7378 goto label6;
7379 }
7380 }
7381 label6: while(0);
7382 } else {
7383 /* ./syntax//typing.nit:1377 */
7384 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7385 if (UNTAG_Bool(REGB8)) {
7386 nit_abort("Reciever is null", NULL, LOCATE_typing, 1377);
7387 }
7388 /* ./../lib/standard//collection//array.nit:243 */
7389 fra.me.REG[3] = fra.me.REG[4];
7390 REGB8 = REGB5;
7391 /* ./../lib/standard//collection//array.nit:245 */
7392 REGB7 = TAG_Int(0);
7393 /* ./../lib/standard//kernel.nit:213 */
7394 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
7395 /* ./../lib/standard//collection//array.nit:245 */
7396 if (UNTAG_Bool(REGB7)) {
7397 REGB7 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
7398 if (UNTAG_Bool(REGB7)) {
7399 } else {
7400 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7401 }
7402 REGB7 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
7403 /* ./../lib/standard//kernel.nit:212 */
7404 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
7405 } else {
7406 /* ./../lib/standard//collection//array.nit:245 */
7407 REGB9 = TAG_Bool(false);
7408 REGB7 = REGB9;
7409 }
7410 if (UNTAG_Bool(REGB7)) {
7411 } else {
7412 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7413 }
7414 /* ./../lib/standard//collection//array.nit:246 */
7415 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
7416 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7417 if (UNTAG_Bool(REGB7)) {
7418 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7419 }
7420 /* ./../lib/standard//collection//array.nit:654 */
7421 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
7422 /* ./../lib/standard//collection//array.nit:246 */
7423 goto label7;
7424 label7: while(0);
7425 /* ./syntax//typing.nit:1377 */
7426 fra.me.REG[0] = fra.me.REG[3];
7427 /* ./syntax//typing.nit:1378 */
7428 CALL_syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7429 /* ./syntax//typing.nit:1379 */
7430 REGB8 = TAG_Int(1);
7431 /* ./../lib/standard//kernel.nit:215 */
7432 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
7433 /* ./syntax//typing.nit:1379 */
7434 REGB5 = REGB8;
7435 }
7436 /* ./../lib/standard//kernel.nit:334 */
7437 REGB8 = TAG_Int(1);
7438 /* ./../lib/standard//kernel.nit:215 */
7439 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
7440 /* ./../lib/standard//kernel.nit:334 */
7441 REGB4 = REGB8;
7442 } else {
7443 /* ./../lib/standard//kernel.nit:332 */
7444 goto label8;
7445 }
7446 }
7447 label8: while(0);
7448 /* ./syntax//typing.nit:1382 */
7449 REGB4 = TAG_Bool(true);
7450 REGB3 = REGB4;
7451 goto label4;
7452 label4: while(0);
7453 stack_frame_head = fra.me.prev;
7454 return REGB3;
7455 }
7456 val_t typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7457 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
7458 val_t REGB0;
7459 val_t REGB1;
7460 val_t REGB2;
7461 val_t REGB3;
7462 val_t REGB4;
7463 val_t REGB5;
7464 val_t tmp;
7465 static val_t once_value_2; /* Once value */
7466 static val_t once_value_3; /* Once value */
7467 static val_t once_value_4; /* Once value */
7468 static val_t once_value_5; /* Once value */
7469 static val_t once_value_6; /* Once value */
7470 static val_t once_value_7; /* Once value */
7471 static val_t once_value_8; /* Once value */
7472 static val_t once_value_11; /* Once value */
7473 static val_t once_value_12; /* Once value */
7474 static val_t once_value_13; /* Once value */
7475 static val_t once_value_14; /* Once value */
7476 static val_t once_value_15; /* Once value */
7477 static val_t once_value_16; /* Once value */
7478 static val_t once_value_18; /* Once value */
7479 static val_t once_value_19; /* Once value */
7480 static val_t once_value_20; /* Once value */
7481 static val_t once_value_21; /* Once value */
7482 static val_t once_value_22; /* Once value */
7483 static val_t once_value_24; /* Once value */
7484 static val_t once_value_25; /* Once value */
7485 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7486 fra.me.file = LOCATE_typing;
7487 fra.me.line = 1385;
7488 fra.me.meth = LOCATE_typing___AAbsAbsSendExpr___process_closures;
7489 fra.me.has_broke = 0;
7490 fra.me.REG_size = 17;
7491 fra.me.REG[0] = NIT_NULL;
7492 fra.me.REG[1] = NIT_NULL;
7493 fra.me.REG[2] = NIT_NULL;
7494 fra.me.REG[3] = NIT_NULL;
7495 fra.me.REG[4] = NIT_NULL;
7496 fra.me.REG[5] = NIT_NULL;
7497 fra.me.REG[6] = NIT_NULL;
7498 fra.me.REG[7] = NIT_NULL;
7499 fra.me.REG[8] = NIT_NULL;
7500 fra.me.REG[9] = NIT_NULL;
7501 fra.me.REG[10] = NIT_NULL;
7502 fra.me.REG[11] = NIT_NULL;
7503 fra.me.REG[12] = NIT_NULL;
7504 fra.me.REG[13] = NIT_NULL;
7505 fra.me.REG[14] = NIT_NULL;
7506 fra.me.REG[15] = NIT_NULL;
7507 fra.me.REG[16] = NIT_NULL;
7508 fra.me.REG[0] = p0;
7509 fra.me.REG[1] = p1;
7510 fra.me.REG[2] = p2;
7511 fra.me.REG[3] = p3;
7512 fra.me.REG[4] = p4;
7513 /* ./syntax//typing.nit:1388 */
7514 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7515 /* ./syntax//typing.nit:1389 */
7516 fra.me.REG[6] = CALL_static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
7517 /* ./syntax//typing.nit:1390 */
7518 REGB0 = TAG_Int(0);
7519 /* ./../lib/standard//collection//array.nit:231 */
7520 fra.me.REG[7] = fra.me.REG[6];
7521 /* ./../lib/standard//collection//array.nit:234 */
7522 REGB1 = TAG_Int(0);
7523 /* ./../lib/standard//collection//array.nit:235 */
7524 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7525 if (UNTAG_Bool(REGB2)) {
7526 } else {
7527 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
7528 }
7529 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7530 /* ./../lib/standard//collection//array.nit:236 */
7531 fra.me.REG[8] = ATTR_array___Array____items(fra.me.REG[7]);
7532 /* ./../lib/standard//collection//array.nit:237 */
7533 while(1) {
7534 /* ./../lib/standard//collection//array.nit:23 */
7535 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7536 if (UNTAG_Bool(REGB2)) {
7537 } else {
7538 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7539 }
7540 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7541 /* ./../lib/standard//kernel.nit:212 */
7542 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
7543 /* ./../lib/standard//collection//array.nit:237 */
7544 if (UNTAG_Bool(REGB2)) {
7545 /* ./../lib/standard//collection//array.nit:238 */
7546 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
7547 if (UNTAG_Bool(REGB2)) {
7548 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
7549 }
7550 /* ./../lib/standard//collection//array.nit:654 */
7551 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
7552 /* ./syntax//typing.nit:1392 */
7553 REGB2 = CALL_static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
7554 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7555 if (UNTAG_Bool(REGB2)) {
7556 REGB2 = TAG_Int(1);
7557 /* ./../lib/standard//kernel.nit:215 */
7558 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
7559 /* ./syntax//typing.nit:1392 */
7560 REGB0 = REGB2;
7561 }
7562 /* ./../lib/standard//collection//array.nit:239 */
7563 REGB2 = TAG_Int(1);
7564 /* ./../lib/standard//kernel.nit:215 */
7565 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
7566 /* ./../lib/standard//collection//array.nit:239 */
7567 REGB1 = REGB2;
7568 } else {
7569 /* ./../lib/standard//collection//array.nit:237 */
7570 goto label1;
7571 }
7572 }
7573 label1: while(0);
7574 /* ./syntax//typing.nit:1394 */
7575 REGB1 = TAG_Int(0);
7576 /* ./syntax//typing.nit:1395 */
7577 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7578 if (UNTAG_Bool(REGB2)) {
7579 } else {
7580 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7581 if (UNTAG_Bool(REGB3)) {
7582 REGB3 = TAG_Bool(false);
7583 REGB2 = REGB3;
7584 } else {
7585 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7586 REGB2 = REGB3;
7587 }
7588 }
7589 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7590 if (UNTAG_Bool(REGB2)) {
7591 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7592 if (UNTAG_Bool(REGB2)) {
7593 nit_abort("Reciever is null", NULL, LOCATE_typing, 1395);
7594 }
7595 /* ./../lib/standard//collection//array.nit:23 */
7596 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7597 if (UNTAG_Bool(REGB2)) {
7598 } else {
7599 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7600 }
7601 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7602 /* ./syntax//typing.nit:1395 */
7603 REGB1 = REGB2;
7604 }
7605 /* ./../lib/standard//collection//array.nit:23 */
7606 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7607 if (UNTAG_Bool(REGB2)) {
7608 } else {
7609 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7610 }
7611 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7612 /* ./syntax//typing.nit:1396 */
7613 REGB3 = TAG_Int(0);
7614 /* ./../lib/standard//kernel.nit:214 */
7615 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
7616 /* ./syntax//typing.nit:1396 */
7617 if (UNTAG_Bool(REGB3)) {
7618 /* ./syntax//typing.nit:1397 */
7619 REGB3 = TAG_Int(0);
7620 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
7621 if (UNTAG_Bool(REGB2)) {
7622 } else {
7623 /* ./../lib/standard//kernel.nit:207 */
7624 REGB3 = TAG_Bool((REGB1)==(REGB3));
7625 /* ./syntax//typing.nit:1397 */
7626 REGB2 = REGB3;
7627 }
7628 if (UNTAG_Bool(REGB2)) {
7629 REGB2 = TAG_Int(0);
7630 /* ./../lib/standard//kernel.nit:214 */
7631 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
7632 } else {
7633 /* ./syntax//typing.nit:1397 */
7634 REGB3 = TAG_Bool(false);
7635 REGB2 = REGB3;
7636 }
7637 if (UNTAG_Bool(REGB2)) {
7638 /* ./syntax//typing.nit:1398 */
7639 REGB2 = TAG_Int(5);
7640 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
7641 if (!once_value_2) {
7642 fra.me.REG[7] = BOX_NativeString("Error: ");
7643 REGB2 = TAG_Int(7);
7644 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7645 once_value_2 = fra.me.REG[7];
7646 register_static_object(&once_value_2);
7647 } else fra.me.REG[7] = once_value_2;
7648 fra.me.REG[7] = fra.me.REG[7];
7649 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7650 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7651 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7652 if (!once_value_3) {
7653 fra.me.REG[7] = BOX_NativeString(" requires ");
7654 REGB2 = TAG_Int(10);
7655 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7656 once_value_3 = fra.me.REG[7];
7657 register_static_object(&once_value_3);
7658 } else fra.me.REG[7] = once_value_3;
7659 fra.me.REG[7] = fra.me.REG[7];
7660 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7661 /* ./../lib/standard//collection//array.nit:23 */
7662 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7663 if (UNTAG_Bool(REGB2)) {
7664 } else {
7665 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7666 }
7667 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7668 /* ./syntax//typing.nit:1398 */
7669 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
7670 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7671 if (!once_value_4) {
7672 fra.me.REG[7] = BOX_NativeString(" blocks.");
7673 REGB2 = TAG_Int(8);
7674 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7675 once_value_4 = fra.me.REG[7];
7676 register_static_object(&once_value_4);
7677 } else fra.me.REG[7] = once_value_4;
7678 fra.me.REG[7] = fra.me.REG[7];
7679 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7680 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7681 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7682 } else {
7683 /* ./../lib/standard//collection//array.nit:23 */
7684 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7685 if (UNTAG_Bool(REGB2)) {
7686 } else {
7687 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7688 }
7689 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7690 /* ./../lib/standard//kernel.nit:214 */
7691 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7692 /* ./syntax//typing.nit:1399 */
7693 if (UNTAG_Bool(REGB2)) {
7694 REGB2 = TAG_Bool(true);
7695 } else {
7696 /* ./../lib/standard//kernel.nit:212 */
7697 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
7698 /* ./syntax//typing.nit:1399 */
7699 REGB2 = REGB0;
7700 }
7701 if (UNTAG_Bool(REGB2)) {
7702 /* ./syntax//typing.nit:1400 */
7703 REGB2 = TAG_Int(7);
7704 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
7705 if (!once_value_5) {
7706 fra.me.REG[7] = BOX_NativeString("Error: ");
7707 REGB2 = TAG_Int(7);
7708 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7709 once_value_5 = fra.me.REG[7];
7710 register_static_object(&once_value_5);
7711 } else fra.me.REG[7] = once_value_5;
7712 fra.me.REG[7] = fra.me.REG[7];
7713 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7714 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7715 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7716 if (!once_value_6) {
7717 fra.me.REG[7] = BOX_NativeString(" requires ");
7718 REGB2 = TAG_Int(10);
7719 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7720 once_value_6 = fra.me.REG[7];
7721 register_static_object(&once_value_6);
7722 } else fra.me.REG[7] = once_value_6;
7723 fra.me.REG[7] = fra.me.REG[7];
7724 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7725 /* ./../lib/standard//collection//array.nit:23 */
7726 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7727 if (UNTAG_Bool(REGB2)) {
7728 } else {
7729 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7730 }
7731 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7732 /* ./syntax//typing.nit:1400 */
7733 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
7734 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7735 if (!once_value_7) {
7736 fra.me.REG[7] = BOX_NativeString(" blocks, ");
7737 REGB2 = TAG_Int(9);
7738 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7739 once_value_7 = fra.me.REG[7];
7740 register_static_object(&once_value_7);
7741 } else fra.me.REG[7] = once_value_7;
7742 fra.me.REG[7] = fra.me.REG[7];
7743 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7744 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7745 if (UNTAG_Bool(REGB2)) {
7746 nit_abort("Reciever is null", NULL, LOCATE_typing, 1400);
7747 }
7748 /* ./../lib/standard//collection//array.nit:23 */
7749 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7750 if (UNTAG_Bool(REGB2)) {
7751 } else {
7752 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7753 }
7754 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
7755 /* ./syntax//typing.nit:1400 */
7756 fra.me.REG[7] = CALL_string___Object___to_s(REGB2)(REGB2);
7757 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7758 if (!once_value_8) {
7759 fra.me.REG[7] = BOX_NativeString(" found.");
7760 REGB2 = TAG_Int(7);
7761 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
7762 once_value_8 = fra.me.REG[7];
7763 register_static_object(&once_value_8);
7764 } else fra.me.REG[7] = once_value_8;
7765 fra.me.REG[7] = fra.me.REG[7];
7766 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7767 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7768 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7769 } else {
7770 /* ./syntax//typing.nit:1403 */
7771 fra.me.REG[8] = NIT_NULL;
7772 /* ./syntax//typing.nit:1404 */
7773 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7774 if (UNTAG_Bool(REGB2)) {
7775 } else {
7776 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7777 if (UNTAG_Bool(REGB0)) {
7778 REGB0 = TAG_Bool(false);
7779 REGB2 = REGB0;
7780 } else {
7781 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7782 REGB2 = REGB0;
7783 }
7784 }
7785 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7786 if (UNTAG_Bool(REGB2)) {
7787 fra.me.REG[7] = NEW_Array_array___Array___init();
7788 fra.me.REG[8] = fra.me.REG[7];
7789 }
7790 /* ./syntax//typing.nit:1407 */
7791 REGB2 = TAG_Int(0);
7792 /* ./../lib/standard//kernel.nit:214 */
7793 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7794 /* ./syntax//typing.nit:1407 */
7795 if (UNTAG_Bool(REGB2)) {
7796 REGB2 = TAG_Int(1);
7797 /* ./../lib/standard//kernel.nit:217 */
7798 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
7799 /* ./syntax//typing.nit:1407 */
7800 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7801 if (UNTAG_Bool(REGB0)) {
7802 nit_abort("Reciever is null", NULL, LOCATE_typing, 1407);
7803 }
7804 /* ./../lib/standard//collection//array.nit:243 */
7805 fra.me.REG[7] = fra.me.REG[4];
7806 /* ./../lib/standard//collection//array.nit:245 */
7807 REGB0 = TAG_Int(0);
7808 /* ./../lib/standard//kernel.nit:213 */
7809 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
7810 /* ./../lib/standard//collection//array.nit:245 */
7811 if (UNTAG_Bool(REGB0)) {
7812 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7813 if (UNTAG_Bool(REGB0)) {
7814 } else {
7815 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7816 }
7817 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
7818 /* ./../lib/standard//kernel.nit:212 */
7819 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7820 } else {
7821 /* ./../lib/standard//collection//array.nit:245 */
7822 REGB3 = TAG_Bool(false);
7823 REGB0 = REGB3;
7824 }
7825 if (UNTAG_Bool(REGB0)) {
7826 } else {
7827 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7828 }
7829 /* ./../lib/standard//collection//array.nit:246 */
7830 fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[7]);
7831 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7832 if (UNTAG_Bool(REGB0)) {
7833 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7834 }
7835 /* ./../lib/standard//collection//array.nit:654 */
7836 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
7837 /* ./../lib/standard//collection//array.nit:246 */
7838 goto label9;
7839 label9: while(0);
7840 /* ./syntax//typing.nit:1407 */
7841 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7842 if (UNTAG_Bool(REGB2)) {
7843 nit_abort("Reciever is null", NULL, LOCATE_typing, 1407);
7844 }
7845 fra.me.REG[7] = CALL_parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
7846 } else {
7847 fra.me.REG[7] = NIT_NULL;
7848 }
7849 /* ./syntax//typing.nit:1410 */
7850 REGB2 = TAG_Int(0);
7851 /* ./../lib/standard//kernel.nit:327 */
7852 REGB0 = REGB1;
7853 /* ./../lib/standard//kernel.nit:332 */
7854 while(1) {
7855 /* ./../lib/standard//kernel.nit:212 */
7856 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7857 /* ./../lib/standard//kernel.nit:332 */
7858 if (UNTAG_Bool(REGB3)) {
7859 /* ./syntax//typing.nit:1410 */
7860 REGB3 = REGB2;
7861 /* ./syntax//typing.nit:1411 */
7862 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7863 if (UNTAG_Bool(REGB4)) {
7864 nit_abort("Reciever is null", NULL, LOCATE_typing, 1411);
7865 }
7866 /* ./../lib/standard//collection//array.nit:243 */
7867 fra.me.REG[9] = fra.me.REG[4];
7868 /* ./../lib/standard//collection//array.nit:245 */
7869 REGB4 = TAG_Int(0);
7870 /* ./../lib/standard//kernel.nit:213 */
7871 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
7872 /* ./../lib/standard//collection//array.nit:245 */
7873 if (UNTAG_Bool(REGB4)) {
7874 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
7875 if (UNTAG_Bool(REGB4)) {
7876 } else {
7877 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
7878 }
7879 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[9]);
7880 /* ./../lib/standard//kernel.nit:212 */
7881 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
7882 } else {
7883 /* ./../lib/standard//collection//array.nit:245 */
7884 REGB5 = TAG_Bool(false);
7885 REGB4 = REGB5;
7886 }
7887 if (UNTAG_Bool(REGB4)) {
7888 } else {
7889 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
7890 }
7891 /* ./../lib/standard//collection//array.nit:246 */
7892 fra.me.REG[9] = ATTR_array___Array____items(fra.me.REG[9]);
7893 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
7894 if (UNTAG_Bool(REGB4)) {
7895 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
7896 }
7897 /* ./../lib/standard//collection//array.nit:654 */
7898 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
7899 /* ./../lib/standard//collection//array.nit:246 */
7900 goto label10;
7901 label10: while(0);
7902 /* ./syntax//typing.nit:1412 */
7903 fra.me.REG[10] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7904 fra.me.REG[10] = CALL_typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
7905 /* ./syntax//typing.nit:1413 */
7906 fra.me.REG[11] = CALL_static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
7907 /* ./syntax//typing.nit:1414 */
7908 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7909 if (UNTAG_Bool(REGB3)) {
7910 } else {
7911 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7912 if (UNTAG_Bool(REGB4)) {
7913 REGB4 = TAG_Bool(false);
7914 REGB3 = REGB4;
7915 } else {
7916 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
7917 REGB3 = REGB4;
7918 }
7919 }
7920 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
7921 if (UNTAG_Bool(REGB3)) {
7922 /* ./syntax//typing.nit:1415 */
7923 fra.me.REG[11] = NEW_EscapableClosure_scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
7924 /* ./syntax//typing.nit:1416 */
7925 fra.me.REG[12] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7926 CALL_scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
7927 /* ./syntax//typing.nit:1417 */
7928 CALL_typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
7929 /* ./syntax//typing.nit:1418 */
7930 fra.me.REG[11] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7931 CALL_scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
7932 } else {
7933 /* ./../lib/standard//collection//array.nit:23 */
7934 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7935 if (UNTAG_Bool(REGB3)) {
7936 } else {
7937 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
7938 }
7939 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
7940 /* ./syntax//typing.nit:1419 */
7941 REGB4 = TAG_Int(1);
7942 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
7943 if (UNTAG_Bool(REGB5)) {
7944 } else {
7945 /* ./../lib/standard//kernel.nit:207 */
7946 REGB4 = TAG_Bool((REGB3)==(REGB4));
7947 /* ./syntax//typing.nit:1419 */
7948 REGB5 = REGB4;
7949 }
7950 if (UNTAG_Bool(REGB5)) {
7951 /* ./syntax//typing.nit:1420 */
7952 fra.me.REG[11] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7953 REGB5 = TAG_Int(7);
7954 fra.me.REG[12] = NEW_Array_array___Array___with_capacity(REGB5);
7955 if (!once_value_11) {
7956 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
7957 REGB5 = TAG_Int(26);
7958 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7959 once_value_11 = fra.me.REG[13];
7960 register_static_object(&once_value_11);
7961 } else fra.me.REG[13] = once_value_11;
7962 fra.me.REG[13] = fra.me.REG[13];
7963 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7964 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
7965 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7966 if (!once_value_12) {
7967 fra.me.REG[13] = BOX_NativeString("' in ");
7968 REGB5 = TAG_Int(5);
7969 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7970 once_value_12 = fra.me.REG[13];
7971 register_static_object(&once_value_12);
7972 } else fra.me.REG[13] = once_value_12;
7973 fra.me.REG[13] = fra.me.REG[13];
7974 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7975 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7976 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7977 if (!once_value_13) {
7978 fra.me.REG[13] = BOX_NativeString("; only closure is !");
7979 REGB5 = TAG_Int(19);
7980 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7981 once_value_13 = fra.me.REG[13];
7982 register_static_object(&once_value_13);
7983 } else fra.me.REG[13] = once_value_13;
7984 fra.me.REG[13] = fra.me.REG[13];
7985 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7986 fra.me.REG[13] = CALL_abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
7987 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
7988 if (UNTAG_Bool(REGB5)) {
7989 nit_abort("Reciever is null", NULL, LOCATE_typing, 1420);
7990 }
7991 fra.me.REG[13] = CALL_static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
7992 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
7993 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7994 if (!once_value_14) {
7995 fra.me.REG[13] = BOX_NativeString(".");
7996 REGB5 = TAG_Int(1);
7997 fra.me.REG[13] = NEW_String_string___String___with_native(fra.me.REG[13], REGB5);
7998 once_value_14 = fra.me.REG[13];
7999 register_static_object(&once_value_14);
8000 } else fra.me.REG[13] = once_value_14;
8001 fra.me.REG[13] = fra.me.REG[13];
8002 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8003 fra.me.REG[12] = CALL_string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
8004 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
8005 } else {
8006 /* ./syntax//typing.nit:1422 */
8007 fra.me.REG[12] = NEW_Array_array___Array___init();
8008 /* ./../lib/standard//collection//array.nit:231 */
8009 fra.me.REG[11] = fra.me.REG[6];
8010 /* ./../lib/standard//collection//array.nit:234 */
8011 REGB5 = TAG_Int(0);
8012 /* ./../lib/standard//collection//array.nit:235 */
8013 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8014 if (UNTAG_Bool(REGB4)) {
8015 } else {
8016 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
8017 }
8018 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[11]);
8019 /* ./../lib/standard//collection//array.nit:236 */
8020 fra.me.REG[13] = ATTR_array___Array____items(fra.me.REG[11]);
8021 /* ./../lib/standard//collection//array.nit:237 */
8022 while(1) {
8023 /* ./../lib/standard//collection//array.nit:23 */
8024 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8025 if (UNTAG_Bool(REGB4)) {
8026 } else {
8027 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
8028 }
8029 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[11]);
8030 /* ./../lib/standard//kernel.nit:212 */
8031 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
8032 /* ./../lib/standard//collection//array.nit:237 */
8033 if (UNTAG_Bool(REGB4)) {
8034 /* ./../lib/standard//collection//array.nit:238 */
8035 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8036 if (UNTAG_Bool(REGB4)) {
8037 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
8038 }
8039 /* ./../lib/standard//collection//array.nit:654 */
8040 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
8041 /* ./syntax//typing.nit:1424 */
8042 REGB4 = TAG_Int(3);
8043 fra.me.REG[15] = NEW_Array_array___Array___with_capacity(REGB4);
8044 if (!once_value_15) {
8045 fra.me.REG[16] = BOX_NativeString("!");
8046 REGB4 = TAG_Int(1);
8047 fra.me.REG[16] = NEW_String_string___String___with_native(fra.me.REG[16], REGB4);
8048 once_value_15 = fra.me.REG[16];
8049 register_static_object(&once_value_15);
8050 } else fra.me.REG[16] = once_value_15;
8051 fra.me.REG[16] = fra.me.REG[16];
8052 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
8053 fra.me.REG[14] = CALL_static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
8054 fra.me.REG[14] = CALL_string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
8055 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8056 if (!once_value_16) {
8057 fra.me.REG[14] = BOX_NativeString("");
8058 REGB4 = TAG_Int(0);
8059 fra.me.REG[14] = NEW_String_string___String___with_native(fra.me.REG[14], REGB4);
8060 once_value_16 = fra.me.REG[14];
8061 register_static_object(&once_value_16);
8062 } else fra.me.REG[14] = once_value_16;
8063 fra.me.REG[14] = fra.me.REG[14];
8064 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8065 fra.me.REG[15] = CALL_string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
8066 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
8067 /* ./../lib/standard//collection//array.nit:239 */
8068 REGB4 = TAG_Int(1);
8069 /* ./../lib/standard//kernel.nit:215 */
8070 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
8071 /* ./../lib/standard//collection//array.nit:239 */
8072 REGB5 = REGB4;
8073 } else {
8074 /* ./../lib/standard//collection//array.nit:237 */
8075 goto label17;
8076 }
8077 }
8078 label17: while(0);
8079 /* ./syntax//typing.nit:1426 */
8080 fra.me.REG[9] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8081 REGB5 = TAG_Int(7);
8082 fra.me.REG[13] = NEW_Array_array___Array___with_capacity(REGB5);
8083 if (!once_value_18) {
8084 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
8085 REGB5 = TAG_Int(26);
8086 fra.me.REG[11] = NEW_String_string___String___with_native(fra.me.REG[11], REGB5);
8087 once_value_18 = fra.me.REG[11];
8088 register_static_object(&once_value_18);
8089 } else fra.me.REG[11] = once_value_18;
8090 fra.me.REG[11] = fra.me.REG[11];
8091 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
8092 fra.me.REG[10] = CALL_string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8093 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8094 if (!once_value_19) {
8095 fra.me.REG[10] = BOX_NativeString("' in ");
8096 REGB5 = TAG_Int(5);
8097 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
8098 once_value_19 = fra.me.REG[10];
8099 register_static_object(&once_value_19);
8100 } else fra.me.REG[10] = once_value_19;
8101 fra.me.REG[10] = fra.me.REG[10];
8102 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8103 fra.me.REG[10] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8104 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8105 if (!once_value_20) {
8106 fra.me.REG[10] = BOX_NativeString("; only closures are ");
8107 REGB5 = TAG_Int(20);
8108 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
8109 once_value_20 = fra.me.REG[10];
8110 register_static_object(&once_value_20);
8111 } else fra.me.REG[10] = once_value_20;
8112 fra.me.REG[10] = fra.me.REG[10];
8113 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8114 if (!once_value_21) {
8115 fra.me.REG[10] = BOX_NativeString(",");
8116 REGB5 = TAG_Int(1);
8117 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
8118 once_value_21 = fra.me.REG[10];
8119 register_static_object(&once_value_21);
8120 } else fra.me.REG[10] = once_value_21;
8121 fra.me.REG[10] = fra.me.REG[10];
8122 fra.me.REG[10] = CALL_string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
8123 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8124 if (!once_value_22) {
8125 fra.me.REG[10] = BOX_NativeString(".");
8126 REGB5 = TAG_Int(1);
8127 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB5);
8128 once_value_22 = fra.me.REG[10];
8129 register_static_object(&once_value_22);
8130 } else fra.me.REG[10] = once_value_22;
8131 fra.me.REG[10] = fra.me.REG[10];
8132 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8133 fra.me.REG[13] = CALL_string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8134 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
8135 }
8136 }
8137 /* ./../lib/standard//kernel.nit:334 */
8138 REGB5 = TAG_Int(1);
8139 /* ./../lib/standard//kernel.nit:215 */
8140 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
8141 /* ./../lib/standard//kernel.nit:334 */
8142 REGB2 = REGB5;
8143 } else {
8144 /* ./../lib/standard//kernel.nit:332 */
8145 goto label23;
8146 }
8147 }
8148 label23: while(0);
8149 /* ./syntax//typing.nit:1431 */
8150 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8151 if (UNTAG_Bool(REGB2)) {
8152 } else {
8153 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8154 if (UNTAG_Bool(REGB0)) {
8155 REGB0 = TAG_Bool(false);
8156 REGB2 = REGB0;
8157 } else {
8158 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
8159 REGB2 = REGB0;
8160 }
8161 }
8162 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8163 if (UNTAG_Bool(REGB2)) {
8164 /* ./syntax//typing.nit:1432 */
8165 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]);
8166 fra.me.REG[5] = fra.me.REG[8];
8167 }
8168 }
8169 }
8170 } else {
8171 /* ./syntax//typing.nit:1435 */
8172 REGB2 = TAG_Int(0);
8173 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8174 if (UNTAG_Bool(REGB0)) {
8175 } else {
8176 /* ./../lib/standard//kernel.nit:207 */
8177 REGB2 = TAG_Bool((REGB1)==(REGB2));
8178 /* ./syntax//typing.nit:1435 */
8179 REGB0 = REGB2;
8180 }
8181 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8182 if (UNTAG_Bool(REGB0)) {
8183 /* ./syntax//typing.nit:1436 */
8184 REGB0 = TAG_Int(3);
8185 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB0);
8186 if (!once_value_24) {
8187 fra.me.REG[6] = BOX_NativeString("Error: ");
8188 REGB0 = TAG_Int(7);
8189 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
8190 once_value_24 = fra.me.REG[6];
8191 register_static_object(&once_value_24);
8192 } else fra.me.REG[6] = once_value_24;
8193 fra.me.REG[6] = fra.me.REG[6];
8194 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
8195 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8196 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8197 if (!once_value_25) {
8198 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
8199 REGB0 = TAG_Int(25);
8200 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8201 once_value_25 = fra.me.REG[3];
8202 register_static_object(&once_value_25);
8203 } else fra.me.REG[3] = once_value_25;
8204 fra.me.REG[3] = fra.me.REG[3];
8205 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8206 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8207 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8208 }
8209 }
8210 /* ./syntax//typing.nit:1438 */
8211 goto label26;
8212 label26: while(0);
8213 stack_frame_head = fra.me.prev;
8214 return fra.me.REG[5];
8215 }
8216 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){
8217 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8218 val_t REGB0;
8219 val_t REGB1;
8220 val_t REGB2;
8221 val_t tmp;
8222 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8223 fra.me.file = LOCATE_typing;
8224 fra.me.line = 1443;
8225 fra.me.meth = LOCATE_typing___AAbsSendExpr___do_typing;
8226 fra.me.has_broke = 0;
8227 fra.me.REG_size = 7;
8228 fra.me.REG[0] = NIT_NULL;
8229 fra.me.REG[1] = NIT_NULL;
8230 fra.me.REG[2] = NIT_NULL;
8231 fra.me.REG[3] = NIT_NULL;
8232 fra.me.REG[4] = NIT_NULL;
8233 fra.me.REG[5] = NIT_NULL;
8234 fra.me.REG[6] = NIT_NULL;
8235 fra.me.REG[0] = p0;
8236 fra.me.REG[1] = p1;
8237 fra.me.REG[2] = p2;
8238 REGB0 = p3;
8239 REGB1 = p4;
8240 fra.me.REG[3] = p5;
8241 fra.me.REG[4] = p6;
8242 fra.me.REG[5] = p7;
8243 /* ./syntax//typing.nit:1446 */
8244 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]);
8245 /* ./syntax//typing.nit:1447 */
8246 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8247 if (UNTAG_Bool(REGB0)) {
8248 } else {
8249 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8250 if (UNTAG_Bool(REGB2)) {
8251 REGB2 = TAG_Bool(false);
8252 REGB0 = REGB2;
8253 } else {
8254 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8255 REGB0 = REGB2;
8256 }
8257 }
8258 if (UNTAG_Bool(REGB0)) {
8259 goto label1;
8260 }
8261 /* ./syntax//typing.nit:1448 */
8262 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);
8263 /* ./syntax//typing.nit:1449 */
8264 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8265 if (UNTAG_Bool(REGB1)) {
8266 nit_abort("Reciever is null", NULL, LOCATE_typing, 1449);
8267 }
8268 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8269 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]);
8270 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8271 if (UNTAG_Bool(REGB1)) {
8272 goto label1;
8273 }
8274 /* ./syntax//typing.nit:1450 */
8275 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8276 if (UNTAG_Bool(REGB1)) {
8277 nit_abort("Reciever is null", NULL, LOCATE_typing, 1450);
8278 }
8279 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8280 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]);
8281 /* ./syntax//typing.nit:1451 */
8282 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8283 if (UNTAG_Bool(REGB1)) {
8284 } else {
8285 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8286 if (UNTAG_Bool(REGB0)) {
8287 REGB0 = TAG_Bool(false);
8288 REGB1 = REGB0;
8289 } else {
8290 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8291 REGB1 = REGB0;
8292 }
8293 }
8294 if (UNTAG_Bool(REGB1)) {
8295 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8296 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8297 if (UNTAG_Bool(REGB1)) {
8298 } else {
8299 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8300 if (UNTAG_Bool(REGB0)) {
8301 REGB0 = TAG_Bool(false);
8302 REGB1 = REGB0;
8303 } else {
8304 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8305 REGB1 = REGB0;
8306 }
8307 }
8308 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8309 } else {
8310 REGB0 = TAG_Bool(false);
8311 REGB1 = REGB0;
8312 }
8313 if (UNTAG_Bool(REGB1)) {
8314 goto label1;
8315 }
8316 /* ./syntax//typing.nit:1452 */
8317 ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
8318 /* ./syntax//typing.nit:1453 */
8319 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
8320 /* ./syntax//typing.nit:1454 */
8321 ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
8322 label1: while(0);
8323 stack_frame_head = fra.me.prev;
8324 return;
8325 }
8326 val_t typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8327 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
8328 val_t REGB0;
8329 val_t REGB1;
8330 val_t REGB2;
8331 val_t REGB3;
8332 val_t tmp;
8333 static val_t once_value_1; /* Once value */
8334 static val_t once_value_2; /* Once value */
8335 static val_t once_value_3; /* Once value */
8336 static val_t once_value_4; /* Once value */
8337 static val_t once_value_5; /* Once value */
8338 static val_t once_value_6; /* Once value */
8339 static val_t once_value_8; /* Once value */
8340 static val_t once_value_9; /* Once value */
8341 static val_t once_value_10; /* Once value */
8342 static val_t once_value_11; /* Once value */
8343 static val_t once_value_12; /* Once value */
8344 static val_t once_value_13; /* Once value */
8345 static val_t once_value_14; /* Once value */
8346 static val_t once_value_15; /* Once value */
8347 static val_t once_value_16; /* Once value */
8348 static val_t once_value_17; /* Once value */
8349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8350 fra.me.file = LOCATE_typing;
8351 fra.me.line = 1457;
8352 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_property;
8353 fra.me.has_broke = 0;
8354 fra.me.REG_size = 10;
8355 fra.me.REG[0] = NIT_NULL;
8356 fra.me.REG[1] = NIT_NULL;
8357 fra.me.REG[2] = NIT_NULL;
8358 fra.me.REG[3] = NIT_NULL;
8359 fra.me.REG[4] = NIT_NULL;
8360 fra.me.REG[5] = NIT_NULL;
8361 fra.me.REG[6] = NIT_NULL;
8362 fra.me.REG[7] = NIT_NULL;
8363 fra.me.REG[8] = NIT_NULL;
8364 fra.me.REG[9] = NIT_NULL;
8365 fra.me.REG[0] = p0;
8366 fra.me.REG[1] = p1;
8367 fra.me.REG[2] = p2;
8368 REGB0 = p3;
8369 fra.me.REG[3] = p4;
8370 /* ./syntax//typing.nit:1459 */
8371 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
8372 if (UNTAG_Bool(REGB1)) {
8373 /* ./syntax//typing.nit:1460 */
8374 if (!once_value_1) {
8375 if (!once_value_2) {
8376 fra.me.REG[4] = BOX_NativeString("==");
8377 REGB1 = TAG_Int(2);
8378 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
8379 once_value_2 = fra.me.REG[4];
8380 register_static_object(&once_value_2);
8381 } else fra.me.REG[4] = once_value_2;
8382 fra.me.REG[4] = fra.me.REG[4];
8383 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8384 once_value_1 = fra.me.REG[4];
8385 register_static_object(&once_value_1);
8386 } else fra.me.REG[4] = once_value_1;
8387 fra.me.REG[4] = fra.me.REG[4];
8388 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8389 if (UNTAG_Bool(REGB1)) {
8390 } else {
8391 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8392 REGB1 = REGB2;
8393 }
8394 if (UNTAG_Bool(REGB1)) {
8395 REGB1 = TAG_Bool(true);
8396 } else {
8397 if (!once_value_3) {
8398 if (!once_value_4) {
8399 fra.me.REG[4] = BOX_NativeString("!=");
8400 REGB2 = TAG_Int(2);
8401 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB2);
8402 once_value_4 = fra.me.REG[4];
8403 register_static_object(&once_value_4);
8404 } else fra.me.REG[4] = once_value_4;
8405 fra.me.REG[4] = fra.me.REG[4];
8406 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8407 once_value_3 = fra.me.REG[4];
8408 register_static_object(&once_value_3);
8409 } else fra.me.REG[4] = once_value_3;
8410 fra.me.REG[4] = fra.me.REG[4];
8411 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8412 if (UNTAG_Bool(REGB2)) {
8413 } else {
8414 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8415 REGB2 = REGB3;
8416 }
8417 REGB1 = REGB2;
8418 }
8419 if (UNTAG_Bool(REGB1)) {
8420 /* ./syntax//typing.nit:1462 */
8421 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
8422 fra.me.REG[4] = CALL_static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
8423 fra.me.REG[2] = fra.me.REG[4];
8424 } else {
8425 /* ./syntax//typing.nit:1464 */
8426 REGB1 = TAG_Int(3);
8427 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
8428 if (!once_value_5) {
8429 fra.me.REG[5] = BOX_NativeString("Error: Method '");
8430 REGB1 = TAG_Int(15);
8431 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8432 once_value_5 = fra.me.REG[5];
8433 register_static_object(&once_value_5);
8434 } else fra.me.REG[5] = once_value_5;
8435 fra.me.REG[5] = fra.me.REG[5];
8436 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8437 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8438 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8439 if (!once_value_6) {
8440 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
8441 REGB1 = TAG_Int(17);
8442 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
8443 once_value_6 = fra.me.REG[5];
8444 register_static_object(&once_value_6);
8445 } else fra.me.REG[5] = once_value_6;
8446 fra.me.REG[5] = fra.me.REG[5];
8447 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8448 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8449 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8450 /* ./syntax//typing.nit:1465 */
8451 fra.me.REG[4] = NIT_NULL;
8452 goto label7;
8453 }
8454 }
8455 /* ./syntax//typing.nit:1468 */
8456 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
8457 /* ./syntax//typing.nit:1469 */
8458 fra.me.REG[6] = NIT_NULL;
8459 /* ./syntax//typing.nit:1470 */
8460 REGB1 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8461 if (UNTAG_Bool(REGB1)) {
8462 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8463 fra.me.REG[6] = fra.me.REG[7];
8464 }
8465 /* ./syntax//typing.nit:1471 */
8466 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8467 if (UNTAG_Bool(REGB1)) {
8468 } else {
8469 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8470 if (UNTAG_Bool(REGB2)) {
8471 REGB2 = TAG_Bool(false);
8472 REGB1 = REGB2;
8473 } else {
8474 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
8475 REGB1 = REGB2;
8476 }
8477 }
8478 if (UNTAG_Bool(REGB1)) {
8479 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8480 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8481 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
8482 } else {
8483 REGB2 = TAG_Bool(false);
8484 REGB1 = REGB2;
8485 }
8486 if (UNTAG_Bool(REGB1)) {
8487 /* ./syntax//typing.nit:1472 */
8488 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8489 /* ./../lib/standard//collection//array.nit:23 */
8490 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8491 if (UNTAG_Bool(REGB1)) {
8492 } else {
8493 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
8494 }
8495 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
8496 /* ./syntax//typing.nit:1473 */
8497 REGB2 = TAG_Int(1);
8498 /* ./../lib/standard//kernel.nit:214 */
8499 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8500 /* ./syntax//typing.nit:1473 */
8501 if (UNTAG_Bool(REGB2)) {
8502 /* ./syntax//typing.nit:1474 */
8503 REGB2 = TAG_Int(5);
8504 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB2);
8505 if (!once_value_8) {
8506 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
8507 REGB2 = TAG_Int(29);
8508 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
8509 once_value_8 = fra.me.REG[9];
8510 register_static_object(&once_value_8);
8511 } else fra.me.REG[9] = once_value_8;
8512 fra.me.REG[9] = fra.me.REG[9];
8513 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8514 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8515 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8516 if (!once_value_9) {
8517 fra.me.REG[9] = BOX_NativeString("' for ");
8518 REGB2 = TAG_Int(6);
8519 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
8520 once_value_9 = fra.me.REG[9];
8521 register_static_object(&once_value_9);
8522 } else fra.me.REG[9] = once_value_9;
8523 fra.me.REG[9] = fra.me.REG[9];
8524 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8525 if (!once_value_10) {
8526 fra.me.REG[9] = BOX_NativeString(", ");
8527 REGB2 = TAG_Int(2);
8528 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
8529 once_value_10 = fra.me.REG[9];
8530 register_static_object(&once_value_10);
8531 } else fra.me.REG[9] = once_value_10;
8532 fra.me.REG[9] = fra.me.REG[9];
8533 fra.me.REG[9] = CALL_string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
8534 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8535 if (!once_value_11) {
8536 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
8537 REGB2 = TAG_Int(27);
8538 fra.me.REG[9] = NEW_String_string___String___with_native(fra.me.REG[9], REGB2);
8539 once_value_11 = fra.me.REG[9];
8540 register_static_object(&once_value_11);
8541 } else fra.me.REG[9] = once_value_11;
8542 fra.me.REG[9] = fra.me.REG[9];
8543 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8544 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8545 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8546 /* ./syntax//typing.nit:1475 */
8547 fra.me.REG[4] = NIT_NULL;
8548 goto label7;
8549 } else {
8550 /* ./../lib/standard//collection//array.nit:23 */
8551 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8552 if (UNTAG_Bool(REGB2)) {
8553 } else {
8554 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
8555 }
8556 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[7]);
8557 /* ./syntax//typing.nit:1476 */
8558 REGB1 = TAG_Int(1);
8559 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
8560 if (UNTAG_Bool(REGB3)) {
8561 } else {
8562 /* ./../lib/standard//kernel.nit:207 */
8563 REGB1 = TAG_Bool((REGB2)==(REGB1));
8564 /* ./syntax//typing.nit:1476 */
8565 REGB3 = REGB1;
8566 }
8567 if (UNTAG_Bool(REGB3)) {
8568 /* ./syntax//typing.nit:1477 */
8569 fra.me.REG[7] = CALL_abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
8570 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8571 if (UNTAG_Bool(REGB3)) {
8572 nit_abort("Reciever is null", NULL, LOCATE_typing, 1477);
8573 }
8574 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8575 fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
8576 /* ./syntax//typing.nit:1478 */
8577 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
8578 if (UNTAG_Bool(REGB3)) {
8579 } else {
8580 nit_abort("Assert failed", NULL, LOCATE_typing, 1478);
8581 }
8582 /* ./syntax//typing.nit:1479 */
8583 fra.me.REG[6] = fra.me.REG[7];
8584 }
8585 }
8586 }
8587 /* ./syntax//typing.nit:1483 */
8588 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8589 if (UNTAG_Bool(REGB3)) {
8590 } else {
8591 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8592 if (UNTAG_Bool(REGB1)) {
8593 REGB1 = TAG_Bool(false);
8594 REGB3 = REGB1;
8595 } else {
8596 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
8597 REGB3 = REGB1;
8598 }
8599 }
8600 if (UNTAG_Bool(REGB3)) {
8601 /* ./syntax//typing.nit:1484 */
8602 if (UNTAG_Bool(REGB0)) {
8603 /* ./syntax//typing.nit:1485 */
8604 REGB0 = TAG_Int(5);
8605 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8606 if (!once_value_12) {
8607 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
8608 REGB0 = TAG_Int(27);
8609 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
8610 once_value_12 = fra.me.REG[5];
8611 register_static_object(&once_value_12);
8612 } else fra.me.REG[5] = once_value_12;
8613 fra.me.REG[5] = fra.me.REG[5];
8614 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8615 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8616 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8617 if (!once_value_13) {
8618 fra.me.REG[5] = BOX_NativeString("' unknown in ");
8619 REGB0 = TAG_Int(13);
8620 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
8621 once_value_13 = fra.me.REG[5];
8622 register_static_object(&once_value_13);
8623 } else fra.me.REG[5] = once_value_13;
8624 fra.me.REG[5] = fra.me.REG[5];
8625 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8626 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8628 if (!once_value_14) {
8629 fra.me.REG[5] = BOX_NativeString(".");
8630 REGB0 = TAG_Int(1);
8631 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
8632 once_value_14 = fra.me.REG[5];
8633 register_static_object(&once_value_14);
8634 } else fra.me.REG[5] = once_value_14;
8635 fra.me.REG[5] = fra.me.REG[5];
8636 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8637 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8638 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8639 } else {
8640 /* ./syntax//typing.nit:1487 */
8641 REGB0 = TAG_Int(5);
8642 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8643 if (!once_value_15) {
8644 fra.me.REG[5] = BOX_NativeString("Error: Method '");
8645 REGB0 = TAG_Int(15);
8646 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
8647 once_value_15 = fra.me.REG[5];
8648 register_static_object(&once_value_15);
8649 } else fra.me.REG[5] = once_value_15;
8650 fra.me.REG[5] = fra.me.REG[5];
8651 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8652 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8653 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
8654 if (!once_value_16) {
8655 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
8656 REGB0 = TAG_Int(20);
8657 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8658 once_value_16 = fra.me.REG[3];
8659 register_static_object(&once_value_16);
8660 } else fra.me.REG[3] = once_value_16;
8661 fra.me.REG[3] = fra.me.REG[3];
8662 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
8663 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8664 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
8665 if (!once_value_17) {
8666 fra.me.REG[2] = BOX_NativeString(".");
8667 REGB0 = TAG_Int(1);
8668 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
8669 once_value_17 = fra.me.REG[2];
8670 register_static_object(&once_value_17);
8671 } else fra.me.REG[2] = once_value_17;
8672 fra.me.REG[2] = fra.me.REG[2];
8673 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
8674 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8675 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8676 }
8677 /* ./syntax//typing.nit:1489 */
8678 fra.me.REG[4] = NIT_NULL;
8679 goto label7;
8680 }
8681 /* ./syntax//typing.nit:1491 */
8682 fra.me.REG[4] = fra.me.REG[6];
8683 goto label7;
8684 label7: while(0);
8685 stack_frame_head = fra.me.prev;
8686 return fra.me.REG[4];
8687 }
8688 val_t typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8689 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
8690 val_t REGB0;
8691 val_t tmp;
8692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8693 fra.me.file = LOCATE_typing;
8694 fra.me.line = 1494;
8695 fra.me.meth = LOCATE_typing___AAbsSendExpr___get_signature;
8696 fra.me.has_broke = 0;
8697 fra.me.REG_size = 6;
8698 fra.me.REG[0] = NIT_NULL;
8699 fra.me.REG[1] = NIT_NULL;
8700 fra.me.REG[2] = NIT_NULL;
8701 fra.me.REG[3] = NIT_NULL;
8702 fra.me.REG[4] = NIT_NULL;
8703 fra.me.REG[5] = NIT_NULL;
8704 fra.me.REG[0] = p0;
8705 fra.me.REG[1] = p1;
8706 fra.me.REG[2] = p2;
8707 fra.me.REG[3] = p3;
8708 REGB0 = p4;
8709 /* ./syntax//typing.nit:1497 */
8710 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
8711 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8712 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);
8713 /* ./syntax//typing.nit:1498 */
8714 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
8715 /* ./syntax//typing.nit:1499 */
8716 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8717 if (UNTAG_Bool(REGB0)) {
8718 fra.me.REG[3] = CALL_static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
8719 fra.me.REG[2] = fra.me.REG[3];
8720 }
8721 /* ./syntax//typing.nit:1500 */
8722 goto label1;
8723 label1: while(0);
8724 stack_frame_head = fra.me.prev;
8725 return fra.me.REG[2];
8726 }
8727 val_t typing___AAbsSendExpr___prop(val_t p0){
8728 struct {struct stack_frame_t me;} fra;
8729 val_t REGB0;
8730 val_t tmp;
8731 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8732 fra.me.file = LOCATE_typing;
8733 fra.me.line = 1503;
8734 fra.me.meth = LOCATE_typing___AAbsSendExpr___prop;
8735 fra.me.has_broke = 0;
8736 fra.me.REG_size = 1;
8737 fra.me.REG[0] = NIT_NULL;
8738 fra.me.REG[0] = p0;
8739 /* ./syntax//typing.nit:1504 */
8740 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
8741 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
8742 if (UNTAG_Bool(REGB0)) {
8743 } else {
8744 nit_abort("Cast failed", NULL, LOCATE_typing, 1504);
8745 }
8746 goto label1;
8747 label1: while(0);
8748 stack_frame_head = fra.me.prev;
8749 return fra.me.REG[0];
8750 }
8751 val_t typing___AAbsSendExpr___return_type(val_t p0){
8752 struct {struct stack_frame_t me;} fra;
8753 val_t tmp;
8754 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8755 fra.me.file = LOCATE_typing;
8756 fra.me.line = 1507;
8757 fra.me.meth = LOCATE_typing___AAbsSendExpr___return_type;
8758 fra.me.has_broke = 0;
8759 fra.me.REG_size = 1;
8760 fra.me.REG[0] = NIT_NULL;
8761 fra.me.REG[0] = p0;
8762 /* ./syntax//typing.nit:1507 */
8763 fra.me.REG[0] = ATTR_typing___AAbsSendExpr____return_type(fra.me.REG[0]);
8764 stack_frame_head = fra.me.prev;
8765 return fra.me.REG[0];
8766 }
8767 void typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
8768 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
8769 val_t REGB0;
8770 val_t REGB1;
8771 val_t REGB2;
8772 val_t tmp;
8773 static val_t once_value_1; /* Once value */
8774 static val_t once_value_2; /* Once value */
8775 static val_t once_value_3; /* Once value */
8776 static val_t once_value_4; /* Once value */
8777 static val_t once_value_5; /* Once value */
8778 static val_t once_value_6; /* Once value */
8779 static val_t once_value_7; /* Once value */
8780 static val_t once_value_8; /* Once value */
8781 static val_t once_value_9; /* Once value */
8782 static val_t once_value_10; /* Once value */
8783 static val_t once_value_11; /* Once value */
8784 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8785 fra.me.file = LOCATE_typing;
8786 fra.me.line = 1514;
8787 fra.me.meth = LOCATE_typing___ASuperInitCall___register_super_init_call;
8788 fra.me.has_broke = 0;
8789 fra.me.REG_size = 11;
8790 fra.me.REG[0] = NIT_NULL;
8791 fra.me.REG[1] = NIT_NULL;
8792 fra.me.REG[2] = NIT_NULL;
8793 fra.me.REG[3] = NIT_NULL;
8794 fra.me.REG[4] = NIT_NULL;
8795 fra.me.REG[5] = NIT_NULL;
8796 fra.me.REG[6] = NIT_NULL;
8797 fra.me.REG[7] = NIT_NULL;
8798 fra.me.REG[8] = NIT_NULL;
8799 fra.me.REG[9] = NIT_NULL;
8800 fra.me.REG[10] = NIT_NULL;
8801 fra.me.REG[0] = p0;
8802 fra.me.REG[1] = p1;
8803 fra.me.REG[2] = p2;
8804 /* ./syntax//typing.nit:1516 */
8805 fra.me.REG[3] = CALL_parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
8806 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8807 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
8808 if (UNTAG_Bool(REGB0)) {
8809 } else {
8810 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8811 if (UNTAG_Bool(REGB1)) {
8812 REGB1 = TAG_Bool(false);
8813 REGB0 = REGB1;
8814 } else {
8815 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8816 REGB0 = REGB1;
8817 }
8818 }
8819 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8820 if (UNTAG_Bool(REGB0)) {
8821 fra.me.REG[4] = CALL_typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8822 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
8823 if (UNTAG_Bool(REGB0)) {
8824 } else {
8825 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
8826 REGB0 = REGB1;
8827 }
8828 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8829 } else {
8830 REGB1 = TAG_Bool(false);
8831 REGB0 = REGB1;
8832 }
8833 if (UNTAG_Bool(REGB0)) {
8834 /* ./syntax//typing.nit:1517 */
8835 REGB0 = TAG_Int(3);
8836 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
8837 if (!once_value_1) {
8838 fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
8839 REGB0 = TAG_Int(30);
8840 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8841 once_value_1 = fra.me.REG[3];
8842 register_static_object(&once_value_1);
8843 } else fra.me.REG[3] = once_value_1;
8844 fra.me.REG[3] = fra.me.REG[3];
8845 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8846 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8847 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8848 if (!once_value_2) {
8849 fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
8850 REGB0 = TAG_Int(29);
8851 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
8852 once_value_2 = fra.me.REG[3];
8853 register_static_object(&once_value_2);
8854 } else fra.me.REG[3] = once_value_2;
8855 fra.me.REG[3] = fra.me.REG[3];
8856 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8857 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8858 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8859 }
8860 /* ./syntax//typing.nit:1519 */
8861 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8862 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
8863 fra.me.REG[3] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
8864 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
8865 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
8866 fra.me.REG[3] = CALL_abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
8867 /* ./syntax//typing.nit:1520 */
8868 fra.me.REG[4] = NIT_NULL;
8869 /* ./syntax//typing.nit:1521 */
8870 fra.me.REG[5] = CALL_typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
8871 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
8872 if (UNTAG_Bool(REGB0)) {
8873 } else {
8874 nit_abort("Cast failed", NULL, LOCATE_typing, 1521);
8875 }
8876 /* ./syntax//typing.nit:1522 */
8877 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
8878 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8879 if (UNTAG_Bool(REGB0)) {
8880 /* ./syntax//typing.nit:1523 */
8881 fra.me.REG[6] = CALL_abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
8882 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8883 if (UNTAG_Bool(REGB0)) {
8884 nit_abort("Reciever is null", NULL, LOCATE_typing, 1523);
8885 }
8886 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
8887 fra.me.REG[6] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
8888 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
8889 fra.me.REG[4] = fra.me.REG[6];
8890 }
8891 /* ./syntax//typing.nit:1525 */
8892 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8893 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
8894 fra.me.REG[6] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
8895 /* ./syntax//typing.nit:1526 */
8896 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8897 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
8898 if (UNTAG_Bool(REGB0)) {
8899 } else {
8900 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
8901 REGB0 = REGB1;
8902 }
8903 if (UNTAG_Bool(REGB0)) {
8904 /* ./syntax//typing.nit:1527 */
8905 REGB0 = TAG_Bool(true);
8906 CALL_typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
8907 } else {
8908 /* ./syntax//typing.nit:1528 */
8909 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
8910 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8911 if (UNTAG_Bool(REGB0)) {
8912 /* ./syntax//typing.nit:1529 */
8913 REGB0 = TAG_Int(5);
8914 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8915 if (!once_value_3) {
8916 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
8917 REGB0 = TAG_Int(28);
8918 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8919 once_value_3 = fra.me.REG[8];
8920 register_static_object(&once_value_3);
8921 } else fra.me.REG[8] = once_value_3;
8922 fra.me.REG[8] = fra.me.REG[8];
8923 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8924 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8925 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8926 if (!once_value_4) {
8927 fra.me.REG[8] = BOX_NativeString(" must be one in ");
8928 REGB0 = TAG_Int(16);
8929 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8930 once_value_4 = fra.me.REG[8];
8931 register_static_object(&once_value_4);
8932 } else fra.me.REG[8] = once_value_4;
8933 fra.me.REG[8] = fra.me.REG[8];
8934 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8935 if (!once_value_5) {
8936 fra.me.REG[8] = BOX_NativeString(", ");
8937 REGB0 = TAG_Int(2);
8938 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8939 once_value_5 = fra.me.REG[8];
8940 register_static_object(&once_value_5);
8941 } else fra.me.REG[8] = once_value_5;
8942 fra.me.REG[8] = fra.me.REG[8];
8943 fra.me.REG[8] = CALL_string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
8944 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8945 if (!once_value_6) {
8946 fra.me.REG[8] = BOX_NativeString(".");
8947 REGB0 = TAG_Int(1);
8948 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8949 once_value_6 = fra.me.REG[8];
8950 register_static_object(&once_value_6);
8951 } else fra.me.REG[8] = once_value_6;
8952 fra.me.REG[8] = fra.me.REG[8];
8953 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8954 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8955 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8956 } else {
8957 /* ./syntax//typing.nit:1530 */
8958 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
8959 if (UNTAG_Bool(REGB0)) {
8960 } else {
8961 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8962 REGB0 = REGB1;
8963 }
8964 if (UNTAG_Bool(REGB0)) {
8965 /* ./syntax//typing.nit:1531 */
8966 REGB0 = TAG_Int(3);
8967 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
8968 if (!once_value_7) {
8969 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
8970 REGB0 = TAG_Int(54);
8971 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8972 once_value_7 = fra.me.REG[8];
8973 register_static_object(&once_value_7);
8974 } else fra.me.REG[8] = once_value_7;
8975 fra.me.REG[8] = fra.me.REG[8];
8976 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8977 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8978 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8979 if (!once_value_8) {
8980 fra.me.REG[8] = BOX_NativeString(" is allowed.");
8981 REGB0 = TAG_Int(12);
8982 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
8983 once_value_8 = fra.me.REG[8];
8984 register_static_object(&once_value_8);
8985 } else fra.me.REG[8] = once_value_8;
8986 fra.me.REG[8] = fra.me.REG[8];
8987 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8988 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8989 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8990 } else {
8991 /* ./../lib/standard//collection//array.nit:234 */
8992 REGB0 = TAG_Int(0);
8993 /* ./../lib/standard//collection//array.nit:235 */
8994 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8995 if (UNTAG_Bool(REGB1)) {
8996 } else {
8997 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
8998 }
8999 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
9000 /* ./../lib/standard//collection//array.nit:236 */
9001 fra.me.REG[7] = ATTR_array___Array____items(fra.me.REG[6]);
9002 /* ./../lib/standard//collection//array.nit:237 */
9003 while(1) {
9004 /* ./../lib/standard//collection//array.nit:23 */
9005 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9006 if (UNTAG_Bool(REGB1)) {
9007 } else {
9008 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
9009 }
9010 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[6]);
9011 /* ./../lib/standard//kernel.nit:212 */
9012 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
9013 /* ./../lib/standard//collection//array.nit:237 */
9014 if (UNTAG_Bool(REGB1)) {
9015 /* ./../lib/standard//collection//array.nit:238 */
9016 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9017 if (UNTAG_Bool(REGB1)) {
9018 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
9019 }
9020 /* ./../lib/standard//collection//array.nit:654 */
9021 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
9022 /* ./syntax//typing.nit:1534 */
9023 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[4]));
9024 if (UNTAG_Bool(REGB1)) {
9025 } else {
9026 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
9027 REGB1 = REGB2;
9028 }
9029 if (UNTAG_Bool(REGB1)) {
9030 /* ./syntax//typing.nit:1535 */
9031 fra.me.REG[4] = NIT_NULL;
9032 } else {
9033 /* ./syntax//typing.nit:1536 */
9034 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[3]));
9035 if (UNTAG_Bool(REGB1)) {
9036 } else {
9037 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9038 REGB1 = REGB2;
9039 }
9040 if (UNTAG_Bool(REGB1)) {
9041 /* ./syntax//typing.nit:1537 */
9042 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9043 if (UNTAG_Bool(REGB1)) {
9044 } else {
9045 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9046 if (UNTAG_Bool(REGB2)) {
9047 REGB2 = TAG_Bool(false);
9048 REGB1 = REGB2;
9049 } else {
9050 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9051 REGB1 = REGB2;
9052 }
9053 }
9054 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9055 if (UNTAG_Bool(REGB1)) {
9056 /* ./syntax//typing.nit:1538 */
9057 REGB1 = TAG_Int(5);
9058 fra.me.REG[9] = NEW_Array_array___Array___with_capacity(REGB1);
9059 if (!once_value_9) {
9060 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
9061 REGB1 = TAG_Int(22);
9062 fra.me.REG[10] = NEW_String_string___String___with_native(fra.me.REG[10], REGB1);
9063 once_value_9 = fra.me.REG[10];
9064 register_static_object(&once_value_9);
9065 } else fra.me.REG[10] = once_value_9;
9066 fra.me.REG[10] = fra.me.REG[10];
9067 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
9068 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9069 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9070 if (!once_value_10) {
9071 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
9072 REGB1 = TAG_Int(39);
9073 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
9074 once_value_10 = fra.me.REG[8];
9075 register_static_object(&once_value_10);
9076 } else fra.me.REG[8] = once_value_10;
9077 fra.me.REG[8] = fra.me.REG[8];
9078 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9079 fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9080 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9081 if (!once_value_11) {
9082 fra.me.REG[8] = BOX_NativeString("");
9083 REGB1 = TAG_Int(0);
9084 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
9085 once_value_11 = fra.me.REG[8];
9086 register_static_object(&once_value_11);
9087 } else fra.me.REG[8] = once_value_11;
9088 fra.me.REG[8] = fra.me.REG[8];
9089 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9090 fra.me.REG[9] = CALL_string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
9091 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[9]);
9092 }
9093 /* ./syntax//typing.nit:1540 */
9094 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
9095 /* ./syntax//typing.nit:1541 */
9096 goto label12;
9097 }
9098 }
9099 /* ./../lib/standard//collection//array.nit:239 */
9100 REGB1 = TAG_Int(1);
9101 /* ./../lib/standard//kernel.nit:215 */
9102 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
9103 /* ./../lib/standard//collection//array.nit:239 */
9104 REGB0 = REGB1;
9105 } else {
9106 /* ./../lib/standard//collection//array.nit:237 */
9107 goto label13;
9108 }
9109 }
9110 label13: while(0);
9111 label12: while(0);
9112 }
9113 }
9114 }
9115 stack_frame_head = fra.me.prev;
9116 return;
9117 }
9118 val_t typing___ANewExpr___compute_raw_arguments(val_t p0){
9119 struct {struct stack_frame_t me;} fra;
9120 val_t tmp;
9121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9122 fra.me.file = LOCATE_typing;
9123 fra.me.line = 1550;
9124 fra.me.meth = LOCATE_typing___ANewExpr___compute_raw_arguments;
9125 fra.me.has_broke = 0;
9126 fra.me.REG_size = 1;
9127 fra.me.REG[0] = NIT_NULL;
9128 fra.me.REG[0] = p0;
9129 /* ./syntax//typing.nit:1550 */
9130 fra.me.REG[0] = CALL_parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9131 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9132 goto label1;
9133 label1: while(0);
9134 stack_frame_head = fra.me.prev;
9135 return fra.me.REG[0];
9136 }
9137 void typing___ANewExpr___after_typing(val_t p0, val_t p1){
9138 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9139 val_t REGB0;
9140 val_t REGB1;
9141 val_t tmp;
9142 static val_t once_value_2; /* Once value */
9143 static val_t once_value_3; /* Once value */
9144 static val_t once_value_4; /* Once value */
9145 static val_t once_value_5; /* Once value */
9146 static val_t once_value_6; /* Once value */
9147 static val_t once_value_7; /* Once value */
9148 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9149 fra.me.file = LOCATE_typing;
9150 fra.me.line = 1551;
9151 fra.me.meth = LOCATE_typing___ANewExpr___after_typing;
9152 fra.me.has_broke = 0;
9153 fra.me.REG_size = 5;
9154 fra.me.REG[0] = NIT_NULL;
9155 fra.me.REG[1] = NIT_NULL;
9156 fra.me.REG[2] = NIT_NULL;
9157 fra.me.REG[3] = NIT_NULL;
9158 fra.me.REG[4] = NIT_NULL;
9159 fra.me.REG[0] = p0;
9160 fra.me.REG[1] = p1;
9161 /* ./syntax//typing.nit:1553 */
9162 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9163 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
9164 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9165 if (UNTAG_Bool(REGB0)) {
9166 goto label1;
9167 }
9168 /* ./syntax//typing.nit:1554 */
9169 fra.me.REG[2] = CALL_parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9170 fra.me.REG[2] = CALL_syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
9171 /* ./syntax//typing.nit:1555 */
9172 fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9173 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
9174 REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
9175 if (UNTAG_Bool(REGB0)) {
9176 /* ./syntax//typing.nit:1556 */
9177 REGB0 = TAG_Int(3);
9178 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
9179 if (!once_value_2) {
9180 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
9181 REGB0 = TAG_Int(41);
9182 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
9183 once_value_2 = fra.me.REG[4];
9184 register_static_object(&once_value_2);
9185 } else fra.me.REG[4] = once_value_2;
9186 fra.me.REG[4] = fra.me.REG[4];
9187 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9188 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9189 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9190 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9191 if (!once_value_3) {
9192 fra.me.REG[4] = BOX_NativeString(".");
9193 REGB0 = TAG_Int(1);
9194 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
9195 once_value_3 = fra.me.REG[4];
9196 register_static_object(&once_value_3);
9197 } else fra.me.REG[4] = once_value_3;
9198 fra.me.REG[4] = fra.me.REG[4];
9199 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9200 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9201 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9202 /* ./syntax//typing.nit:1557 */
9203 goto label1;
9204 }
9205 /* ./syntax//typing.nit:1560 */
9206 fra.me.REG[3] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9207 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9208 if (UNTAG_Bool(REGB0)) {
9209 } else {
9210 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9211 if (UNTAG_Bool(REGB1)) {
9212 REGB1 = TAG_Bool(false);
9213 REGB0 = REGB1;
9214 } else {
9215 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9216 REGB0 = REGB1;
9217 }
9218 }
9219 if (UNTAG_Bool(REGB0)) {
9220 /* ./syntax//typing.nit:1561 */
9221 if (!once_value_4) {
9222 if (!once_value_5) {
9223 fra.me.REG[3] = BOX_NativeString("init");
9224 REGB0 = TAG_Int(4);
9225 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9226 once_value_5 = fra.me.REG[3];
9227 register_static_object(&once_value_5);
9228 } else fra.me.REG[3] = once_value_5;
9229 fra.me.REG[3] = fra.me.REG[3];
9230 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9231 once_value_4 = fra.me.REG[3];
9232 register_static_object(&once_value_4);
9233 } else fra.me.REG[3] = once_value_4;
9234 fra.me.REG[3] = fra.me.REG[3];
9235 } else {
9236 /* ./syntax//typing.nit:1563 */
9237 fra.me.REG[4] = CALL_parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9238 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9239 if (UNTAG_Bool(REGB0)) {
9240 nit_abort("Reciever is null", NULL, LOCATE_typing, 1563);
9241 }
9242 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9243 fra.me.REG[3] = fra.me.REG[4];
9244 }
9245 /* ./syntax//typing.nit:1566 */
9246 REGB0 = TAG_Bool(false);
9247 REGB1 = TAG_Bool(false);
9248 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9249 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);
9250 /* ./syntax//typing.nit:1567 */
9251 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
9252 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9253 if (UNTAG_Bool(REGB1)) {
9254 } else {
9255 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9256 if (UNTAG_Bool(REGB0)) {
9257 REGB0 = TAG_Bool(false);
9258 REGB1 = REGB0;
9259 } else {
9260 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9261 REGB1 = REGB0;
9262 }
9263 }
9264 if (UNTAG_Bool(REGB1)) {
9265 goto label1;
9266 }
9267 /* ./syntax//typing.nit:1569 */
9268 fra.me.REG[4] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9269 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9270 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9271 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9272 if (UNTAG_Bool(REGB1)) {
9273 /* ./syntax//typing.nit:1570 */
9274 REGB1 = TAG_Int(3);
9275 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
9276 if (!once_value_6) {
9277 fra.me.REG[3] = BOX_NativeString("Error: ");
9278 REGB1 = TAG_Int(7);
9279 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9280 once_value_6 = fra.me.REG[3];
9281 register_static_object(&once_value_6);
9282 } else fra.me.REG[3] = once_value_6;
9283 fra.me.REG[3] = fra.me.REG[3];
9284 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9285 fra.me.REG[3] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9286 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9287 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9288 if (!once_value_7) {
9289 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
9290 REGB1 = TAG_Int(22);
9291 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9292 once_value_7 = fra.me.REG[3];
9293 register_static_object(&once_value_7);
9294 } else fra.me.REG[3] = once_value_7;
9295 fra.me.REG[3] = fra.me.REG[3];
9296 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9297 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9298 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9299 /* ./syntax//typing.nit:1571 */
9300 goto label1;
9301 }
9302 /* ./syntax//typing.nit:1573 */
9303 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
9304 /* ./syntax//typing.nit:1574 */
9305 REGB1 = TAG_Bool(true);
9306 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9307 label1: while(0);
9308 stack_frame_head = fra.me.prev;
9309 return;
9310 }
9311 val_t typing___ASendExpr___name(val_t p0){
9312 struct {struct stack_frame_t me;} fra;
9313 val_t tmp;
9314 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9315 fra.me.file = LOCATE_typing;
9316 fra.me.line = 1580;
9317 fra.me.meth = LOCATE_typing___ASendExpr___name;
9318 fra.me.has_broke = 0;
9319 fra.me.REG_size = 0;
9320 /* ./syntax//typing.nit:1580 */
9321 nit_abort("Deferred method called", NULL, LOCATE_typing, 1580);
9322 stack_frame_head = fra.me.prev;
9323 return NIT_NULL;
9324 }
9325 val_t typing___ASendExpr___closure_defs(val_t p0){
9326 struct {struct stack_frame_t me;} fra;
9327 val_t tmp;
9328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9329 fra.me.file = LOCATE_typing;
9330 fra.me.line = 1583;
9331 fra.me.meth = LOCATE_typing___ASendExpr___closure_defs;
9332 fra.me.has_broke = 0;
9333 fra.me.REG_size = 1;
9334 fra.me.REG[0] = NIT_NULL;
9335 fra.me.REG[0] = p0;
9336 /* ./syntax//typing.nit:1584 */
9337 fra.me.REG[0] = NIT_NULL;
9338 goto label1;
9339 label1: while(0);
9340 stack_frame_head = fra.me.prev;
9341 return fra.me.REG[0];
9342 }
9343 void typing___ASendExpr___after_typing(val_t p0, val_t p1){
9344 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9345 val_t tmp;
9346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9347 fra.me.file = LOCATE_typing;
9348 fra.me.line = 1586;
9349 fra.me.meth = LOCATE_typing___ASendExpr___after_typing;
9350 fra.me.has_broke = 0;
9351 fra.me.REG_size = 2;
9352 fra.me.REG[0] = NIT_NULL;
9353 fra.me.REG[1] = NIT_NULL;
9354 fra.me.REG[0] = p0;
9355 fra.me.REG[1] = p1;
9356 /* ./syntax//typing.nit:1588 */
9357 CALL_typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9358 stack_frame_head = fra.me.prev;
9359 return;
9360 }
9361 void typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
9362 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9363 val_t REGB0;
9364 val_t REGB1;
9365 val_t tmp;
9366 static val_t once_value_2; /* Once value */
9367 static val_t once_value_3; /* Once value */
9368 static val_t once_value_4; /* Once value */
9369 static val_t once_value_5; /* Once value */
9370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9371 fra.me.file = LOCATE_typing;
9372 fra.me.line = 1591;
9373 fra.me.meth = LOCATE_typing___ASendExpr___do_all_typing;
9374 fra.me.has_broke = 0;
9375 fra.me.REG_size = 6;
9376 fra.me.REG[0] = NIT_NULL;
9377 fra.me.REG[1] = NIT_NULL;
9378 fra.me.REG[2] = NIT_NULL;
9379 fra.me.REG[3] = NIT_NULL;
9380 fra.me.REG[4] = NIT_NULL;
9381 fra.me.REG[5] = NIT_NULL;
9382 fra.me.REG[0] = p0;
9383 fra.me.REG[1] = p1;
9384 /* ./syntax//typing.nit:1593 */
9385 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9386 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
9387 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9388 if (UNTAG_Bool(REGB0)) {
9389 goto label1;
9390 }
9391 /* ./syntax//typing.nit:1594 */
9392 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9393 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9394 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9395 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
9396 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9397 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9398 fra.me.REG[3] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9399 fra.me.REG[4] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9400 fra.me.REG[5] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9401 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]);
9402 /* ./syntax//typing.nit:1595 */
9403 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
9404 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9405 if (UNTAG_Bool(REGB1)) {
9406 } else {
9407 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9408 if (UNTAG_Bool(REGB0)) {
9409 REGB0 = TAG_Bool(false);
9410 REGB1 = REGB0;
9411 } else {
9412 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9413 REGB1 = REGB0;
9414 }
9415 }
9416 if (UNTAG_Bool(REGB1)) {
9417 goto label1;
9418 }
9419 /* ./syntax//typing.nit:1596 */
9420 fra.me.REG[5] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
9421 REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
9422 if (UNTAG_Bool(REGB1)) {
9423 } else {
9424 nit_abort("Cast failed", NULL, LOCATE_typing, 1596);
9425 }
9426 /* ./syntax//typing.nit:1598 */
9427 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
9428 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9429 if (UNTAG_Bool(REGB1)) {
9430 /* ./syntax//typing.nit:1599 */
9431 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9432 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9433 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9434 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9435 if (UNTAG_Bool(REGB1)) {
9436 /* ./syntax//typing.nit:1600 */
9437 REGB1 = TAG_Int(3);
9438 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
9439 if (!once_value_2) {
9440 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
9441 REGB1 = TAG_Int(33);
9442 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9443 once_value_2 = fra.me.REG[3];
9444 register_static_object(&once_value_2);
9445 } else fra.me.REG[3] = once_value_2;
9446 fra.me.REG[3] = fra.me.REG[3];
9447 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9448 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9449 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9450 if (!once_value_3) {
9451 fra.me.REG[3] = BOX_NativeString(" in a method.");
9452 REGB1 = TAG_Int(13);
9453 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9454 once_value_3 = fra.me.REG[3];
9455 register_static_object(&once_value_3);
9456 } else fra.me.REG[3] = once_value_3;
9457 fra.me.REG[3] = fra.me.REG[3];
9458 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9459 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9460 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9461 } else {
9462 /* ./syntax//typing.nit:1601 */
9463 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9464 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9465 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9466 if (UNTAG_Bool(REGB1)) {
9467 /* ./syntax//typing.nit:1602 */
9468 REGB1 = TAG_Int(3);
9469 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
9470 if (!once_value_4) {
9471 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
9472 REGB1 = TAG_Int(19);
9473 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9474 once_value_4 = fra.me.REG[3];
9475 register_static_object(&once_value_4);
9476 } else fra.me.REG[3] = once_value_4;
9477 fra.me.REG[3] = fra.me.REG[3];
9478 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9479 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9480 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9481 if (!once_value_5) {
9482 fra.me.REG[3] = BOX_NativeString(" is not invoken on 'self'.");
9483 REGB1 = TAG_Int(26);
9484 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
9485 once_value_5 = fra.me.REG[3];
9486 register_static_object(&once_value_5);
9487 } else fra.me.REG[3] = once_value_5;
9488 fra.me.REG[3] = fra.me.REG[3];
9489 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9490 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9491 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9492 } else {
9493 /* ./syntax//typing.nit:1604 */
9494 CALL_typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
9495 }
9496 }
9497 }
9498 /* ./syntax//typing.nit:1608 */
9499 fra.me.REG[5] = CALL_syntax_base___AAbsSendExpr___return_type(fra.me.REG[0])(fra.me.REG[0]);
9500 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
9501 /* ./syntax//typing.nit:1609 */
9502 REGB1 = TAG_Bool(true);
9503 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9504 label1: while(0);
9505 stack_frame_head = fra.me.prev;
9506 return;
9507 }
9508 val_t typing___ASendReassignExpr___read_prop(val_t p0){
9509 struct {struct stack_frame_t me;} fra;
9510 val_t REGB0;
9511 val_t tmp;
9512 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9513 fra.me.file = LOCATE_typing;
9514 fra.me.line = 1614;
9515 fra.me.meth = LOCATE_typing___ASendReassignExpr___read_prop;
9516 fra.me.has_broke = 0;
9517 fra.me.REG_size = 1;
9518 fra.me.REG[0] = NIT_NULL;
9519 fra.me.REG[0] = p0;
9520 /* ./syntax//typing.nit:1614 */
9521 fra.me.REG[0] = ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]);
9522 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
9523 if (UNTAG_Bool(REGB0)) {
9524 } else {
9525 nit_abort("Cast failed", NULL, LOCATE_typing, 1614);
9526 }
9527 goto label1;
9528 label1: while(0);
9529 stack_frame_head = fra.me.prev;
9530 return fra.me.REG[0];
9531 }
9532 void typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
9533 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9534 val_t REGB0;
9535 val_t REGB1;
9536 val_t REGB2;
9537 val_t tmp;
9538 static val_t once_value_2; /* Once value */
9539 static val_t once_value_3; /* Once value */
9540 static val_t once_value_4; /* Once value */
9541 static val_t once_value_5; /* Once value */
9542 static val_t once_value_6; /* Once value */
9543 static val_t once_value_7; /* Once value */
9544 static val_t once_value_8; /* Once value */
9545 static val_t once_value_9; /* Once value */
9546 static val_t once_value_10; /* Once value */
9547 static val_t once_value_11; /* Once value */
9548 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9549 fra.me.file = LOCATE_typing;
9550 fra.me.line = 1616;
9551 fra.me.meth = LOCATE_typing___ASendReassignExpr___do_all_typing;
9552 fra.me.has_broke = 0;
9553 fra.me.REG_size = 7;
9554 fra.me.REG[0] = NIT_NULL;
9555 fra.me.REG[1] = NIT_NULL;
9556 fra.me.REG[2] = NIT_NULL;
9557 fra.me.REG[3] = NIT_NULL;
9558 fra.me.REG[4] = NIT_NULL;
9559 fra.me.REG[5] = NIT_NULL;
9560 fra.me.REG[6] = NIT_NULL;
9561 fra.me.REG[0] = p0;
9562 fra.me.REG[1] = p1;
9563 /* ./syntax//typing.nit:1618 */
9564 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9565 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
9566 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9567 if (UNTAG_Bool(REGB0)) {
9568 goto label1;
9569 }
9570 /* ./syntax//typing.nit:1619 */
9571 fra.me.REG[2] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9572 /* ./syntax//typing.nit:1620 */
9573 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9574 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
9575 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9576 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
9577 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9578 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9579 fra.me.REG[4] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9580 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);
9581 /* ./syntax//typing.nit:1621 */
9582 fra.me.REG[4] = ATTR_typing___AAbsSendExpr____prop(fra.me.REG[0]);
9583 /* ./syntax//typing.nit:1622 */
9584 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9585 if (UNTAG_Bool(REGB1)) {
9586 } else {
9587 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9588 if (UNTAG_Bool(REGB0)) {
9589 REGB0 = TAG_Bool(false);
9590 REGB1 = REGB0;
9591 } else {
9592 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9593 REGB1 = REGB0;
9594 }
9595 }
9596 if (UNTAG_Bool(REGB1)) {
9597 goto label1;
9598 }
9599 /* ./syntax//typing.nit:1623 */
9600 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9601 if (UNTAG_Bool(REGB1)) {
9602 nit_abort("Reciever is null", NULL, LOCATE_typing, 1623);
9603 }
9604 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9605 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
9606 if (UNTAG_Bool(REGB1)) {
9607 /* ./syntax//typing.nit:1624 */
9608 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9609 fra.me.REG[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9610 REGB1 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
9611 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9612 if (UNTAG_Bool(REGB1)) {
9613 /* ./syntax//typing.nit:1625 */
9614 REGB1 = TAG_Int(3);
9615 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
9616 if (!once_value_2) {
9617 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
9618 REGB1 = TAG_Int(33);
9619 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
9620 once_value_2 = fra.me.REG[5];
9621 register_static_object(&once_value_2);
9622 } else fra.me.REG[5] = once_value_2;
9623 fra.me.REG[5] = fra.me.REG[5];
9624 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9625 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9626 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9627 if (!once_value_3) {
9628 fra.me.REG[5] = BOX_NativeString(" in a method.");
9629 REGB1 = TAG_Int(13);
9630 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
9631 once_value_3 = fra.me.REG[5];
9632 register_static_object(&once_value_3);
9633 } else fra.me.REG[5] = once_value_3;
9634 fra.me.REG[5] = fra.me.REG[5];
9635 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9636 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9637 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9638 } else {
9639 /* ./syntax//typing.nit:1626 */
9640 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9641 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9642 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9643 if (UNTAG_Bool(REGB1)) {
9644 /* ./syntax//typing.nit:1627 */
9645 REGB1 = TAG_Int(3);
9646 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
9647 if (!once_value_4) {
9648 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
9649 REGB1 = TAG_Int(19);
9650 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
9651 once_value_4 = fra.me.REG[5];
9652 register_static_object(&once_value_4);
9653 } else fra.me.REG[5] = once_value_4;
9654 fra.me.REG[5] = fra.me.REG[5];
9655 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9656 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9657 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9658 if (!once_value_5) {
9659 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
9660 REGB1 = TAG_Int(26);
9661 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB1);
9662 once_value_5 = fra.me.REG[5];
9663 register_static_object(&once_value_5);
9664 } else fra.me.REG[5] = once_value_5;
9665 fra.me.REG[5] = fra.me.REG[5];
9666 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9667 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9668 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9669 }
9670 }
9671 }
9672 /* ./syntax//typing.nit:1630 */
9673 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9674 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
9675 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9676 if (UNTAG_Bool(REGB1)) {
9677 nit_abort("Reciever is null", NULL, LOCATE_typing, 1630);
9678 }
9679 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9680 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
9681 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
9682 if (UNTAG_Bool(REGB1)) {
9683 } else {
9684 nit_abort("Cast failed", NULL, LOCATE_typing, 1630);
9685 }
9686 /* ./syntax//typing.nit:1631 */
9687 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9688 REGB1 = CALL_typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
9689 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9690 if (UNTAG_Bool(REGB1)) {
9691 fra.me.REG[5] = CALL_static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
9692 fra.me.REG[3] = fra.me.REG[5];
9693 }
9694 /* ./syntax//typing.nit:1633 */
9695 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]);
9696 /* ./syntax//typing.nit:1634 */
9697 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9698 if (UNTAG_Bool(REGB1)) {
9699 } else {
9700 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9701 if (UNTAG_Bool(REGB0)) {
9702 REGB0 = TAG_Bool(false);
9703 REGB1 = REGB0;
9704 } else {
9705 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9706 REGB1 = REGB0;
9707 }
9708 }
9709 if (UNTAG_Bool(REGB1)) {
9710 goto label1;
9711 }
9712 /* ./syntax//typing.nit:1635 */
9713 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9714 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
9715 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]);
9716 /* ./syntax//typing.nit:1637 */
9717 ATTR_typing___ASendReassignExpr____read_prop(fra.me.REG[0]) = fra.me.REG[4];
9718 /* ./syntax//typing.nit:1638 */
9719 fra.me.REG[5] = CALL_array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
9720 fra.me.REG[2] = fra.me.REG[5];
9721 /* ./syntax//typing.nit:1639 */
9722 fra.me.REG[5] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
9723 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
9724 /* ./syntax//typing.nit:1641 */
9725 fra.me.REG[5] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9726 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
9727 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9728 REGB1 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
9729 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9730 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9731 REGB2 = TAG_Int(3);
9732 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB2);
9733 if (!once_value_6) {
9734 fra.me.REG[6] = BOX_NativeString("");
9735 REGB2 = TAG_Int(0);
9736 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
9737 once_value_6 = fra.me.REG[6];
9738 register_static_object(&once_value_6);
9739 } else fra.me.REG[6] = once_value_6;
9740 fra.me.REG[6] = fra.me.REG[6];
9741 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9742 fra.me.REG[6] = CALL_typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9743 fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
9744 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9745 if (!once_value_7) {
9746 fra.me.REG[6] = BOX_NativeString("=");
9747 REGB2 = TAG_Int(1);
9748 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB2);
9749 once_value_7 = fra.me.REG[6];
9750 register_static_object(&once_value_7);
9751 } else fra.me.REG[6] = once_value_7;
9752 fra.me.REG[6] = fra.me.REG[6];
9753 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
9754 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9755 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9756 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);
9757 /* ./syntax//typing.nit:1642 */
9758 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9759 if (UNTAG_Bool(REGB0)) {
9760 nit_abort("Reciever is null", NULL, LOCATE_typing, 1642);
9761 }
9762 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9763 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
9764 if (UNTAG_Bool(REGB0)) {
9765 /* ./syntax//typing.nit:1643 */
9766 fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9767 fra.me.REG[2] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9768 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
9769 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9770 if (UNTAG_Bool(REGB0)) {
9771 /* ./syntax//typing.nit:1644 */
9772 REGB0 = TAG_Int(3);
9773 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
9774 if (!once_value_8) {
9775 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
9776 REGB0 = TAG_Int(33);
9777 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9778 once_value_8 = fra.me.REG[3];
9779 register_static_object(&once_value_8);
9780 } else fra.me.REG[3] = once_value_8;
9781 fra.me.REG[3] = fra.me.REG[3];
9782 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9783 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9784 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9785 if (!once_value_9) {
9786 fra.me.REG[3] = BOX_NativeString(" in a method.");
9787 REGB0 = TAG_Int(13);
9788 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9789 once_value_9 = fra.me.REG[3];
9790 register_static_object(&once_value_9);
9791 } else fra.me.REG[3] = once_value_9;
9792 fra.me.REG[3] = fra.me.REG[3];
9793 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9794 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9795 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
9796 } else {
9797 /* ./syntax//typing.nit:1645 */
9798 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9799 REGB0 = CALL_typing___AExpr___is_self(fra.me.REG[2])(fra.me.REG[2]);
9800 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9801 if (UNTAG_Bool(REGB0)) {
9802 /* ./syntax//typing.nit:1646 */
9803 REGB0 = TAG_Int(3);
9804 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
9805 if (!once_value_10) {
9806 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
9807 REGB0 = TAG_Int(19);
9808 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
9809 once_value_10 = fra.me.REG[3];
9810 register_static_object(&once_value_10);
9811 } else fra.me.REG[3] = once_value_10;
9812 fra.me.REG[3] = fra.me.REG[3];
9813 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
9814 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9815 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
9816 if (!once_value_11) {
9817 fra.me.REG[4] = BOX_NativeString(" is not invoken on 'self'.");
9818 REGB0 = TAG_Int(26);
9819 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
9820 once_value_11 = fra.me.REG[4];
9821 register_static_object(&once_value_11);
9822 } else fra.me.REG[4] = once_value_11;
9823 fra.me.REG[4] = fra.me.REG[4];
9824 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
9825 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9826 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
9827 }
9828 }
9829 }
9830 /* ./syntax//typing.nit:1650 */
9831 REGB0 = TAG_Bool(true);
9832 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
9833 label1: while(0);
9834 stack_frame_head = fra.me.prev;
9835 return;
9836 }
9837 val_t typing___ABinopExpr___compute_raw_arguments(val_t p0){
9838 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9839 val_t REGB0;
9840 val_t tmp;
9841 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9842 fra.me.file = LOCATE_typing;
9843 fra.me.line = 1655;
9844 fra.me.meth = LOCATE_typing___ABinopExpr___compute_raw_arguments;
9845 fra.me.has_broke = 0;
9846 fra.me.REG_size = 2;
9847 fra.me.REG[0] = NIT_NULL;
9848 fra.me.REG[1] = NIT_NULL;
9849 fra.me.REG[0] = p0;
9850 /* ./syntax//typing.nit:1655 */
9851 REGB0 = TAG_Int(1);
9852 fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
9853 fra.me.REG[0] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
9854 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
9855 goto label1;
9856 label1: while(0);
9857 stack_frame_head = fra.me.prev;
9858 return fra.me.REG[1];
9859 }
9860 val_t typing___AEqExpr___name(val_t p0){
9861 struct {struct stack_frame_t me;} fra;
9862 val_t REGB0;
9863 val_t tmp;
9864 static val_t once_value_1; /* Once value */
9865 static val_t once_value_2; /* Once value */
9866 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9867 fra.me.file = LOCATE_typing;
9868 fra.me.line = 1658;
9869 fra.me.meth = LOCATE_typing___AEqExpr___name;
9870 fra.me.has_broke = 0;
9871 fra.me.REG_size = 1;
9872 fra.me.REG[0] = NIT_NULL;
9873 fra.me.REG[0] = p0;
9874 /* ./syntax//typing.nit:1658 */
9875 if (!once_value_1) {
9876 if (!once_value_2) {
9877 fra.me.REG[0] = BOX_NativeString("==");
9878 REGB0 = TAG_Int(2);
9879 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
9880 once_value_2 = fra.me.REG[0];
9881 register_static_object(&once_value_2);
9882 } else fra.me.REG[0] = once_value_2;
9883 fra.me.REG[0] = fra.me.REG[0];
9884 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9885 once_value_1 = fra.me.REG[0];
9886 register_static_object(&once_value_1);
9887 } else fra.me.REG[0] = once_value_1;
9888 fra.me.REG[0] = fra.me.REG[0];
9889 goto label3;
9890 label3: while(0);
9891 stack_frame_head = fra.me.prev;
9892 return fra.me.REG[0];
9893 }
9894 void typing___AEqExpr___after_typing(val_t p0, val_t p1){
9895 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
9896 val_t REGB0;
9897 val_t REGB1;
9898 val_t tmp;
9899 static val_t once_value_2; /* Once value */
9900 static val_t once_value_3; /* Once value */
9901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9902 fra.me.file = LOCATE_typing;
9903 fra.me.line = 1659;
9904 fra.me.meth = LOCATE_typing___AEqExpr___after_typing;
9905 fra.me.has_broke = 0;
9906 fra.me.REG_size = 4;
9907 fra.me.REG[0] = NIT_NULL;
9908 fra.me.REG[1] = NIT_NULL;
9909 fra.me.REG[2] = NIT_NULL;
9910 fra.me.REG[3] = NIT_NULL;
9911 fra.me.REG[0] = p0;
9912 fra.me.REG[1] = p1;
9913 /* ./syntax//typing.nit:1659 */
9914 fra.me.REG[2] = fra.me.REG[0];
9915 fra.me.REG[3] = fra.me.REG[1];
9916 /* ./syntax//typing.nit:1661 */
9917 CALL_SUPER_typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9918 /* ./syntax//typing.nit:1662 */
9919 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9920 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9921 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9922 if (UNTAG_Bool(REGB0)) {
9923 REGB0 = TAG_Bool(true);
9924 } else {
9925 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9926 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9927 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9928 REGB0 = REGB1;
9929 }
9930 if (UNTAG_Bool(REGB0)) {
9931 goto label1;
9932 }
9933 /* ./syntax//typing.nit:1663 */
9934 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9935 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9936 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9937 if (UNTAG_Bool(REGB0)) {
9938 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9939 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9940 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9941 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9942 } else {
9943 REGB1 = TAG_Bool(false);
9944 REGB0 = REGB1;
9945 }
9946 if (UNTAG_Bool(REGB0)) {
9947 REGB0 = TAG_Bool(true);
9948 } else {
9949 /* ./syntax//typing.nit:1664 */
9950 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9951 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9952 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9953 /* ./syntax//typing.nit:1663 */
9954 REGB0 = REGB1;
9955 }
9956 if (UNTAG_Bool(REGB0)) {
9957 /* ./syntax//typing.nit:1664 */
9958 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9959 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9960 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9961 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9962 } else {
9963 /* ./syntax//typing.nit:1663 */
9964 REGB1 = TAG_Bool(false);
9965 REGB0 = REGB1;
9966 }
9967 if (UNTAG_Bool(REGB0)) {
9968 /* ./syntax//typing.nit:1665 */
9969 if (!once_value_2) {
9970 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
9971 REGB0 = TAG_Int(59);
9972 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9973 once_value_2 = fra.me.REG[1];
9974 register_static_object(&once_value_2);
9975 } else fra.me.REG[1] = once_value_2;
9976 fra.me.REG[1] = fra.me.REG[1];
9977 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9978 }
9979 /* ./syntax//typing.nit:1668 */
9980 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9981 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9982 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9983 if (UNTAG_Bool(REGB0)) {
9984 /* ./syntax//typing.nit:1669 */
9985 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9986 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9987 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
9988 if (UNTAG_Bool(REGB0)) {
9989 /* ./syntax//typing.nit:1670 */
9990 if (!once_value_3) {
9991 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
9992 REGB0 = TAG_Int(43);
9993 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
9994 once_value_3 = fra.me.REG[1];
9995 register_static_object(&once_value_3);
9996 } else fra.me.REG[1] = once_value_3;
9997 fra.me.REG[1] = fra.me.REG[1];
9998 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9999 } else {
10000 /* ./syntax//typing.nit:1672 */
10001 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10002 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10003 }
10004 } else {
10005 /* ./syntax//typing.nit:1674 */
10006 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10007 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10008 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10009 if (UNTAG_Bool(REGB0)) {
10010 /* ./syntax//typing.nit:1675 */
10011 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10012 CALL_typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10013 }
10014 }
10015 label1: while(0);
10016 stack_frame_head = fra.me.prev;
10017 return;
10018 }
10019 void typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10020 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10021 val_t REGB0;
10022 val_t REGB1;
10023 val_t tmp;
10024 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10025 fra.me.file = LOCATE_typing;
10026 fra.me.line = 1679;
10027 fra.me.meth = LOCATE_typing___AEqExpr___try_to_isa;
10028 fra.me.has_broke = 0;
10029 fra.me.REG_size = 5;
10030 fra.me.REG[0] = NIT_NULL;
10031 fra.me.REG[1] = NIT_NULL;
10032 fra.me.REG[2] = NIT_NULL;
10033 fra.me.REG[3] = NIT_NULL;
10034 fra.me.REG[4] = NIT_NULL;
10035 fra.me.REG[0] = p0;
10036 fra.me.REG[1] = p1;
10037 fra.me.REG[2] = p2;
10038 /* ./syntax//typing.nit:1681 */
10039 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10040 /* ./syntax//typing.nit:1682 */
10041 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10042 if (UNTAG_Bool(REGB0)) {
10043 } else {
10044 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10045 if (UNTAG_Bool(REGB1)) {
10046 REGB1 = TAG_Bool(false);
10047 REGB0 = REGB1;
10048 } else {
10049 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10050 REGB0 = REGB1;
10051 }
10052 }
10053 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10054 if (UNTAG_Bool(REGB0)) {
10055 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10056 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
10057 } else {
10058 REGB1 = TAG_Bool(false);
10059 REGB0 = REGB1;
10060 }
10061 if (UNTAG_Bool(REGB0)) {
10062 /* ./syntax//typing.nit:1683 */
10063 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10064 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10065 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10066 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]);
10067 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10068 /* ./syntax//typing.nit:1684 */
10069 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10070 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10071 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]);
10072 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10073 }
10074 stack_frame_head = fra.me.prev;
10075 return;
10076 }
10077 val_t typing___ANeExpr___name(val_t p0){
10078 struct {struct stack_frame_t me;} fra;
10079 val_t REGB0;
10080 val_t tmp;
10081 static val_t once_value_1; /* Once value */
10082 static val_t once_value_2; /* Once value */
10083 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10084 fra.me.file = LOCATE_typing;
10085 fra.me.line = 1689;
10086 fra.me.meth = LOCATE_typing___ANeExpr___name;
10087 fra.me.has_broke = 0;
10088 fra.me.REG_size = 1;
10089 fra.me.REG[0] = NIT_NULL;
10090 fra.me.REG[0] = p0;
10091 /* ./syntax//typing.nit:1689 */
10092 if (!once_value_1) {
10093 if (!once_value_2) {
10094 fra.me.REG[0] = BOX_NativeString("!=");
10095 REGB0 = TAG_Int(2);
10096 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10097 once_value_2 = fra.me.REG[0];
10098 register_static_object(&once_value_2);
10099 } else fra.me.REG[0] = once_value_2;
10100 fra.me.REG[0] = fra.me.REG[0];
10101 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10102 once_value_1 = fra.me.REG[0];
10103 register_static_object(&once_value_1);
10104 } else fra.me.REG[0] = once_value_1;
10105 fra.me.REG[0] = fra.me.REG[0];
10106 goto label3;
10107 label3: while(0);
10108 stack_frame_head = fra.me.prev;
10109 return fra.me.REG[0];
10110 }
10111 void typing___ANeExpr___after_typing(val_t p0, val_t p1){
10112 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10113 val_t REGB0;
10114 val_t REGB1;
10115 val_t tmp;
10116 static val_t once_value_2; /* Once value */
10117 static val_t once_value_3; /* Once value */
10118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10119 fra.me.file = LOCATE_typing;
10120 fra.me.line = 1690;
10121 fra.me.meth = LOCATE_typing___ANeExpr___after_typing;
10122 fra.me.has_broke = 0;
10123 fra.me.REG_size = 4;
10124 fra.me.REG[0] = NIT_NULL;
10125 fra.me.REG[1] = NIT_NULL;
10126 fra.me.REG[2] = NIT_NULL;
10127 fra.me.REG[3] = NIT_NULL;
10128 fra.me.REG[0] = p0;
10129 fra.me.REG[1] = p1;
10130 /* ./syntax//typing.nit:1690 */
10131 fra.me.REG[2] = fra.me.REG[0];
10132 fra.me.REG[3] = fra.me.REG[1];
10133 /* ./syntax//typing.nit:1692 */
10134 CALL_SUPER_typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10135 /* ./syntax//typing.nit:1693 */
10136 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10137 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10138 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10139 if (UNTAG_Bool(REGB0)) {
10140 REGB0 = TAG_Bool(true);
10141 } else {
10142 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10143 REGB1 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10144 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10145 REGB0 = REGB1;
10146 }
10147 if (UNTAG_Bool(REGB0)) {
10148 goto label1;
10149 }
10150 /* ./syntax//typing.nit:1694 */
10151 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10152 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10153 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10154 if (UNTAG_Bool(REGB0)) {
10155 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10156 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10157 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10158 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10159 } else {
10160 REGB1 = TAG_Bool(false);
10161 REGB0 = REGB1;
10162 }
10163 if (UNTAG_Bool(REGB0)) {
10164 REGB0 = TAG_Bool(true);
10165 } else {
10166 /* ./syntax//typing.nit:1695 */
10167 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10168 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10169 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10170 /* ./syntax//typing.nit:1694 */
10171 REGB0 = REGB1;
10172 }
10173 if (UNTAG_Bool(REGB0)) {
10174 /* ./syntax//typing.nit:1695 */
10175 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10176 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10177 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10178 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10179 } else {
10180 /* ./syntax//typing.nit:1694 */
10181 REGB1 = TAG_Bool(false);
10182 REGB0 = REGB1;
10183 }
10184 if (UNTAG_Bool(REGB0)) {
10185 /* ./syntax//typing.nit:1696 */
10186 if (!once_value_2) {
10187 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10188 REGB0 = TAG_Int(59);
10189 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
10190 once_value_2 = fra.me.REG[1];
10191 register_static_object(&once_value_2);
10192 } else fra.me.REG[1] = once_value_2;
10193 fra.me.REG[1] = fra.me.REG[1];
10194 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10195 }
10196 /* ./syntax//typing.nit:1699 */
10197 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10198 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10199 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10200 if (UNTAG_Bool(REGB0)) {
10201 /* ./syntax//typing.nit:1700 */
10202 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10203 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10204 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10205 if (UNTAG_Bool(REGB0)) {
10206 /* ./syntax//typing.nit:1701 */
10207 if (!once_value_3) {
10208 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10209 REGB0 = TAG_Int(43);
10210 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
10211 once_value_3 = fra.me.REG[1];
10212 register_static_object(&once_value_3);
10213 } else fra.me.REG[1] = once_value_3;
10214 fra.me.REG[1] = fra.me.REG[1];
10215 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10216 } else {
10217 /* ./syntax//typing.nit:1703 */
10218 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10219 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10220 }
10221 } else {
10222 /* ./syntax//typing.nit:1705 */
10223 fra.me.REG[1] = CALL_parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10224 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10225 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
10226 if (UNTAG_Bool(REGB0)) {
10227 /* ./syntax//typing.nit:1706 */
10228 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10229 CALL_typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10230 }
10231 }
10232 label1: while(0);
10233 stack_frame_head = fra.me.prev;
10234 return;
10235 }
10236 void typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10237 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10238 val_t REGB0;
10239 val_t REGB1;
10240 val_t tmp;
10241 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10242 fra.me.file = LOCATE_typing;
10243 fra.me.line = 1710;
10244 fra.me.meth = LOCATE_typing___ANeExpr___try_to_isa;
10245 fra.me.has_broke = 0;
10246 fra.me.REG_size = 5;
10247 fra.me.REG[0] = NIT_NULL;
10248 fra.me.REG[1] = NIT_NULL;
10249 fra.me.REG[2] = NIT_NULL;
10250 fra.me.REG[3] = NIT_NULL;
10251 fra.me.REG[4] = NIT_NULL;
10252 fra.me.REG[0] = p0;
10253 fra.me.REG[1] = p1;
10254 fra.me.REG[2] = p2;
10255 /* ./syntax//typing.nit:1712 */
10256 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10257 /* ./syntax//typing.nit:1713 */
10258 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10259 if (UNTAG_Bool(REGB0)) {
10260 } else {
10261 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10262 if (UNTAG_Bool(REGB1)) {
10263 REGB1 = TAG_Bool(false);
10264 REGB0 = REGB1;
10265 } else {
10266 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10267 REGB0 = REGB1;
10268 }
10269 }
10270 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10271 if (UNTAG_Bool(REGB0)) {
10272 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10273 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMNullableType, ID_MMNullableType)) /*cast MMNullableType*/;
10274 } else {
10275 REGB1 = TAG_Bool(false);
10276 REGB0 = REGB1;
10277 }
10278 if (UNTAG_Bool(REGB0)) {
10279 /* ./syntax//typing.nit:1714 */
10280 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10281 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10282 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10283 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]);
10284 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10285 /* ./syntax//typing.nit:1715 */
10286 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10287 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10288 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]);
10289 ATTR_typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10290 }
10291 stack_frame_head = fra.me.prev;
10292 return;
10293 }
10294 val_t typing___ALtExpr___name(val_t p0){
10295 struct {struct stack_frame_t me;} fra;
10296 val_t REGB0;
10297 val_t tmp;
10298 static val_t once_value_1; /* Once value */
10299 static val_t once_value_2; /* Once value */
10300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10301 fra.me.file = LOCATE_typing;
10302 fra.me.line = 1720;
10303 fra.me.meth = LOCATE_typing___ALtExpr___name;
10304 fra.me.has_broke = 0;
10305 fra.me.REG_size = 1;
10306 fra.me.REG[0] = NIT_NULL;
10307 fra.me.REG[0] = p0;
10308 /* ./syntax//typing.nit:1720 */
10309 if (!once_value_1) {
10310 if (!once_value_2) {
10311 fra.me.REG[0] = BOX_NativeString("<");
10312 REGB0 = TAG_Int(1);
10313 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10314 once_value_2 = fra.me.REG[0];
10315 register_static_object(&once_value_2);
10316 } else fra.me.REG[0] = once_value_2;
10317 fra.me.REG[0] = fra.me.REG[0];
10318 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10319 once_value_1 = fra.me.REG[0];
10320 register_static_object(&once_value_1);
10321 } else fra.me.REG[0] = once_value_1;
10322 fra.me.REG[0] = fra.me.REG[0];
10323 goto label3;
10324 label3: while(0);
10325 stack_frame_head = fra.me.prev;
10326 return fra.me.REG[0];
10327 }
10328 val_t typing___ALeExpr___name(val_t p0){
10329 struct {struct stack_frame_t me;} fra;
10330 val_t REGB0;
10331 val_t tmp;
10332 static val_t once_value_1; /* Once value */
10333 static val_t once_value_2; /* Once value */
10334 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10335 fra.me.file = LOCATE_typing;
10336 fra.me.line = 1723;
10337 fra.me.meth = LOCATE_typing___ALeExpr___name;
10338 fra.me.has_broke = 0;
10339 fra.me.REG_size = 1;
10340 fra.me.REG[0] = NIT_NULL;
10341 fra.me.REG[0] = p0;
10342 /* ./syntax//typing.nit:1723 */
10343 if (!once_value_1) {
10344 if (!once_value_2) {
10345 fra.me.REG[0] = BOX_NativeString("<=");
10346 REGB0 = TAG_Int(2);
10347 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10348 once_value_2 = fra.me.REG[0];
10349 register_static_object(&once_value_2);
10350 } else fra.me.REG[0] = once_value_2;
10351 fra.me.REG[0] = fra.me.REG[0];
10352 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10353 once_value_1 = fra.me.REG[0];
10354 register_static_object(&once_value_1);
10355 } else fra.me.REG[0] = once_value_1;
10356 fra.me.REG[0] = fra.me.REG[0];
10357 goto label3;
10358 label3: while(0);
10359 stack_frame_head = fra.me.prev;
10360 return fra.me.REG[0];
10361 }
10362 val_t typing___ALlExpr___name(val_t p0){
10363 struct {struct stack_frame_t me;} fra;
10364 val_t REGB0;
10365 val_t tmp;
10366 static val_t once_value_1; /* Once value */
10367 static val_t once_value_2; /* Once value */
10368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10369 fra.me.file = LOCATE_typing;
10370 fra.me.line = 1726;
10371 fra.me.meth = LOCATE_typing___ALlExpr___name;
10372 fra.me.has_broke = 0;
10373 fra.me.REG_size = 1;
10374 fra.me.REG[0] = NIT_NULL;
10375 fra.me.REG[0] = p0;
10376 /* ./syntax//typing.nit:1726 */
10377 if (!once_value_1) {
10378 if (!once_value_2) {
10379 fra.me.REG[0] = BOX_NativeString("<<");
10380 REGB0 = TAG_Int(2);
10381 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10382 once_value_2 = fra.me.REG[0];
10383 register_static_object(&once_value_2);
10384 } else fra.me.REG[0] = once_value_2;
10385 fra.me.REG[0] = fra.me.REG[0];
10386 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10387 once_value_1 = fra.me.REG[0];
10388 register_static_object(&once_value_1);
10389 } else fra.me.REG[0] = once_value_1;
10390 fra.me.REG[0] = fra.me.REG[0];
10391 goto label3;
10392 label3: while(0);
10393 stack_frame_head = fra.me.prev;
10394 return fra.me.REG[0];
10395 }
10396 val_t typing___AGtExpr___name(val_t p0){
10397 struct {struct stack_frame_t me;} fra;
10398 val_t REGB0;
10399 val_t tmp;
10400 static val_t once_value_1; /* Once value */
10401 static val_t once_value_2; /* Once value */
10402 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10403 fra.me.file = LOCATE_typing;
10404 fra.me.line = 1729;
10405 fra.me.meth = LOCATE_typing___AGtExpr___name;
10406 fra.me.has_broke = 0;
10407 fra.me.REG_size = 1;
10408 fra.me.REG[0] = NIT_NULL;
10409 fra.me.REG[0] = p0;
10410 /* ./syntax//typing.nit:1729 */
10411 if (!once_value_1) {
10412 if (!once_value_2) {
10413 fra.me.REG[0] = BOX_NativeString(">");
10414 REGB0 = TAG_Int(1);
10415 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10416 once_value_2 = fra.me.REG[0];
10417 register_static_object(&once_value_2);
10418 } else fra.me.REG[0] = once_value_2;
10419 fra.me.REG[0] = fra.me.REG[0];
10420 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10421 once_value_1 = fra.me.REG[0];
10422 register_static_object(&once_value_1);
10423 } else fra.me.REG[0] = once_value_1;
10424 fra.me.REG[0] = fra.me.REG[0];
10425 goto label3;
10426 label3: while(0);
10427 stack_frame_head = fra.me.prev;
10428 return fra.me.REG[0];
10429 }
10430 val_t typing___AGeExpr___name(val_t p0){
10431 struct {struct stack_frame_t me;} fra;
10432 val_t REGB0;
10433 val_t tmp;
10434 static val_t once_value_1; /* Once value */
10435 static val_t once_value_2; /* Once value */
10436 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10437 fra.me.file = LOCATE_typing;
10438 fra.me.line = 1732;
10439 fra.me.meth = LOCATE_typing___AGeExpr___name;
10440 fra.me.has_broke = 0;
10441 fra.me.REG_size = 1;
10442 fra.me.REG[0] = NIT_NULL;
10443 fra.me.REG[0] = p0;
10444 /* ./syntax//typing.nit:1732 */
10445 if (!once_value_1) {
10446 if (!once_value_2) {
10447 fra.me.REG[0] = BOX_NativeString(">=");
10448 REGB0 = TAG_Int(2);
10449 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10450 once_value_2 = fra.me.REG[0];
10451 register_static_object(&once_value_2);
10452 } else fra.me.REG[0] = once_value_2;
10453 fra.me.REG[0] = fra.me.REG[0];
10454 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10455 once_value_1 = fra.me.REG[0];
10456 register_static_object(&once_value_1);
10457 } else fra.me.REG[0] = once_value_1;
10458 fra.me.REG[0] = fra.me.REG[0];
10459 goto label3;
10460 label3: while(0);
10461 stack_frame_head = fra.me.prev;
10462 return fra.me.REG[0];
10463 }
10464 val_t typing___AGgExpr___name(val_t p0){
10465 struct {struct stack_frame_t me;} fra;
10466 val_t REGB0;
10467 val_t tmp;
10468 static val_t once_value_1; /* Once value */
10469 static val_t once_value_2; /* Once value */
10470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10471 fra.me.file = LOCATE_typing;
10472 fra.me.line = 1735;
10473 fra.me.meth = LOCATE_typing___AGgExpr___name;
10474 fra.me.has_broke = 0;
10475 fra.me.REG_size = 1;
10476 fra.me.REG[0] = NIT_NULL;
10477 fra.me.REG[0] = p0;
10478 /* ./syntax//typing.nit:1735 */
10479 if (!once_value_1) {
10480 if (!once_value_2) {
10481 fra.me.REG[0] = BOX_NativeString(">>");
10482 REGB0 = TAG_Int(2);
10483 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10484 once_value_2 = fra.me.REG[0];
10485 register_static_object(&once_value_2);
10486 } else fra.me.REG[0] = once_value_2;
10487 fra.me.REG[0] = fra.me.REG[0];
10488 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10489 once_value_1 = fra.me.REG[0];
10490 register_static_object(&once_value_1);
10491 } else fra.me.REG[0] = once_value_1;
10492 fra.me.REG[0] = fra.me.REG[0];
10493 goto label3;
10494 label3: while(0);
10495 stack_frame_head = fra.me.prev;
10496 return fra.me.REG[0];
10497 }
10498 val_t typing___APlusExpr___name(val_t p0){
10499 struct {struct stack_frame_t me;} fra;
10500 val_t REGB0;
10501 val_t tmp;
10502 static val_t once_value_1; /* Once value */
10503 static val_t once_value_2; /* Once value */
10504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10505 fra.me.file = LOCATE_typing;
10506 fra.me.line = 1738;
10507 fra.me.meth = LOCATE_typing___APlusExpr___name;
10508 fra.me.has_broke = 0;
10509 fra.me.REG_size = 1;
10510 fra.me.REG[0] = NIT_NULL;
10511 fra.me.REG[0] = p0;
10512 /* ./syntax//typing.nit:1738 */
10513 if (!once_value_1) {
10514 if (!once_value_2) {
10515 fra.me.REG[0] = BOX_NativeString("+");
10516 REGB0 = TAG_Int(1);
10517 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10518 once_value_2 = fra.me.REG[0];
10519 register_static_object(&once_value_2);
10520 } else fra.me.REG[0] = once_value_2;
10521 fra.me.REG[0] = fra.me.REG[0];
10522 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10523 once_value_1 = fra.me.REG[0];
10524 register_static_object(&once_value_1);
10525 } else fra.me.REG[0] = once_value_1;
10526 fra.me.REG[0] = fra.me.REG[0];
10527 goto label3;
10528 label3: while(0);
10529 stack_frame_head = fra.me.prev;
10530 return fra.me.REG[0];
10531 }
10532 val_t typing___AMinusExpr___name(val_t p0){
10533 struct {struct stack_frame_t me;} fra;
10534 val_t REGB0;
10535 val_t tmp;
10536 static val_t once_value_1; /* Once value */
10537 static val_t once_value_2; /* Once value */
10538 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10539 fra.me.file = LOCATE_typing;
10540 fra.me.line = 1741;
10541 fra.me.meth = LOCATE_typing___AMinusExpr___name;
10542 fra.me.has_broke = 0;
10543 fra.me.REG_size = 1;
10544 fra.me.REG[0] = NIT_NULL;
10545 fra.me.REG[0] = p0;
10546 /* ./syntax//typing.nit:1741 */
10547 if (!once_value_1) {
10548 if (!once_value_2) {
10549 fra.me.REG[0] = BOX_NativeString("-");
10550 REGB0 = TAG_Int(1);
10551 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10552 once_value_2 = fra.me.REG[0];
10553 register_static_object(&once_value_2);
10554 } else fra.me.REG[0] = once_value_2;
10555 fra.me.REG[0] = fra.me.REG[0];
10556 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10557 once_value_1 = fra.me.REG[0];
10558 register_static_object(&once_value_1);
10559 } else fra.me.REG[0] = once_value_1;
10560 fra.me.REG[0] = fra.me.REG[0];
10561 goto label3;
10562 label3: while(0);
10563 stack_frame_head = fra.me.prev;
10564 return fra.me.REG[0];
10565 }
10566 val_t typing___AStarshipExpr___name(val_t p0){
10567 struct {struct stack_frame_t me;} fra;
10568 val_t REGB0;
10569 val_t tmp;
10570 static val_t once_value_1; /* Once value */
10571 static val_t once_value_2; /* Once value */
10572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10573 fra.me.file = LOCATE_typing;
10574 fra.me.line = 1744;
10575 fra.me.meth = LOCATE_typing___AStarshipExpr___name;
10576 fra.me.has_broke = 0;
10577 fra.me.REG_size = 1;
10578 fra.me.REG[0] = NIT_NULL;
10579 fra.me.REG[0] = p0;
10580 /* ./syntax//typing.nit:1744 */
10581 if (!once_value_1) {
10582 if (!once_value_2) {
10583 fra.me.REG[0] = BOX_NativeString("<=>");
10584 REGB0 = TAG_Int(3);
10585 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10586 once_value_2 = fra.me.REG[0];
10587 register_static_object(&once_value_2);
10588 } else fra.me.REG[0] = once_value_2;
10589 fra.me.REG[0] = fra.me.REG[0];
10590 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10591 once_value_1 = fra.me.REG[0];
10592 register_static_object(&once_value_1);
10593 } else fra.me.REG[0] = once_value_1;
10594 fra.me.REG[0] = fra.me.REG[0];
10595 goto label3;
10596 label3: while(0);
10597 stack_frame_head = fra.me.prev;
10598 return fra.me.REG[0];
10599 }
10600 val_t typing___AStarExpr___name(val_t p0){
10601 struct {struct stack_frame_t me;} fra;
10602 val_t REGB0;
10603 val_t tmp;
10604 static val_t once_value_1; /* Once value */
10605 static val_t once_value_2; /* Once value */
10606 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10607 fra.me.file = LOCATE_typing;
10608 fra.me.line = 1747;
10609 fra.me.meth = LOCATE_typing___AStarExpr___name;
10610 fra.me.has_broke = 0;
10611 fra.me.REG_size = 1;
10612 fra.me.REG[0] = NIT_NULL;
10613 fra.me.REG[0] = p0;
10614 /* ./syntax//typing.nit:1747 */
10615 if (!once_value_1) {
10616 if (!once_value_2) {
10617 fra.me.REG[0] = BOX_NativeString("*");
10618 REGB0 = TAG_Int(1);
10619 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10620 once_value_2 = fra.me.REG[0];
10621 register_static_object(&once_value_2);
10622 } else fra.me.REG[0] = once_value_2;
10623 fra.me.REG[0] = fra.me.REG[0];
10624 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10625 once_value_1 = fra.me.REG[0];
10626 register_static_object(&once_value_1);
10627 } else fra.me.REG[0] = once_value_1;
10628 fra.me.REG[0] = fra.me.REG[0];
10629 goto label3;
10630 label3: while(0);
10631 stack_frame_head = fra.me.prev;
10632 return fra.me.REG[0];
10633 }
10634 val_t typing___ASlashExpr___name(val_t p0){
10635 struct {struct stack_frame_t me;} fra;
10636 val_t REGB0;
10637 val_t tmp;
10638 static val_t once_value_1; /* Once value */
10639 static val_t once_value_2; /* Once value */
10640 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10641 fra.me.file = LOCATE_typing;
10642 fra.me.line = 1750;
10643 fra.me.meth = LOCATE_typing___ASlashExpr___name;
10644 fra.me.has_broke = 0;
10645 fra.me.REG_size = 1;
10646 fra.me.REG[0] = NIT_NULL;
10647 fra.me.REG[0] = p0;
10648 /* ./syntax//typing.nit:1750 */
10649 if (!once_value_1) {
10650 if (!once_value_2) {
10651 fra.me.REG[0] = BOX_NativeString("/");
10652 REGB0 = TAG_Int(1);
10653 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10654 once_value_2 = fra.me.REG[0];
10655 register_static_object(&once_value_2);
10656 } else fra.me.REG[0] = once_value_2;
10657 fra.me.REG[0] = fra.me.REG[0];
10658 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10659 once_value_1 = fra.me.REG[0];
10660 register_static_object(&once_value_1);
10661 } else fra.me.REG[0] = once_value_1;
10662 fra.me.REG[0] = fra.me.REG[0];
10663 goto label3;
10664 label3: while(0);
10665 stack_frame_head = fra.me.prev;
10666 return fra.me.REG[0];
10667 }
10668 val_t typing___APercentExpr___name(val_t p0){
10669 struct {struct stack_frame_t me;} fra;
10670 val_t REGB0;
10671 val_t tmp;
10672 static val_t once_value_1; /* Once value */
10673 static val_t once_value_2; /* Once value */
10674 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10675 fra.me.file = LOCATE_typing;
10676 fra.me.line = 1753;
10677 fra.me.meth = LOCATE_typing___APercentExpr___name;
10678 fra.me.has_broke = 0;
10679 fra.me.REG_size = 1;
10680 fra.me.REG[0] = NIT_NULL;
10681 fra.me.REG[0] = p0;
10682 /* ./syntax//typing.nit:1753 */
10683 if (!once_value_1) {
10684 if (!once_value_2) {
10685 fra.me.REG[0] = BOX_NativeString("%");
10686 REGB0 = TAG_Int(1);
10687 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10688 once_value_2 = fra.me.REG[0];
10689 register_static_object(&once_value_2);
10690 } else fra.me.REG[0] = once_value_2;
10691 fra.me.REG[0] = fra.me.REG[0];
10692 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10693 once_value_1 = fra.me.REG[0];
10694 register_static_object(&once_value_1);
10695 } else fra.me.REG[0] = once_value_1;
10696 fra.me.REG[0] = fra.me.REG[0];
10697 goto label3;
10698 label3: while(0);
10699 stack_frame_head = fra.me.prev;
10700 return fra.me.REG[0];
10701 }
10702 val_t typing___AUminusExpr___name(val_t p0){
10703 struct {struct stack_frame_t me;} fra;
10704 val_t REGB0;
10705 val_t tmp;
10706 static val_t once_value_1; /* Once value */
10707 static val_t once_value_2; /* Once value */
10708 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10709 fra.me.file = LOCATE_typing;
10710 fra.me.line = 1757;
10711 fra.me.meth = LOCATE_typing___AUminusExpr___name;
10712 fra.me.has_broke = 0;
10713 fra.me.REG_size = 1;
10714 fra.me.REG[0] = NIT_NULL;
10715 fra.me.REG[0] = p0;
10716 /* ./syntax//typing.nit:1757 */
10717 if (!once_value_1) {
10718 if (!once_value_2) {
10719 fra.me.REG[0] = BOX_NativeString("unary -");
10720 REGB0 = TAG_Int(7);
10721 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
10722 once_value_2 = fra.me.REG[0];
10723 register_static_object(&once_value_2);
10724 } else fra.me.REG[0] = once_value_2;
10725 fra.me.REG[0] = fra.me.REG[0];
10726 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10727 once_value_1 = fra.me.REG[0];
10728 register_static_object(&once_value_1);
10729 } else fra.me.REG[0] = once_value_1;
10730 fra.me.REG[0] = fra.me.REG[0];
10731 goto label3;
10732 label3: while(0);
10733 stack_frame_head = fra.me.prev;
10734 return fra.me.REG[0];
10735 }
10736 val_t typing___AUminusExpr___compute_raw_arguments(val_t p0){
10737 struct {struct stack_frame_t me;} fra;
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 = 1758;
10742 fra.me.meth = LOCATE_typing___AUminusExpr___compute_raw_arguments;
10743 fra.me.has_broke = 0;
10744 fra.me.REG_size = 1;
10745 fra.me.REG[0] = NIT_NULL;
10746 fra.me.REG[0] = p0;
10747 /* ./syntax//typing.nit:1758 */
10748 fra.me.REG[0] = NIT_NULL;
10749 goto label1;
10750 label1: while(0);
10751 stack_frame_head = fra.me.prev;
10752 return fra.me.REG[0];
10753 }
10754 void typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
10755 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
10756 val_t REGB0;
10757 val_t REGB1;
10758 val_t tmp;
10759 static val_t once_value_1; /* Once value */
10760 static val_t once_value_2; /* Once value */
10761 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10762 fra.me.file = LOCATE_typing;
10763 fra.me.line = 1762;
10764 fra.me.meth = LOCATE_typing___ACallFormExpr___after_typing;
10765 fra.me.has_broke = 0;
10766 fra.me.REG_size = 9;
10767 fra.me.REG[0] = NIT_NULL;
10768 fra.me.REG[1] = NIT_NULL;
10769 fra.me.REG[2] = NIT_NULL;
10770 fra.me.REG[3] = NIT_NULL;
10771 fra.me.REG[4] = NIT_NULL;
10772 fra.me.REG[5] = NIT_NULL;
10773 fra.me.REG[6] = NIT_NULL;
10774 fra.me.REG[7] = NIT_NULL;
10775 fra.me.REG[8] = NIT_NULL;
10776 fra.me.REG[0] = p0;
10777 fra.me.REG[1] = p1;
10778 /* ./syntax//typing.nit:1762 */
10779 fra.me.REG[2] = fra.me.REG[0];
10780 fra.me.REG[3] = fra.me.REG[1];
10781 /* ./syntax//typing.nit:1764 */
10782 fra.me.REG[4] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10783 REGB0 = CALL_typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10784 if (UNTAG_Bool(REGB0)) {
10785 /* ./syntax//typing.nit:1765 */
10786 fra.me.REG[4] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10787 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10788 /* ./syntax//typing.nit:1766 */
10789 fra.me.REG[5] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
10790 fra.me.REG[5] = CALL_scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10791 /* ./syntax//typing.nit:1767 */
10792 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10793 if (UNTAG_Bool(REGB0)) {
10794 } else {
10795 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10796 if (UNTAG_Bool(REGB1)) {
10797 REGB1 = TAG_Bool(false);
10798 REGB0 = REGB1;
10799 } else {
10800 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10801 REGB0 = REGB1;
10802 }
10803 }
10804 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10805 if (UNTAG_Bool(REGB0)) {
10806 /* ./syntax//typing.nit:1769 */
10807 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_ClosureVariable, ID_ClosureVariable)) /*cast ClosureVariable*/;
10808 if (UNTAG_Bool(REGB0)) {
10809 /* ./syntax//typing.nit:1770 */
10810 fra.me.REG[6] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10811 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10812 fra.me.REG[8] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10813 fra.me.REG[8] = NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
10814 /* ./syntax//typing.nit:1771 */
10815 ATTR_typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10816 } else {
10817 /* ./syntax//typing.nit:1773 */
10818 fra.me.REG[7] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10819 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
10820 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10821 if (UNTAG_Bool(REGB0)) {
10822 /* ./syntax//typing.nit:1774 */
10823 REGB0 = TAG_Int(3);
10824 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB0);
10825 if (!once_value_1) {
10826 fra.me.REG[6] = BOX_NativeString("Error: ");
10827 REGB0 = TAG_Int(7);
10828 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
10829 once_value_1 = fra.me.REG[6];
10830 register_static_object(&once_value_1);
10831 } else fra.me.REG[6] = once_value_1;
10832 fra.me.REG[6] = fra.me.REG[6];
10833 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
10834 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10835 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10836 if (!once_value_2) {
10837 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
10838 REGB0 = TAG_Int(29);
10839 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
10840 once_value_2 = fra.me.REG[4];
10841 register_static_object(&once_value_2);
10842 } else fra.me.REG[4] = once_value_2;
10843 fra.me.REG[4] = fra.me.REG[4];
10844 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10845 fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10846 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
10847 /* ./syntax//typing.nit:1775 */
10848 goto label3;
10849 }
10850 /* ./syntax//typing.nit:1777 */
10851 fra.me.REG[7] = CALL_typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
10852 fra.me.REG[8] = fra.me.REG[7];
10853 /* ./syntax//typing.nit:1778 */
10854 ATTR_typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10855 }
10856 /* ./syntax//typing.nit:1780 */
10857 CALL_parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
10858 /* ./syntax//typing.nit:1781 */
10859 CALL_typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
10860 /* ./syntax//typing.nit:1782 */
10861 goto label3;
10862 }
10863 }
10864 /* ./syntax//typing.nit:1786 */
10865 CALL_SUPER_typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10866 label3: while(0);
10867 stack_frame_head = fra.me.prev;
10868 return;
10869 }
10870 val_t typing___ACallFormExpr___closure_defs(val_t p0){
10871 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10872 val_t REGB0;
10873 val_t tmp;
10874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10875 fra.me.file = LOCATE_typing;
10876 fra.me.line = 1789;
10877 fra.me.meth = LOCATE_typing___ACallFormExpr___closure_defs;
10878 fra.me.has_broke = 0;
10879 fra.me.REG_size = 2;
10880 fra.me.REG[0] = NIT_NULL;
10881 fra.me.REG[1] = NIT_NULL;
10882 fra.me.REG[0] = p0;
10883 /* ./syntax//typing.nit:1791 */
10884 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10885 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
10886 if (UNTAG_Bool(REGB0)) {
10887 /* ./syntax//typing.nit:1792 */
10888 fra.me.REG[1] = NIT_NULL;
10889 goto label1;
10890 } else {
10891 /* ./syntax//typing.nit:1794 */
10892 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10893 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10894 fra.me.REG[1] = fra.me.REG[0];
10895 goto label1;
10896 }
10897 label1: while(0);
10898 stack_frame_head = fra.me.prev;
10899 return fra.me.REG[1];
10900 }
10901 val_t typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
10902 struct {struct stack_frame_t me;} fra;
10903 val_t tmp;
10904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10905 fra.me.file = LOCATE_typing;
10906 fra.me.line = 1798;
10907 fra.me.meth = LOCATE_typing___ACallFormExpr___variable_create;
10908 fra.me.has_broke = 0;
10909 fra.me.REG_size = 0;
10910 /* ./syntax//typing.nit:1798 */
10911 nit_abort("Deferred method called", NULL, LOCATE_typing, 1798);
10912 stack_frame_head = fra.me.prev;
10913 return NIT_NULL;
10914 }
10915 val_t typing___ACallExpr___variable_create(val_t p0, val_t p1){
10916 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10917 val_t tmp;
10918 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10919 fra.me.file = LOCATE_typing;
10920 fra.me.line = 1803;
10921 fra.me.meth = LOCATE_typing___ACallExpr___variable_create;
10922 fra.me.has_broke = 0;
10923 fra.me.REG_size = 2;
10924 fra.me.REG[0] = NIT_NULL;
10925 fra.me.REG[1] = NIT_NULL;
10926 fra.me.REG[0] = p0;
10927 fra.me.REG[1] = p1;
10928 /* ./syntax//typing.nit:1805 */
10929 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10930 fra.me.REG[0] = NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
10931 goto label1;
10932 label1: while(0);
10933 stack_frame_head = fra.me.prev;
10934 return fra.me.REG[0];
10935 }
10936 val_t typing___ACallExpr___name(val_t p0){
10937 struct {struct stack_frame_t me;} fra;
10938 val_t tmp;
10939 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10940 fra.me.file = LOCATE_typing;
10941 fra.me.line = 1808;
10942 fra.me.meth = LOCATE_typing___ACallExpr___name;
10943 fra.me.has_broke = 0;
10944 fra.me.REG_size = 1;
10945 fra.me.REG[0] = NIT_NULL;
10946 fra.me.REG[0] = p0;
10947 /* ./syntax//typing.nit:1808 */
10948 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10949 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10950 goto label1;
10951 label1: while(0);
10952 stack_frame_head = fra.me.prev;
10953 return fra.me.REG[0];
10954 }
10955 val_t typing___ACallExpr___compute_raw_arguments(val_t p0){
10956 struct {struct stack_frame_t me;} fra;
10957 val_t tmp;
10958 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10959 fra.me.file = LOCATE_typing;
10960 fra.me.line = 1809;
10961 fra.me.meth = LOCATE_typing___ACallExpr___compute_raw_arguments;
10962 fra.me.has_broke = 0;
10963 fra.me.REG_size = 1;
10964 fra.me.REG[0] = NIT_NULL;
10965 fra.me.REG[0] = p0;
10966 /* ./syntax//typing.nit:1809 */
10967 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10968 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10969 goto label1;
10970 label1: while(0);
10971 stack_frame_head = fra.me.prev;
10972 return fra.me.REG[0];
10973 }
10974 val_t typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
10975 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
10976 val_t tmp;
10977 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10978 fra.me.file = LOCATE_typing;
10979 fra.me.line = 1813;
10980 fra.me.meth = LOCATE_typing___ACallAssignExpr___variable_create;
10981 fra.me.has_broke = 0;
10982 fra.me.REG_size = 3;
10983 fra.me.REG[0] = NIT_NULL;
10984 fra.me.REG[1] = NIT_NULL;
10985 fra.me.REG[2] = NIT_NULL;
10986 fra.me.REG[0] = p0;
10987 fra.me.REG[1] = p1;
10988 /* ./syntax//typing.nit:1815 */
10989 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10990 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
10991 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10992 fra.me.REG[0] = NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10993 goto label1;
10994 label1: while(0);
10995 stack_frame_head = fra.me.prev;
10996 return fra.me.REG[0];
10997 }
10998 val_t typing___ACallAssignExpr___name(val_t p0){
10999 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11000 val_t REGB0;
11001 val_t tmp;
11002 static val_t once_value_1; /* Once value */
11003 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11004 fra.me.file = LOCATE_typing;
11005 fra.me.line = 1818;
11006 fra.me.meth = LOCATE_typing___ACallAssignExpr___name;
11007 fra.me.has_broke = 0;
11008 fra.me.REG_size = 2;
11009 fra.me.REG[0] = NIT_NULL;
11010 fra.me.REG[1] = NIT_NULL;
11011 fra.me.REG[0] = p0;
11012 /* ./syntax//typing.nit:1818 */
11013 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11014 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
11015 if (!once_value_1) {
11016 fra.me.REG[1] = BOX_NativeString("=");
11017 REGB0 = TAG_Int(1);
11018 fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
11019 once_value_1 = fra.me.REG[1];
11020 register_static_object(&once_value_1);
11021 } else fra.me.REG[1] = once_value_1;
11022 fra.me.REG[1] = fra.me.REG[1];
11023 fra.me.REG[1] = CALL_string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11024 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
11025 goto label2;
11026 label2: while(0);
11027 stack_frame_head = fra.me.prev;
11028 return fra.me.REG[1];
11029 }
11030 val_t typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
11031 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11032 val_t tmp;
11033 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11034 fra.me.file = LOCATE_typing;
11035 fra.me.line = 1819;
11036 fra.me.meth = LOCATE_typing___ACallAssignExpr___compute_raw_arguments;
11037 fra.me.has_broke = 0;
11038 fra.me.REG_size = 2;
11039 fra.me.REG[0] = NIT_NULL;
11040 fra.me.REG[1] = NIT_NULL;
11041 fra.me.REG[0] = p0;
11042 /* ./syntax//typing.nit:1820 */
11043 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11044 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11045 /* ./syntax//typing.nit:1821 */
11046 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11047 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11048 /* ./syntax//typing.nit:1822 */
11049 goto label1;
11050 label1: while(0);
11051 stack_frame_head = fra.me.prev;
11052 return fra.me.REG[1];
11053 }
11054 val_t typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
11055 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11056 val_t tmp;
11057 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11058 fra.me.file = LOCATE_typing;
11059 fra.me.line = 1827;
11060 fra.me.meth = LOCATE_typing___ACallReassignExpr___variable_create;
11061 fra.me.has_broke = 0;
11062 fra.me.REG_size = 3;
11063 fra.me.REG[0] = NIT_NULL;
11064 fra.me.REG[1] = NIT_NULL;
11065 fra.me.REG[2] = NIT_NULL;
11066 fra.me.REG[0] = p0;
11067 fra.me.REG[1] = p1;
11068 /* ./syntax//typing.nit:1829 */
11069 fra.me.REG[1] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11070 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
11071 fra.me.REG[0] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11072 fra.me.REG[0] = NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11073 goto label1;
11074 label1: while(0);
11075 stack_frame_head = fra.me.prev;
11076 return fra.me.REG[0];
11077 }
11078 val_t typing___ACallReassignExpr___name(val_t p0){
11079 struct {struct stack_frame_t me;} fra;
11080 val_t tmp;
11081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11082 fra.me.file = LOCATE_typing;
11083 fra.me.line = 1832;
11084 fra.me.meth = LOCATE_typing___ACallReassignExpr___name;
11085 fra.me.has_broke = 0;
11086 fra.me.REG_size = 1;
11087 fra.me.REG[0] = NIT_NULL;
11088 fra.me.REG[0] = p0;
11089 /* ./syntax//typing.nit:1832 */
11090 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11091 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11092 goto label1;
11093 label1: while(0);
11094 stack_frame_head = fra.me.prev;
11095 return fra.me.REG[0];
11096 }
11097 val_t typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
11098 struct {struct stack_frame_t me;} fra;
11099 val_t tmp;
11100 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11101 fra.me.file = LOCATE_typing;
11102 fra.me.line = 1833;
11103 fra.me.meth = LOCATE_typing___ACallReassignExpr___compute_raw_arguments;
11104 fra.me.has_broke = 0;
11105 fra.me.REG_size = 1;
11106 fra.me.REG[0] = NIT_NULL;
11107 fra.me.REG[0] = p0;
11108 /* ./syntax//typing.nit:1833 */
11109 fra.me.REG[0] = CALL_parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11110 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11111 goto label1;
11112 label1: while(0);
11113 stack_frame_head = fra.me.prev;
11114 return fra.me.REG[0];
11115 }
11116 val_t typing___ABraExpr___name(val_t p0){
11117 struct {struct stack_frame_t me;} fra;
11118 val_t REGB0;
11119 val_t tmp;
11120 static val_t once_value_1; /* Once value */
11121 static val_t once_value_2; /* Once value */
11122 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11123 fra.me.file = LOCATE_typing;
11124 fra.me.line = 1837;
11125 fra.me.meth = LOCATE_typing___ABraExpr___name;
11126 fra.me.has_broke = 0;
11127 fra.me.REG_size = 1;
11128 fra.me.REG[0] = NIT_NULL;
11129 fra.me.REG[0] = p0;
11130 /* ./syntax//typing.nit:1837 */
11131 if (!once_value_1) {
11132 if (!once_value_2) {
11133 fra.me.REG[0] = BOX_NativeString("[]");
11134 REGB0 = TAG_Int(2);
11135 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
11136 once_value_2 = fra.me.REG[0];
11137 register_static_object(&once_value_2);
11138 } else fra.me.REG[0] = once_value_2;
11139 fra.me.REG[0] = fra.me.REG[0];
11140 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11141 once_value_1 = fra.me.REG[0];
11142 register_static_object(&once_value_1);
11143 } else fra.me.REG[0] = once_value_1;
11144 fra.me.REG[0] = fra.me.REG[0];
11145 goto label3;
11146 label3: while(0);
11147 stack_frame_head = fra.me.prev;
11148 return fra.me.REG[0];
11149 }
11150 val_t typing___ABraExpr___compute_raw_arguments(val_t p0){
11151 struct {struct stack_frame_t me;} fra;
11152 val_t tmp;
11153 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11154 fra.me.file = LOCATE_typing;
11155 fra.me.line = 1838;
11156 fra.me.meth = LOCATE_typing___ABraExpr___compute_raw_arguments;
11157 fra.me.has_broke = 0;
11158 fra.me.REG_size = 1;
11159 fra.me.REG[0] = NIT_NULL;
11160 fra.me.REG[0] = p0;
11161 /* ./syntax//typing.nit:1838 */
11162 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11163 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11164 goto label1;
11165 label1: while(0);
11166 stack_frame_head = fra.me.prev;
11167 return fra.me.REG[0];
11168 }
11169 val_t typing___ABraExpr___closure_defs(val_t p0){
11170 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11171 val_t REGB0;
11172 val_t tmp;
11173 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11174 fra.me.file = LOCATE_typing;
11175 fra.me.line = 1839;
11176 fra.me.meth = LOCATE_typing___ABraExpr___closure_defs;
11177 fra.me.has_broke = 0;
11178 fra.me.REG_size = 2;
11179 fra.me.REG[0] = NIT_NULL;
11180 fra.me.REG[1] = NIT_NULL;
11181 fra.me.REG[0] = p0;
11182 /* ./syntax//typing.nit:1841 */
11183 fra.me.REG[1] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11184 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11185 if (UNTAG_Bool(REGB0)) {
11186 /* ./syntax//typing.nit:1842 */
11187 fra.me.REG[1] = NIT_NULL;
11188 goto label1;
11189 } else {
11190 /* ./syntax//typing.nit:1844 */
11191 fra.me.REG[0] = CALL_parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11192 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11193 fra.me.REG[1] = fra.me.REG[0];
11194 goto label1;
11195 }
11196 label1: while(0);
11197 stack_frame_head = fra.me.prev;
11198 return fra.me.REG[1];
11199 }
11200 val_t typing___ABraAssignExpr___name(val_t p0){
11201 struct {struct stack_frame_t me;} fra;
11202 val_t REGB0;
11203 val_t tmp;
11204 static val_t once_value_1; /* Once value */
11205 static val_t once_value_2; /* Once value */
11206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11207 fra.me.file = LOCATE_typing;
11208 fra.me.line = 1850;
11209 fra.me.meth = LOCATE_typing___ABraAssignExpr___name;
11210 fra.me.has_broke = 0;
11211 fra.me.REG_size = 1;
11212 fra.me.REG[0] = NIT_NULL;
11213 fra.me.REG[0] = p0;
11214 /* ./syntax//typing.nit:1850 */
11215 if (!once_value_1) {
11216 if (!once_value_2) {
11217 fra.me.REG[0] = BOX_NativeString("[]=");
11218 REGB0 = TAG_Int(3);
11219 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
11220 once_value_2 = fra.me.REG[0];
11221 register_static_object(&once_value_2);
11222 } else fra.me.REG[0] = once_value_2;
11223 fra.me.REG[0] = fra.me.REG[0];
11224 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11225 once_value_1 = fra.me.REG[0];
11226 register_static_object(&once_value_1);
11227 } else fra.me.REG[0] = once_value_1;
11228 fra.me.REG[0] = fra.me.REG[0];
11229 goto label3;
11230 label3: while(0);
11231 stack_frame_head = fra.me.prev;
11232 return fra.me.REG[0];
11233 }
11234 val_t typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
11235 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11236 val_t tmp;
11237 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11238 fra.me.file = LOCATE_typing;
11239 fra.me.line = 1851;
11240 fra.me.meth = LOCATE_typing___ABraAssignExpr___compute_raw_arguments;
11241 fra.me.has_broke = 0;
11242 fra.me.REG_size = 2;
11243 fra.me.REG[0] = NIT_NULL;
11244 fra.me.REG[1] = NIT_NULL;
11245 fra.me.REG[0] = p0;
11246 /* ./syntax//typing.nit:1852 */
11247 fra.me.REG[1] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11248 fra.me.REG[1] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11249 /* ./syntax//typing.nit:1853 */
11250 fra.me.REG[0] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11251 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11252 /* ./syntax//typing.nit:1854 */
11253 goto label1;
11254 label1: while(0);
11255 stack_frame_head = fra.me.prev;
11256 return fra.me.REG[1];
11257 }
11258 val_t typing___ABraReassignExpr___name(val_t p0){
11259 struct {struct stack_frame_t me;} fra;
11260 val_t REGB0;
11261 val_t tmp;
11262 static val_t once_value_1; /* Once value */
11263 static val_t once_value_2; /* Once value */
11264 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11265 fra.me.file = LOCATE_typing;
11266 fra.me.line = 1859;
11267 fra.me.meth = LOCATE_typing___ABraReassignExpr___name;
11268 fra.me.has_broke = 0;
11269 fra.me.REG_size = 1;
11270 fra.me.REG[0] = NIT_NULL;
11271 fra.me.REG[0] = p0;
11272 /* ./syntax//typing.nit:1859 */
11273 if (!once_value_1) {
11274 if (!once_value_2) {
11275 fra.me.REG[0] = BOX_NativeString("[]");
11276 REGB0 = TAG_Int(2);
11277 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
11278 once_value_2 = fra.me.REG[0];
11279 register_static_object(&once_value_2);
11280 } else fra.me.REG[0] = once_value_2;
11281 fra.me.REG[0] = fra.me.REG[0];
11282 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11283 once_value_1 = fra.me.REG[0];
11284 register_static_object(&once_value_1);
11285 } else fra.me.REG[0] = once_value_1;
11286 fra.me.REG[0] = fra.me.REG[0];
11287 goto label3;
11288 label3: while(0);
11289 stack_frame_head = fra.me.prev;
11290 return fra.me.REG[0];
11291 }
11292 val_t typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
11293 struct {struct stack_frame_t me;} fra;
11294 val_t tmp;
11295 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11296 fra.me.file = LOCATE_typing;
11297 fra.me.line = 1860;
11298 fra.me.meth = LOCATE_typing___ABraReassignExpr___compute_raw_arguments;
11299 fra.me.has_broke = 0;
11300 fra.me.REG_size = 1;
11301 fra.me.REG[0] = NIT_NULL;
11302 fra.me.REG[0] = p0;
11303 /* ./syntax//typing.nit:1860 */
11304 fra.me.REG[0] = CALL_parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11305 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11306 goto label1;
11307 label1: while(0);
11308 stack_frame_head = fra.me.prev;
11309 return fra.me.REG[0];
11310 }
11311 val_t typing___AInitExpr___name(val_t p0){
11312 struct {struct stack_frame_t me;} fra;
11313 val_t REGB0;
11314 val_t tmp;
11315 static val_t once_value_1; /* Once value */
11316 static val_t once_value_2; /* Once value */
11317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11318 fra.me.file = LOCATE_typing;
11319 fra.me.line = 1864;
11320 fra.me.meth = LOCATE_typing___AInitExpr___name;
11321 fra.me.has_broke = 0;
11322 fra.me.REG_size = 1;
11323 fra.me.REG[0] = NIT_NULL;
11324 fra.me.REG[0] = p0;
11325 /* ./syntax//typing.nit:1864 */
11326 if (!once_value_1) {
11327 if (!once_value_2) {
11328 fra.me.REG[0] = BOX_NativeString("init");
11329 REGB0 = TAG_Int(4);
11330 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
11331 once_value_2 = fra.me.REG[0];
11332 register_static_object(&once_value_2);
11333 } else fra.me.REG[0] = once_value_2;
11334 fra.me.REG[0] = fra.me.REG[0];
11335 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11336 once_value_1 = fra.me.REG[0];
11337 register_static_object(&once_value_1);
11338 } else fra.me.REG[0] = once_value_1;
11339 fra.me.REG[0] = fra.me.REG[0];
11340 goto label3;
11341 label3: while(0);
11342 stack_frame_head = fra.me.prev;
11343 return fra.me.REG[0];
11344 }
11345 val_t typing___AInitExpr___compute_raw_arguments(val_t p0){
11346 struct {struct stack_frame_t me;} fra;
11347 val_t tmp;
11348 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11349 fra.me.file = LOCATE_typing;
11350 fra.me.line = 1865;
11351 fra.me.meth = LOCATE_typing___AInitExpr___compute_raw_arguments;
11352 fra.me.has_broke = 0;
11353 fra.me.REG_size = 1;
11354 fra.me.REG[0] = NIT_NULL;
11355 fra.me.REG[0] = p0;
11356 /* ./syntax//typing.nit:1865 */
11357 fra.me.REG[0] = CALL_parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11358 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11359 goto label1;
11360 label1: while(0);
11361 stack_frame_head = fra.me.prev;
11362 return fra.me.REG[0];
11363 }
11364 val_t typing___AClosureCallExpr___variable(val_t p0){
11365 struct {struct stack_frame_t me;} fra;
11366 val_t REGB0;
11367 val_t tmp;
11368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11369 fra.me.file = LOCATE_typing;
11370 fra.me.line = 1870;
11371 fra.me.meth = LOCATE_typing___AClosureCallExpr___variable;
11372 fra.me.has_broke = 0;
11373 fra.me.REG_size = 1;
11374 fra.me.REG[0] = NIT_NULL;
11375 fra.me.REG[0] = p0;
11376 /* ./syntax//typing.nit:1870 */
11377 fra.me.REG[0] = ATTR_typing___AClosureCallExpr____variable(fra.me.REG[0]);
11378 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
11379 if (UNTAG_Bool(REGB0)) {
11380 } else {
11381 nit_abort("Cast failed", NULL, LOCATE_typing, 1870);
11382 }
11383 goto label1;
11384 label1: while(0);
11385 stack_frame_head = fra.me.prev;
11386 return fra.me.REG[0];
11387 }
11388 val_t typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
11389 struct {struct stack_frame_t me;} fra;
11390 val_t tmp;
11391 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11392 fra.me.file = LOCATE_typing;
11393 fra.me.line = 1871;
11394 fra.me.meth = LOCATE_typing___AClosureCallExpr___compute_raw_arguments;
11395 fra.me.has_broke = 0;
11396 fra.me.REG_size = 1;
11397 fra.me.REG[0] = NIT_NULL;
11398 fra.me.REG[0] = p0;
11399 /* ./syntax//typing.nit:1871 */
11400 fra.me.REG[0] = CALL_parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11401 fra.me.REG[0] = CALL_array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11402 goto label1;
11403 label1: while(0);
11404 stack_frame_head = fra.me.prev;
11405 return fra.me.REG[0];
11406 }
11407 void typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
11408 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11409 val_t REGB0;
11410 val_t REGB1;
11411 val_t tmp;
11412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11413 fra.me.file = LOCATE_typing;
11414 fra.me.line = 1873;
11415 fra.me.meth = LOCATE_typing___AClosureCallExpr___after_typing;
11416 fra.me.has_broke = 0;
11417 fra.me.REG_size = 5;
11418 fra.me.REG[0] = NIT_NULL;
11419 fra.me.REG[1] = NIT_NULL;
11420 fra.me.REG[2] = NIT_NULL;
11421 fra.me.REG[3] = NIT_NULL;
11422 fra.me.REG[4] = NIT_NULL;
11423 fra.me.REG[0] = p0;
11424 fra.me.REG[1] = p1;
11425 /* ./syntax//typing.nit:1875 */
11426 fra.me.REG[2] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
11427 /* ./syntax//typing.nit:1876 */
11428 fra.me.REG[3] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11429 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11430 if (UNTAG_Bool(REGB0)) {
11431 CALL_typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11432 }
11433 /* ./syntax//typing.nit:1877 */
11434 fra.me.REG[2] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11435 fra.me.REG[2] = CALL_static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
11436 /* ./syntax//typing.nit:1878 */
11437 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11438 fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
11439 fra.me.REG[4] = CALL_typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
11440 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]);
11441 /* ./syntax//typing.nit:1879 */
11442 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11443 REGB1 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
11444 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11445 if (UNTAG_Bool(REGB1)) {
11446 /* ./syntax//typing.nit:1880 */
11447 fra.me.REG[4] = CALL_parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11448 fra.me.REG[4] = CALL_syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11449 fra.me.REG[3] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11450 fra.me.REG[3] = CALL_array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
11451 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]);
11452 }
11453 /* ./syntax//typing.nit:1882 */
11454 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11455 if (UNTAG_Bool(REGB0)) {
11456 goto label1;
11457 }
11458 /* ./syntax//typing.nit:1883 */
11459 ATTR_typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
11460 /* ./syntax//typing.nit:1884 */
11461 fra.me.REG[2] = CALL_static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
11462 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
11463 /* ./syntax//typing.nit:1885 */
11464 REGB0 = TAG_Bool(true);
11465 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11466 label1: while(0);
11467 stack_frame_head = fra.me.prev;
11468 return;
11469 }
11470 val_t typing___AClosureId___to_symbol(val_t p0){
11471 struct {struct stack_frame_t me;} fra;
11472 val_t tmp;
11473 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11474 fra.me.file = LOCATE_typing;
11475 fra.me.line = 1890;
11476 fra.me.meth = LOCATE_typing___AClosureId___to_symbol;
11477 fra.me.has_broke = 0;
11478 fra.me.REG_size = 0;
11479 /* ./syntax//typing.nit:1890 */
11480 nit_abort("Deferred method called", NULL, LOCATE_typing, 1890);
11481 stack_frame_head = fra.me.prev;
11482 return NIT_NULL;
11483 }
11484 val_t typing___ASimpleClosureId___to_symbol(val_t p0){
11485 struct {struct stack_frame_t me;} fra;
11486 val_t tmp;
11487 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11488 fra.me.file = LOCATE_typing;
11489 fra.me.line = 1893;
11490 fra.me.meth = LOCATE_typing___ASimpleClosureId___to_symbol;
11491 fra.me.has_broke = 0;
11492 fra.me.REG_size = 1;
11493 fra.me.REG[0] = NIT_NULL;
11494 fra.me.REG[0] = p0;
11495 /* ./syntax//typing.nit:1893 */
11496 fra.me.REG[0] = CALL_parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
11497 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11498 goto label1;
11499 label1: while(0);
11500 stack_frame_head = fra.me.prev;
11501 return fra.me.REG[0];
11502 }
11503 val_t typing___ABreakClosureId___to_symbol(val_t p0){
11504 struct {struct stack_frame_t me;} fra;
11505 val_t tmp;
11506 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11507 fra.me.file = LOCATE_typing;
11508 fra.me.line = 1896;
11509 fra.me.meth = LOCATE_typing___ABreakClosureId___to_symbol;
11510 fra.me.has_broke = 0;
11511 fra.me.REG_size = 1;
11512 fra.me.REG[0] = NIT_NULL;
11513 fra.me.REG[0] = p0;
11514 /* ./syntax//typing.nit:1896 */
11515 fra.me.REG[0] = CALL_parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
11516 fra.me.REG[0] = CALL_syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11517 goto label1;
11518 label1: while(0);
11519 stack_frame_head = fra.me.prev;
11520 return fra.me.REG[0];
11521 }
11522 val_t typing___AClosureDef___closure(val_t p0){
11523 struct {struct stack_frame_t me;} fra;
11524 val_t REGB0;
11525 val_t tmp;
11526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11527 fra.me.file = LOCATE_typing;
11528 fra.me.line = 1901;
11529 fra.me.meth = LOCATE_typing___AClosureDef___closure;
11530 fra.me.has_broke = 0;
11531 fra.me.REG_size = 1;
11532 fra.me.REG[0] = NIT_NULL;
11533 fra.me.REG[0] = p0;
11534 /* ./syntax//typing.nit:1901 */
11535 fra.me.REG[0] = ATTR_typing___AClosureDef____closure(fra.me.REG[0]);
11536 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
11537 if (UNTAG_Bool(REGB0)) {
11538 } else {
11539 nit_abort("Cast failed", NULL, LOCATE_typing, 1901);
11540 }
11541 goto label1;
11542 label1: while(0);
11543 stack_frame_head = fra.me.prev;
11544 return fra.me.REG[0];
11545 }
11546 val_t typing___AClosureDef___escapable(val_t p0){
11547 struct {struct stack_frame_t me;} fra;
11548 val_t tmp;
11549 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11550 fra.me.file = LOCATE_typing;
11551 fra.me.line = 1903;
11552 fra.me.meth = LOCATE_typing___AClosureDef___escapable;
11553 fra.me.has_broke = 0;
11554 fra.me.REG_size = 1;
11555 fra.me.REG[0] = NIT_NULL;
11556 fra.me.REG[0] = p0;
11557 /* ./syntax//typing.nit:1903 */
11558 fra.me.REG[0] = ATTR_typing___AClosureDef____escapable(fra.me.REG[0]);
11559 stack_frame_head = fra.me.prev;
11560 return fra.me.REG[0];
11561 }
11562 void typing___AClosureDef___accept_typing(val_t p0, val_t p1){
11563 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11564 val_t REGB0;
11565 val_t tmp;
11566 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11567 fra.me.file = LOCATE_typing;
11568 fra.me.line = 1907;
11569 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing;
11570 fra.me.has_broke = 0;
11571 fra.me.REG_size = 3;
11572 fra.me.REG[0] = NIT_NULL;
11573 fra.me.REG[1] = NIT_NULL;
11574 fra.me.REG[2] = NIT_NULL;
11575 fra.me.REG[0] = p0;
11576 fra.me.REG[1] = p1;
11577 /* ./syntax//typing.nit:1907 */
11578 fra.me.REG[2] = fra.me.REG[0];
11579 /* ./syntax//typing.nit:1910 */
11580 REGB0 = TAG_Bool(ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
11581 if (UNTAG_Bool(REGB0)) {
11582 } else {
11583 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_typing, 1910);
11584 }
11585 REGB0 = ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[2]);
11586 if (UNTAG_Bool(REGB0)) {
11587 CALL_SUPER_typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11588 }
11589 stack_frame_head = fra.me.prev;
11590 return;
11591 }
11592 void typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
11593 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
11594 val_t REGB0;
11595 val_t REGB1;
11596 val_t REGB2;
11597 val_t REGB3;
11598 val_t tmp;
11599 static val_t once_value_1; /* Once value */
11600 static val_t once_value_2; /* Once value */
11601 static val_t once_value_3; /* Once value */
11602 static val_t once_value_6; /* Once value */
11603 static val_t once_value_7; /* Once value */
11604 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11605 fra.me.file = LOCATE_typing;
11606 fra.me.line = 1913;
11607 fra.me.meth = LOCATE_typing___AClosureDef___accept_typing2;
11608 fra.me.has_broke = 0;
11609 fra.me.REG_size = 8;
11610 fra.me.REG[0] = NIT_NULL;
11611 fra.me.REG[1] = NIT_NULL;
11612 fra.me.REG[2] = NIT_NULL;
11613 fra.me.REG[3] = NIT_NULL;
11614 fra.me.REG[4] = NIT_NULL;
11615 fra.me.REG[5] = NIT_NULL;
11616 fra.me.REG[6] = NIT_NULL;
11617 fra.me.REG[7] = NIT_NULL;
11618 fra.me.REG[0] = p0;
11619 fra.me.REG[1] = p1;
11620 fra.me.REG[2] = p2;
11621 /* ./syntax//typing.nit:1915 */
11622 ATTR_typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
11623 /* ./syntax//typing.nit:1917 */
11624 fra.me.REG[3] = CALL_scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
11625 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
11626 /* ./syntax//typing.nit:1918 */
11627 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
11628 fra.me.REG[4] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11629 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
11630 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
11631 if (UNTAG_Bool(REGB2)) {
11632 } else {
11633 /* ./../lib/standard//kernel.nit:207 */
11634 REGB1 = TAG_Bool((REGB0)==(REGB1));
11635 /* ./syntax//typing.nit:1918 */
11636 REGB2 = REGB1;
11637 }
11638 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
11639 if (UNTAG_Bool(REGB2)) {
11640 /* ./syntax//typing.nit:1919 */
11641 REGB2 = TAG_Int(5);
11642 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
11643 if (!once_value_1) {
11644 fra.me.REG[5] = BOX_NativeString("Error: ");
11645 REGB2 = TAG_Int(7);
11646 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
11647 once_value_1 = fra.me.REG[5];
11648 register_static_object(&once_value_1);
11649 } else fra.me.REG[5] = once_value_1;
11650 fra.me.REG[5] = fra.me.REG[5];
11651 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11652 REGB2 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
11653 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
11654 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11655 if (!once_value_2) {
11656 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
11657 REGB2 = TAG_Int(36);
11658 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
11659 once_value_2 = fra.me.REG[5];
11660 register_static_object(&once_value_2);
11661 } else fra.me.REG[5] = once_value_2;
11662 fra.me.REG[5] = fra.me.REG[5];
11663 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11664 fra.me.REG[5] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11665 REGB2 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
11666 fra.me.REG[5] = CALL_string___Object___to_s(REGB2)(REGB2);
11667 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11668 if (!once_value_3) {
11669 fra.me.REG[5] = BOX_NativeString(" found.");
11670 REGB2 = TAG_Int(7);
11671 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB2);
11672 once_value_3 = fra.me.REG[5];
11673 register_static_object(&once_value_3);
11674 } else fra.me.REG[5] = once_value_3;
11675 fra.me.REG[5] = fra.me.REG[5];
11676 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11677 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11678 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11679 /* ./syntax//typing.nit:1920 */
11680 goto label4;
11681 }
11682 /* ./syntax//typing.nit:1923 */
11683 fra.me.REG[4] = CALL_scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
11684 ATTR_typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
11685 /* ./syntax//typing.nit:1925 */
11686 fra.me.REG[4] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11687 CALL_scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
11688 /* ./syntax//typing.nit:1926 */
11689 fra.me.REG[4] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11690 /* ./syntax//typing.nit:1927 */
11691 fra.me.REG[5] = CALL_typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11692 /* ./syntax//typing.nit:1928 */
11693 fra.me.REG[6] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11694 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
11695 /* ./syntax//typing.nit:1929 */
11696 fra.me.REG[6] = NEW_Array_array___Array___init();
11697 CALL_syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
11698 /* ./syntax//typing.nit:1930 */
11699 REGB2 = TAG_Int(0);
11700 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11701 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
11702 /* ./../lib/standard//kernel.nit:332 */
11703 while(1) {
11704 /* ./../lib/standard//kernel.nit:212 */
11705 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
11706 /* ./../lib/standard//kernel.nit:332 */
11707 if (UNTAG_Bool(REGB0)) {
11708 /* ./syntax//typing.nit:1930 */
11709 REGB0 = REGB2;
11710 /* ./syntax//typing.nit:1931 */
11711 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11712 fra.me.REG[6] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
11713 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11714 if (UNTAG_Bool(REGB3)) {
11715 nit_abort("Reciever is null", NULL, LOCATE_typing, 1931);
11716 }
11717 fra.me.REG[6] = CALL_syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
11718 fra.me.REG[7] = CALL_parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11719 fra.me.REG[7] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
11720 fra.me.REG[7] = NEW_AutoVariable_syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
11721 /* ./syntax//typing.nit:1932 */
11722 fra.me.REG[6] = CALL_syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
11723 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11724 if (UNTAG_Bool(REGB3)) {
11725 nit_abort("Reciever is null", NULL, LOCATE_typing, 1932);
11726 }
11727 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11728 /* ./syntax//typing.nit:1933 */
11729 fra.me.REG[6] = CALL_static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
11730 CALL_syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11731 /* ./syntax//typing.nit:1934 */
11732 fra.me.REG[6] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11733 CALL_scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11734 /* ./../lib/standard//kernel.nit:334 */
11735 REGB0 = TAG_Int(1);
11736 /* ./../lib/standard//kernel.nit:215 */
11737 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
11738 /* ./../lib/standard//kernel.nit:334 */
11739 REGB2 = REGB0;
11740 } else {
11741 /* ./../lib/standard//kernel.nit:332 */
11742 goto label5;
11743 }
11744 }
11745 label5: while(0);
11746 /* ./syntax//typing.nit:1937 */
11747 REGB2 = TAG_Bool(true);
11748 ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
11749 /* ./syntax//typing.nit:1938 */
11750 CALL_typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11751 /* ./syntax//typing.nit:1940 */
11752 fra.me.REG[3] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11753 REGB2 = CALL_flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
11754 REGB1 = TAG_Bool(false);
11755 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
11756 if (UNTAG_Bool(REGB0)) {
11757 } else {
11758 /* ./../lib/standard//kernel.nit:175 */
11759 REGB1 = TAG_Bool((REGB2)==(REGB1));
11760 /* ./syntax//typing.nit:1940 */
11761 REGB0 = REGB1;
11762 }
11763 if (UNTAG_Bool(REGB0)) {
11764 /* ./syntax//typing.nit:1941 */
11765 fra.me.REG[3] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11766 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
11767 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
11768 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11769 if (UNTAG_Bool(REGB0)) {
11770 } else {
11771 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11772 if (UNTAG_Bool(REGB1)) {
11773 REGB1 = TAG_Bool(false);
11774 REGB0 = REGB1;
11775 } else {
11776 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11777 REGB0 = REGB1;
11778 }
11779 }
11780 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11781 if (UNTAG_Bool(REGB0)) {
11782 /* ./syntax//typing.nit:1942 */
11783 if (!once_value_6) {
11784 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
11785 REGB0 = TAG_Int(77);
11786 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
11787 once_value_6 = fra.me.REG[3];
11788 register_static_object(&once_value_6);
11789 } else fra.me.REG[3] = once_value_6;
11790 fra.me.REG[3] = fra.me.REG[3];
11791 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
11792 } else {
11793 /* ./syntax//typing.nit:1943 */
11794 fra.me.REG[3] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11795 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11796 if (UNTAG_Bool(REGB0)) {
11797 fra.me.REG[2] = CALL_scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
11798 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11799 if (UNTAG_Bool(REGB0)) {
11800 } else {
11801 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11802 if (UNTAG_Bool(REGB1)) {
11803 REGB1 = TAG_Bool(false);
11804 REGB0 = REGB1;
11805 } else {
11806 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
11807 REGB0 = REGB1;
11808 }
11809 }
11810 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11811 } else {
11812 REGB1 = TAG_Bool(false);
11813 REGB0 = REGB1;
11814 }
11815 if (UNTAG_Bool(REGB0)) {
11816 /* ./syntax//typing.nit:1944 */
11817 if (!once_value_7) {
11818 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
11819 REGB0 = TAG_Int(80);
11820 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
11821 once_value_7 = fra.me.REG[2];
11822 register_static_object(&once_value_7);
11823 } else fra.me.REG[2] = once_value_7;
11824 fra.me.REG[2] = fra.me.REG[2];
11825 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
11826 }
11827 }
11828 }
11829 /* ./syntax//typing.nit:1947 */
11830 CALL_typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
11831 /* ./syntax//typing.nit:1948 */
11832 CALL_typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
11833 /* ./syntax//typing.nit:1949 */
11834 fra.me.REG[1] = CALL_typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11835 CALL_scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
11836 label4: while(0);
11837 stack_frame_head = fra.me.prev;
11838 return;
11839 }
11840 void typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
11841 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
11842 val_t REGB0;
11843 val_t REGB1;
11844 val_t tmp;
11845 static val_t once_value_2; /* Once value */
11846 static val_t once_value_3; /* Once value */
11847 static val_t once_value_4; /* Once value */
11848 static val_t once_value_5; /* Once value */
11849 static val_t once_value_6; /* Once value */
11850 static val_t once_value_7; /* Once value */
11851 static val_t once_value_8; /* Once value */
11852 static val_t once_value_9; /* Once value */
11853 static val_t once_value_10; /* Once value */
11854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11855 fra.me.file = LOCATE_typing;
11856 fra.me.line = 1955;
11857 fra.me.meth = LOCATE_typing___ATypeCheckExpr___check_expr_cast;
11858 fra.me.has_broke = 0;
11859 fra.me.REG_size = 6;
11860 fra.me.REG[0] = NIT_NULL;
11861 fra.me.REG[1] = NIT_NULL;
11862 fra.me.REG[2] = NIT_NULL;
11863 fra.me.REG[3] = NIT_NULL;
11864 fra.me.REG[4] = NIT_NULL;
11865 fra.me.REG[5] = NIT_NULL;
11866 fra.me.REG[0] = p0;
11867 fra.me.REG[1] = p1;
11868 fra.me.REG[2] = p2;
11869 fra.me.REG[3] = p3;
11870 /* ./syntax//typing.nit:1957 */
11871 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
11872 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11873 if (UNTAG_Bool(REGB0)) {
11874 goto label1;
11875 }
11876 /* ./syntax//typing.nit:1958 */
11877 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
11878 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11879 if (UNTAG_Bool(REGB0)) {
11880 goto label1;
11881 }
11882 /* ./syntax//typing.nit:1959 */
11883 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11884 /* ./syntax//typing.nit:1960 */
11885 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
11886 /* ./syntax//typing.nit:1961 */
11887 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
11888 if (UNTAG_Bool(REGB0)) {
11889 } else {
11890 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11891 REGB0 = REGB1;
11892 }
11893 if (UNTAG_Bool(REGB0)) {
11894 /* ./syntax//typing.nit:1962 */
11895 REGB0 = TAG_Int(3);
11896 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11897 if (!once_value_2) {
11898 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11899 REGB0 = TAG_Int(33);
11900 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11901 once_value_2 = fra.me.REG[5];
11902 register_static_object(&once_value_2);
11903 } else fra.me.REG[5] = once_value_2;
11904 fra.me.REG[5] = fra.me.REG[5];
11905 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11906 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11907 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11908 if (!once_value_3) {
11909 fra.me.REG[5] = BOX_NativeString(".");
11910 REGB0 = TAG_Int(1);
11911 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11912 once_value_3 = fra.me.REG[5];
11913 register_static_object(&once_value_3);
11914 } else fra.me.REG[5] = once_value_3;
11915 fra.me.REG[5] = fra.me.REG[5];
11916 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11917 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11918 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11919 } else {
11920 /* ./syntax//typing.nit:1963 */
11921 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11922 if (UNTAG_Bool(REGB0)) {
11923 /* ./syntax//typing.nit:1964 */
11924 REGB0 = TAG_Int(5);
11925 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11926 if (!once_value_4) {
11927 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11928 REGB0 = TAG_Int(33);
11929 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11930 once_value_4 = fra.me.REG[5];
11931 register_static_object(&once_value_4);
11932 } else fra.me.REG[5] = once_value_4;
11933 fra.me.REG[5] = fra.me.REG[5];
11934 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11935 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11936 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11937 if (!once_value_5) {
11938 fra.me.REG[5] = BOX_NativeString(" since it is a ");
11939 REGB0 = TAG_Int(15);
11940 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11941 once_value_5 = fra.me.REG[5];
11942 register_static_object(&once_value_5);
11943 } else fra.me.REG[5] = once_value_5;
11944 fra.me.REG[5] = fra.me.REG[5];
11945 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11946 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
11947 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11948 if (!once_value_6) {
11949 fra.me.REG[5] = BOX_NativeString(".");
11950 REGB0 = TAG_Int(1);
11951 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11952 once_value_6 = fra.me.REG[5];
11953 register_static_object(&once_value_6);
11954 } else fra.me.REG[5] = once_value_6;
11955 fra.me.REG[5] = fra.me.REG[5];
11956 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11957 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11958 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11959 } else {
11960 /* ./syntax//typing.nit:1965 */
11961 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
11962 if (UNTAG_Bool(REGB0)) {
11963 /* ./syntax//typing.nit:1967 */
11964 REGB0 = TAG_Int(3);
11965 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
11966 if (!once_value_7) {
11967 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
11968 REGB0 = TAG_Int(50);
11969 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11970 once_value_7 = fra.me.REG[5];
11971 register_static_object(&once_value_7);
11972 } else fra.me.REG[5] = once_value_7;
11973 fra.me.REG[5] = fra.me.REG[5];
11974 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11975 fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11976 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11977 if (!once_value_8) {
11978 fra.me.REG[5] = BOX_NativeString(".");
11979 REGB0 = TAG_Int(1);
11980 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
11981 once_value_8 = fra.me.REG[5];
11982 register_static_object(&once_value_8);
11983 } else fra.me.REG[5] = once_value_8;
11984 fra.me.REG[5] = fra.me.REG[5];
11985 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11986 fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11987 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11988 } else {
11989 /* ./syntax//typing.nit:1968 */
11990 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
11991 if (UNTAG_Bool(REGB0)) {
11992 fra.me.REG[2] = CALL_static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11993 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
11994 if (UNTAG_Bool(REGB0)) {
11995 } else {
11996 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11997 REGB0 = REGB1;
11998 }
11999 } else {
12000 REGB1 = TAG_Bool(false);
12001 REGB0 = REGB1;
12002 }
12003 if (UNTAG_Bool(REGB0)) {
12004 /* ./syntax//typing.nit:1969 */
12005 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_MMTypeFormal, ID_MMTypeFormal)) /*cast MMTypeFormal*/;
12006 if (UNTAG_Bool(REGB0)) {
12007 fra.me.REG[3] = CALL_type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
12008 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
12009 } else {
12010 REGB1 = TAG_Bool(false);
12011 REGB0 = REGB1;
12012 }
12013 if (UNTAG_Bool(REGB0)) {
12014 } else {
12015 /* ./syntax//typing.nit:1975 */
12016 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AIsaExpr, ID_AIsaExpr)) /*cast AIsaExpr*/;
12017 if (UNTAG_Bool(REGB0)) {
12018 /* ./syntax//typing.nit:1976 */
12019 if (!once_value_9) {
12020 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
12021 REGB0 = TAG_Int(26);
12022 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
12023 once_value_9 = fra.me.REG[3];
12024 register_static_object(&once_value_9);
12025 } else fra.me.REG[3] = once_value_9;
12026 fra.me.REG[3] = fra.me.REG[3];
12027 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12028 } else {
12029 /* ./syntax//typing.nit:1978 */
12030 if (!once_value_10) {
12031 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
12032 REGB0 = TAG_Int(32);
12033 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
12034 once_value_10 = fra.me.REG[3];
12035 register_static_object(&once_value_10);
12036 } else fra.me.REG[3] = once_value_10;
12037 fra.me.REG[3] = fra.me.REG[3];
12038 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12039 }
12040 }
12041 }
12042 }
12043 }
12044 }
12045 label1: while(0);
12046 stack_frame_head = fra.me.prev;
12047 return;
12048 }
12049 void typing___AIsaExpr___after_typing(val_t p0, val_t p1){
12050 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12051 val_t REGB0;
12052 val_t REGB1;
12053 val_t tmp;
12054 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12055 fra.me.file = LOCATE_typing;
12056 fra.me.line = 1986;
12057 fra.me.meth = LOCATE_typing___AIsaExpr___after_typing;
12058 fra.me.has_broke = 0;
12059 fra.me.REG_size = 5;
12060 fra.me.REG[0] = NIT_NULL;
12061 fra.me.REG[1] = NIT_NULL;
12062 fra.me.REG[2] = NIT_NULL;
12063 fra.me.REG[3] = NIT_NULL;
12064 fra.me.REG[4] = NIT_NULL;
12065 fra.me.REG[0] = p0;
12066 fra.me.REG[1] = p1;
12067 /* ./syntax//typing.nit:1988 */
12068 fra.me.REG[2] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12069 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12070 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]);
12071 /* ./syntax//typing.nit:1989 */
12072 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12073 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12074 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12075 if (UNTAG_Bool(REGB0)) {
12076 goto label1;
12077 }
12078 /* ./syntax//typing.nit:1990 */
12079 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12080 fra.me.REG[3] = CALL_typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
12081 /* ./syntax//typing.nit:1991 */
12082 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12083 if (UNTAG_Bool(REGB0)) {
12084 } else {
12085 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12086 if (UNTAG_Bool(REGB1)) {
12087 REGB1 = TAG_Bool(false);
12088 REGB0 = REGB1;
12089 } else {
12090 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12091 REGB0 = REGB1;
12092 }
12093 }
12094 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12095 if (UNTAG_Bool(REGB0)) {
12096 /* ./syntax//typing.nit:1992 */
12097 fra.me.REG[2] = CALL_typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12098 fra.me.REG[4] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12099 fra.me.REG[4] = CALL_syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
12100 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]);
12101 ATTR_typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
12102 }
12103 /* ./syntax//typing.nit:1994 */
12104 fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
12105 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12106 /* ./syntax//typing.nit:1995 */
12107 REGB0 = TAG_Bool(true);
12108 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12109 label1: while(0);
12110 stack_frame_head = fra.me.prev;
12111 return;
12112 }
12113 void typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
12114 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
12115 val_t REGB0;
12116 val_t REGB1;
12117 val_t tmp;
12118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12119 fra.me.file = LOCATE_typing;
12120 fra.me.line = 2001;
12121 fra.me.meth = LOCATE_typing___AAsCastExpr___after_typing;
12122 fra.me.has_broke = 0;
12123 fra.me.REG_size = 4;
12124 fra.me.REG[0] = NIT_NULL;
12125 fra.me.REG[1] = NIT_NULL;
12126 fra.me.REG[2] = NIT_NULL;
12127 fra.me.REG[3] = NIT_NULL;
12128 fra.me.REG[0] = p0;
12129 fra.me.REG[1] = p1;
12130 /* ./syntax//typing.nit:2003 */
12131 fra.me.REG[2] = CALL_parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12132 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12133 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]);
12134 /* ./syntax//typing.nit:2004 */
12135 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12136 REGB0 = CALL_syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12137 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12138 if (UNTAG_Bool(REGB0)) {
12139 goto label1;
12140 }
12141 /* ./syntax//typing.nit:2005 */
12142 fra.me.REG[3] = CALL_parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12143 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12144 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
12145 /* ./syntax//typing.nit:2006 */
12146 fra.me.REG[3] = ATTR_typing___AExpr____stype(fra.me.REG[0]);
12147 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12148 if (UNTAG_Bool(REGB0)) {
12149 } else {
12150 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12151 if (UNTAG_Bool(REGB1)) {
12152 REGB1 = TAG_Bool(false);
12153 REGB0 = REGB1;
12154 } else {
12155 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12156 REGB0 = REGB1;
12157 }
12158 }
12159 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12160 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12161 label1: while(0);
12162 stack_frame_head = fra.me.prev;
12163 return;
12164 }
12165 void typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
12166 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12167 val_t REGB0;
12168 val_t tmp;
12169 static val_t once_value_2; /* Once value */
12170 static val_t once_value_3; /* Once value */
12171 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12172 fra.me.file = LOCATE_typing;
12173 fra.me.line = 2011;
12174 fra.me.meth = LOCATE_typing___AAsNotnullExpr___after_typing;
12175 fra.me.has_broke = 0;
12176 fra.me.REG_size = 5;
12177 fra.me.REG[0] = NIT_NULL;
12178 fra.me.REG[1] = NIT_NULL;
12179 fra.me.REG[2] = NIT_NULL;
12180 fra.me.REG[3] = NIT_NULL;
12181 fra.me.REG[4] = NIT_NULL;
12182 fra.me.REG[0] = p0;
12183 fra.me.REG[1] = p1;
12184 /* ./syntax//typing.nit:2013 */
12185 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12186 REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12187 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12188 if (UNTAG_Bool(REGB0)) {
12189 goto label1;
12190 }
12191 /* ./syntax//typing.nit:2014 */
12192 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12193 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12194 /* ./syntax//typing.nit:2015 */
12195 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_MMTypeNone, ID_MMTypeNone)) /*cast MMTypeNone*/;
12196 if (UNTAG_Bool(REGB0)) {
12197 /* ./syntax//typing.nit:2016 */
12198 fra.me.REG[3] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12199 if (!once_value_2) {
12200 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
12201 REGB0 = TAG_Int(43);
12202 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
12203 once_value_2 = fra.me.REG[4];
12204 register_static_object(&once_value_2);
12205 } else fra.me.REG[4] = once_value_2;
12206 fra.me.REG[4] = fra.me.REG[4];
12207 CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
12208 /* ./syntax//typing.nit:2017 */
12209 goto label1;
12210 } else {
12211 /* ./syntax//typing.nit:2018 */
12212 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12213 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12214 if (UNTAG_Bool(REGB0)) {
12215 /* ./syntax//typing.nit:2019 */
12216 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12217 if (!once_value_3) {
12218 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
12219 REGB0 = TAG_Int(45);
12220 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
12221 once_value_3 = fra.me.REG[4];
12222 register_static_object(&once_value_3);
12223 } else fra.me.REG[4] = once_value_3;
12224 fra.me.REG[4] = fra.me.REG[4];
12225 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
12226 }
12227 }
12228 /* ./syntax//typing.nit:2021 */
12229 fra.me.REG[4] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12230 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
12231 fra.me.REG[4] = CALL_static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
12232 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
12233 /* ./syntax//typing.nit:2022 */
12234 REGB0 = TAG_Bool(true);
12235 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12236 label1: while(0);
12237 stack_frame_head = fra.me.prev;
12238 return;
12239 }
12240 void typing___AProxyExpr___after_typing(val_t p0, val_t p1){
12241 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12242 val_t REGB0;
12243 val_t tmp;
12244 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12245 fra.me.file = LOCATE_typing;
12246 fra.me.line = 2027;
12247 fra.me.meth = LOCATE_typing___AProxyExpr___after_typing;
12248 fra.me.has_broke = 0;
12249 fra.me.REG_size = 2;
12250 fra.me.REG[0] = NIT_NULL;
12251 fra.me.REG[1] = NIT_NULL;
12252 fra.me.REG[0] = p0;
12253 fra.me.REG[1] = p1;
12254 /* ./syntax//typing.nit:2029 */
12255 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12256 REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
12257 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12258 if (UNTAG_Bool(REGB0)) {
12259 goto label1;
12260 }
12261 /* ./syntax//typing.nit:2030 */
12262 REGB0 = TAG_Bool(true);
12263 ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12264 /* ./syntax//typing.nit:2031 */
12265 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12266 REGB0 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
12267 if (UNTAG_Bool(REGB0)) {
12268 goto label1;
12269 }
12270 /* ./syntax//typing.nit:2032 */
12271 fra.me.REG[1] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12272 fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
12273 ATTR_typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12274 label1: while(0);
12275 stack_frame_head = fra.me.prev;
12276 return;
12277 }
12278 void typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
12279 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12280 val_t REGB0;
12281 val_t REGB1;
12282 val_t tmp;
12283 static val_t once_value_1; /* Once value */
12284 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12285 fra.me.file = LOCATE_typing;
12286 fra.me.line = 2037;
12287 fra.me.meth = LOCATE_typing___AOnceExpr___accept_typing;
12288 fra.me.has_broke = 0;
12289 fra.me.REG_size = 5;
12290 fra.me.REG[0] = NIT_NULL;
12291 fra.me.REG[1] = NIT_NULL;
12292 fra.me.REG[2] = NIT_NULL;
12293 fra.me.REG[3] = NIT_NULL;
12294 fra.me.REG[4] = NIT_NULL;
12295 fra.me.REG[0] = p0;
12296 fra.me.REG[1] = p1;
12297 /* ./syntax//typing.nit:2037 */
12298 fra.me.REG[2] = fra.me.REG[0];
12299 fra.me.REG[3] = fra.me.REG[1];
12300 /* ./syntax//typing.nit:2039 */
12301 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12302 REGB1 = TAG_Int(0);
12303 /* ./../lib/standard//kernel.nit:214 */
12304 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
12305 /* ./syntax//typing.nit:2039 */
12306 if (UNTAG_Bool(REGB1)) {
12307 /* ./syntax//typing.nit:2040 */
12308 if (!once_value_1) {
12309 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
12310 REGB1 = TAG_Int(34);
12311 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
12312 once_value_1 = fra.me.REG[4];
12313 register_static_object(&once_value_1);
12314 } else fra.me.REG[4] = once_value_1;
12315 fra.me.REG[4] = fra.me.REG[4];
12316 CALL_syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
12317 }
12318 /* ./syntax//typing.nit:2042 */
12319 REGB1 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12320 REGB0 = TAG_Int(1);
12321 /* ./../lib/standard//kernel.nit:215 */
12322 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
12323 /* ./syntax//typing.nit:2042 */
12324 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
12325 /* ./syntax//typing.nit:2044 */
12326 CALL_SUPER_typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12327 /* ./syntax//typing.nit:2046 */
12328 REGB0 = CALL_typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12329 REGB1 = TAG_Int(1);
12330 /* ./../lib/standard//kernel.nit:217 */
12331 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
12332 /* ./syntax//typing.nit:2046 */
12333 CALL_typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
12334 stack_frame_head = fra.me.prev;
12335 return;
12336 }