ni: fix isa checks with new module names and updates c_src accordingly
[nit.git] / c_src / syntax___typing._sep.c
1 /* This C file is generated by NIT to compile module syntax___typing. */
2 #include "syntax___typing._sep.h"
3 void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_syntax___typing;
8 fra.me.line = 25;
9 fra.me.meth = LOCATE_syntax___typing___MMSrcModule___do_typing;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 2;
12 fra.me.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_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
18 /* ./syntax//typing.nit:30 */
19 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
20 CALL_parser___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 syntax___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_syntax___typing;
31 fra.me.line = 41;
32 fra.me.meth = LOCATE_syntax___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_standard___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_syntax___typing, 43);
57 }
58 CALL_syntax___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 syntax___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_syntax___typing;
69 fra.me.line = 46;
70 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing, 46);
80 }
81 fra.me.REG[0] = ATTR_syntax___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 syntax___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_syntax___typing;
91 fra.me.line = 49;
92 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
114 fra.me.line = 51;
115 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
124 stack_frame_head = fra.me.prev;
125 return;
126 }
127 void syntax___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_syntax___typing;
133 fra.me.line = 53;
134 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
144 REGB0 = CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
150 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
151 CALL_syntax___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 syntax___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_syntax___typing;
161 fra.me.line = 60;
162 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
172 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
173 CALL_syntax___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 syntax___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_syntax___typing;
184 fra.me.line = 66;
185 fra.me.meth = LOCATE_syntax___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_standard___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
211 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
212 /* ./syntax//typing.nit:71 */
213 CALL_parser___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
216 CALL_syntax___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 syntax___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_syntax___typing;
227 fra.me.line = 75;
228 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
250 fra.me.line = 77;
251 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
269 fra.me.line = 79;
270 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
292 fra.me.line = 81;
293 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
310 fra.me.line = 83;
311 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
318 stack_frame_head = fra.me.prev;
319 return fra.me.REG[0];
320 }
321 void syntax___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_syntax___typing;
326 fra.me.line = 83;
327 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
344 fra.me.line = 86;
345 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
360 fra.me.line = 86;
361 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
379 fra.me.line = 89;
380 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing, 89);
390 }
391 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
392 stack_frame_head = fra.me.prev;
393 return REGB0;
394 }
395 void syntax___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_syntax___typing;
401 fra.me.line = 89;
402 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
410 stack_frame_head = fra.me.prev;
411 return;
412 }
413 void syntax___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_syntax___typing;
420 fra.me.line = 92;
421 fra.me.meth = LOCATE_syntax___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_syntax___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_standard___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_syntax___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 syntax___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_syntax___typing;
457 fra.me.line = 99;
458 fra.me.meth = LOCATE_syntax___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_syntax___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_standard___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_syntax___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 syntax___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_syntax___typing;
493 fra.me.line = 106;
494 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing, 106);
504 }
505 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
506 stack_frame_head = fra.me.prev;
507 return REGB0;
508 }
509 void syntax___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_syntax___typing;
515 fra.me.line = 106;
516 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
524 stack_frame_head = fra.me.prev;
525 return;
526 }
527 val_t syntax___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_syntax___typing;
533 fra.me.line = 109;
534 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing, 109);
544 }
545 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
546 stack_frame_head = fra.me.prev;
547 return REGB0;
548 }
549 void syntax___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_syntax___typing;
555 fra.me.line = 109;
556 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
564 stack_frame_head = fra.me.prev;
565 return;
566 }
567 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
568 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___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_syntax___typing;
574 fra.me.line = 112;
575 fra.me.meth = LOCATE_syntax___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___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 syntax___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_syntax___typing;
614 fra.me.line = 114;
615 fra.me.meth = LOCATE_syntax___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_standard___collection___array___Array___init();
635 /* ./syntax//typing.nit:120 */
636 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
637 /* ./syntax//typing.nit:121 */
638 fra.me.REG[6] = CALL_metamodel___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_syntax___typing, 121);
642 }
643 REGB0 = CALL_metamodel___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_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
647 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_syntax___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
654 if (UNTAG_Bool(REGB0)) {
655 } else {
656 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
657 }
658 REGB0 = ATTR_standard___collection___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:210 */
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_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
677 if (UNTAG_Bool(REGB2)) {
678 } else {
679 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
680 }
681 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
682 /* ./syntax//typing.nit:143 */
683 REGB1 = TAG_Int(0);
684 /* ./../lib/standard//kernel.nit:217 */
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_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
694 if (UNTAG_Bool(REGB2)) {
695 } else {
696 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
697 }
698 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
699 /* ./../lib/standard//collection//array.nit:236 */
700 fra.me.REG[6] = ATTR_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
705 if (UNTAG_Bool(REGB2)) {
706 } else {
707 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
708 }
709 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
710 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
733 fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[8])(fra.me.REG[8]);
734 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
744 fra.me.REG[8] = CALL_metamodel___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_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
746 if (UNTAG_Bool(REGB2)) {
747 } else {
748 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
749 }
750 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
751 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
761 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
762 CALL_standard___collection___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:218 */
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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
787 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
788 CALL_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
807 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
817 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
818 CALL_syntax___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
825 if (UNTAG_Bool(REGB1)) {
826 } else {
827 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
828 }
829 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
830 /* ./syntax//typing.nit:150 */
831 REGB2 = TAG_Int(0);
832 /* ./../lib/standard//kernel.nit:217 */
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_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
842 if (UNTAG_Bool(REGB1)) {
843 } else {
844 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
845 }
846 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
847 /* ./../lib/standard//collection//array.nit:236 */
848 fra.me.REG[4] = ATTR_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
853 if (UNTAG_Bool(REGB1)) {
854 } else {
855 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
856 }
857 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
858 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
881 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
882 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
892 fra.me.REG[3] = CALL_metamodel___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_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
894 if (UNTAG_Bool(REGB1)) {
895 } else {
896 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
897 }
898 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
899 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
909 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
910 CALL_standard___collection___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:218 */
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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
935 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
936 CALL_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
955 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
965 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
966 CALL_syntax___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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
983 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
984 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
994 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
995 CALL_syntax___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_syntax___typing___TypingVisitor___get_default_constructor_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
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_syntax___typing;
1018 fra.me.line = 0;
1019 fra.me.meth = LOCATE_syntax___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_metamodel___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_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1038 /* ./syntax//typing.nit:125 */
1039 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1040 fra.me.REG[1] = CALL_metamodel___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_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1043 if (UNTAG_Bool(REGB0)) {
1044 } else {
1045 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1046 }
1047 /* ./syntax//typing.nit:127 */
1048 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1049 /* ./syntax//typing.nit:128 */
1050 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1051 fra.me.REG[3] = CALL_metamodel___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_standard___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:210 */
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:210 */
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_metamodel___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_syntax___typing, 129);
1085 }
1086 REGB1 = CALL_metamodel___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_standard___collection___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:210 */
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_metamodel___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_standard___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_standard___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
1142 /* ./syntax//typing.nit:136 */
1143 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
1144 } else {
1145 /* ./syntax//typing.nit:138 */
1146 CALL_standard___collection___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 syntax___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_syntax___typing;
1158 fra.me.line = 168;
1159 fra.me.meth = LOCATE_syntax___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___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_syntax___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 syntax___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_syntax___typing;
1178 fra.me.line = 173;
1179 fra.me.meth = LOCATE_syntax___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 syntax___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_syntax___typing;
1196 fra.me.line = 177;
1197 fra.me.meth = LOCATE_syntax___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_standard___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_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1220 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1221 CALL_syntax___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_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1224 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1225 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1226 CALL_syntax___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_syntax___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 syntax___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_syntax___typing;
1238 fra.me.line = 186;
1239 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
1263 fra.me.line = 191;
1264 fra.me.meth = LOCATE_syntax___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_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1279 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1282 CALL_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1285 CALL_syntax___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_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1288 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1289 /* ./syntax//typing.nit:198 */
1290 CALL_SUPER_syntax___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___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_standard___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___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_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
1310 if (UNTAG_Bool(REGB0)) {
1311 } else {
1312 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1313 }
1314 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1315 fra.me.REG[2] = CALL_metamodel___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_syntax___typing, 200);
1319 }
1320 fra.me.REG[2] = CALL_metamodel___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_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
1322 if (UNTAG_Bool(REGB0)) {
1323 } else {
1324 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1325 }
1326 CALL_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1330 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1331 stack_frame_head = fra.me.prev;
1332 return;
1333 }
1334 void syntax___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_syntax___typing;
1339 fra.me.line = 207;
1340 fra.me.meth = LOCATE_syntax___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_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1355 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1358 CALL_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1361 CALL_syntax___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_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1364 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1365 /* ./syntax//typing.nit:214 */
1366 CALL_SUPER_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1369 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1370 stack_frame_head = fra.me.prev;
1371 return;
1372 }
1373 void syntax___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_syntax___typing;
1381 fra.me.line = 220;
1382 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1398 REGB0 = CALL_syntax___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___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1402 fra.me.REG[1] = CALL_metamodel___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_syntax___typing, 223);
1406 }
1407 fra.me.REG[1] = CALL_metamodel___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_standard___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_standard___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___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 syntax___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_syntax___typing;
1446 fra.me.line = 230;
1447 fra.me.meth = LOCATE_syntax___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___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1462 CALL_syntax___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___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1465 CALL_syntax___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_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1469 /* ./syntax//typing.nit:235 */
1470 CALL_SUPER_syntax___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 syntax___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_syntax___typing;
1485 fra.me.line = 238;
1486 fra.me.meth = LOCATE_syntax___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_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1503 /* ./syntax//typing.nit:241 */
1504 REGB0 = CALL_syntax___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___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1509 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1510 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1511 fra.me.REG[0] = CALL_syntax___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_standard___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___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
1529 if (UNTAG_Bool(REGB1)) {
1530 } else {
1531 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
1532 }
1533 REGB1 = ATTR_standard___collection___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:215 */
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___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:216 */
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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1553 if (UNTAG_Bool(REGB3)) {
1554 } else {
1555 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
1556 }
1557 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1558 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___array, 245);
1568 }
1569 /* ./../lib/standard//collection//array.nit:246 */
1570 fra.me.REG[4] = ATTR_standard___collection___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_standard___collection___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_syntax___typing, 250);
1586 }
1587 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1588 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1589 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1590 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1591 fra.me.REG[5] = CALL_metamodel___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___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1599 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1600 fra.me.REG[5] = CALL_metamodel___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1603 if (UNTAG_Bool(REGB3)) {
1604 } else {
1605 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
1606 }
1607 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1608 /* ./../lib/standard//kernel.nit:215 */
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___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1614 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1615 fra.me.REG[5] = CALL_metamodel___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:216 */
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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1625 if (UNTAG_Bool(REGB4)) {
1626 } else {
1627 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
1628 }
1629 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1630 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___array, 245);
1640 }
1641 /* ./../lib/standard//collection//array.nit:246 */
1642 fra.me.REG[5] = ATTR_standard___collection___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_standard___collection___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_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1654 REGB3 = CALL_metamodel___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_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1659 REGB4 = CALL_metamodel___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_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1666 REGB4 = CALL_metamodel___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_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
1673 REGB4 = CALL_metamodel___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:218 */
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_standard___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_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
1700 REGB3 = CALL_metamodel___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_syntax___typing, 257);
1707 }
1708 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1709 REGB4 = CALL_metamodel___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_standard___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:218 */
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___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_syntax___typing, 259);
1737 }
1738 CALL_standard___collection___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:218 */
1742 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1743 /* ./syntax//typing.nit:260 */
1744 REGB0 = REGB3;
1745 /* ./../lib/standard//kernel.nit:215 */
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___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:216 */
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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1760 if (UNTAG_Bool(REGB4)) {
1761 } else {
1762 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
1763 }
1764 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1765 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___array, 245);
1775 }
1776 /* ./../lib/standard//collection//array.nit:246 */
1777 fra.me.REG[4] = ATTR_standard___collection___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_standard___collection___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_syntax___typing, 263);
1793 }
1794 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
1795 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
1796 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
1797 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1798 fra.me.REG[6] = CALL_metamodel___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___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1809 fra.me.REG[6] = CALL_syntax___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_standard___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___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1827 CALL_standard___collection___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:218 */
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 syntax___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_syntax___typing;
1853 fra.me.line = 281;
1854 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
1867 /* ./syntax//typing.nit:284 */
1868 CALL_SUPER_syntax___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 syntax___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_syntax___typing;
1877 fra.me.line = 286;
1878 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
1895 fra.me.line = 293;
1896 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
1905 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1906 CALL_syntax___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 syntax___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_syntax___typing;
1915 fra.me.line = 300;
1916 fra.me.meth = LOCATE_syntax___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_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
1923 stack_frame_head = fra.me.prev;
1924 return fra.me.REG[0];
1925 }
1926 void syntax___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_syntax___typing;
1936 fra.me.line = 303;
1937 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1957 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1958 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1961 /* ./syntax//typing.nit:309 */
1962 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1963 /* ./syntax//typing.nit:310 */
1964 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1965 CALL_syntax___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___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
1970 fra.me.REG[7] = CALL_metamodel___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_syntax___typing, 313);
1974 }
1975 fra.me.REG[7] = CALL_metamodel___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_standard___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_standard___collection___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___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1996 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
1997 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
1998 /* ./syntax//typing.nit:316 */
1999 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2000 /* ./syntax//typing.nit:317 */
2001 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2002 CALL_syntax___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_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2006 /* ./syntax//typing.nit:321 */
2007 CALL_SUPER_syntax___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_syntax___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___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_standard___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2029 REGB0 = CALL_syntax___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:178 */
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___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2042 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2043 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2044 fra.me.REG[1] = CALL_metamodel___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_standard___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_standard___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___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___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2072 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2073 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2074 if (UNTAG_Bool(REGB2)) {
2075 fra.me.REG[8] = CALL_syntax___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_standard___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_standard___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___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_standard___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_syntax___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2131 if (UNTAG_Bool(REGB1)) {
2132 } else {
2133 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
2134 }
2135 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2136 /* ./../lib/standard//collection//array.nit:236 */
2137 fra.me.REG[8] = ATTR_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2142 if (UNTAG_Bool(REGB1)) {
2143 } else {
2144 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
2145 }
2146 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2147 /* ./../lib/standard//kernel.nit:215 */
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_standard___collection___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___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:218 */
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_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2175 /* ./syntax//typing.nit:339 */
2176 CALL_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2179 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2180 stack_frame_head = fra.me.prev;
2181 return;
2182 }
2183 val_t syntax___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_syntax___typing;
2189 fra.me.line = 345;
2190 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
2214 fra.me.line = 346;
2215 fra.me.meth = LOCATE_syntax___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_syntax___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_standard___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 syntax___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_syntax___typing;
2245 fra.me.line = 349;
2246 fra.me.meth = LOCATE_syntax___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___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2255 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2256 stack_frame_head = fra.me.prev;
2257 return;
2258 }
2259 val_t syntax___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_syntax___typing;
2265 fra.me.line = 356;
2266 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing, 356);
2276 }
2277 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2278 stack_frame_head = fra.me.prev;
2279 return REGB0;
2280 }
2281 val_t syntax___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_syntax___typing;
2288 fra.me.line = 357;
2289 fra.me.meth = LOCATE_syntax___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_syntax___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_standard___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 syntax___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_syntax___typing;
2323 fra.me.line = 358;
2324 fra.me.meth = LOCATE_syntax___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___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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2347 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2348 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2349 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2359 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2360 CALL_standard___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_syntax___typing, 362);
2363 }
2364 /* ./syntax//typing.nit:364 */
2365 REGB0 = CALL_syntax___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_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2379 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
2380 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2381 CALL_standard___collection___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_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2391 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
2392 CALL_standard___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_syntax___typing, 366);
2395 }
2396 /* ./syntax//typing.nit:368 */
2397 fra.me.REG[0] = ATTR_syntax___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_syntax___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 syntax___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_syntax___typing;
2414 fra.me.line = 372;
2415 fra.me.meth = LOCATE_syntax___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_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2425 stack_frame_head = fra.me.prev;
2426 return;
2427 }
2428 val_t syntax___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_syntax___typing;
2434 fra.me.line = 378;
2435 fra.me.meth = LOCATE_syntax___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 syntax___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_syntax___typing;
2453 fra.me.line = 381;
2454 fra.me.meth = LOCATE_syntax___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 syntax___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_syntax___typing;
2471 fra.me.line = 384;
2472 fra.me.meth = LOCATE_syntax___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 syntax___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_syntax___typing;
2489 fra.me.line = 387;
2490 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
2505 fra.me.line = 390;
2506 fra.me.meth = LOCATE_syntax___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_syntax___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 syntax___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_syntax___typing;
2522 fra.me.line = 396;
2523 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___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 syntax___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_syntax___typing;
2547 fra.me.line = 398;
2548 fra.me.meth = LOCATE_syntax___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___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2560 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2561 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2562 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2563 /* ./syntax//typing.nit:401 */
2564 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2565 /* ./syntax//typing.nit:402 */
2566 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2567 CALL_syntax___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___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_standard___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_syntax___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___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_standard___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___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_syntax___typing, 407);
2608 }
2609 REGB0 = CALL_syntax___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___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_syntax___typing, 408);
2619 }
2620 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2621 CALL_syntax___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_standard___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___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2639 CALL_syntax___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_standard___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___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_syntax___typing, 414);
2667 }
2668 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2669 CALL_syntax___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___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2673 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2674 CALL_syntax___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_syntax___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 syntax___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_syntax___typing;
2690 fra.me.line = 423;
2691 fra.me.meth = LOCATE_syntax___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___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2701 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___typing___ABlockExpr___accept_typing_1));
2702 /* ./syntax//typing.nit:434 */
2703 REGB0 = TAG_Bool(true);
2704 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2705 stack_frame_head = fra.me.prev;
2706 return;
2707 }
2708 void OC_syntax___typing___ABlockExpr___accept_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
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_syntax___typing;
2716 fra.me.line = 0;
2717 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2728 REGB0 = CALL_syntax___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___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_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2736 REGB0 = CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2741 REGB0 = TAG_Bool(true);
2742 CALL_syntax___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_standard___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___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 syntax___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_syntax___typing;
2768 fra.me.line = 439;
2769 fra.me.meth = LOCATE_syntax___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_syntax___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___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2783 fra.me.REG[2] = CALL_metamodel___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_syntax___typing, 442);
2787 }
2788 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2789 /* ./syntax//typing.nit:444 */
2790 REGB0 = CALL_syntax___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_standard___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___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___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_standard___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_standard___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_standard___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___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_standard___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_standard___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_standard___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___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_standard___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_standard___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___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_syntax___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 syntax___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_syntax___typing;
2948 fra.me.line = 462;
2949 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2962 fra.me.REG[2] = CALL_syntax___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_standard___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_syntax___typing, 468);
2983 }
2984 REGB0 = CALL_syntax___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_standard___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___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_syntax___typing, 473);
3003 }
3004 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3005 /* ./syntax//typing.nit:474 */
3006 fra.me.REG[3] = CALL_parser___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_standard___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_standard___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_standard___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___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___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_standard___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_standard___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_standard___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___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___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_standard___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_standard___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___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_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
3130 if (UNTAG_Bool(REGB0)) {
3131 } else {
3132 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 479);
3133 }
3134 CALL_syntax___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_syntax___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 syntax___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_syntax___typing;
3154 fra.me.line = 486;
3155 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3167 /* ./syntax//typing.nit:489 */
3168 CALL_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3171 fra.me.REG[3] = CALL_syntax___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_standard___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_syntax___typing, 493);
3192 }
3193 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3194 CALL_standard___collection___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_syntax___typing, 495);
3199 }
3200 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3201 /* ./syntax//typing.nit:496 */
3202 fra.me.REG[2] = CALL_parser___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_standard___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_standard___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_standard___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___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___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_standard___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_standard___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_standard___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___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___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_standard___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_standard___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___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_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
3326 if (UNTAG_Bool(REGB0)) {
3327 } else {
3328 nit_abort("Cast failed", NULL, LOCATE_syntax___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_syntax___typing, 502);
3333 }
3334 CALL_standard___collection___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_syntax___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 syntax___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_syntax___typing;
3351 fra.me.line = 509;
3352 fra.me.meth = LOCATE_syntax___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_syntax___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_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3364 stack_frame_head = fra.me.prev;
3365 return;
3366 }
3367 val_t syntax___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_syntax___typing;
3372 fra.me.line = 519;
3373 fra.me.meth = LOCATE_syntax___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_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3380 stack_frame_head = fra.me.prev;
3381 return fra.me.REG[0];
3382 }
3383 void syntax___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_syntax___typing;
3390 fra.me.line = 522;
3391 fra.me.meth = LOCATE_syntax___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_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3408 /* ./syntax//typing.nit:527 */
3409 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3410 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3413 /* ./syntax//typing.nit:531 */
3414 fra.me.REG[4] = CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3418 CALL_syntax___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_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3424 REGB1 = CALL_syntax___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_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3429 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3430 CALL_standard___collection___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_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3434 REGB1 = CALL_standard___collection___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_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3438 /* ./syntax//typing.nit:545 */
3439 CALL_syntax___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_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3443 fra.me.REG[2] = CALL_syntax___flow___FlowContext___merge(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[2]);
3444 CALL_syntax___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_syntax___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_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3452 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3453 /* ./syntax//typing.nit:552 */
3454 REGB0 = TAG_Bool(true);
3455 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3456 stack_frame_head = fra.me.prev;
3457 return;
3458 }
3459 void syntax___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_syntax___typing;
3464 fra.me.line = 555;
3465 fra.me.meth = LOCATE_syntax___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_syntax___typing, 555);
3470 stack_frame_head = fra.me.prev;
3471 return;
3472 }
3473 void syntax___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_syntax___typing;
3479 fra.me.line = 561;
3480 fra.me.meth = LOCATE_syntax___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_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3491 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3492 REGB0 = TAG_Bool(false);
3493 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3494 stack_frame_head = fra.me.prev;
3495 return;
3496 }
3497 void syntax___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_syntax___typing;
3502 fra.me.line = 566;
3503 fra.me.meth = LOCATE_syntax___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___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3512 CALL_syntax___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 syntax___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_syntax___typing;
3522 fra.me.line = 573;
3523 fra.me.meth = LOCATE_syntax___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___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3535 CALL_parser___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___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3538 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3539 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3542 /* ./syntax//typing.nit:580 */
3543 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3544 CALL_syntax___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___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3547 CALL_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3550 /* ./syntax//typing.nit:589 */
3551 CALL_syntax___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___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3554 CALL_syntax___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___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3557 CALL_syntax___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_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3560 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3561 fra.me.REG[4] = CALL_syntax___flow___FlowContext___merge_reash(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
3562 CALL_syntax___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_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3566 stack_frame_head = fra.me.prev;
3567 return;
3568 }
3569 void syntax___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_syntax___typing;
3575 fra.me.line = 603;
3576 fra.me.meth = LOCATE_syntax___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_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3587 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3588 REGB0 = TAG_Bool(true);
3589 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3590 stack_frame_head = fra.me.prev;
3591 return;
3592 }
3593 void syntax___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_syntax___typing;
3600 fra.me.line = 608;
3601 fra.me.meth = LOCATE_syntax___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_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3613 /* ./syntax//typing.nit:613 */
3614 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3615 CALL_parser___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___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3618 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3619 CALL_syntax___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___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3622 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___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_standard___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___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___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3637 CALL_syntax___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___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3640 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3641 /* ./syntax//typing.nit:627 */
3642 CALL_syntax___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___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3645 CALL_syntax___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_syntax___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_syntax___typing, 629);
3651 }
3652 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3653 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3654 CALL_standard___collection___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 syntax___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_syntax___typing;
3664 fra.me.line = 635;
3665 fra.me.meth = LOCATE_syntax___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_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3676 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3677 REGB0 = TAG_Bool(true);
3678 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3679 stack_frame_head = fra.me.prev;
3680 return;
3681 }
3682 void syntax___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_syntax___typing;
3687 fra.me.line = 640;
3688 fra.me.meth = LOCATE_syntax___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___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3698 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3699 /* ./syntax//typing.nit:646 */
3700 CALL_syntax___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 syntax___typing___AForExpr___variables(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_syntax___typing;
3710 fra.me.line = 653;
3711 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
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_syntax___typing___AForExpr____variables(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_syntax___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 syntax___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_syntax___typing;
3734 fra.me.line = 655;
3735 fra.me.meth = LOCATE_syntax___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_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3746 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3747 REGB0 = TAG_Bool(true);
3748 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3749 stack_frame_head = fra.me.prev;
3750 return;
3751 }
3752 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3753 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3754 val_t tmp;
3755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3756 fra.me.file = LOCATE_syntax___typing;
3757 fra.me.line = 660;
3758 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
3759 fra.me.has_broke = 0;
3760 fra.me.REG_size = 3;
3761 fra.me.REG[0] = NIT_NULL;
3762 fra.me.REG[1] = NIT_NULL;
3763 fra.me.REG[2] = NIT_NULL;
3764 fra.me.REG[0] = p0;
3765 fra.me.REG[1] = p1;
3766 /* ./syntax//typing.nit:662 */
3767 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3768 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3769 /* ./syntax//typing.nit:663 */
3770 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3771 /* ./syntax//typing.nit:665 */
3772 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3773 /* ./syntax//typing.nit:668 */
3774 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3775 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3776 /* ./syntax//typing.nit:671 */
3777 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3778 /* ./syntax//typing.nit:672 */
3779 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3780 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3781 stack_frame_head = fra.me.prev;
3782 return;
3783 }
3784 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
3785 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3786 val_t REGB0;
3787 val_t REGB1;
3788 val_t REGB2;
3789 val_t REGB3;
3790 val_t REGB4;
3791 val_t REGB5;
3792 val_t tmp;
3793 static val_t once_value_3; /* Once value */
3794 static val_t once_value_4; /* Once value */
3795 static val_t once_value_5; /* Once value */
3796 static val_t once_value_6; /* Once value */
3797 static val_t once_value_7; /* Once value */
3798 static val_t once_value_8; /* Once value */
3799 static val_t once_value_9; /* Once value */
3800 static val_t once_value_10; /* Once value */
3801 static val_t once_value_11; /* Once value */
3802 static val_t once_value_12; /* Once value */
3803 static val_t once_value_13; /* Once value */
3804 static val_t once_value_14; /* Once value */
3805 static val_t once_value_15; /* Once value */
3806 static val_t once_value_16; /* Once value */
3807 static val_t once_value_17; /* Once value */
3808 static val_t once_value_18; /* Once value */
3809 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3810 fra.me.file = LOCATE_syntax___typing;
3811 fra.me.line = 675;
3812 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
3813 fra.me.has_broke = 0;
3814 fra.me.REG_size = 8;
3815 fra.me.REG[0] = NIT_NULL;
3816 fra.me.REG[1] = NIT_NULL;
3817 fra.me.REG[2] = NIT_NULL;
3818 fra.me.REG[3] = NIT_NULL;
3819 fra.me.REG[4] = NIT_NULL;
3820 fra.me.REG[5] = NIT_NULL;
3821 fra.me.REG[6] = NIT_NULL;
3822 fra.me.REG[7] = NIT_NULL;
3823 fra.me.REG[0] = p0;
3824 fra.me.REG[1] = p1;
3825 /* ./syntax//typing.nit:678 */
3826 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
3827 /* ./syntax//typing.nit:679 */
3828 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
3829 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___typing___AForExpr___do_typing_1));
3830 /* ./syntax//typing.nit:684 */
3831 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
3832 /* ./syntax//typing.nit:687 */
3833 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3834 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3835 /* ./syntax//typing.nit:688 */
3836 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3837 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3838 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3839 if (UNTAG_Bool(REGB0)) {
3840 goto label2;
3841 }
3842 /* ./syntax//typing.nit:689 */
3843 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3844 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
3845 /* ./syntax//typing.nit:691 */
3846 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
3847 if (UNTAG_Bool(REGB0)) {
3848 /* ./syntax//typing.nit:692 */
3849 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3850 if (!once_value_3) {
3851 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
3852 REGB0 = TAG_Int(43);
3853 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3854 once_value_3 = fra.me.REG[5];
3855 register_static_object(&once_value_3);
3856 } else fra.me.REG[5] = once_value_3;
3857 fra.me.REG[5] = fra.me.REG[5];
3858 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3859 /* ./syntax//typing.nit:693 */
3860 goto label2;
3861 }
3862 /* ./syntax//typing.nit:697 */
3863 if (!once_value_4) {
3864 if (!once_value_5) {
3865 fra.me.REG[5] = BOX_NativeString("iterate");
3866 REGB0 = TAG_Int(7);
3867 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3868 once_value_5 = fra.me.REG[5];
3869 register_static_object(&once_value_5);
3870 } else fra.me.REG[5] = once_value_5;
3871 fra.me.REG[5] = fra.me.REG[5];
3872 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
3873 once_value_4 = fra.me.REG[5];
3874 register_static_object(&once_value_4);
3875 } else fra.me.REG[5] = once_value_4;
3876 fra.me.REG[5] = fra.me.REG[5];
3877 /* ./syntax//typing.nit:698 */
3878 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
3879 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3880 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3881 if (UNTAG_Bool(REGB0)) {
3882 /* ./syntax//typing.nit:699 */
3883 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3884 REGB0 = TAG_Int(3);
3885 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3886 if (!once_value_6) {
3887 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
3888 REGB0 = TAG_Int(60);
3889 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3890 once_value_6 = fra.me.REG[7];
3891 register_static_object(&once_value_6);
3892 } else fra.me.REG[7] = once_value_6;
3893 fra.me.REG[7] = fra.me.REG[7];
3894 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3895 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3896 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3897 if (!once_value_7) {
3898 fra.me.REG[7] = BOX_NativeString(".");
3899 REGB0 = TAG_Int(1);
3900 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3901 once_value_7 = fra.me.REG[7];
3902 register_static_object(&once_value_7);
3903 } else fra.me.REG[7] = once_value_7;
3904 fra.me.REG[7] = fra.me.REG[7];
3905 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3906 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
3907 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
3908 /* ./syntax//typing.nit:700 */
3909 goto label2;
3910 }
3911 /* ./syntax//typing.nit:702 */
3912 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
3913 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
3914 /* ./syntax//typing.nit:703 */
3915 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
3916 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3917 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3918 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
3919 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[0], fra.me.REG[4], REGB0);
3920 /* ./syntax//typing.nit:704 */
3921 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3922 /* ./syntax//typing.nit:705 */
3923 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3924 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
3925 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3926 if (UNTAG_Bool(REGB0)) {
3927 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
3928 fra.me.REG[3] = fra.me.REG[5];
3929 }
3930 /* ./syntax//typing.nit:706 */
3931 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
3932 REGB1 = TAG_Int(0);
3933 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
3934 if (UNTAG_Bool(REGB2)) {
3935 } else {
3936 /* ./../lib/standard//kernel.nit:210 */
3937 REGB1 = TAG_Bool((REGB0)==(REGB1));
3938 /* ./syntax//typing.nit:706 */
3939 REGB2 = REGB1;
3940 }
3941 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
3942 if (UNTAG_Bool(REGB2)) {
3943 /* ./syntax//typing.nit:707 */
3944 if (!once_value_8) {
3945 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
3946 REGB2 = TAG_Int(63);
3947 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
3948 once_value_8 = fra.me.REG[5];
3949 register_static_object(&once_value_8);
3950 } else fra.me.REG[5] = once_value_8;
3951 fra.me.REG[5] = fra.me.REG[5];
3952 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
3953 /* ./syntax//typing.nit:708 */
3954 goto label2;
3955 } else {
3956 /* ./syntax//typing.nit:709 */
3957 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
3958 /* ./../lib/standard//collection//array.nit:23 */
3959 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
3960 if (UNTAG_Bool(REGB2)) {
3961 } else {
3962 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
3963 }
3964 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
3965 /* ./syntax//typing.nit:709 */
3966 REGB1 = TAG_Int(1);
3967 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
3968 if (UNTAG_Bool(REGB0)) {
3969 } else {
3970 /* ./../lib/standard//kernel.nit:210 */
3971 REGB1 = TAG_Bool((REGB2)==(REGB1));
3972 /* ./syntax//typing.nit:709 */
3973 REGB0 = REGB1;
3974 }
3975 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3976 if (UNTAG_Bool(REGB0)) {
3977 /* ./syntax//typing.nit:710 */
3978 if (!once_value_9) {
3979 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
3980 REGB0 = TAG_Int(62);
3981 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3982 once_value_9 = fra.me.REG[5];
3983 register_static_object(&once_value_9);
3984 } else fra.me.REG[5] = once_value_9;
3985 fra.me.REG[5] = fra.me.REG[5];
3986 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
3987 /* ./syntax//typing.nit:711 */
3988 goto label2;
3989 }
3990 }
3991 /* ./syntax//typing.nit:713 */
3992 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
3993 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
3994 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3995 if (UNTAG_Bool(REGB0)) {
3996 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 713);
3997 }
3998 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
3999 fra.me.REG[3] = fra.me.REG[5];
4000 /* ./syntax//typing.nit:714 */
4001 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4002 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4003 if (UNTAG_Bool(REGB0)) {
4004 } else {
4005 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4006 if (UNTAG_Bool(REGB1)) {
4007 REGB1 = TAG_Bool(false);
4008 REGB0 = REGB1;
4009 } else {
4010 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4011 REGB0 = REGB1;
4012 }
4013 }
4014 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4015 if (UNTAG_Bool(REGB0)) {
4016 /* ./syntax//typing.nit:715 */
4017 if (!once_value_10) {
4018 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4019 REGB0 = TAG_Int(73);
4020 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4021 once_value_10 = fra.me.REG[5];
4022 register_static_object(&once_value_10);
4023 } else fra.me.REG[5] = once_value_10;
4024 fra.me.REG[5] = fra.me.REG[5];
4025 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4026 /* ./syntax//typing.nit:716 */
4027 goto label2;
4028 }
4029 /* ./../lib/standard//collection//array.nit:23 */
4030 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4031 if (UNTAG_Bool(REGB0)) {
4032 } else {
4033 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4034 }
4035 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4036 /* ./syntax//typing.nit:718 */
4037 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4038 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4039 if (UNTAG_Bool(REGB2)) {
4040 } else {
4041 /* ./../lib/standard//kernel.nit:210 */
4042 REGB1 = TAG_Bool((REGB0)==(REGB1));
4043 /* ./syntax//typing.nit:718 */
4044 REGB2 = REGB1;
4045 }
4046 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4047 if (UNTAG_Bool(REGB2)) {
4048 /* ./syntax//typing.nit:719 */
4049 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4050 REGB1 = TAG_Int(1);
4051 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4052 if (UNTAG_Bool(REGB0)) {
4053 } else {
4054 /* ./../lib/standard//kernel.nit:210 */
4055 REGB1 = TAG_Bool((REGB2)==(REGB1));
4056 /* ./syntax//typing.nit:719 */
4057 REGB0 = REGB1;
4058 }
4059 if (UNTAG_Bool(REGB0)) {
4060 /* ./syntax//typing.nit:720 */
4061 REGB0 = TAG_Int(7);
4062 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4063 if (!once_value_11) {
4064 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4065 REGB0 = TAG_Int(16);
4066 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4067 once_value_11 = fra.me.REG[4];
4068 register_static_object(&once_value_11);
4069 } else fra.me.REG[4] = once_value_11;
4070 fra.me.REG[4] = fra.me.REG[4];
4071 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4072 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4073 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4074 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4075 if (!once_value_12) {
4076 fra.me.REG[4] = BOX_NativeString(" variable ");
4077 REGB0 = TAG_Int(10);
4078 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4079 once_value_12 = fra.me.REG[4];
4080 register_static_object(&once_value_12);
4081 } else fra.me.REG[4] = once_value_12;
4082 fra.me.REG[4] = fra.me.REG[4];
4083 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4084 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4085 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4086 if (!once_value_13) {
4087 fra.me.REG[4] = BOX_NativeString(", found ");
4088 REGB0 = TAG_Int(8);
4089 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4090 once_value_13 = fra.me.REG[4];
4091 register_static_object(&once_value_13);
4092 } else fra.me.REG[4] = once_value_13;
4093 fra.me.REG[4] = fra.me.REG[4];
4094 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4095 /* ./../lib/standard//collection//array.nit:23 */
4096 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4097 if (UNTAG_Bool(REGB0)) {
4098 } else {
4099 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4100 }
4101 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4102 /* ./syntax//typing.nit:720 */
4103 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4104 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4105 if (!once_value_14) {
4106 fra.me.REG[4] = BOX_NativeString(".");
4107 REGB0 = TAG_Int(1);
4108 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4109 once_value_14 = fra.me.REG[4];
4110 register_static_object(&once_value_14);
4111 } else fra.me.REG[4] = once_value_14;
4112 fra.me.REG[4] = fra.me.REG[4];
4113 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4114 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4115 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4116 } else {
4117 /* ./syntax//typing.nit:722 */
4118 REGB0 = TAG_Int(7);
4119 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4120 if (!once_value_15) {
4121 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4122 REGB0 = TAG_Int(16);
4123 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4124 once_value_15 = fra.me.REG[4];
4125 register_static_object(&once_value_15);
4126 } else fra.me.REG[4] = once_value_15;
4127 fra.me.REG[4] = fra.me.REG[4];
4128 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4129 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4130 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4132 if (!once_value_16) {
4133 fra.me.REG[4] = BOX_NativeString(" variables ");
4134 REGB0 = TAG_Int(11);
4135 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4136 once_value_16 = fra.me.REG[4];
4137 register_static_object(&once_value_16);
4138 } else fra.me.REG[4] = once_value_16;
4139 fra.me.REG[4] = fra.me.REG[4];
4140 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4141 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4142 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4143 if (!once_value_17) {
4144 fra.me.REG[4] = BOX_NativeString(", found ");
4145 REGB0 = TAG_Int(8);
4146 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4147 once_value_17 = fra.me.REG[4];
4148 register_static_object(&once_value_17);
4149 } else fra.me.REG[4] = once_value_17;
4150 fra.me.REG[4] = fra.me.REG[4];
4151 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4152 /* ./../lib/standard//collection//array.nit:23 */
4153 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4154 if (UNTAG_Bool(REGB0)) {
4155 } else {
4156 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4157 }
4158 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4159 /* ./syntax//typing.nit:722 */
4160 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4162 if (!once_value_18) {
4163 fra.me.REG[4] = BOX_NativeString(".");
4164 REGB0 = TAG_Int(1);
4165 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4166 once_value_18 = fra.me.REG[4];
4167 register_static_object(&once_value_18);
4168 } else fra.me.REG[4] = once_value_18;
4169 fra.me.REG[4] = fra.me.REG[4];
4170 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4171 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4172 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4173 }
4174 /* ./syntax//typing.nit:724 */
4175 goto label2;
4176 }
4177 /* ./syntax//typing.nit:728 */
4178 REGB0 = TAG_Int(0);
4179 /* ./../lib/standard//collection//array.nit:23 */
4180 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4181 if (UNTAG_Bool(REGB1)) {
4182 } else {
4183 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4184 }
4185 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4186 /* ./../lib/standard//kernel.nit:335 */
4187 while(1) {
4188 /* ./../lib/standard//kernel.nit:215 */
4189 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4190 /* ./../lib/standard//kernel.nit:335 */
4191 if (UNTAG_Bool(REGB2)) {
4192 /* ./syntax//typing.nit:728 */
4193 REGB2 = REGB0;
4194 /* ./../lib/standard//collection//array.nit:243 */
4195 fra.me.REG[5] = fra.me.REG[2];
4196 REGB3 = REGB2;
4197 /* ./../lib/standard//collection//array.nit:245 */
4198 REGB4 = TAG_Int(0);
4199 /* ./../lib/standard//kernel.nit:216 */
4200 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4201 /* ./../lib/standard//collection//array.nit:245 */
4202 if (UNTAG_Bool(REGB4)) {
4203 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4204 if (UNTAG_Bool(REGB4)) {
4205 } else {
4206 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
4207 }
4208 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4209 /* ./../lib/standard//kernel.nit:215 */
4210 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4211 } else {
4212 /* ./../lib/standard//collection//array.nit:245 */
4213 REGB5 = TAG_Bool(false);
4214 REGB4 = REGB5;
4215 }
4216 if (UNTAG_Bool(REGB4)) {
4217 } else {
4218 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 245);
4219 }
4220 /* ./../lib/standard//collection//array.nit:246 */
4221 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4222 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4223 if (UNTAG_Bool(REGB4)) {
4224 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
4225 }
4226 /* ./../lib/standard//collection//array.nit:654 */
4227 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4228 /* ./../lib/standard//collection//array.nit:246 */
4229 goto label19;
4230 label19: while(0);
4231 /* ./syntax//typing.nit:729 */
4232 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4233 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4234 if (UNTAG_Bool(REGB2)) {
4235 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 729);
4236 }
4237 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4238 /* ./../lib/standard//kernel.nit:337 */
4239 REGB2 = TAG_Int(1);
4240 /* ./../lib/standard//kernel.nit:218 */
4241 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4242 /* ./../lib/standard//kernel.nit:337 */
4243 REGB0 = REGB2;
4244 } else {
4245 /* ./../lib/standard//kernel.nit:335 */
4246 goto label20;
4247 }
4248 }
4249 label20: while(0);
4250 label2: while(0);
4251 stack_frame_head = fra.me.prev;
4252 return;
4253 }
4254 void OC_syntax___typing___AForExpr___do_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4255 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4256 fun_t CREG[1];
4257 val_t tmp;
4258 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4259 fra.me.file = LOCATE_syntax___typing;
4260 fra.me.line = 0;
4261 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4262 fra.me.has_broke = 0;
4263 fra.me.REG_size = 2;
4264 fra.me.REG[0] = NIT_NULL;
4265 fra.me.REG[1] = NIT_NULL;
4266 fra.me.closure_ctx = closctx_param;
4267 fra.me.closure_funs = CREG;
4268 fra.me.REG[0] = p0;
4269 CREG[0] = clos_fun0;
4270 /* ./syntax//typing.nit:680 */
4271 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4272 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4273 /* ./syntax//typing.nit:681 */
4274 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4275 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4276 /* ./syntax//typing.nit:682 */
4277 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4278 stack_frame_head = fra.me.prev;
4279 return;
4280 }
4281 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4282 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4283 val_t REGB0;
4284 val_t REGB1;
4285 val_t tmp;
4286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4287 fra.me.file = LOCATE_syntax___typing;
4288 fra.me.line = 735;
4289 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4290 fra.me.has_broke = 0;
4291 fra.me.REG_size = 4;
4292 fra.me.REG[0] = NIT_NULL;
4293 fra.me.REG[1] = NIT_NULL;
4294 fra.me.REG[2] = NIT_NULL;
4295 fra.me.REG[3] = NIT_NULL;
4296 fra.me.REG[0] = p0;
4297 fra.me.REG[1] = p1;
4298 /* ./syntax//typing.nit:738 */
4299 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4300 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4301 /* ./syntax//typing.nit:739 */
4302 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4303 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4304 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4305 /* ./syntax//typing.nit:742 */
4306 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4307 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4308 if (UNTAG_Bool(REGB0)) {
4309 } else {
4310 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4311 if (UNTAG_Bool(REGB1)) {
4312 REGB1 = TAG_Bool(false);
4313 REGB0 = REGB1;
4314 } else {
4315 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4316 REGB0 = REGB1;
4317 }
4318 }
4319 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4320 if (UNTAG_Bool(REGB0)) {
4321 /* ./syntax//typing.nit:743 */
4322 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4323 /* ./syntax//typing.nit:744 */
4324 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4325 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4326 /* ./syntax//typing.nit:745 */
4327 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4328 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4329 /* ./syntax//typing.nit:746 */
4330 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4331 }
4332 /* ./syntax//typing.nit:750 */
4333 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4334 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4335 /* ./syntax//typing.nit:751 */
4336 REGB0 = TAG_Bool(true);
4337 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4338 stack_frame_head = fra.me.prev;
4339 return;
4340 }
4341 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4342 struct {struct stack_frame_t me;} fra;
4343 val_t REGB0;
4344 val_t tmp;
4345 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4346 fra.me.file = LOCATE_syntax___typing;
4347 fra.me.line = 757;
4348 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4349 fra.me.has_broke = 0;
4350 fra.me.REG_size = 1;
4351 fra.me.REG[0] = NIT_NULL;
4352 fra.me.REG[0] = p0;
4353 /* ./syntax//typing.nit:757 */
4354 fra.me.REG[0] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[0]);
4355 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4356 if (UNTAG_Bool(REGB0)) {
4357 } else {
4358 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 757);
4359 }
4360 goto label1;
4361 label1: while(0);
4362 stack_frame_head = fra.me.prev;
4363 return fra.me.REG[0];
4364 }
4365 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4366 struct {struct stack_frame_t me;} fra;
4367 val_t tmp;
4368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4369 fra.me.file = LOCATE_syntax___typing;
4370 fra.me.line = 761;
4371 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4372 fra.me.has_broke = 0;
4373 fra.me.REG_size = 1;
4374 fra.me.REG[0] = NIT_NULL;
4375 fra.me.REG[0] = p0;
4376 /* ./syntax//typing.nit:761 */
4377 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4378 goto label1;
4379 label1: while(0);
4380 stack_frame_head = fra.me.prev;
4381 return fra.me.REG[0];
4382 }
4383 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4384 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4385 val_t REGB0;
4386 val_t REGB1;
4387 val_t tmp;
4388 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4389 fra.me.file = LOCATE_syntax___typing;
4390 fra.me.line = 763;
4391 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4392 fra.me.has_broke = 0;
4393 fra.me.REG_size = 4;
4394 fra.me.REG[0] = NIT_NULL;
4395 fra.me.REG[1] = NIT_NULL;
4396 fra.me.REG[2] = NIT_NULL;
4397 fra.me.REG[3] = NIT_NULL;
4398 fra.me.REG[0] = p0;
4399 fra.me.REG[1] = p1;
4400 /* ./syntax//typing.nit:765 */
4401 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4402 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4403 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4404 /* ./syntax//typing.nit:766 */
4405 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4406 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4407 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4408 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4409 /* ./syntax//typing.nit:767 */
4410 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4411 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4412 if (UNTAG_Bool(REGB0)) {
4413 } else {
4414 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4415 if (UNTAG_Bool(REGB1)) {
4416 REGB1 = TAG_Bool(false);
4417 REGB0 = REGB1;
4418 } else {
4419 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4420 REGB0 = REGB1;
4421 }
4422 }
4423 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4424 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4425 stack_frame_head = fra.me.prev;
4426 return;
4427 }
4428 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4429 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4430 val_t REGB0;
4431 val_t REGB1;
4432 val_t tmp;
4433 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4434 fra.me.file = LOCATE_syntax___typing;
4435 fra.me.line = 772;
4436 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4437 fra.me.has_broke = 0;
4438 fra.me.REG_size = 5;
4439 fra.me.REG[0] = NIT_NULL;
4440 fra.me.REG[1] = NIT_NULL;
4441 fra.me.REG[2] = NIT_NULL;
4442 fra.me.REG[3] = NIT_NULL;
4443 fra.me.REG[4] = NIT_NULL;
4444 fra.me.REG[0] = p0;
4445 fra.me.REG[1] = p1;
4446 /* ./syntax//typing.nit:774 */
4447 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4448 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4449 /* ./syntax//typing.nit:777 */
4450 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4451 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4452 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4453 /* ./syntax//typing.nit:778 */
4454 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4455 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4456 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4457 if (UNTAG_Bool(REGB0)) {
4458 goto label1;
4459 }
4460 /* ./syntax//typing.nit:779 */
4461 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4462 if (UNTAG_Bool(REGB0)) {
4463 } else {
4464 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4465 if (UNTAG_Bool(REGB1)) {
4466 REGB1 = TAG_Bool(false);
4467 REGB0 = REGB1;
4468 } else {
4469 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4470 REGB0 = REGB1;
4471 }
4472 }
4473 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4474 if (UNTAG_Bool(REGB0)) {
4475 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4476 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4477 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4478 } else {
4479 REGB1 = TAG_Bool(false);
4480 REGB0 = REGB1;
4481 }
4482 if (UNTAG_Bool(REGB0)) {
4483 goto label1;
4484 }
4485 /* ./syntax//typing.nit:782 */
4486 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4487 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4488 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4489 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4490 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
4491 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4492 /* ./syntax//typing.nit:784 */
4493 REGB0 = TAG_Bool(true);
4494 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4495 label1: while(0);
4496 stack_frame_head = fra.me.prev;
4497 return;
4498 }
4499 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4500 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4501 val_t REGB0;
4502 val_t REGB1;
4503 val_t tmp;
4504 static val_t once_value_2; /* Once value */
4505 static val_t once_value_3; /* Once value */
4506 static val_t once_value_4; /* Once value */
4507 static val_t once_value_5; /* Once value */
4508 static val_t once_value_6; /* Once value */
4509 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4510 fra.me.file = LOCATE_syntax___typing;
4511 fra.me.line = 789;
4512 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4513 fra.me.has_broke = 0;
4514 fra.me.REG_size = 8;
4515 fra.me.REG[0] = NIT_NULL;
4516 fra.me.REG[1] = NIT_NULL;
4517 fra.me.REG[2] = NIT_NULL;
4518 fra.me.REG[3] = NIT_NULL;
4519 fra.me.REG[4] = NIT_NULL;
4520 fra.me.REG[5] = NIT_NULL;
4521 fra.me.REG[6] = NIT_NULL;
4522 fra.me.REG[7] = NIT_NULL;
4523 fra.me.REG[0] = p0;
4524 fra.me.REG[1] = p1;
4525 fra.me.REG[2] = p2;
4526 /* ./syntax//typing.nit:794 */
4527 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4528 if (UNTAG_Bool(REGB0)) {
4529 } else {
4530 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4531 if (UNTAG_Bool(REGB1)) {
4532 REGB1 = TAG_Bool(false);
4533 REGB0 = REGB1;
4534 } else {
4535 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4536 REGB0 = REGB1;
4537 }
4538 }
4539 if (UNTAG_Bool(REGB0)) {
4540 /* ./syntax//typing.nit:795 */
4541 fra.me.REG[3] = NIT_NULL;
4542 goto label1;
4543 }
4544 /* ./syntax//typing.nit:797 */
4545 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4546 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4547 /* ./syntax//typing.nit:798 */
4548 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
4549 if (UNTAG_Bool(REGB0)) {
4550 /* ./syntax//typing.nit:799 */
4551 REGB0 = TAG_Int(3);
4552 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4553 if (!once_value_2) {
4554 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4555 REGB0 = TAG_Int(15);
4556 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4557 once_value_2 = fra.me.REG[6];
4558 register_static_object(&once_value_2);
4559 } else fra.me.REG[6] = once_value_2;
4560 fra.me.REG[6] = fra.me.REG[6];
4561 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4562 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4563 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4564 if (!once_value_3) {
4565 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4566 REGB0 = TAG_Int(17);
4567 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4568 once_value_3 = fra.me.REG[6];
4569 register_static_object(&once_value_3);
4570 } else fra.me.REG[6] = once_value_3;
4571 fra.me.REG[6] = fra.me.REG[6];
4572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4573 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4574 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4575 /* ./syntax//typing.nit:800 */
4576 fra.me.REG[3] = NIT_NULL;
4577 goto label1;
4578 }
4579 /* ./syntax//typing.nit:802 */
4580 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4581 if (UNTAG_Bool(REGB0)) {
4582 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 802);
4583 }
4584 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4585 /* ./syntax//typing.nit:803 */
4586 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4587 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4588 if (UNTAG_Bool(REGB0)) {
4589 /* ./syntax//typing.nit:804 */
4590 REGB0 = TAG_Int(5);
4591 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4592 if (!once_value_4) {
4593 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4594 REGB0 = TAG_Int(15);
4595 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4596 once_value_4 = fra.me.REG[7];
4597 register_static_object(&once_value_4);
4598 } else fra.me.REG[7] = once_value_4;
4599 fra.me.REG[7] = fra.me.REG[7];
4600 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4601 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4603 if (!once_value_5) {
4604 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4605 REGB0 = TAG_Int(20);
4606 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4607 once_value_5 = fra.me.REG[7];
4608 register_static_object(&once_value_5);
4609 } else fra.me.REG[7] = once_value_5;
4610 fra.me.REG[7] = fra.me.REG[7];
4611 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4612 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4613 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4614 if (!once_value_6) {
4615 fra.me.REG[7] = BOX_NativeString(".");
4616 REGB0 = TAG_Int(1);
4617 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4618 once_value_6 = fra.me.REG[7];
4619 register_static_object(&once_value_6);
4620 } else fra.me.REG[7] = once_value_6;
4621 fra.me.REG[7] = fra.me.REG[7];
4622 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4623 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4624 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4625 /* ./syntax//typing.nit:805 */
4626 fra.me.REG[3] = NIT_NULL;
4627 goto label1;
4628 }
4629 /* ./syntax//typing.nit:807 */
4630 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4631 /* ./syntax//typing.nit:808 */
4632 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4633 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4634 REGB0 = TAG_Bool(false);
4635 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0], fra.me.REG[6], REGB0);
4636 /* ./syntax//typing.nit:809 */
4637 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4638 /* ./syntax//typing.nit:810 */
4639 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4640 /* ./syntax//typing.nit:811 */
4641 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4642 REGB0 = TAG_Int(0);
4643 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4644 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4645 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4646 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4647 if (UNTAG_Bool(REGB0)) {
4648 fra.me.REG[3] = NIT_NULL;
4649 goto label1;
4650 }
4651 /* ./syntax//typing.nit:812 */
4652 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4653 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4654 if (UNTAG_Bool(REGB0)) {
4655 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 812);
4656 }
4657 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4658 fra.me.REG[3] = fra.me.REG[2];
4659 goto label1;
4660 label1: while(0);
4661 stack_frame_head = fra.me.prev;
4662 return fra.me.REG[3];
4663 }
4664 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
4665 struct {struct stack_frame_t me;} fra;
4666 val_t REGB0;
4667 val_t tmp;
4668 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4669 fra.me.file = LOCATE_syntax___typing;
4670 fra.me.line = 815;
4671 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
4672 fra.me.has_broke = 0;
4673 fra.me.REG_size = 1;
4674 fra.me.REG[0] = NIT_NULL;
4675 fra.me.REG[0] = p0;
4676 /* ./syntax//typing.nit:815 */
4677 fra.me.REG[0] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]);
4678 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4679 if (UNTAG_Bool(REGB0)) {
4680 } else {
4681 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 815);
4682 }
4683 goto label1;
4684 label1: while(0);
4685 stack_frame_head = fra.me.prev;
4686 return fra.me.REG[0];
4687 }
4688 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4689 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4690 val_t REGB0;
4691 val_t REGB1;
4692 val_t tmp;
4693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4694 fra.me.file = LOCATE_syntax___typing;
4695 fra.me.line = 820;
4696 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
4697 fra.me.has_broke = 0;
4698 fra.me.REG_size = 5;
4699 fra.me.REG[0] = NIT_NULL;
4700 fra.me.REG[1] = NIT_NULL;
4701 fra.me.REG[2] = NIT_NULL;
4702 fra.me.REG[3] = NIT_NULL;
4703 fra.me.REG[4] = NIT_NULL;
4704 fra.me.REG[0] = p0;
4705 fra.me.REG[1] = p1;
4706 /* ./syntax//typing.nit:822 */
4707 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4708 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4709 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4710 /* ./syntax//typing.nit:823 */
4711 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4712 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4713 /* ./syntax//typing.nit:824 */
4714 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4715 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4716 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4717 /* ./syntax//typing.nit:825 */
4718 fra.me.REG[2] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
4719 /* ./syntax//typing.nit:826 */
4720 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4721 if (UNTAG_Bool(REGB0)) {
4722 } else {
4723 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4724 if (UNTAG_Bool(REGB1)) {
4725 REGB1 = TAG_Bool(false);
4726 REGB0 = REGB1;
4727 } else {
4728 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4729 REGB0 = REGB1;
4730 }
4731 }
4732 if (UNTAG_Bool(REGB0)) {
4733 goto label1;
4734 }
4735 /* ./syntax//typing.nit:829 */
4736 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4737 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4738 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4739 /* ./syntax//typing.nit:830 */
4740 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4741 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4742 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4743 if (UNTAG_Bool(REGB0)) {
4744 goto label1;
4745 }
4746 /* ./syntax//typing.nit:831 */
4747 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4748 if (UNTAG_Bool(REGB0)) {
4749 } else {
4750 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4751 if (UNTAG_Bool(REGB1)) {
4752 REGB1 = TAG_Bool(false);
4753 REGB0 = REGB1;
4754 } else {
4755 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4756 REGB0 = REGB1;
4757 }
4758 }
4759 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4760 if (UNTAG_Bool(REGB0)) {
4761 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4762 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
4763 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4764 } else {
4765 REGB1 = TAG_Bool(false);
4766 REGB0 = REGB1;
4767 }
4768 if (UNTAG_Bool(REGB0)) {
4769 goto label1;
4770 }
4771 /* ./syntax//typing.nit:834 */
4772 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4773 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4774 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
4775 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4776 /* ./syntax//typing.nit:836 */
4777 REGB0 = TAG_Bool(true);
4778 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4779 label1: while(0);
4780 stack_frame_head = fra.me.prev;
4781 return;
4782 }
4783 val_t syntax___typing___AAssignOp___method_name(val_t p0){
4784 struct {struct stack_frame_t me;} fra;
4785 val_t tmp;
4786 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4787 fra.me.file = LOCATE_syntax___typing;
4788 fra.me.line = 841;
4789 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
4790 fra.me.has_broke = 0;
4791 fra.me.REG_size = 0;
4792 /* ./syntax//typing.nit:841 */
4793 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 841);
4794 stack_frame_head = fra.me.prev;
4795 return NIT_NULL;
4796 }
4797 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
4798 struct {struct stack_frame_t me;} fra;
4799 val_t REGB0;
4800 val_t tmp;
4801 static val_t once_value_1; /* Once value */
4802 static val_t once_value_2; /* Once value */
4803 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4804 fra.me.file = LOCATE_syntax___typing;
4805 fra.me.line = 844;
4806 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
4807 fra.me.has_broke = 0;
4808 fra.me.REG_size = 1;
4809 fra.me.REG[0] = NIT_NULL;
4810 fra.me.REG[0] = p0;
4811 /* ./syntax//typing.nit:844 */
4812 if (!once_value_1) {
4813 if (!once_value_2) {
4814 fra.me.REG[0] = BOX_NativeString("+");
4815 REGB0 = TAG_Int(1);
4816 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4817 once_value_2 = fra.me.REG[0];
4818 register_static_object(&once_value_2);
4819 } else fra.me.REG[0] = once_value_2;
4820 fra.me.REG[0] = fra.me.REG[0];
4821 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4822 once_value_1 = fra.me.REG[0];
4823 register_static_object(&once_value_1);
4824 } else fra.me.REG[0] = once_value_1;
4825 fra.me.REG[0] = fra.me.REG[0];
4826 goto label3;
4827 label3: while(0);
4828 stack_frame_head = fra.me.prev;
4829 return fra.me.REG[0];
4830 }
4831 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
4832 struct {struct stack_frame_t me;} fra;
4833 val_t REGB0;
4834 val_t tmp;
4835 static val_t once_value_1; /* Once value */
4836 static val_t once_value_2; /* Once value */
4837 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4838 fra.me.file = LOCATE_syntax___typing;
4839 fra.me.line = 847;
4840 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
4841 fra.me.has_broke = 0;
4842 fra.me.REG_size = 1;
4843 fra.me.REG[0] = NIT_NULL;
4844 fra.me.REG[0] = p0;
4845 /* ./syntax//typing.nit:847 */
4846 if (!once_value_1) {
4847 if (!once_value_2) {
4848 fra.me.REG[0] = BOX_NativeString("-");
4849 REGB0 = TAG_Int(1);
4850 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4851 once_value_2 = fra.me.REG[0];
4852 register_static_object(&once_value_2);
4853 } else fra.me.REG[0] = once_value_2;
4854 fra.me.REG[0] = fra.me.REG[0];
4855 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4856 once_value_1 = fra.me.REG[0];
4857 register_static_object(&once_value_1);
4858 } else fra.me.REG[0] = once_value_1;
4859 fra.me.REG[0] = fra.me.REG[0];
4860 goto label3;
4861 label3: while(0);
4862 stack_frame_head = fra.me.prev;
4863 return fra.me.REG[0];
4864 }
4865 val_t syntax___typing___ASelfExpr___variable(val_t p0){
4866 struct {struct stack_frame_t me;} fra;
4867 val_t REGB0;
4868 val_t tmp;
4869 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4870 fra.me.file = LOCATE_syntax___typing;
4871 fra.me.line = 852;
4872 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
4873 fra.me.has_broke = 0;
4874 fra.me.REG_size = 1;
4875 fra.me.REG[0] = NIT_NULL;
4876 fra.me.REG[0] = p0;
4877 /* ./syntax//typing.nit:852 */
4878 fra.me.REG[0] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]);
4879 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
4880 if (UNTAG_Bool(REGB0)) {
4881 } else {
4882 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 852);
4883 }
4884 goto label1;
4885 label1: while(0);
4886 stack_frame_head = fra.me.prev;
4887 return fra.me.REG[0];
4888 }
4889 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
4890 struct {struct stack_frame_t me;} fra;
4891 val_t tmp;
4892 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4893 fra.me.file = LOCATE_syntax___typing;
4894 fra.me.line = 854;
4895 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
4896 fra.me.has_broke = 0;
4897 fra.me.REG_size = 1;
4898 fra.me.REG[0] = NIT_NULL;
4899 fra.me.REG[0] = p0;
4900 /* ./syntax//typing.nit:854 */
4901 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4902 goto label1;
4903 label1: while(0);
4904 stack_frame_head = fra.me.prev;
4905 return fra.me.REG[0];
4906 }
4907 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
4908 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4909 val_t REGB0;
4910 val_t tmp;
4911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4912 fra.me.file = LOCATE_syntax___typing;
4913 fra.me.line = 856;
4914 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
4915 fra.me.has_broke = 0;
4916 fra.me.REG_size = 3;
4917 fra.me.REG[0] = NIT_NULL;
4918 fra.me.REG[1] = NIT_NULL;
4919 fra.me.REG[2] = NIT_NULL;
4920 fra.me.REG[0] = p0;
4921 fra.me.REG[1] = p1;
4922 /* ./syntax//typing.nit:858 */
4923 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
4924 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
4925 /* ./syntax//typing.nit:859 */
4926 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4927 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4928 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4929 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
4930 /* ./syntax//typing.nit:860 */
4931 REGB0 = TAG_Bool(true);
4932 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4933 stack_frame_head = fra.me.prev;
4934 return;
4935 }
4936 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
4937 struct {struct stack_frame_t me;} fra;
4938 val_t REGB0;
4939 val_t tmp;
4940 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4941 fra.me.file = LOCATE_syntax___typing;
4942 fra.me.line = 863;
4943 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
4944 fra.me.has_broke = 0;
4945 fra.me.REG_size = 1;
4946 fra.me.REG[0] = NIT_NULL;
4947 fra.me.REG[0] = p0;
4948 /* ./syntax//typing.nit:863 */
4949 REGB0 = TAG_Bool(true);
4950 goto label1;
4951 label1: while(0);
4952 stack_frame_head = fra.me.prev;
4953 return REGB0;
4954 }
4955 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
4956 struct {struct stack_frame_t me;} fra;
4957 val_t REGB0;
4958 val_t tmp;
4959 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4960 fra.me.file = LOCATE_syntax___typing;
4961 fra.me.line = 867;
4962 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
4963 fra.me.has_broke = 0;
4964 fra.me.REG_size = 1;
4965 fra.me.REG[0] = NIT_NULL;
4966 fra.me.REG[0] = p0;
4967 /* ./syntax//typing.nit:867 */
4968 REGB0 = TAG_Bool(true);
4969 goto label1;
4970 label1: while(0);
4971 stack_frame_head = fra.me.prev;
4972 return REGB0;
4973 }
4974 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
4975 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4976 val_t REGB0;
4977 val_t REGB1;
4978 val_t tmp;
4979 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4980 fra.me.file = LOCATE_syntax___typing;
4981 fra.me.line = 871;
4982 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
4983 fra.me.has_broke = 0;
4984 fra.me.REG_size = 5;
4985 fra.me.REG[0] = NIT_NULL;
4986 fra.me.REG[1] = NIT_NULL;
4987 fra.me.REG[2] = NIT_NULL;
4988 fra.me.REG[3] = NIT_NULL;
4989 fra.me.REG[4] = NIT_NULL;
4990 fra.me.REG[0] = p0;
4991 fra.me.REG[1] = p1;
4992 /* ./syntax//typing.nit:873 */
4993 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4994 /* ./syntax//typing.nit:876 */
4995 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4996 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4997 /* ./syntax//typing.nit:877 */
4998 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4999 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5000 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5001 /* ./syntax//typing.nit:880 */
5002 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5003 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5004 /* ./syntax//typing.nit:883 */
5005 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5006 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5007 /* ./syntax//typing.nit:886 */
5008 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5009 /* ./syntax//typing.nit:889 */
5010 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5011 /* ./syntax//typing.nit:890 */
5012 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5013 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5014 /* ./syntax//typing.nit:893 */
5015 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5016 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5017 /* ./syntax//typing.nit:896 */
5018 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5019 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5020 fra.me.REG[3] = CALL_syntax___flow___FlowContext___merge_reash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
5021 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5022 /* ./syntax//typing.nit:898 */
5023 REGB0 = TAG_Int(2);
5024 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5025 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5026 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5027 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5028 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5029 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[3]);
5030 /* ./syntax//typing.nit:899 */
5031 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5032 if (UNTAG_Bool(REGB0)) {
5033 } else {
5034 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5035 if (UNTAG_Bool(REGB1)) {
5036 REGB1 = TAG_Bool(false);
5037 REGB0 = REGB1;
5038 } else {
5039 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5040 REGB0 = REGB1;
5041 }
5042 }
5043 if (UNTAG_Bool(REGB0)) {
5044 goto label1;
5045 }
5046 /* ./syntax//typing.nit:901 */
5047 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5048 /* ./syntax//typing.nit:902 */
5049 REGB0 = TAG_Bool(true);
5050 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5051 label1: while(0);
5052 stack_frame_head = fra.me.prev;
5053 return;
5054 }
5055 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5056 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5057 val_t REGB0;
5058 val_t tmp;
5059 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5060 fra.me.file = LOCATE_syntax___typing;
5061 fra.me.line = 907;
5062 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5063 fra.me.has_broke = 0;
5064 fra.me.REG_size = 2;
5065 fra.me.REG[0] = NIT_NULL;
5066 fra.me.REG[1] = NIT_NULL;
5067 fra.me.REG[0] = p0;
5068 fra.me.REG[1] = p1;
5069 /* ./syntax//typing.nit:909 */
5070 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5071 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5072 /* ./syntax//typing.nit:910 */
5073 REGB0 = TAG_Bool(true);
5074 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5075 stack_frame_head = fra.me.prev;
5076 return;
5077 }
5078 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5079 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5080 val_t REGB0;
5081 val_t REGB1;
5082 val_t tmp;
5083 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5084 fra.me.file = LOCATE_syntax___typing;
5085 fra.me.line = 915;
5086 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5087 fra.me.has_broke = 0;
5088 fra.me.REG_size = 5;
5089 fra.me.REG[0] = NIT_NULL;
5090 fra.me.REG[1] = NIT_NULL;
5091 fra.me.REG[2] = NIT_NULL;
5092 fra.me.REG[3] = NIT_NULL;
5093 fra.me.REG[4] = NIT_NULL;
5094 fra.me.REG[0] = p0;
5095 fra.me.REG[1] = p1;
5096 /* ./syntax//typing.nit:917 */
5097 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5098 /* ./syntax//typing.nit:918 */
5099 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5100 /* ./syntax//typing.nit:919 */
5101 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5102 /* ./syntax//typing.nit:922 */
5103 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5104 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5105 /* ./syntax//typing.nit:925 */
5106 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5107 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5108 /* ./syntax//typing.nit:928 */
5109 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5110 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5111 /* ./syntax//typing.nit:929 */
5112 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5113 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5114 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5115 if (UNTAG_Bool(REGB0)) {
5116 } else {
5117 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5118 if (UNTAG_Bool(REGB1)) {
5119 REGB1 = TAG_Bool(false);
5120 REGB0 = REGB1;
5121 } else {
5122 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5123 REGB0 = REGB1;
5124 }
5125 }
5126 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5127 if (UNTAG_Bool(REGB0)) {
5128 /* ./syntax//typing.nit:930 */
5129 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5130 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5131 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5132 } else {
5133 /* ./syntax//typing.nit:932 */
5134 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5135 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5136 }
5137 /* ./syntax//typing.nit:935 */
5138 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5139 /* ./syntax//typing.nit:937 */
5140 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5141 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5142 /* ./syntax//typing.nit:938 */
5143 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5144 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5145 /* ./syntax//typing.nit:939 */
5146 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5147 /* ./syntax//typing.nit:940 */
5148 REGB0 = TAG_Bool(true);
5149 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5150 stack_frame_head = fra.me.prev;
5151 return;
5152 }
5153 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5154 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5155 val_t REGB0;
5156 val_t REGB1;
5157 val_t tmp;
5158 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5159 fra.me.file = LOCATE_syntax___typing;
5160 fra.me.line = 945;
5161 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5162 fra.me.has_broke = 0;
5163 fra.me.REG_size = 5;
5164 fra.me.REG[0] = NIT_NULL;
5165 fra.me.REG[1] = NIT_NULL;
5166 fra.me.REG[2] = NIT_NULL;
5167 fra.me.REG[3] = NIT_NULL;
5168 fra.me.REG[4] = NIT_NULL;
5169 fra.me.REG[0] = p0;
5170 fra.me.REG[1] = p1;
5171 /* ./syntax//typing.nit:947 */
5172 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5173 /* ./syntax//typing.nit:948 */
5174 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5175 /* ./syntax//typing.nit:951 */
5176 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5177 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5178 /* ./syntax//typing.nit:954 */
5179 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5180 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5181 /* ./syntax//typing.nit:957 */
5182 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5183 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5184 /* ./syntax//typing.nit:958 */
5185 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5186 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5187 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5188 if (UNTAG_Bool(REGB0)) {
5189 } else {
5190 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5191 if (UNTAG_Bool(REGB1)) {
5192 REGB1 = TAG_Bool(false);
5193 REGB0 = REGB1;
5194 } else {
5195 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5196 REGB0 = REGB1;
5197 }
5198 }
5199 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5200 if (UNTAG_Bool(REGB0)) {
5201 /* ./syntax//typing.nit:959 */
5202 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5203 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5204 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5205 } else {
5206 /* ./syntax//typing.nit:961 */
5207 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5208 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5209 }
5210 /* ./syntax//typing.nit:964 */
5211 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5212 /* ./syntax//typing.nit:966 */
5213 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5214 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5215 /* ./syntax//typing.nit:967 */
5216 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5217 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5218 /* ./syntax//typing.nit:968 */
5219 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5220 /* ./syntax//typing.nit:969 */
5221 REGB0 = TAG_Bool(true);
5222 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5223 stack_frame_head = fra.me.prev;
5224 return;
5225 }
5226 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5227 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5228 val_t REGB0;
5229 val_t tmp;
5230 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5231 fra.me.file = LOCATE_syntax___typing;
5232 fra.me.line = 974;
5233 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5234 fra.me.has_broke = 0;
5235 fra.me.REG_size = 4;
5236 fra.me.REG[0] = NIT_NULL;
5237 fra.me.REG[1] = NIT_NULL;
5238 fra.me.REG[2] = NIT_NULL;
5239 fra.me.REG[3] = NIT_NULL;
5240 fra.me.REG[0] = p0;
5241 fra.me.REG[1] = p1;
5242 /* ./syntax//typing.nit:976 */
5243 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5244 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5245 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5246 /* ./syntax//typing.nit:979 */
5247 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5248 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5249 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5250 /* ./syntax//typing.nit:980 */
5251 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5252 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5253 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5254 /* ./syntax//typing.nit:982 */
5255 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5256 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5257 /* ./syntax//typing.nit:983 */
5258 REGB0 = TAG_Bool(true);
5259 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5260 stack_frame_head = fra.me.prev;
5261 return;
5262 }
5263 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5264 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5265 val_t REGB0;
5266 val_t REGB1;
5267 val_t tmp;
5268 static val_t once_value_1; /* Once value */
5269 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5270 fra.me.file = LOCATE_syntax___typing;
5271 fra.me.line = 988;
5272 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5273 fra.me.has_broke = 0;
5274 fra.me.REG_size = 7;
5275 fra.me.REG[0] = NIT_NULL;
5276 fra.me.REG[1] = NIT_NULL;
5277 fra.me.REG[2] = NIT_NULL;
5278 fra.me.REG[3] = NIT_NULL;
5279 fra.me.REG[4] = NIT_NULL;
5280 fra.me.REG[5] = NIT_NULL;
5281 fra.me.REG[6] = NIT_NULL;
5282 fra.me.REG[0] = p0;
5283 fra.me.REG[1] = p1;
5284 /* ./syntax//typing.nit:990 */
5285 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5286 /* ./syntax//typing.nit:993 */
5287 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5288 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5289 /* ./syntax//typing.nit:994 */
5290 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5291 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5292 /* ./syntax//typing.nit:997 */
5293 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5294 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5295 /* ./syntax//typing.nit:998 */
5296 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5297 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5298 if (UNTAG_Bool(REGB0)) {
5299 /* ./syntax//typing.nit:999 */
5300 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5301 if (!once_value_1) {
5302 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
5303 REGB0 = TAG_Int(60);
5304 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5305 once_value_1 = fra.me.REG[5];
5306 register_static_object(&once_value_1);
5307 } else fra.me.REG[5] = once_value_1;
5308 fra.me.REG[5] = fra.me.REG[5];
5309 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5310 } else {
5311 /* ./syntax//typing.nit:1001 */
5312 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5313 fra.me.REG[3] = fra.me.REG[5];
5314 }
5315 /* ./syntax//typing.nit:1005 */
5316 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5317 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5318 /* ./syntax//typing.nit:1006 */
5319 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5320 if (UNTAG_Bool(REGB0)) {
5321 } else {
5322 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5323 if (UNTAG_Bool(REGB1)) {
5324 REGB1 = TAG_Bool(false);
5325 REGB0 = REGB1;
5326 } else {
5327 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5328 REGB0 = REGB1;
5329 }
5330 }
5331 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5332 if (UNTAG_Bool(REGB0)) {
5333 /* ./syntax//typing.nit:1007 */
5334 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5335 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5336 CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[5], fra.me.REG[6]);
5337 }
5338 /* ./syntax//typing.nit:1011 */
5339 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5340 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5341 /* ./syntax//typing.nit:1012 */
5342 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5343 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5344 /* ./syntax//typing.nit:1015 */
5345 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5346 /* ./syntax//typing.nit:1018 */
5347 REGB0 = TAG_Int(1);
5348 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5349 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5350 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5351 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
5352 /* ./syntax//typing.nit:1019 */
5353 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5354 if (UNTAG_Bool(REGB0)) {
5355 } else {
5356 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5357 if (UNTAG_Bool(REGB1)) {
5358 REGB1 = TAG_Bool(false);
5359 REGB0 = REGB1;
5360 } else {
5361 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5362 REGB0 = REGB1;
5363 }
5364 }
5365 if (UNTAG_Bool(REGB0)) {
5366 goto label2;
5367 }
5368 /* ./syntax//typing.nit:1021 */
5369 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5370 /* ./syntax//typing.nit:1022 */
5371 REGB0 = TAG_Bool(true);
5372 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5373 label2: while(0);
5374 stack_frame_head = fra.me.prev;
5375 return;
5376 }
5377 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5378 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5379 val_t REGB0;
5380 val_t tmp;
5381 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5382 fra.me.file = LOCATE_syntax___typing;
5383 fra.me.line = 1027;
5384 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5385 fra.me.has_broke = 0;
5386 fra.me.REG_size = 2;
5387 fra.me.REG[0] = NIT_NULL;
5388 fra.me.REG[1] = NIT_NULL;
5389 fra.me.REG[0] = p0;
5390 fra.me.REG[1] = p1;
5391 /* ./syntax//typing.nit:1029 */
5392 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5393 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5394 /* ./syntax//typing.nit:1030 */
5395 REGB0 = TAG_Bool(true);
5396 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5397 stack_frame_head = fra.me.prev;
5398 return;
5399 }
5400 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5401 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5402 val_t REGB0;
5403 val_t tmp;
5404 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5405 fra.me.file = LOCATE_syntax___typing;
5406 fra.me.line = 1035;
5407 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5408 fra.me.has_broke = 0;
5409 fra.me.REG_size = 2;
5410 fra.me.REG[0] = NIT_NULL;
5411 fra.me.REG[1] = NIT_NULL;
5412 fra.me.REG[0] = p0;
5413 fra.me.REG[1] = p1;
5414 /* ./syntax//typing.nit:1037 */
5415 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5416 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5417 /* ./syntax//typing.nit:1038 */
5418 REGB0 = TAG_Bool(true);
5419 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5420 stack_frame_head = fra.me.prev;
5421 return;
5422 }
5423 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5424 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5425 val_t REGB0;
5426 val_t tmp;
5427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5428 fra.me.file = LOCATE_syntax___typing;
5429 fra.me.line = 1043;
5430 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5431 fra.me.has_broke = 0;
5432 fra.me.REG_size = 2;
5433 fra.me.REG[0] = NIT_NULL;
5434 fra.me.REG[1] = NIT_NULL;
5435 fra.me.REG[0] = p0;
5436 fra.me.REG[1] = p1;
5437 /* ./syntax//typing.nit:1045 */
5438 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5439 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5440 /* ./syntax//typing.nit:1046 */
5441 REGB0 = TAG_Bool(true);
5442 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5443 stack_frame_head = fra.me.prev;
5444 return;
5445 }
5446 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5447 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5448 val_t REGB0;
5449 val_t tmp;
5450 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5451 fra.me.file = LOCATE_syntax___typing;
5452 fra.me.line = 1051;
5453 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5454 fra.me.has_broke = 0;
5455 fra.me.REG_size = 2;
5456 fra.me.REG[0] = NIT_NULL;
5457 fra.me.REG[1] = NIT_NULL;
5458 fra.me.REG[0] = p0;
5459 fra.me.REG[1] = p1;
5460 /* ./syntax//typing.nit:1053 */
5461 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5462 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5463 /* ./syntax//typing.nit:1054 */
5464 REGB0 = TAG_Bool(true);
5465 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5466 stack_frame_head = fra.me.prev;
5467 return;
5468 }
5469 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5470 struct {struct stack_frame_t me;} fra;
5471 val_t REGB0;
5472 val_t tmp;
5473 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5474 fra.me.file = LOCATE_syntax___typing;
5475 fra.me.line = 1059;
5476 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5477 fra.me.has_broke = 0;
5478 fra.me.REG_size = 1;
5479 fra.me.REG[0] = NIT_NULL;
5480 fra.me.REG[0] = p0;
5481 /* ./syntax//typing.nit:1059 */
5482 fra.me.REG[0] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]);
5483 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
5484 if (UNTAG_Bool(REGB0)) {
5485 } else {
5486 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1059);
5487 }
5488 goto label1;
5489 label1: while(0);
5490 stack_frame_head = fra.me.prev;
5491 return fra.me.REG[0];
5492 }
5493 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5494 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5495 val_t REGB0;
5496 val_t tmp;
5497 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5498 fra.me.file = LOCATE_syntax___typing;
5499 fra.me.line = 1061;
5500 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5501 fra.me.has_broke = 0;
5502 fra.me.REG_size = 5;
5503 fra.me.REG[0] = NIT_NULL;
5504 fra.me.REG[1] = NIT_NULL;
5505 fra.me.REG[2] = NIT_NULL;
5506 fra.me.REG[3] = NIT_NULL;
5507 fra.me.REG[4] = NIT_NULL;
5508 fra.me.REG[0] = p0;
5509 fra.me.REG[1] = p1;
5510 /* ./syntax//typing.nit:1063 */
5511 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5512 /* ./syntax//typing.nit:1064 */
5513 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5514 /* ./syntax//typing.nit:1065 */
5515 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5516 /* ./syntax//typing.nit:1066 */
5517 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5518 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___typing___ASuperstringExpr___after_typing_1));
5519 /* ./syntax//typing.nit:1067 */
5520 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5521 /* ./syntax//typing.nit:1068 */
5522 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5523 /* ./syntax//typing.nit:1069 */
5524 REGB0 = TAG_Bool(true);
5525 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5526 stack_frame_head = fra.me.prev;
5527 return;
5528 }
5529 void OC_syntax___typing___ASuperstringExpr___after_typing_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
5530 struct {struct stack_frame_t me;} fra;
5531 fun_t CREG[1];
5532 val_t tmp;
5533 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5534 fra.me.file = LOCATE_syntax___typing;
5535 fra.me.line = 0;
5536 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5537 fra.me.has_broke = 0;
5538 fra.me.REG_size = 1;
5539 fra.me.REG[0] = NIT_NULL;
5540 fra.me.closure_ctx = closctx_param;
5541 fra.me.closure_funs = CREG;
5542 fra.me.REG[0] = p0;
5543 CREG[0] = clos_fun0;
5544 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5545 stack_frame_head = fra.me.prev;
5546 return;
5547 }
5548 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
5549 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5550 val_t REGB0;
5551 val_t tmp;
5552 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5553 fra.me.file = LOCATE_syntax___typing;
5554 fra.me.line = 1074;
5555 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
5556 fra.me.has_broke = 0;
5557 fra.me.REG_size = 2;
5558 fra.me.REG[0] = NIT_NULL;
5559 fra.me.REG[1] = NIT_NULL;
5560 fra.me.REG[0] = p0;
5561 fra.me.REG[1] = p1;
5562 /* ./syntax//typing.nit:1076 */
5563 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5564 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5565 /* ./syntax//typing.nit:1077 */
5566 REGB0 = TAG_Bool(true);
5567 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5568 stack_frame_head = fra.me.prev;
5569 return;
5570 }
5571 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5572 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5573 val_t REGB0;
5574 val_t REGB1;
5575 val_t tmp;
5576 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5577 fra.me.file = LOCATE_syntax___typing;
5578 fra.me.line = 1082;
5579 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
5580 fra.me.has_broke = 0;
5581 fra.me.REG_size = 3;
5582 fra.me.REG[0] = NIT_NULL;
5583 fra.me.REG[1] = NIT_NULL;
5584 fra.me.REG[2] = NIT_NULL;
5585 fra.me.REG[0] = p0;
5586 fra.me.REG[1] = p1;
5587 /* ./syntax//typing.nit:1084 */
5588 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5589 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[2]);
5590 /* ./syntax//typing.nit:1085 */
5591 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5592 if (UNTAG_Bool(REGB0)) {
5593 } else {
5594 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5595 if (UNTAG_Bool(REGB1)) {
5596 REGB1 = TAG_Bool(false);
5597 REGB0 = REGB1;
5598 } else {
5599 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5600 REGB0 = REGB1;
5601 }
5602 }
5603 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5604 if (UNTAG_Bool(REGB0)) {
5605 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5606 }
5607 stack_frame_head = fra.me.prev;
5608 return;
5609 }
5610 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5611 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5612 val_t REGB0;
5613 val_t tmp;
5614 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5615 fra.me.file = LOCATE_syntax___typing;
5616 fra.me.line = 1088;
5617 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
5618 fra.me.has_broke = 0;
5619 fra.me.REG_size = 3;
5620 fra.me.REG[0] = NIT_NULL;
5621 fra.me.REG[1] = NIT_NULL;
5622 fra.me.REG[2] = NIT_NULL;
5623 fra.me.REG[0] = p0;
5624 fra.me.REG[1] = p1;
5625 fra.me.REG[2] = p2;
5626 /* ./syntax//typing.nit:1090 */
5627 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5628 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5629 /* ./syntax//typing.nit:1091 */
5630 REGB0 = TAG_Bool(true);
5631 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5632 stack_frame_head = fra.me.prev;
5633 return;
5634 }
5635 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5636 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5637 val_t REGB0;
5638 val_t REGB1;
5639 val_t tmp;
5640 static val_t once_value_2; /* Once value */
5641 static val_t once_value_3; /* Once value */
5642 static val_t once_value_4; /* Once value */
5643 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5644 fra.me.file = LOCATE_syntax___typing;
5645 fra.me.line = 1096;
5646 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
5647 fra.me.has_broke = 0;
5648 fra.me.REG_size = 6;
5649 fra.me.REG[0] = NIT_NULL;
5650 fra.me.REG[1] = NIT_NULL;
5651 fra.me.REG[2] = NIT_NULL;
5652 fra.me.REG[3] = NIT_NULL;
5653 fra.me.REG[4] = NIT_NULL;
5654 fra.me.REG[5] = NIT_NULL;
5655 fra.me.REG[0] = p0;
5656 fra.me.REG[1] = p1;
5657 /* ./syntax//typing.nit:1098 */
5658 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5659 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5660 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5661 if (UNTAG_Bool(REGB0)) {
5662 REGB0 = TAG_Bool(true);
5663 } else {
5664 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5665 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5666 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5667 REGB0 = REGB1;
5668 }
5669 if (UNTAG_Bool(REGB0)) {
5670 goto label1;
5671 }
5672 /* ./syntax//typing.nit:1099 */
5673 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5674 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5675 /* ./syntax//typing.nit:1100 */
5676 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5677 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5678 /* ./syntax//typing.nit:1101 */
5679 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5680 if (UNTAG_Bool(REGB0)) {
5681 /* ./syntax//typing.nit:1102 */
5682 fra.me.REG[2] = fra.me.REG[3];
5683 } else {
5684 /* ./syntax//typing.nit:1103 */
5685 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5686 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5687 if (UNTAG_Bool(REGB0)) {
5688 /* ./syntax//typing.nit:1104 */
5689 REGB0 = TAG_Int(5);
5690 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5691 if (!once_value_2) {
5692 fra.me.REG[5] = BOX_NativeString("Type error: ");
5693 REGB0 = TAG_Int(12);
5694 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5695 once_value_2 = fra.me.REG[5];
5696 register_static_object(&once_value_2);
5697 } else fra.me.REG[5] = once_value_2;
5698 fra.me.REG[5] = fra.me.REG[5];
5699 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5700 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5701 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5702 if (!once_value_3) {
5703 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5704 REGB0 = TAG_Int(19);
5705 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5706 once_value_3 = fra.me.REG[5];
5707 register_static_object(&once_value_3);
5708 } else fra.me.REG[5] = once_value_3;
5709 fra.me.REG[5] = fra.me.REG[5];
5710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5711 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5713 if (!once_value_4) {
5714 fra.me.REG[3] = BOX_NativeString(".");
5715 REGB0 = TAG_Int(1);
5716 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5717 once_value_4 = fra.me.REG[3];
5718 register_static_object(&once_value_4);
5719 } else fra.me.REG[3] = once_value_4;
5720 fra.me.REG[3] = fra.me.REG[3];
5721 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5722 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5723 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5724 /* ./syntax//typing.nit:1105 */
5725 goto label1;
5726 }
5727 }
5728 /* ./syntax//typing.nit:1107 */
5729 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5730 /* ./syntax//typing.nit:1108 */
5731 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5732 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5733 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5734 if (UNTAG_Bool(REGB0)) {
5735 REGB0 = TAG_Bool(true);
5736 } else {
5737 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5738 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5739 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5740 REGB0 = REGB1;
5741 }
5742 if (UNTAG_Bool(REGB0)) {
5743 goto label1;
5744 }
5745 /* ./syntax//typing.nit:1109 */
5746 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5747 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5748 /* ./syntax//typing.nit:1110 */
5749 REGB0 = TAG_Bool(true);
5750 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5751 label1: while(0);
5752 stack_frame_head = fra.me.prev;
5753 return;
5754 }
5755 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
5756 struct {struct stack_frame_t me;} fra;
5757 val_t tmp;
5758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5759 fra.me.file = LOCATE_syntax___typing;
5760 fra.me.line = 1115;
5761 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
5762 fra.me.has_broke = 0;
5763 fra.me.REG_size = 1;
5764 fra.me.REG[0] = NIT_NULL;
5765 fra.me.REG[0] = p0;
5766 /* ./syntax//typing.nit:1115 */
5767 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
5768 stack_frame_head = fra.me.prev;
5769 return fra.me.REG[0];
5770 }
5771 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
5772 struct {struct stack_frame_t me;} fra;
5773 val_t tmp;
5774 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5775 fra.me.file = LOCATE_syntax___typing;
5776 fra.me.line = 1116;
5777 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
5778 fra.me.has_broke = 0;
5779 fra.me.REG_size = 1;
5780 fra.me.REG[0] = NIT_NULL;
5781 fra.me.REG[0] = p0;
5782 /* ./syntax//typing.nit:1116 */
5783 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5784 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5785 goto label1;
5786 label1: while(0);
5787 stack_frame_head = fra.me.prev;
5788 return fra.me.REG[0];
5789 }
5790 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
5791 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
5792 val_t REGB0;
5793 val_t REGB1;
5794 val_t REGB2;
5795 val_t tmp;
5796 static val_t once_value_1; /* Once value */
5797 static val_t once_value_2; /* Once value */
5798 static val_t once_value_3; /* Once value */
5799 static val_t once_value_5; /* Once value */
5800 static val_t once_value_6; /* Once value */
5801 static val_t once_value_8; /* Once value */
5802 static val_t once_value_9; /* Once value */
5803 static val_t once_value_10; /* Once value */
5804 static val_t once_value_11; /* Once value */
5805 static val_t once_value_12; /* Once value */
5806 static val_t once_value_13; /* Once value */
5807 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5808 fra.me.file = LOCATE_syntax___typing;
5809 fra.me.line = 1117;
5810 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
5811 fra.me.has_broke = 0;
5812 fra.me.REG_size = 9;
5813 fra.me.REG[0] = NIT_NULL;
5814 fra.me.REG[1] = NIT_NULL;
5815 fra.me.REG[2] = NIT_NULL;
5816 fra.me.REG[3] = NIT_NULL;
5817 fra.me.REG[4] = NIT_NULL;
5818 fra.me.REG[5] = NIT_NULL;
5819 fra.me.REG[6] = NIT_NULL;
5820 fra.me.REG[7] = NIT_NULL;
5821 fra.me.REG[8] = NIT_NULL;
5822 fra.me.REG[0] = p0;
5823 fra.me.REG[1] = p1;
5824 /* ./syntax//typing.nit:1119 */
5825 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5826 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
5827 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
5828 /* ./syntax//typing.nit:1120 */
5829 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5830 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5831 if (UNTAG_Bool(REGB0)) {
5832 /* ./syntax//typing.nit:1121 */
5833 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5834 REGB0 = TAG_Bool(true);
5835 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
5836 } else {
5837 /* ./syntax//typing.nit:1122 */
5838 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5839 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
5840 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
5841 if (UNTAG_Bool(REGB0)) {
5842 /* ./syntax//typing.nit:1123 */
5843 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5844 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5845 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
5846 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5847 /* ./../lib/standard//collection//array.nit:231 */
5848 fra.me.REG[3] = fra.me.REG[4];
5849 /* ./../lib/standard//collection//array.nit:234 */
5850 REGB0 = TAG_Int(0);
5851 /* ./../lib/standard//collection//array.nit:235 */
5852 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5853 if (UNTAG_Bool(REGB1)) {
5854 } else {
5855 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
5856 }
5857 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
5858 /* ./../lib/standard//collection//array.nit:236 */
5859 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
5860 /* ./../lib/standard//collection//array.nit:237 */
5861 while(1) {
5862 /* ./../lib/standard//collection//array.nit:23 */
5863 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5864 if (UNTAG_Bool(REGB1)) {
5865 } else {
5866 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
5867 }
5868 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
5869 /* ./../lib/standard//kernel.nit:215 */
5870 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5871 /* ./../lib/standard//collection//array.nit:237 */
5872 if (UNTAG_Bool(REGB1)) {
5873 /* ./../lib/standard//collection//array.nit:238 */
5874 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5875 if (UNTAG_Bool(REGB1)) {
5876 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
5877 }
5878 /* ./../lib/standard//collection//array.nit:654 */
5879 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
5880 /* ./syntax//typing.nit:1125 */
5881 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5882 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
5883 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5884 if (UNTAG_Bool(REGB1)) {
5885 /* ./syntax//typing.nit:1126 */
5886 REGB1 = TAG_Int(5);
5887 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5888 if (!once_value_1) {
5889 fra.me.REG[8] = BOX_NativeString("Error: ");
5890 REGB1 = TAG_Int(7);
5891 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
5892 once_value_1 = fra.me.REG[8];
5893 register_static_object(&once_value_1);
5894 } else fra.me.REG[8] = once_value_1;
5895 fra.me.REG[8] = fra.me.REG[8];
5896 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5897 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
5898 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
5899 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5900 if (!once_value_2) {
5901 fra.me.REG[8] = BOX_NativeString("::");
5902 REGB1 = TAG_Int(2);
5903 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
5904 once_value_2 = fra.me.REG[8];
5905 register_static_object(&once_value_2);
5906 } else fra.me.REG[8] = once_value_2;
5907 fra.me.REG[8] = fra.me.REG[8];
5908 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5909 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5910 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5911 if (!once_value_3) {
5912 fra.me.REG[8] = BOX_NativeString(" is not a constructor.");
5913 REGB1 = TAG_Int(22);
5914 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
5915 once_value_3 = fra.me.REG[8];
5916 register_static_object(&once_value_3);
5917 } else fra.me.REG[8] = once_value_3;
5918 fra.me.REG[8] = fra.me.REG[8];
5919 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
5920 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5921 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
5922 } else {
5923 /* ./syntax//typing.nit:1128 */
5924 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5925 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
5926 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
5927 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5928 }
5929 /* ./../lib/standard//collection//array.nit:239 */
5930 REGB1 = TAG_Int(1);
5931 /* ./../lib/standard//kernel.nit:218 */
5932 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5933 /* ./../lib/standard//collection//array.nit:239 */
5934 REGB0 = REGB1;
5935 } else {
5936 /* ./../lib/standard//collection//array.nit:237 */
5937 goto label4;
5938 }
5939 }
5940 label4: while(0);
5941 /* ./syntax//typing.nit:1131 */
5942 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
5943 if (UNTAG_Bool(REGB0)) {
5944 /* ./syntax//typing.nit:1132 */
5945 REGB0 = TAG_Int(3);
5946 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5947 if (!once_value_5) {
5948 fra.me.REG[3] = BOX_NativeString("Error: No contructor named ");
5949 REGB0 = TAG_Int(27);
5950 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5951 once_value_5 = fra.me.REG[3];
5952 register_static_object(&once_value_5);
5953 } else fra.me.REG[3] = once_value_5;
5954 fra.me.REG[3] = fra.me.REG[3];
5955 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5956 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5957 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
5958 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5960 if (!once_value_6) {
5961 fra.me.REG[3] = BOX_NativeString(" in superclasses.");
5962 REGB0 = TAG_Int(17);
5963 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5964 once_value_6 = fra.me.REG[3];
5965 register_static_object(&once_value_6);
5966 } else fra.me.REG[3] = once_value_6;
5967 fra.me.REG[3] = fra.me.REG[3];
5968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5969 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5970 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5971 /* ./syntax//typing.nit:1133 */
5972 goto label7;
5973 } else {
5974 /* ./../lib/standard//collection//array.nit:23 */
5975 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
5976 if (UNTAG_Bool(REGB0)) {
5977 } else {
5978 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
5979 }
5980 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
5981 /* ./syntax//typing.nit:1134 */
5982 REGB1 = TAG_Int(1);
5983 /* ./../lib/standard//kernel.nit:217 */
5984 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
5985 /* ./syntax//typing.nit:1134 */
5986 if (UNTAG_Bool(REGB1)) {
5987 /* ./syntax//typing.nit:1135 */
5988 REGB1 = TAG_Int(5);
5989 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5990 if (!once_value_8) {
5991 fra.me.REG[3] = BOX_NativeString("Error: Conflicting contructors named ");
5992 REGB1 = TAG_Int(37);
5993 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
5994 once_value_8 = fra.me.REG[3];
5995 register_static_object(&once_value_8);
5996 } else fra.me.REG[3] = once_value_8;
5997 fra.me.REG[3] = fra.me.REG[3];
5998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5999 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6000 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
6001 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6002 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6003 if (!once_value_9) {
6004 fra.me.REG[3] = BOX_NativeString(" in superclasses: ");
6005 REGB1 = TAG_Int(18);
6006 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6007 once_value_9 = fra.me.REG[3];
6008 register_static_object(&once_value_9);
6009 } else fra.me.REG[3] = once_value_9;
6010 fra.me.REG[3] = fra.me.REG[3];
6011 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6012 if (!once_value_10) {
6013 fra.me.REG[3] = BOX_NativeString(", ");
6014 REGB1 = TAG_Int(2);
6015 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6016 once_value_10 = fra.me.REG[3];
6017 register_static_object(&once_value_10);
6018 } else fra.me.REG[3] = once_value_10;
6019 fra.me.REG[3] = fra.me.REG[3];
6020 fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6021 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6022 if (!once_value_11) {
6023 fra.me.REG[3] = BOX_NativeString(".");
6024 REGB1 = TAG_Int(1);
6025 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6026 once_value_11 = fra.me.REG[3];
6027 register_static_object(&once_value_11);
6028 } else fra.me.REG[3] = once_value_11;
6029 fra.me.REG[3] = fra.me.REG[3];
6030 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6031 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6032 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6033 /* ./syntax//typing.nit:1136 */
6034 goto label7;
6035 }
6036 }
6037 /* ./syntax//typing.nit:1138 */
6038 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
6039 /* ./syntax//typing.nit:1139 */
6040 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6041 if (UNTAG_Bool(REGB1)) {
6042 } else {
6043 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1139);
6044 }
6045 /* ./syntax//typing.nit:1140 */
6046 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]) = fra.me.REG[4];
6047 /* ./syntax//typing.nit:1141 */
6048 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
6049 /* ./syntax//typing.nit:1142 */
6050 fra.me.REG[5] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6051 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
6052 REGB0 = TAG_Int(0);
6053 /* ./../lib/standard//kernel.nit:217 */
6054 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6055 /* ./syntax//typing.nit:1142 */
6056 if (UNTAG_Bool(REGB0)) {
6057 /* ./syntax//typing.nit:1143 */
6058 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6059 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6060 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6061 if (UNTAG_Bool(REGB0)) {
6062 } else {
6063 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1143);
6064 }
6065 REGB0 = TAG_Bool(true);
6066 fra.me.REG[5] = CALL_syntax___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);
6067 /* ./syntax//typing.nit:1144 */
6068 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6069 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
6070 CALL_syntax___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]);
6071 }
6072 } else {
6073 /* ./syntax//typing.nit:1147 */
6074 REGB0 = TAG_Int(3);
6075 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6076 if (!once_value_12) {
6077 fra.me.REG[4] = BOX_NativeString("Error: No super method to call for ");
6078 REGB0 = TAG_Int(35);
6079 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6080 once_value_12 = fra.me.REG[4];
6081 register_static_object(&once_value_12);
6082 } else fra.me.REG[4] = once_value_12;
6083 fra.me.REG[4] = fra.me.REG[4];
6084 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6085 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6086 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6088 if (!once_value_13) {
6089 fra.me.REG[4] = BOX_NativeString(".");
6090 REGB0 = TAG_Int(1);
6091 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6092 once_value_13 = fra.me.REG[4];
6093 register_static_object(&once_value_13);
6094 } else fra.me.REG[4] = once_value_13;
6095 fra.me.REG[4] = fra.me.REG[4];
6096 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6097 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6098 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
6099 /* ./syntax//typing.nit:1148 */
6100 goto label7;
6101 }
6102 }
6103 /* ./syntax//typing.nit:1151 */
6104 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
6105 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6106 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[4])(fra.me.REG[4]);
6107 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6108 if (UNTAG_Bool(REGB0)) {
6109 } else {
6110 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1151);
6111 }
6112 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6113 if (UNTAG_Bool(REGB0)) {
6114 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1151);
6115 }
6116 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6117 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
6118 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6119 if (UNTAG_Bool(REGB0)) {
6120 } else {
6121 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6122 if (UNTAG_Bool(REGB1)) {
6123 REGB1 = TAG_Bool(false);
6124 REGB0 = REGB1;
6125 } else {
6126 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6127 REGB0 = REGB1;
6128 }
6129 }
6130 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6131 if (UNTAG_Bool(REGB0)) {
6132 /* ./syntax//typing.nit:1152 */
6133 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
6134 /* ./syntax//typing.nit:1153 */
6135 fra.me.REG[3] = NIT_NULL;
6136 /* ./../lib/standard//collection//array.nit:234 */
6137 REGB0 = TAG_Int(0);
6138 /* ./../lib/standard//collection//array.nit:235 */
6139 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
6140 if (UNTAG_Bool(REGB1)) {
6141 } else {
6142 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
6143 }
6144 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
6145 /* ./../lib/standard//collection//array.nit:236 */
6146 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
6147 /* ./../lib/standard//collection//array.nit:237 */
6148 while(1) {
6149 /* ./../lib/standard//collection//array.nit:23 */
6150 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
6151 if (UNTAG_Bool(REGB1)) {
6152 } else {
6153 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
6154 }
6155 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
6156 /* ./../lib/standard//kernel.nit:215 */
6157 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6158 /* ./../lib/standard//collection//array.nit:237 */
6159 if (UNTAG_Bool(REGB1)) {
6160 /* ./../lib/standard//collection//array.nit:238 */
6161 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6162 if (UNTAG_Bool(REGB1)) {
6163 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
6164 }
6165 /* ./../lib/standard//collection//array.nit:654 */
6166 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
6167 /* ./syntax//typing.nit:1155 */
6168 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6169 if (UNTAG_Bool(REGB1)) {
6170 } else {
6171 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1155);
6172 }
6173 /* ./syntax//typing.nit:1156 */
6174 fra.me.REG[7] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6175 fra.me.REG[7] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[7])(fra.me.REG[7]);
6176 REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6177 if (UNTAG_Bool(REGB1)) {
6178 } else {
6179 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1156);
6180 }
6181 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6182 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
6183 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6184 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6185 if (UNTAG_Bool(REGB1)) {
6186 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6187 }
6188 fra.me.REG[6] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6189 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6190 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
6191 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6192 if (UNTAG_Bool(REGB1)) {
6193 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6194 }
6195 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
6196 fra.me.REG[7] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6197 /* ./syntax//typing.nit:1157 */
6198 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
6199 /* ./syntax//typing.nit:1158 */
6200 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6201 if (UNTAG_Bool(REGB1)) {
6202 } else {
6203 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6204 if (UNTAG_Bool(REGB2)) {
6205 REGB2 = TAG_Bool(false);
6206 REGB1 = REGB2;
6207 } else {
6208 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6209 REGB1 = REGB2;
6210 }
6211 }
6212 if (UNTAG_Bool(REGB1)) {
6213 REGB1 = TAG_Bool(true);
6214 } else {
6215 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6216 if (UNTAG_Bool(REGB2)) {
6217 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1158);
6218 }
6219 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6220 REGB1 = REGB2;
6221 }
6222 if (UNTAG_Bool(REGB1)) {
6223 /* ./syntax//typing.nit:1159 */
6224 fra.me.REG[3] = fra.me.REG[7];
6225 }
6226 /* ./../lib/standard//collection//array.nit:239 */
6227 REGB1 = TAG_Int(1);
6228 /* ./../lib/standard//kernel.nit:218 */
6229 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6230 /* ./../lib/standard//collection//array.nit:239 */
6231 REGB0 = REGB1;
6232 } else {
6233 /* ./../lib/standard//collection//array.nit:237 */
6234 goto label14;
6235 }
6236 }
6237 label14: while(0);
6238 /* ./../lib/standard//collection//array.nit:234 */
6239 REGB0 = TAG_Int(0);
6240 /* ./../lib/standard//collection//array.nit:235 */
6241 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6242 if (UNTAG_Bool(REGB1)) {
6243 } else {
6244 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
6245 }
6246 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6247 /* ./../lib/standard//collection//array.nit:236 */
6248 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6249 /* ./../lib/standard//collection//array.nit:237 */
6250 while(1) {
6251 /* ./../lib/standard//collection//array.nit:23 */
6252 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6253 if (UNTAG_Bool(REGB1)) {
6254 } else {
6255 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
6256 }
6257 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6258 /* ./../lib/standard//kernel.nit:215 */
6259 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6260 /* ./../lib/standard//collection//array.nit:237 */
6261 if (UNTAG_Bool(REGB1)) {
6262 /* ./../lib/standard//collection//array.nit:238 */
6263 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6264 if (UNTAG_Bool(REGB1)) {
6265 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
6266 }
6267 /* ./../lib/standard//collection//array.nit:654 */
6268 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
6269 /* ./syntax//typing.nit:1163 */
6270 REGB1 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
6271 if (UNTAG_Bool(REGB1)) {
6272 } else {
6273 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1163);
6274 }
6275 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
6276 /* ./../lib/standard//collection//array.nit:239 */
6277 REGB1 = TAG_Int(1);
6278 /* ./../lib/standard//kernel.nit:218 */
6279 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6280 /* ./../lib/standard//collection//array.nit:239 */
6281 REGB0 = REGB1;
6282 } else {
6283 /* ./../lib/standard//collection//array.nit:237 */
6284 goto label15;
6285 }
6286 }
6287 label15: while(0);
6288 /* ./syntax//typing.nit:1165 */
6289 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
6290 }
6291 /* ./syntax//typing.nit:1167 */
6292 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6293 /* ./syntax//typing.nit:1168 */
6294 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6295 if (UNTAG_Bool(REGB0)) {
6296 } else {
6297 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1168);
6298 }
6299 /* ./syntax//typing.nit:1169 */
6300 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[1];
6301 /* ./syntax//typing.nit:1170 */
6302 REGB0 = TAG_Bool(true);
6303 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6304 label7: while(0);
6305 stack_frame_head = fra.me.prev;
6306 return;
6307 }
6308 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6309 struct {struct stack_frame_t me;} fra;
6310 val_t tmp;
6311 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6312 fra.me.file = LOCATE_syntax___typing;
6313 fra.me.line = 1175;
6314 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6315 fra.me.has_broke = 0;
6316 fra.me.REG_size = 1;
6317 fra.me.REG[0] = NIT_NULL;
6318 fra.me.REG[0] = p0;
6319 /* ./syntax//typing.nit:1175 */
6320 fra.me.REG[0] = NIT_NULL;
6321 goto label1;
6322 label1: while(0);
6323 stack_frame_head = fra.me.prev;
6324 return fra.me.REG[0];
6325 }
6326 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6327 struct {struct stack_frame_t me;} fra;
6328 val_t tmp;
6329 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6330 fra.me.file = LOCATE_syntax___typing;
6331 fra.me.line = 1176;
6332 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6333 fra.me.has_broke = 0;
6334 fra.me.REG_size = 0;
6335 /* ./syntax//typing.nit:1176 */
6336 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1176);
6337 stack_frame_head = fra.me.prev;
6338 return NIT_NULL;
6339 }
6340 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6341 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6342 val_t REGB0;
6343 val_t REGB1;
6344 val_t tmp;
6345 static val_t once_value_1; /* Once value */
6346 static val_t once_value_2; /* Once value */
6347 static val_t once_value_4; /* Once value */
6348 static val_t once_value_5; /* Once value */
6349 static val_t once_value_6; /* Once value */
6350 static val_t once_value_7; /* Once value */
6351 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6352 fra.me.file = LOCATE_syntax___typing;
6353 fra.me.line = 1178;
6354 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6355 fra.me.has_broke = 0;
6356 fra.me.REG_size = 7;
6357 fra.me.REG[0] = NIT_NULL;
6358 fra.me.REG[1] = NIT_NULL;
6359 fra.me.REG[2] = NIT_NULL;
6360 fra.me.REG[3] = NIT_NULL;
6361 fra.me.REG[4] = NIT_NULL;
6362 fra.me.REG[5] = NIT_NULL;
6363 fra.me.REG[6] = NIT_NULL;
6364 fra.me.REG[0] = p0;
6365 fra.me.REG[1] = p1;
6366 /* ./syntax//typing.nit:1180 */
6367 fra.me.REG[2] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[0])(fra.me.REG[0]);
6368 /* ./syntax//typing.nit:1181 */
6369 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[0])(fra.me.REG[0]);
6370 /* ./syntax//typing.nit:1188 */
6371 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6372 if (UNTAG_Bool(REGB0)) {
6373 } else {
6374 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6375 if (UNTAG_Bool(REGB1)) {
6376 REGB1 = TAG_Bool(false);
6377 REGB0 = REGB1;
6378 } else {
6379 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6380 REGB0 = REGB1;
6381 }
6382 }
6383 if (UNTAG_Bool(REGB0)) {
6384 /* ./syntax//typing.nit:1189 */
6385 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6386 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
6387 } else {
6388 /* ./syntax//typing.nit:1191 */
6389 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6390 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
6391 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6392 if (UNTAG_Bool(REGB0)) {
6393 /* ./syntax//typing.nit:1192 */
6394 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6395 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
6396 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6397 /* ./syntax//typing.nit:1193 */
6398 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6399 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6400 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
6401 fra.me.REG[4] = fra.me.REG[5];
6402 } else {
6403 /* ./syntax//typing.nit:1195 */
6404 REGB0 = TAG_Int(3);
6405 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6406 if (!once_value_1) {
6407 fra.me.REG[6] = BOX_NativeString("Error: class ");
6408 REGB0 = TAG_Int(13);
6409 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6410 once_value_1 = fra.me.REG[6];
6411 register_static_object(&once_value_1);
6412 } else fra.me.REG[6] = once_value_1;
6413 fra.me.REG[6] = fra.me.REG[6];
6414 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6415 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6416 if (UNTAG_Bool(REGB0)) {
6417 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1195);
6418 }
6419 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6420 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6421 if (!once_value_2) {
6422 fra.me.REG[2] = BOX_NativeString(", not found.");
6423 REGB0 = TAG_Int(12);
6424 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
6425 once_value_2 = fra.me.REG[2];
6426 register_static_object(&once_value_2);
6427 } else fra.me.REG[2] = once_value_2;
6428 fra.me.REG[2] = fra.me.REG[2];
6429 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
6430 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6431 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6432 /* ./syntax//typing.nit:1196 */
6433 goto label3;
6434 }
6435 }
6436 /* ./syntax//typing.nit:1200 */
6437 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6438 if (UNTAG_Bool(REGB0)) {
6439 /* ./syntax//typing.nit:1201 */
6440 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6441 /* ./syntax//typing.nit:1203 */
6442 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6443 /* ./syntax//typing.nit:1205 */
6444 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6445 if (UNTAG_Bool(REGB0)) {
6446 } else {
6447 /* ./syntax//typing.nit:1208 */
6448 REGB0 = TAG_Int(3);
6449 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6450 if (!once_value_4) {
6451 fra.me.REG[6] = BOX_NativeString("Error: property ");
6452 REGB0 = TAG_Int(16);
6453 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6454 once_value_4 = fra.me.REG[6];
6455 register_static_object(&once_value_4);
6456 } else fra.me.REG[6] = once_value_4;
6457 fra.me.REG[6] = fra.me.REG[6];
6458 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6459 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6460 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6461 if (!once_value_5) {
6462 fra.me.REG[6] = BOX_NativeString(" is not a method.");
6463 REGB0 = TAG_Int(17);
6464 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6465 once_value_5 = fra.me.REG[6];
6466 register_static_object(&once_value_5);
6467 } else fra.me.REG[6] = once_value_5;
6468 fra.me.REG[6] = fra.me.REG[6];
6469 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6470 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6471 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6472 /* ./syntax//typing.nit:1209 */
6473 goto label3;
6474 }
6475 } else {
6476 /* ./syntax//typing.nit:1212 */
6477 REGB0 = TAG_Int(3);
6478 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6479 if (!once_value_6) {
6480 fra.me.REG[6] = BOX_NativeString("Error: property ");
6481 REGB0 = TAG_Int(16);
6482 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6483 once_value_6 = fra.me.REG[6];
6484 register_static_object(&once_value_6);
6485 } else fra.me.REG[6] = once_value_6;
6486 fra.me.REG[6] = fra.me.REG[6];
6487 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
6488 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6489 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6490 if (!once_value_7) {
6491 fra.me.REG[3] = BOX_NativeString(" not found in target class.");
6492 REGB0 = TAG_Int(27);
6493 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6494 once_value_7 = fra.me.REG[3];
6495 register_static_object(&once_value_7);
6496 } else fra.me.REG[3] = once_value_7;
6497 fra.me.REG[3] = fra.me.REG[3];
6498 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6499 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6500 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6501 /* ./syntax//typing.nit:1213 */
6502 goto label3;
6503 }
6504 /* ./syntax//typing.nit:1216 */
6505 fra.me.REG[5] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[4], fra.me.REG[5]);
6506 /* ./syntax//typing.nit:1217 */
6507 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6508 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6509 if (UNTAG_Bool(REGB0)) {
6510 } else {
6511 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1217);
6512 }
6513 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
6514 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6515 label3: while(0);
6516 stack_frame_head = fra.me.prev;
6517 return;
6518 }
6519 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
6520 struct {struct stack_frame_t me;} fra;
6521 val_t tmp;
6522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6523 fra.me.file = LOCATE_syntax___typing;
6524 fra.me.line = 1222;
6525 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
6526 fra.me.has_broke = 0;
6527 fra.me.REG_size = 1;
6528 fra.me.REG[0] = NIT_NULL;
6529 fra.me.REG[0] = p0;
6530 /* ./syntax//typing.nit:1222 */
6531 fra.me.REG[0] = NIT_NULL;
6532 goto label1;
6533 label1: while(0);
6534 stack_frame_head = fra.me.prev;
6535 return fra.me.REG[0];
6536 }
6537 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
6538 struct {struct stack_frame_t me;} fra;
6539 val_t REGB0;
6540 val_t tmp;
6541 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6542 fra.me.file = LOCATE_syntax___typing;
6543 fra.me.line = 1223;
6544 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
6545 fra.me.has_broke = 0;
6546 fra.me.REG_size = 1;
6547 fra.me.REG[0] = NIT_NULL;
6548 fra.me.REG[0] = p0;
6549 /* ./syntax//typing.nit:1223 */
6550 fra.me.REG[0] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
6551 fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
6552 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
6553 if (UNTAG_Bool(REGB0)) {
6554 } else {
6555 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1223);
6556 }
6557 goto label1;
6558 label1: while(0);
6559 stack_frame_head = fra.me.prev;
6560 return fra.me.REG[0];
6561 }
6562 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
6563 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6564 val_t REGB0;
6565 val_t tmp;
6566 static val_t once_value_1; /* Once value */
6567 static val_t once_value_2; /* Once value */
6568 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6569 fra.me.file = LOCATE_syntax___typing;
6570 fra.me.line = 1227;
6571 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
6572 fra.me.has_broke = 0;
6573 fra.me.REG_size = 4;
6574 fra.me.REG[0] = NIT_NULL;
6575 fra.me.REG[1] = NIT_NULL;
6576 fra.me.REG[2] = NIT_NULL;
6577 fra.me.REG[3] = NIT_NULL;
6578 fra.me.REG[0] = p0;
6579 fra.me.REG[1] = p1;
6580 /* ./syntax//typing.nit:1229 */
6581 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6582 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
6583 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
6584 /* ./syntax//typing.nit:1230 */
6585 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
6586 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6587 if (UNTAG_Bool(REGB0)) {
6588 /* ./syntax//typing.nit:1231 */
6589 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6590 REGB0 = TAG_Bool(true);
6591 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
6592 } else {
6593 /* ./syntax//typing.nit:1233 */
6594 REGB0 = TAG_Int(3);
6595 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6596 if (!once_value_1) {
6597 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
6598 REGB0 = TAG_Int(35);
6599 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6600 once_value_1 = fra.me.REG[3];
6601 register_static_object(&once_value_1);
6602 } else fra.me.REG[3] = once_value_1;
6603 fra.me.REG[3] = fra.me.REG[3];
6604 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6605 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6606 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6607 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6608 if (!once_value_2) {
6609 fra.me.REG[3] = BOX_NativeString(".");
6610 REGB0 = TAG_Int(1);
6611 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6612 once_value_2 = fra.me.REG[3];
6613 register_static_object(&once_value_2);
6614 } else fra.me.REG[3] = once_value_2;
6615 fra.me.REG[3] = fra.me.REG[3];
6616 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6617 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6618 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6619 /* ./syntax//typing.nit:1234 */
6620 goto label3;
6621 }
6622 label3: while(0);
6623 stack_frame_head = fra.me.prev;
6624 return;
6625 }
6626 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
6627 struct {struct stack_frame_t me;} fra;
6628 val_t tmp;
6629 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6630 fra.me.file = LOCATE_syntax___typing;
6631 fra.me.line = 1240;
6632 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
6633 fra.me.has_broke = 0;
6634 fra.me.REG_size = 1;
6635 fra.me.REG[0] = NIT_NULL;
6636 fra.me.REG[0] = p0;
6637 /* ./syntax//typing.nit:1240 */
6638 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6639 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6640 goto label1;
6641 label1: while(0);
6642 stack_frame_head = fra.me.prev;
6643 return fra.me.REG[0];
6644 }
6645 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
6646 struct {struct stack_frame_t me;} fra;
6647 val_t REGB0;
6648 val_t tmp;
6649 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6650 fra.me.file = LOCATE_syntax___typing;
6651 fra.me.line = 1241;
6652 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
6653 fra.me.has_broke = 0;
6654 fra.me.REG_size = 1;
6655 fra.me.REG[0] = NIT_NULL;
6656 fra.me.REG[0] = p0;
6657 /* ./syntax//typing.nit:1241 */
6658 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
6659 fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
6660 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
6661 if (UNTAG_Bool(REGB0)) {
6662 } else {
6663 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1241);
6664 }
6665 goto label1;
6666 label1: while(0);
6667 stack_frame_head = fra.me.prev;
6668 return fra.me.REG[0];
6669 }
6670 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
6671 struct {struct stack_frame_t me;} fra;
6672 val_t tmp;
6673 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6674 fra.me.file = LOCATE_syntax___typing;
6675 fra.me.line = 1245;
6676 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
6677 fra.me.has_broke = 0;
6678 fra.me.REG_size = 1;
6679 fra.me.REG[0] = NIT_NULL;
6680 fra.me.REG[0] = p0;
6681 /* ./syntax//typing.nit:1245 */
6682 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6683 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6684 goto label1;
6685 label1: while(0);
6686 stack_frame_head = fra.me.prev;
6687 return fra.me.REG[0];
6688 }
6689 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
6690 struct {struct stack_frame_t me;} fra;
6691 val_t REGB0;
6692 val_t tmp;
6693 static val_t once_value_1; /* Once value */
6694 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6695 fra.me.file = LOCATE_syntax___typing;
6696 fra.me.line = 1246;
6697 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
6698 fra.me.has_broke = 0;
6699 fra.me.REG_size = 1;
6700 fra.me.REG[0] = NIT_NULL;
6701 fra.me.REG[0] = p0;
6702 /* ./syntax//typing.nit:1246 */
6703 if (!once_value_1) {
6704 fra.me.REG[0] = BOX_NativeString("init");
6705 REGB0 = TAG_Int(4);
6706 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
6707 once_value_1 = fra.me.REG[0];
6708 register_static_object(&once_value_1);
6709 } else fra.me.REG[0] = once_value_1;
6710 fra.me.REG[0] = fra.me.REG[0];
6711 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6712 goto label2;
6713 label2: while(0);
6714 stack_frame_head = fra.me.prev;
6715 return fra.me.REG[0];
6716 }
6717 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
6718 struct {struct stack_frame_t me;} fra;
6719 val_t tmp;
6720 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6721 fra.me.file = LOCATE_syntax___typing;
6722 fra.me.line = 1250;
6723 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
6724 fra.me.has_broke = 0;
6725 fra.me.REG_size = 0;
6726 /* ./syntax//typing.nit:1250 */
6727 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1250);
6728 stack_frame_head = fra.me.prev;
6729 return NIT_NULL;
6730 }
6731 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
6732 struct {struct stack_frame_t me;} fra;
6733 val_t tmp;
6734 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6735 fra.me.file = LOCATE_syntax___typing;
6736 fra.me.line = 1251;
6737 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
6738 fra.me.has_broke = 0;
6739 fra.me.REG_size = 0;
6740 /* ./syntax//typing.nit:1251 */
6741 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1251);
6742 stack_frame_head = fra.me.prev;
6743 return NIT_NULL;
6744 }
6745 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
6746 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6747 val_t REGB0;
6748 val_t REGB1;
6749 val_t tmp;
6750 static val_t once_value_1; /* Once value */
6751 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6752 fra.me.file = LOCATE_syntax___typing;
6753 fra.me.line = 1253;
6754 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
6755 fra.me.has_broke = 0;
6756 fra.me.REG_size = 4;
6757 fra.me.REG[0] = NIT_NULL;
6758 fra.me.REG[1] = NIT_NULL;
6759 fra.me.REG[2] = NIT_NULL;
6760 fra.me.REG[3] = NIT_NULL;
6761 fra.me.REG[0] = p0;
6762 fra.me.REG[1] = p1;
6763 /* ./syntax//typing.nit:1255 */
6764 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6765 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6766 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
6767 if (UNTAG_Bool(REGB0)) {
6768 } else {
6769 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6770 REGB0 = REGB1;
6771 }
6772 if (UNTAG_Bool(REGB0)) {
6773 /* ./syntax//typing.nit:1257 */
6774 if (!once_value_1) {
6775 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
6776 REGB0 = TAG_Int(44);
6777 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6778 once_value_1 = fra.me.REG[3];
6779 register_static_object(&once_value_1);
6780 } else fra.me.REG[3] = once_value_1;
6781 fra.me.REG[3] = fra.me.REG[3];
6782 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
6783 }
6784 /* ./syntax//typing.nit:1260 */
6785 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6786 fra.me.REG[0] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6787 fra.me.REG[0] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[0]);
6788 /* ./syntax//typing.nit:1261 */
6789 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6790 /* ./syntax//typing.nit:1262 */
6791 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6792 if (UNTAG_Bool(REGB0)) {
6793 } else {
6794 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1262);
6795 }
6796 /* ./syntax//typing.nit:1263 */
6797 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
6798 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6799 stack_frame_head = fra.me.prev;
6800 return;
6801 }
6802 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
6803 struct {struct stack_frame_t me;} fra;
6804 val_t tmp;
6805 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6806 fra.me.file = LOCATE_syntax___typing;
6807 fra.me.line = 1268;
6808 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
6809 fra.me.has_broke = 0;
6810 fra.me.REG_size = 1;
6811 fra.me.REG[0] = NIT_NULL;
6812 fra.me.REG[0] = p0;
6813 /* ./syntax//typing.nit:1268 */
6814 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
6815 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6816 goto label1;
6817 label1: while(0);
6818 stack_frame_head = fra.me.prev;
6819 return fra.me.REG[0];
6820 }
6821 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
6822 struct {struct stack_frame_t me;} fra;
6823 val_t tmp;
6824 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6825 fra.me.file = LOCATE_syntax___typing;
6826 fra.me.line = 1269;
6827 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
6828 fra.me.has_broke = 0;
6829 fra.me.REG_size = 1;
6830 fra.me.REG[0] = NIT_NULL;
6831 fra.me.REG[0] = p0;
6832 /* ./syntax//typing.nit:1269 */
6833 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
6834 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6835 goto label1;
6836 label1: while(0);
6837 stack_frame_head = fra.me.prev;
6838 return fra.me.REG[0];
6839 }
6840 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
6841 struct {struct stack_frame_t me;} fra;
6842 val_t tmp;
6843 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6844 fra.me.file = LOCATE_syntax___typing;
6845 fra.me.line = 1273;
6846 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
6847 fra.me.has_broke = 0;
6848 fra.me.REG_size = 1;
6849 fra.me.REG[0] = NIT_NULL;
6850 fra.me.REG[0] = p0;
6851 /* ./syntax//typing.nit:1273 */
6852 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6853 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6854 goto label1;
6855 label1: while(0);
6856 stack_frame_head = fra.me.prev;
6857 return fra.me.REG[0];
6858 }
6859 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
6860 struct {struct stack_frame_t me;} fra;
6861 val_t tmp;
6862 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6863 fra.me.file = LOCATE_syntax___typing;
6864 fra.me.line = 1274;
6865 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
6866 fra.me.has_broke = 0;
6867 fra.me.REG_size = 1;
6868 fra.me.REG[0] = NIT_NULL;
6869 fra.me.REG[0] = p0;
6870 /* ./syntax//typing.nit:1274 */
6871 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6872 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6873 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
6874 goto label1;
6875 label1: while(0);
6876 stack_frame_head = fra.me.prev;
6877 return fra.me.REG[0];
6878 }
6879 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
6880 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6881 val_t REGB0;
6882 val_t tmp;
6883 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6884 fra.me.file = LOCATE_syntax___typing;
6885 fra.me.line = 1278;
6886 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
6887 fra.me.has_broke = 0;
6888 fra.me.REG_size = 2;
6889 fra.me.REG[0] = NIT_NULL;
6890 fra.me.REG[1] = NIT_NULL;
6891 fra.me.REG[0] = p0;
6892 /* ./syntax//typing.nit:1280 */
6893 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6894 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6895 /* ./syntax//typing.nit:1281 */
6896 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
6897 if (UNTAG_Bool(REGB0)) {
6898 /* ./syntax//typing.nit:1283 */
6899 fra.me.REG[1] = fra.me.REG[0];
6900 goto label1;
6901 } else {
6902 /* ./syntax//typing.nit:1285 */
6903 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
6904 fra.me.REG[1] = fra.me.REG[0];
6905 goto label1;
6906 }
6907 label1: while(0);
6908 stack_frame_head = fra.me.prev;
6909 return fra.me.REG[1];
6910 }
6911 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
6912 struct {struct stack_frame_t me;} fra;
6913 val_t tmp;
6914 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6915 fra.me.file = LOCATE_syntax___typing;
6916 fra.me.line = 1288;
6917 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
6918 fra.me.has_broke = 0;
6919 fra.me.REG_size = 1;
6920 fra.me.REG[0] = NIT_NULL;
6921 fra.me.REG[0] = p0;
6922 /* ./syntax//typing.nit:1288 */
6923 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
6924 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6925 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
6926 goto label1;
6927 label1: while(0);
6928 stack_frame_head = fra.me.prev;
6929 return fra.me.REG[0];
6930 }
6931 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
6932 struct {struct stack_frame_t me;} fra;
6933 val_t REGB0;
6934 val_t tmp;
6935 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6936 fra.me.file = LOCATE_syntax___typing;
6937 fra.me.line = 1292;
6938 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
6939 fra.me.has_broke = 0;
6940 fra.me.REG_size = 1;
6941 fra.me.REG[0] = NIT_NULL;
6942 fra.me.REG[0] = p0;
6943 /* ./syntax//typing.nit:1292 */
6944 fra.me.REG[0] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
6945 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6946 if (UNTAG_Bool(REGB0)) {
6947 } else {
6948 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1292);
6949 }
6950 goto label1;
6951 label1: while(0);
6952 stack_frame_head = fra.me.prev;
6953 return fra.me.REG[0];
6954 }
6955 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
6956 struct {struct stack_frame_t me;} fra;
6957 val_t REGB0;
6958 val_t tmp;
6959 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6960 fra.me.file = LOCATE_syntax___typing;
6961 fra.me.line = 1295;
6962 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
6963 fra.me.has_broke = 0;
6964 fra.me.REG_size = 1;
6965 fra.me.REG[0] = NIT_NULL;
6966 fra.me.REG[0] = p0;
6967 /* ./syntax//typing.nit:1295 */
6968 fra.me.REG[0] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]);
6969 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
6970 if (UNTAG_Bool(REGB0)) {
6971 } else {
6972 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1295);
6973 }
6974 goto label1;
6975 label1: while(0);
6976 stack_frame_head = fra.me.prev;
6977 return fra.me.REG[0];
6978 }
6979 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
6980 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6981 val_t REGB0;
6982 val_t REGB1;
6983 val_t tmp;
6984 static val_t once_value_2; /* Once value */
6985 static val_t once_value_3; /* Once value */
6986 static val_t once_value_4; /* Once value */
6987 static val_t once_value_5; /* Once value */
6988 static val_t once_value_6; /* Once value */
6989 static val_t once_value_7; /* Once value */
6990 static val_t once_value_8; /* Once value */
6991 static val_t once_value_9; /* Once value */
6992 static val_t once_value_10; /* Once value */
6993 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6994 fra.me.file = LOCATE_syntax___typing;
6995 fra.me.line = 1298;
6996 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
6997 fra.me.has_broke = 0;
6998 fra.me.REG_size = 7;
6999 fra.me.REG[0] = NIT_NULL;
7000 fra.me.REG[1] = NIT_NULL;
7001 fra.me.REG[2] = NIT_NULL;
7002 fra.me.REG[3] = NIT_NULL;
7003 fra.me.REG[4] = NIT_NULL;
7004 fra.me.REG[5] = NIT_NULL;
7005 fra.me.REG[6] = NIT_NULL;
7006 fra.me.REG[0] = p0;
7007 fra.me.REG[1] = p1;
7008 /* ./syntax//typing.nit:1301 */
7009 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7010 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7011 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7012 if (UNTAG_Bool(REGB0)) {
7013 goto label1;
7014 }
7015 /* ./syntax//typing.nit:1302 */
7016 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7017 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7018 /* ./syntax//typing.nit:1303 */
7019 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7020 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7021 /* ./syntax//typing.nit:1304 */
7022 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7023 if (UNTAG_Bool(REGB0)) {
7024 /* ./syntax//typing.nit:1305 */
7025 REGB0 = TAG_Int(3);
7026 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7027 if (!once_value_2) {
7028 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7029 REGB0 = TAG_Int(18);
7030 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7031 once_value_2 = fra.me.REG[5];
7032 register_static_object(&once_value_2);
7033 } else fra.me.REG[5] = once_value_2;
7034 fra.me.REG[5] = fra.me.REG[5];
7035 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7036 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7037 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7038 if (!once_value_3) {
7039 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7040 REGB0 = TAG_Int(19);
7041 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7042 once_value_3 = fra.me.REG[5];
7043 register_static_object(&once_value_3);
7044 } else fra.me.REG[5] = once_value_3;
7045 fra.me.REG[5] = fra.me.REG[5];
7046 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7047 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7048 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7049 /* ./syntax//typing.nit:1306 */
7050 goto label1;
7051 }
7052 /* ./syntax//typing.nit:1308 */
7053 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7054 /* ./syntax//typing.nit:1309 */
7055 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7056 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7057 if (UNTAG_Bool(REGB0)) {
7058 /* ./syntax//typing.nit:1310 */
7059 REGB0 = TAG_Int(5);
7060 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7061 if (!once_value_4) {
7062 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7063 REGB0 = TAG_Int(17);
7064 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7065 once_value_4 = fra.me.REG[6];
7066 register_static_object(&once_value_4);
7067 } else fra.me.REG[6] = once_value_4;
7068 fra.me.REG[6] = fra.me.REG[6];
7069 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7070 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7071 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7072 if (!once_value_5) {
7073 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7074 REGB0 = TAG_Int(19);
7075 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7076 once_value_5 = fra.me.REG[6];
7077 register_static_object(&once_value_5);
7078 } else fra.me.REG[6] = once_value_5;
7079 fra.me.REG[6] = fra.me.REG[6];
7080 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7081 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7082 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7083 if (!once_value_6) {
7084 fra.me.REG[6] = BOX_NativeString(".");
7085 REGB0 = TAG_Int(1);
7086 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7087 once_value_6 = fra.me.REG[6];
7088 register_static_object(&once_value_6);
7089 } else fra.me.REG[6] = once_value_6;
7090 fra.me.REG[6] = fra.me.REG[6];
7091 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7092 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7093 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7094 /* ./syntax//typing.nit:1311 */
7095 goto label1;
7096 }
7097 /* ./syntax//typing.nit:1313 */
7098 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7099 /* ./syntax//typing.nit:1314 */
7100 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7101 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7102 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7103 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7104 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7105 REGB1 = TAG_Int(3);
7106 /* ./../lib/standard//kernel.nit:215 */
7107 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7108 /* ./syntax//typing.nit:1314 */
7109 if (UNTAG_Bool(REGB1)) {
7110 /* ./syntax//typing.nit:1315 */
7111 REGB1 = TAG_Int(7);
7112 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7113 if (!once_value_7) {
7114 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7115 REGB1 = TAG_Int(17);
7116 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7117 once_value_7 = fra.me.REG[5];
7118 register_static_object(&once_value_7);
7119 } else fra.me.REG[5] = once_value_7;
7120 fra.me.REG[5] = fra.me.REG[5];
7121 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7122 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7123 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7124 if (!once_value_8) {
7125 fra.me.REG[3] = BOX_NativeString(" from ");
7126 REGB1 = TAG_Int(6);
7127 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7128 once_value_8 = fra.me.REG[3];
7129 register_static_object(&once_value_8);
7130 } else fra.me.REG[3] = once_value_8;
7131 fra.me.REG[3] = fra.me.REG[3];
7132 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7133 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7134 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7135 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7136 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7137 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7138 if (!once_value_9) {
7139 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7140 REGB1 = TAG_Int(17);
7141 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7142 once_value_9 = fra.me.REG[3];
7143 register_static_object(&once_value_9);
7144 } else fra.me.REG[3] = once_value_9;
7145 fra.me.REG[3] = fra.me.REG[3];
7146 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7147 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7148 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7150 if (!once_value_10) {
7151 fra.me.REG[3] = BOX_NativeString("");
7152 REGB1 = TAG_Int(0);
7153 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7154 once_value_10 = fra.me.REG[3];
7155 register_static_object(&once_value_10);
7156 } else fra.me.REG[3] = once_value_10;
7157 fra.me.REG[3] = fra.me.REG[3];
7158 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7159 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7160 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7161 }
7162 /* ./syntax//typing.nit:1317 */
7163 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7164 /* ./syntax//typing.nit:1318 */
7165 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7166 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7167 /* ./syntax//typing.nit:1319 */
7168 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7169 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7170 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7171 if (UNTAG_Bool(REGB1)) {
7172 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7173 if (UNTAG_Bool(REGB1)) {
7174 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1319);
7175 }
7176 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7177 fra.me.REG[2] = fra.me.REG[4];
7178 }
7179 /* ./syntax//typing.nit:1320 */
7180 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7181 label1: while(0);
7182 stack_frame_head = fra.me.prev;
7183 return;
7184 }
7185 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7186 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7187 val_t REGB0;
7188 val_t REGB1;
7189 val_t tmp;
7190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7191 fra.me.file = LOCATE_syntax___typing;
7192 fra.me.line = 1325;
7193 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7194 fra.me.has_broke = 0;
7195 fra.me.REG_size = 2;
7196 fra.me.REG[0] = NIT_NULL;
7197 fra.me.REG[1] = NIT_NULL;
7198 fra.me.REG[0] = p0;
7199 fra.me.REG[1] = p1;
7200 /* ./syntax//typing.nit:1327 */
7201 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7202 /* ./syntax//typing.nit:1328 */
7203 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7204 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7205 if (UNTAG_Bool(REGB0)) {
7206 } else {
7207 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7208 if (UNTAG_Bool(REGB1)) {
7209 REGB1 = TAG_Bool(false);
7210 REGB0 = REGB1;
7211 } else {
7212 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7213 REGB0 = REGB1;
7214 }
7215 }
7216 if (UNTAG_Bool(REGB0)) {
7217 goto label1;
7218 }
7219 /* ./syntax//typing.nit:1329 */
7220 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7221 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7222 /* ./syntax//typing.nit:1330 */
7223 REGB0 = TAG_Bool(true);
7224 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7225 label1: while(0);
7226 stack_frame_head = fra.me.prev;
7227 return;
7228 }
7229 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7230 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7231 val_t REGB0;
7232 val_t REGB1;
7233 val_t tmp;
7234 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7235 fra.me.file = LOCATE_syntax___typing;
7236 fra.me.line = 1335;
7237 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7238 fra.me.has_broke = 0;
7239 fra.me.REG_size = 4;
7240 fra.me.REG[0] = NIT_NULL;
7241 fra.me.REG[1] = NIT_NULL;
7242 fra.me.REG[2] = NIT_NULL;
7243 fra.me.REG[3] = NIT_NULL;
7244 fra.me.REG[0] = p0;
7245 fra.me.REG[1] = p1;
7246 /* ./syntax//typing.nit:1337 */
7247 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7248 /* ./syntax//typing.nit:1338 */
7249 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7250 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7251 if (UNTAG_Bool(REGB0)) {
7252 } else {
7253 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7254 if (UNTAG_Bool(REGB1)) {
7255 REGB1 = TAG_Bool(false);
7256 REGB0 = REGB1;
7257 } else {
7258 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7259 REGB0 = REGB1;
7260 }
7261 }
7262 if (UNTAG_Bool(REGB0)) {
7263 goto label1;
7264 }
7265 /* ./syntax//typing.nit:1339 */
7266 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7267 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7268 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7269 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7270 if (UNTAG_Bool(REGB0)) {
7271 goto label1;
7272 }
7273 /* ./syntax//typing.nit:1340 */
7274 REGB0 = TAG_Bool(true);
7275 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7276 label1: while(0);
7277 stack_frame_head = fra.me.prev;
7278 return;
7279 }
7280 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7281 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7282 val_t REGB0;
7283 val_t REGB1;
7284 val_t tmp;
7285 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7286 fra.me.file = LOCATE_syntax___typing;
7287 fra.me.line = 1345;
7288 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7289 fra.me.has_broke = 0;
7290 fra.me.REG_size = 4;
7291 fra.me.REG[0] = NIT_NULL;
7292 fra.me.REG[1] = NIT_NULL;
7293 fra.me.REG[2] = NIT_NULL;
7294 fra.me.REG[3] = NIT_NULL;
7295 fra.me.REG[0] = p0;
7296 fra.me.REG[1] = p1;
7297 /* ./syntax//typing.nit:1347 */
7298 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7299 /* ./syntax//typing.nit:1348 */
7300 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7301 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7302 if (UNTAG_Bool(REGB0)) {
7303 } else {
7304 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7305 if (UNTAG_Bool(REGB1)) {
7306 REGB1 = TAG_Bool(false);
7307 REGB0 = REGB1;
7308 } else {
7309 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7310 REGB0 = REGB1;
7311 }
7312 }
7313 if (UNTAG_Bool(REGB0)) {
7314 goto label1;
7315 }
7316 /* ./syntax//typing.nit:1349 */
7317 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7318 fra.me.REG[2] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
7319 /* ./syntax//typing.nit:1350 */
7320 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7321 if (UNTAG_Bool(REGB0)) {
7322 } else {
7323 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7324 if (UNTAG_Bool(REGB1)) {
7325 REGB1 = TAG_Bool(false);
7326 REGB0 = REGB1;
7327 } else {
7328 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7329 REGB0 = REGB1;
7330 }
7331 }
7332 if (UNTAG_Bool(REGB0)) {
7333 goto label1;
7334 }
7335 /* ./syntax//typing.nit:1351 */
7336 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7337 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7338 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
7339 /* ./syntax//typing.nit:1352 */
7340 REGB0 = TAG_Bool(true);
7341 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7342 label1: while(0);
7343 stack_frame_head = fra.me.prev;
7344 return;
7345 }
7346 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7347 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7348 val_t REGB0;
7349 val_t REGB1;
7350 val_t tmp;
7351 static val_t once_value_2; /* Once value */
7352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7353 fra.me.file = LOCATE_syntax___typing;
7354 fra.me.line = 1357;
7355 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
7356 fra.me.has_broke = 0;
7357 fra.me.REG_size = 3;
7358 fra.me.REG[0] = NIT_NULL;
7359 fra.me.REG[1] = NIT_NULL;
7360 fra.me.REG[2] = NIT_NULL;
7361 fra.me.REG[0] = p0;
7362 fra.me.REG[1] = p1;
7363 /* ./syntax//typing.nit:1359 */
7364 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7365 /* ./syntax//typing.nit:1360 */
7366 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7367 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7368 if (UNTAG_Bool(REGB0)) {
7369 } else {
7370 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7371 if (UNTAG_Bool(REGB1)) {
7372 REGB1 = TAG_Bool(false);
7373 REGB0 = REGB1;
7374 } else {
7375 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7376 REGB0 = REGB1;
7377 }
7378 }
7379 if (UNTAG_Bool(REGB0)) {
7380 goto label1;
7381 }
7382 /* ./syntax//typing.nit:1361 */
7383 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7384 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
7385 if (UNTAG_Bool(REGB0)) {
7386 /* ./syntax//typing.nit:1362 */
7387 if (!once_value_2) {
7388 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
7389 REGB0 = TAG_Int(37);
7390 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7391 once_value_2 = fra.me.REG[2];
7392 register_static_object(&once_value_2);
7393 } else fra.me.REG[2] = once_value_2;
7394 fra.me.REG[2] = fra.me.REG[2];
7395 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7396 }
7397 /* ./syntax//typing.nit:1364 */
7398 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
7399 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7400 /* ./syntax//typing.nit:1365 */
7401 REGB0 = TAG_Bool(true);
7402 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7403 label1: while(0);
7404 stack_frame_head = fra.me.prev;
7405 return;
7406 }
7407 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
7408 struct {struct stack_frame_t me;} fra;
7409 val_t REGB0;
7410 val_t tmp;
7411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7412 fra.me.file = LOCATE_syntax___typing;
7413 fra.me.line = 1370;
7414 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
7415 fra.me.has_broke = 0;
7416 fra.me.REG_size = 1;
7417 fra.me.REG[0] = NIT_NULL;
7418 fra.me.REG[0] = p0;
7419 /* ./syntax//typing.nit:1371 */
7420 fra.me.REG[0] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]);
7421 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
7422 if (UNTAG_Bool(REGB0)) {
7423 } else {
7424 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1371);
7425 }
7426 goto label1;
7427 label1: while(0);
7428 stack_frame_head = fra.me.prev;
7429 return fra.me.REG[0];
7430 }
7431 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
7432 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7433 val_t REGB0;
7434 val_t REGB1;
7435 val_t tmp;
7436 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7437 fra.me.file = LOCATE_syntax___typing;
7438 fra.me.line = 1374;
7439 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
7440 fra.me.has_broke = 0;
7441 fra.me.REG_size = 4;
7442 fra.me.REG[0] = NIT_NULL;
7443 fra.me.REG[1] = NIT_NULL;
7444 fra.me.REG[2] = NIT_NULL;
7445 fra.me.REG[3] = NIT_NULL;
7446 fra.me.REG[0] = p0;
7447 /* ./syntax//typing.nit:1377 */
7448 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
7449 /* ./syntax//typing.nit:1378 */
7450 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7451 if (UNTAG_Bool(REGB0)) {
7452 } else {
7453 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7454 if (UNTAG_Bool(REGB1)) {
7455 REGB1 = TAG_Bool(false);
7456 REGB0 = REGB1;
7457 } else {
7458 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7459 REGB0 = REGB1;
7460 }
7461 }
7462 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7463 if (UNTAG_Bool(REGB0)) {
7464 /* ./syntax//typing.nit:1379 */
7465 fra.me.REG[2] = fra.me.REG[1];
7466 goto label1;
7467 } else {
7468 /* ./syntax//typing.nit:1381 */
7469 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7470 fra.me.REG[1] = fra.me.REG[3];
7471 /* ./syntax//typing.nit:1382 */
7472 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7473 if (UNTAG_Bool(REGB0)) {
7474 } else {
7475 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7476 if (UNTAG_Bool(REGB1)) {
7477 REGB1 = TAG_Bool(false);
7478 REGB0 = REGB1;
7479 } else {
7480 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7481 REGB0 = REGB1;
7482 }
7483 }
7484 if (UNTAG_Bool(REGB0)) {
7485 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
7486 fra.me.REG[1] = fra.me.REG[3];
7487 }
7488 /* ./syntax//typing.nit:1383 */
7489 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
7490 /* ./syntax//typing.nit:1384 */
7491 fra.me.REG[2] = fra.me.REG[1];
7492 goto label1;
7493 }
7494 label1: while(0);
7495 stack_frame_head = fra.me.prev;
7496 return fra.me.REG[2];
7497 }
7498 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
7499 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7500 val_t REGB0;
7501 val_t tmp;
7502 static val_t once_value_1; /* Once value */
7503 static val_t once_value_2; /* Once value */
7504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7505 fra.me.file = LOCATE_syntax___typing;
7506 fra.me.line = 1390;
7507 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
7508 fra.me.has_broke = 0;
7509 fra.me.REG_size = 3;
7510 fra.me.REG[0] = NIT_NULL;
7511 fra.me.REG[1] = NIT_NULL;
7512 fra.me.REG[2] = NIT_NULL;
7513 fra.me.REG[0] = p0;
7514 /* ./syntax//typing.nit:1392 */
7515 REGB0 = TAG_Int(3);
7516 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7517 if (!once_value_1) {
7518 fra.me.REG[2] = BOX_NativeString("");
7519 REGB0 = TAG_Int(0);
7520 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7521 once_value_1 = fra.me.REG[2];
7522 register_static_object(&once_value_1);
7523 } else fra.me.REG[2] = once_value_1;
7524 fra.me.REG[2] = fra.me.REG[2];
7525 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7526 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
7527 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7528 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7529 if (!once_value_2) {
7530 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
7531 REGB0 = TAG_Int(25);
7532 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7533 once_value_2 = fra.me.REG[2];
7534 register_static_object(&once_value_2);
7535 } else fra.me.REG[2] = once_value_2;
7536 fra.me.REG[2] = fra.me.REG[2];
7537 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7538 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
7539 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7540 /* ./syntax//typing.nit:1393 */
7541 fra.me.REG[1] = NIT_NULL;
7542 goto label3;
7543 label3: while(0);
7544 stack_frame_head = fra.me.prev;
7545 return fra.me.REG[1];
7546 }
7547 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7548 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7549 val_t REGB0;
7550 val_t REGB1;
7551 val_t REGB2;
7552 val_t REGB3;
7553 val_t REGB4;
7554 val_t REGB5;
7555 val_t REGB6;
7556 val_t REGB7;
7557 val_t REGB8;
7558 val_t REGB9;
7559 val_t REGB10;
7560 val_t REGB11;
7561 val_t tmp;
7562 static val_t once_value_1; /* Once value */
7563 static val_t once_value_2; /* Once value */
7564 static val_t once_value_3; /* Once value */
7565 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7566 fra.me.file = LOCATE_syntax___typing;
7567 fra.me.line = 1396;
7568 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
7569 fra.me.has_broke = 0;
7570 fra.me.REG_size = 7;
7571 fra.me.REG[0] = NIT_NULL;
7572 fra.me.REG[1] = NIT_NULL;
7573 fra.me.REG[2] = NIT_NULL;
7574 fra.me.REG[3] = NIT_NULL;
7575 fra.me.REG[4] = NIT_NULL;
7576 fra.me.REG[5] = NIT_NULL;
7577 fra.me.REG[6] = NIT_NULL;
7578 fra.me.REG[0] = p0;
7579 fra.me.REG[1] = p1;
7580 fra.me.REG[2] = p2;
7581 fra.me.REG[3] = p3;
7582 fra.me.REG[4] = p4;
7583 /* ./syntax//typing.nit:1399 */
7584 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
7585 /* ./syntax//typing.nit:1400 */
7586 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
7587 /* ./syntax//typing.nit:1402 */
7588 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7589 if (UNTAG_Bool(REGB2)) {
7590 } else {
7591 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7592 if (UNTAG_Bool(REGB3)) {
7593 REGB3 = TAG_Bool(false);
7594 REGB2 = REGB3;
7595 } else {
7596 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7597 REGB2 = REGB3;
7598 }
7599 }
7600 if (UNTAG_Bool(REGB2)) {
7601 REGB2 = TAG_Int(0);
7602 } else {
7603 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7604 if (UNTAG_Bool(REGB3)) {
7605 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1402);
7606 }
7607 /* ./../lib/standard//collection//array.nit:23 */
7608 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7609 if (UNTAG_Bool(REGB3)) {
7610 } else {
7611 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7612 }
7613 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7614 /* ./syntax//typing.nit:1402 */
7615 REGB2 = REGB3;
7616 }
7617 /* ./../lib/standard//kernel.nit:217 */
7618 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7619 /* ./syntax//typing.nit:1403 */
7620 if (UNTAG_Bool(REGB3)) {
7621 REGB3 = TAG_Bool(true);
7622 } else {
7623 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7624 if (UNTAG_Bool(REGB4)) {
7625 } else {
7626 /* ./../lib/standard//kernel.nit:210 */
7627 REGB5 = TAG_Bool((REGB1)==(REGB2));
7628 /* ./syntax//typing.nit:1403 */
7629 REGB4 = REGB5;
7630 }
7631 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
7632 if (UNTAG_Bool(REGB4)) {
7633 REGB4 = TAG_Int(1);
7634 /* ./../lib/standard//kernel.nit:219 */
7635 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
7636 /* ./syntax//typing.nit:1403 */
7637 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
7638 if (UNTAG_Bool(REGB5)) {
7639 } else {
7640 /* ./../lib/standard//kernel.nit:210 */
7641 REGB4 = TAG_Bool((REGB0)==(REGB4));
7642 /* ./syntax//typing.nit:1403 */
7643 REGB5 = REGB4;
7644 }
7645 } else {
7646 REGB4 = TAG_Bool(false);
7647 REGB5 = REGB4;
7648 }
7649 REGB3 = REGB5;
7650 }
7651 if (UNTAG_Bool(REGB3)) {
7652 /* ./syntax//typing.nit:1404 */
7653 REGB3 = TAG_Int(5);
7654 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
7655 if (!once_value_1) {
7656 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
7657 REGB3 = TAG_Int(37);
7658 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
7659 once_value_1 = fra.me.REG[6];
7660 register_static_object(&once_value_1);
7661 } else fra.me.REG[6] = once_value_1;
7662 fra.me.REG[6] = fra.me.REG[6];
7663 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7664 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7665 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7666 if (!once_value_2) {
7667 fra.me.REG[3] = BOX_NativeString("");
7668 REGB3 = TAG_Int(0);
7669 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7670 once_value_2 = fra.me.REG[3];
7671 register_static_object(&once_value_2);
7672 } else fra.me.REG[3] = once_value_2;
7673 fra.me.REG[3] = fra.me.REG[3];
7674 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7675 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7677 if (!once_value_3) {
7678 fra.me.REG[3] = BOX_NativeString("'.");
7679 REGB3 = TAG_Int(2);
7680 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7681 once_value_3 = fra.me.REG[3];
7682 register_static_object(&once_value_3);
7683 } else fra.me.REG[3] = once_value_3;
7684 fra.me.REG[3] = fra.me.REG[3];
7685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7686 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7687 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7688 /* ./syntax//typing.nit:1405 */
7689 REGB3 = TAG_Bool(false);
7690 goto label4;
7691 }
7692 /* ./syntax//typing.nit:1407 */
7693 REGB5 = TAG_Int(0);
7694 /* ./syntax//typing.nit:1408 */
7695 REGB4 = TAG_Int(0);
7696 /* ./../lib/standard//kernel.nit:330 */
7697 REGB6 = REGB1;
7698 /* ./../lib/standard//kernel.nit:335 */
7699 while(1) {
7700 /* ./../lib/standard//kernel.nit:215 */
7701 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
7702 /* ./../lib/standard//kernel.nit:335 */
7703 if (UNTAG_Bool(REGB7)) {
7704 /* ./syntax//typing.nit:1408 */
7705 REGB7 = REGB4;
7706 /* ./syntax//typing.nit:1410 */
7707 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
7708 /* ./syntax//typing.nit:1411 */
7709 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
7710 if (UNTAG_Bool(REGB8)) {
7711 } else {
7712 /* ./../lib/standard//kernel.nit:210 */
7713 REGB7 = TAG_Bool((REGB7)==(REGB0));
7714 /* ./syntax//typing.nit:1411 */
7715 REGB8 = REGB7;
7716 }
7717 if (UNTAG_Bool(REGB8)) {
7718 /* ./syntax//typing.nit:1412 */
7719 REGB8 = TAG_Int(0);
7720 /* ./../lib/standard//kernel.nit:220 */
7721 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
7722 /* ./../lib/standard//kernel.nit:324 */
7723 while(1) {
7724 /* ./../lib/standard//kernel.nit:214 */
7725 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
7726 /* ./../lib/standard//kernel.nit:324 */
7727 if (UNTAG_Bool(REGB9)) {
7728 /* ./syntax//typing.nit:1413 */
7729 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7730 if (UNTAG_Bool(REGB9)) {
7731 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1413);
7732 }
7733 /* ./../lib/standard//collection//array.nit:243 */
7734 fra.me.REG[0] = fra.me.REG[4];
7735 REGB9 = REGB5;
7736 /* ./../lib/standard//collection//array.nit:245 */
7737 REGB10 = TAG_Int(0);
7738 /* ./../lib/standard//kernel.nit:216 */
7739 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
7740 /* ./../lib/standard//collection//array.nit:245 */
7741 if (UNTAG_Bool(REGB10)) {
7742 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
7743 if (UNTAG_Bool(REGB10)) {
7744 } else {
7745 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
7746 }
7747 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
7748 /* ./../lib/standard//kernel.nit:215 */
7749 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
7750 } else {
7751 /* ./../lib/standard//collection//array.nit:245 */
7752 REGB11 = TAG_Bool(false);
7753 REGB10 = REGB11;
7754 }
7755 if (UNTAG_Bool(REGB10)) {
7756 } else {
7757 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 245);
7758 }
7759 /* ./../lib/standard//collection//array.nit:246 */
7760 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
7761 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
7762 if (UNTAG_Bool(REGB10)) {
7763 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
7764 }
7765 /* ./../lib/standard//collection//array.nit:654 */
7766 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
7767 /* ./../lib/standard//collection//array.nit:246 */
7768 goto label5;
7769 label5: while(0);
7770 /* ./syntax//typing.nit:1414 */
7771 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7772 /* ./syntax//typing.nit:1415 */
7773 REGB9 = TAG_Int(1);
7774 /* ./../lib/standard//kernel.nit:218 */
7775 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
7776 /* ./syntax//typing.nit:1415 */
7777 REGB5 = REGB9;
7778 /* ./../lib/standard//kernel.nit:326 */
7779 REGB9 = TAG_Int(1);
7780 /* ./../lib/standard//kernel.nit:218 */
7781 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
7782 /* ./../lib/standard//kernel.nit:326 */
7783 REGB8 = REGB9;
7784 } else {
7785 /* ./../lib/standard//kernel.nit:324 */
7786 goto label6;
7787 }
7788 }
7789 label6: while(0);
7790 } else {
7791 /* ./syntax//typing.nit:1418 */
7792 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7793 if (UNTAG_Bool(REGB8)) {
7794 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1418);
7795 }
7796 /* ./../lib/standard//collection//array.nit:243 */
7797 fra.me.REG[3] = fra.me.REG[4];
7798 REGB8 = REGB5;
7799 /* ./../lib/standard//collection//array.nit:245 */
7800 REGB7 = TAG_Int(0);
7801 /* ./../lib/standard//kernel.nit:216 */
7802 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
7803 /* ./../lib/standard//collection//array.nit:245 */
7804 if (UNTAG_Bool(REGB7)) {
7805 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
7806 if (UNTAG_Bool(REGB7)) {
7807 } else {
7808 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
7809 }
7810 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
7811 /* ./../lib/standard//kernel.nit:215 */
7812 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
7813 } else {
7814 /* ./../lib/standard//collection//array.nit:245 */
7815 REGB9 = TAG_Bool(false);
7816 REGB7 = REGB9;
7817 }
7818 if (UNTAG_Bool(REGB7)) {
7819 } else {
7820 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 245);
7821 }
7822 /* ./../lib/standard//collection//array.nit:246 */
7823 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
7824 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7825 if (UNTAG_Bool(REGB7)) {
7826 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
7827 }
7828 /* ./../lib/standard//collection//array.nit:654 */
7829 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
7830 /* ./../lib/standard//collection//array.nit:246 */
7831 goto label7;
7832 label7: while(0);
7833 /* ./syntax//typing.nit:1418 */
7834 fra.me.REG[0] = fra.me.REG[3];
7835 /* ./syntax//typing.nit:1419 */
7836 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7837 /* ./syntax//typing.nit:1420 */
7838 REGB8 = TAG_Int(1);
7839 /* ./../lib/standard//kernel.nit:218 */
7840 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
7841 /* ./syntax//typing.nit:1420 */
7842 REGB5 = REGB8;
7843 }
7844 /* ./../lib/standard//kernel.nit:337 */
7845 REGB8 = TAG_Int(1);
7846 /* ./../lib/standard//kernel.nit:218 */
7847 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
7848 /* ./../lib/standard//kernel.nit:337 */
7849 REGB4 = REGB8;
7850 } else {
7851 /* ./../lib/standard//kernel.nit:335 */
7852 goto label8;
7853 }
7854 }
7855 label8: while(0);
7856 /* ./syntax//typing.nit:1423 */
7857 REGB4 = TAG_Bool(true);
7858 REGB3 = REGB4;
7859 goto label4;
7860 label4: while(0);
7861 stack_frame_head = fra.me.prev;
7862 return REGB3;
7863 }
7864 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7865 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
7866 val_t REGB0;
7867 val_t REGB1;
7868 val_t REGB2;
7869 val_t REGB3;
7870 val_t REGB4;
7871 val_t REGB5;
7872 val_t tmp;
7873 static val_t once_value_2; /* Once value */
7874 static val_t once_value_3; /* Once value */
7875 static val_t once_value_4; /* Once value */
7876 static val_t once_value_5; /* Once value */
7877 static val_t once_value_6; /* Once value */
7878 static val_t once_value_7; /* Once value */
7879 static val_t once_value_8; /* Once value */
7880 static val_t once_value_11; /* Once value */
7881 static val_t once_value_12; /* Once value */
7882 static val_t once_value_13; /* Once value */
7883 static val_t once_value_14; /* Once value */
7884 static val_t once_value_15; /* Once value */
7885 static val_t once_value_16; /* Once value */
7886 static val_t once_value_18; /* Once value */
7887 static val_t once_value_19; /* Once value */
7888 static val_t once_value_20; /* Once value */
7889 static val_t once_value_21; /* Once value */
7890 static val_t once_value_22; /* Once value */
7891 static val_t once_value_24; /* Once value */
7892 static val_t once_value_25; /* Once value */
7893 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7894 fra.me.file = LOCATE_syntax___typing;
7895 fra.me.line = 1426;
7896 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
7897 fra.me.has_broke = 0;
7898 fra.me.REG_size = 17;
7899 fra.me.REG[0] = NIT_NULL;
7900 fra.me.REG[1] = NIT_NULL;
7901 fra.me.REG[2] = NIT_NULL;
7902 fra.me.REG[3] = NIT_NULL;
7903 fra.me.REG[4] = NIT_NULL;
7904 fra.me.REG[5] = NIT_NULL;
7905 fra.me.REG[6] = NIT_NULL;
7906 fra.me.REG[7] = NIT_NULL;
7907 fra.me.REG[8] = NIT_NULL;
7908 fra.me.REG[9] = NIT_NULL;
7909 fra.me.REG[10] = NIT_NULL;
7910 fra.me.REG[11] = NIT_NULL;
7911 fra.me.REG[12] = NIT_NULL;
7912 fra.me.REG[13] = NIT_NULL;
7913 fra.me.REG[14] = NIT_NULL;
7914 fra.me.REG[15] = NIT_NULL;
7915 fra.me.REG[16] = NIT_NULL;
7916 fra.me.REG[0] = p0;
7917 fra.me.REG[1] = p1;
7918 fra.me.REG[2] = p2;
7919 fra.me.REG[3] = p3;
7920 fra.me.REG[4] = p4;
7921 /* ./syntax//typing.nit:1429 */
7922 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7923 /* ./syntax//typing.nit:1430 */
7924 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
7925 /* ./syntax//typing.nit:1431 */
7926 REGB0 = TAG_Int(0);
7927 /* ./../lib/standard//collection//array.nit:231 */
7928 fra.me.REG[7] = fra.me.REG[6];
7929 /* ./../lib/standard//collection//array.nit:234 */
7930 REGB1 = TAG_Int(0);
7931 /* ./../lib/standard//collection//array.nit:235 */
7932 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7933 if (UNTAG_Bool(REGB2)) {
7934 } else {
7935 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
7936 }
7937 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
7938 /* ./../lib/standard//collection//array.nit:236 */
7939 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
7940 /* ./../lib/standard//collection//array.nit:237 */
7941 while(1) {
7942 /* ./../lib/standard//collection//array.nit:23 */
7943 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7944 if (UNTAG_Bool(REGB2)) {
7945 } else {
7946 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7947 }
7948 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
7949 /* ./../lib/standard//kernel.nit:215 */
7950 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
7951 /* ./../lib/standard//collection//array.nit:237 */
7952 if (UNTAG_Bool(REGB2)) {
7953 /* ./../lib/standard//collection//array.nit:238 */
7954 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
7955 if (UNTAG_Bool(REGB2)) {
7956 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
7957 }
7958 /* ./../lib/standard//collection//array.nit:654 */
7959 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
7960 /* ./syntax//typing.nit:1433 */
7961 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
7962 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7963 if (UNTAG_Bool(REGB2)) {
7964 REGB2 = TAG_Int(1);
7965 /* ./../lib/standard//kernel.nit:218 */
7966 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
7967 /* ./syntax//typing.nit:1433 */
7968 REGB0 = REGB2;
7969 }
7970 /* ./../lib/standard//collection//array.nit:239 */
7971 REGB2 = TAG_Int(1);
7972 /* ./../lib/standard//kernel.nit:218 */
7973 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
7974 /* ./../lib/standard//collection//array.nit:239 */
7975 REGB1 = REGB2;
7976 } else {
7977 /* ./../lib/standard//collection//array.nit:237 */
7978 goto label1;
7979 }
7980 }
7981 label1: while(0);
7982 /* ./syntax//typing.nit:1435 */
7983 REGB1 = TAG_Int(0);
7984 /* ./syntax//typing.nit:1436 */
7985 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7986 if (UNTAG_Bool(REGB2)) {
7987 } else {
7988 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7989 if (UNTAG_Bool(REGB3)) {
7990 REGB3 = TAG_Bool(false);
7991 REGB2 = REGB3;
7992 } else {
7993 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7994 REGB2 = REGB3;
7995 }
7996 }
7997 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7998 if (UNTAG_Bool(REGB2)) {
7999 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8000 if (UNTAG_Bool(REGB2)) {
8001 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1436);
8002 }
8003 /* ./../lib/standard//collection//array.nit:23 */
8004 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8005 if (UNTAG_Bool(REGB2)) {
8006 } else {
8007 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8008 }
8009 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8010 /* ./syntax//typing.nit:1436 */
8011 REGB1 = REGB2;
8012 }
8013 /* ./../lib/standard//collection//array.nit:23 */
8014 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8015 if (UNTAG_Bool(REGB2)) {
8016 } else {
8017 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8018 }
8019 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8020 /* ./syntax//typing.nit:1437 */
8021 REGB3 = TAG_Int(0);
8022 /* ./../lib/standard//kernel.nit:217 */
8023 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8024 /* ./syntax//typing.nit:1437 */
8025 if (UNTAG_Bool(REGB3)) {
8026 /* ./syntax//typing.nit:1438 */
8027 REGB3 = TAG_Int(0);
8028 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8029 if (UNTAG_Bool(REGB2)) {
8030 } else {
8031 /* ./../lib/standard//kernel.nit:210 */
8032 REGB3 = TAG_Bool((REGB1)==(REGB3));
8033 /* ./syntax//typing.nit:1438 */
8034 REGB2 = REGB3;
8035 }
8036 if (UNTAG_Bool(REGB2)) {
8037 REGB2 = TAG_Int(0);
8038 /* ./../lib/standard//kernel.nit:217 */
8039 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8040 } else {
8041 /* ./syntax//typing.nit:1438 */
8042 REGB3 = TAG_Bool(false);
8043 REGB2 = REGB3;
8044 }
8045 if (UNTAG_Bool(REGB2)) {
8046 /* ./syntax//typing.nit:1439 */
8047 REGB2 = TAG_Int(5);
8048 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8049 if (!once_value_2) {
8050 fra.me.REG[7] = BOX_NativeString("Error: ");
8051 REGB2 = TAG_Int(7);
8052 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8053 once_value_2 = fra.me.REG[7];
8054 register_static_object(&once_value_2);
8055 } else fra.me.REG[7] = once_value_2;
8056 fra.me.REG[7] = fra.me.REG[7];
8057 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8058 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8059 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8060 if (!once_value_3) {
8061 fra.me.REG[7] = BOX_NativeString(" requires ");
8062 REGB2 = TAG_Int(10);
8063 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8064 once_value_3 = fra.me.REG[7];
8065 register_static_object(&once_value_3);
8066 } else fra.me.REG[7] = once_value_3;
8067 fra.me.REG[7] = fra.me.REG[7];
8068 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8069 /* ./../lib/standard//collection//array.nit:23 */
8070 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8071 if (UNTAG_Bool(REGB2)) {
8072 } else {
8073 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8074 }
8075 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8076 /* ./syntax//typing.nit:1439 */
8077 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8079 if (!once_value_4) {
8080 fra.me.REG[7] = BOX_NativeString(" blocks.");
8081 REGB2 = TAG_Int(8);
8082 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8083 once_value_4 = fra.me.REG[7];
8084 register_static_object(&once_value_4);
8085 } else fra.me.REG[7] = once_value_4;
8086 fra.me.REG[7] = fra.me.REG[7];
8087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8088 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8089 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8090 } else {
8091 /* ./../lib/standard//collection//array.nit:23 */
8092 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8093 if (UNTAG_Bool(REGB2)) {
8094 } else {
8095 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8096 }
8097 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8098 /* ./../lib/standard//kernel.nit:217 */
8099 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8100 /* ./syntax//typing.nit:1440 */
8101 if (UNTAG_Bool(REGB2)) {
8102 REGB2 = TAG_Bool(true);
8103 } else {
8104 /* ./../lib/standard//kernel.nit:215 */
8105 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8106 /* ./syntax//typing.nit:1440 */
8107 REGB2 = REGB0;
8108 }
8109 if (UNTAG_Bool(REGB2)) {
8110 /* ./syntax//typing.nit:1441 */
8111 REGB2 = TAG_Int(7);
8112 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8113 if (!once_value_5) {
8114 fra.me.REG[7] = BOX_NativeString("Error: ");
8115 REGB2 = TAG_Int(7);
8116 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8117 once_value_5 = fra.me.REG[7];
8118 register_static_object(&once_value_5);
8119 } else fra.me.REG[7] = once_value_5;
8120 fra.me.REG[7] = fra.me.REG[7];
8121 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8122 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8123 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8124 if (!once_value_6) {
8125 fra.me.REG[7] = BOX_NativeString(" requires ");
8126 REGB2 = TAG_Int(10);
8127 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8128 once_value_6 = fra.me.REG[7];
8129 register_static_object(&once_value_6);
8130 } else fra.me.REG[7] = once_value_6;
8131 fra.me.REG[7] = fra.me.REG[7];
8132 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8133 /* ./../lib/standard//collection//array.nit:23 */
8134 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8135 if (UNTAG_Bool(REGB2)) {
8136 } else {
8137 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8138 }
8139 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8140 /* ./syntax//typing.nit:1441 */
8141 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8142 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8143 if (!once_value_7) {
8144 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8145 REGB2 = TAG_Int(9);
8146 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8147 once_value_7 = fra.me.REG[7];
8148 register_static_object(&once_value_7);
8149 } else fra.me.REG[7] = once_value_7;
8150 fra.me.REG[7] = fra.me.REG[7];
8151 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8152 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8153 if (UNTAG_Bool(REGB2)) {
8154 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1441);
8155 }
8156 /* ./../lib/standard//collection//array.nit:23 */
8157 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8158 if (UNTAG_Bool(REGB2)) {
8159 } else {
8160 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8161 }
8162 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8163 /* ./syntax//typing.nit:1441 */
8164 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8165 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8166 if (!once_value_8) {
8167 fra.me.REG[7] = BOX_NativeString(" found.");
8168 REGB2 = TAG_Int(7);
8169 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8170 once_value_8 = fra.me.REG[7];
8171 register_static_object(&once_value_8);
8172 } else fra.me.REG[7] = once_value_8;
8173 fra.me.REG[7] = fra.me.REG[7];
8174 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8175 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8176 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8177 } else {
8178 /* ./syntax//typing.nit:1444 */
8179 fra.me.REG[8] = NIT_NULL;
8180 /* ./syntax//typing.nit:1445 */
8181 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8182 if (UNTAG_Bool(REGB2)) {
8183 } else {
8184 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8185 if (UNTAG_Bool(REGB0)) {
8186 REGB0 = TAG_Bool(false);
8187 REGB2 = REGB0;
8188 } else {
8189 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8190 REGB2 = REGB0;
8191 }
8192 }
8193 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8194 if (UNTAG_Bool(REGB2)) {
8195 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8196 fra.me.REG[8] = fra.me.REG[7];
8197 }
8198 /* ./syntax//typing.nit:1448 */
8199 REGB2 = TAG_Int(0);
8200 /* ./../lib/standard//kernel.nit:217 */
8201 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8202 /* ./syntax//typing.nit:1448 */
8203 if (UNTAG_Bool(REGB2)) {
8204 REGB2 = TAG_Int(1);
8205 /* ./../lib/standard//kernel.nit:220 */
8206 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8207 /* ./syntax//typing.nit:1448 */
8208 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8209 if (UNTAG_Bool(REGB0)) {
8210 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8211 }
8212 /* ./../lib/standard//collection//array.nit:243 */
8213 fra.me.REG[7] = fra.me.REG[4];
8214 /* ./../lib/standard//collection//array.nit:245 */
8215 REGB0 = TAG_Int(0);
8216 /* ./../lib/standard//kernel.nit:216 */
8217 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8218 /* ./../lib/standard//collection//array.nit:245 */
8219 if (UNTAG_Bool(REGB0)) {
8220 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8221 if (UNTAG_Bool(REGB0)) {
8222 } else {
8223 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
8224 }
8225 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8226 /* ./../lib/standard//kernel.nit:215 */
8227 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8228 } else {
8229 /* ./../lib/standard//collection//array.nit:245 */
8230 REGB3 = TAG_Bool(false);
8231 REGB0 = REGB3;
8232 }
8233 if (UNTAG_Bool(REGB0)) {
8234 } else {
8235 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 245);
8236 }
8237 /* ./../lib/standard//collection//array.nit:246 */
8238 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8239 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8240 if (UNTAG_Bool(REGB0)) {
8241 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
8242 }
8243 /* ./../lib/standard//collection//array.nit:654 */
8244 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8245 /* ./../lib/standard//collection//array.nit:246 */
8246 goto label9;
8247 label9: while(0);
8248 /* ./syntax//typing.nit:1448 */
8249 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8250 if (UNTAG_Bool(REGB2)) {
8251 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8252 }
8253 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8254 } else {
8255 fra.me.REG[7] = NIT_NULL;
8256 }
8257 /* ./syntax//typing.nit:1451 */
8258 REGB2 = TAG_Int(0);
8259 /* ./../lib/standard//kernel.nit:330 */
8260 REGB0 = REGB1;
8261 /* ./../lib/standard//kernel.nit:335 */
8262 while(1) {
8263 /* ./../lib/standard//kernel.nit:215 */
8264 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8265 /* ./../lib/standard//kernel.nit:335 */
8266 if (UNTAG_Bool(REGB3)) {
8267 /* ./syntax//typing.nit:1451 */
8268 REGB3 = REGB2;
8269 /* ./syntax//typing.nit:1452 */
8270 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8271 if (UNTAG_Bool(REGB4)) {
8272 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1452);
8273 }
8274 /* ./../lib/standard//collection//array.nit:243 */
8275 fra.me.REG[9] = fra.me.REG[4];
8276 /* ./../lib/standard//collection//array.nit:245 */
8277 REGB4 = TAG_Int(0);
8278 /* ./../lib/standard//kernel.nit:216 */
8279 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
8280 /* ./../lib/standard//collection//array.nit:245 */
8281 if (UNTAG_Bool(REGB4)) {
8282 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
8283 if (UNTAG_Bool(REGB4)) {
8284 } else {
8285 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
8286 }
8287 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
8288 /* ./../lib/standard//kernel.nit:215 */
8289 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
8290 } else {
8291 /* ./../lib/standard//collection//array.nit:245 */
8292 REGB5 = TAG_Bool(false);
8293 REGB4 = REGB5;
8294 }
8295 if (UNTAG_Bool(REGB4)) {
8296 } else {
8297 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 245);
8298 }
8299 /* ./../lib/standard//collection//array.nit:246 */
8300 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
8301 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
8302 if (UNTAG_Bool(REGB4)) {
8303 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
8304 }
8305 /* ./../lib/standard//collection//array.nit:654 */
8306 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
8307 /* ./../lib/standard//collection//array.nit:246 */
8308 goto label10;
8309 label10: while(0);
8310 /* ./syntax//typing.nit:1453 */
8311 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8312 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
8313 /* ./syntax//typing.nit:1454 */
8314 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
8315 /* ./syntax//typing.nit:1455 */
8316 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8317 if (UNTAG_Bool(REGB3)) {
8318 } else {
8319 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8320 if (UNTAG_Bool(REGB4)) {
8321 REGB4 = TAG_Bool(false);
8322 REGB3 = REGB4;
8323 } else {
8324 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
8325 REGB3 = REGB4;
8326 }
8327 }
8328 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
8329 if (UNTAG_Bool(REGB3)) {
8330 /* ./syntax//typing.nit:1456 */
8331 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
8332 /* ./syntax//typing.nit:1457 */
8333 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8334 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
8335 /* ./syntax//typing.nit:1458 */
8336 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
8337 /* ./syntax//typing.nit:1459 */
8338 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8339 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
8340 } else {
8341 /* ./../lib/standard//collection//array.nit:23 */
8342 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8343 if (UNTAG_Bool(REGB3)) {
8344 } else {
8345 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8346 }
8347 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8348 /* ./syntax//typing.nit:1460 */
8349 REGB4 = TAG_Int(1);
8350 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
8351 if (UNTAG_Bool(REGB5)) {
8352 } else {
8353 /* ./../lib/standard//kernel.nit:210 */
8354 REGB4 = TAG_Bool((REGB3)==(REGB4));
8355 /* ./syntax//typing.nit:1460 */
8356 REGB5 = REGB4;
8357 }
8358 if (UNTAG_Bool(REGB5)) {
8359 /* ./syntax//typing.nit:1461 */
8360 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8361 REGB5 = TAG_Int(7);
8362 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8363 if (!once_value_11) {
8364 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
8365 REGB5 = TAG_Int(26);
8366 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8367 once_value_11 = fra.me.REG[13];
8368 register_static_object(&once_value_11);
8369 } else fra.me.REG[13] = once_value_11;
8370 fra.me.REG[13] = fra.me.REG[13];
8371 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8372 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8373 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8374 if (!once_value_12) {
8375 fra.me.REG[13] = BOX_NativeString("' in ");
8376 REGB5 = TAG_Int(5);
8377 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8378 once_value_12 = fra.me.REG[13];
8379 register_static_object(&once_value_12);
8380 } else fra.me.REG[13] = once_value_12;
8381 fra.me.REG[13] = fra.me.REG[13];
8382 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8383 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8385 if (!once_value_13) {
8386 fra.me.REG[13] = BOX_NativeString("; only closure is !");
8387 REGB5 = TAG_Int(19);
8388 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8389 once_value_13 = fra.me.REG[13];
8390 register_static_object(&once_value_13);
8391 } else fra.me.REG[13] = once_value_13;
8392 fra.me.REG[13] = fra.me.REG[13];
8393 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8394 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
8395 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8396 if (UNTAG_Bool(REGB5)) {
8397 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1461);
8398 }
8399 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
8400 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8401 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8402 if (!once_value_14) {
8403 fra.me.REG[13] = BOX_NativeString(".");
8404 REGB5 = TAG_Int(1);
8405 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8406 once_value_14 = fra.me.REG[13];
8407 register_static_object(&once_value_14);
8408 } else fra.me.REG[13] = once_value_14;
8409 fra.me.REG[13] = fra.me.REG[13];
8410 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8411 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
8412 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
8413 } else {
8414 /* ./syntax//typing.nit:1463 */
8415 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
8416 /* ./../lib/standard//collection//array.nit:231 */
8417 fra.me.REG[11] = fra.me.REG[6];
8418 /* ./../lib/standard//collection//array.nit:234 */
8419 REGB5 = TAG_Int(0);
8420 /* ./../lib/standard//collection//array.nit:235 */
8421 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8422 if (UNTAG_Bool(REGB4)) {
8423 } else {
8424 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
8425 }
8426 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8427 /* ./../lib/standard//collection//array.nit:236 */
8428 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
8429 /* ./../lib/standard//collection//array.nit:237 */
8430 while(1) {
8431 /* ./../lib/standard//collection//array.nit:23 */
8432 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8433 if (UNTAG_Bool(REGB4)) {
8434 } else {
8435 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8436 }
8437 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8438 /* ./../lib/standard//kernel.nit:215 */
8439 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
8440 /* ./../lib/standard//collection//array.nit:237 */
8441 if (UNTAG_Bool(REGB4)) {
8442 /* ./../lib/standard//collection//array.nit:238 */
8443 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8444 if (UNTAG_Bool(REGB4)) {
8445 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
8446 }
8447 /* ./../lib/standard//collection//array.nit:654 */
8448 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
8449 /* ./syntax//typing.nit:1465 */
8450 REGB4 = TAG_Int(3);
8451 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
8452 if (!once_value_15) {
8453 fra.me.REG[16] = BOX_NativeString("!");
8454 REGB4 = TAG_Int(1);
8455 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
8456 once_value_15 = fra.me.REG[16];
8457 register_static_object(&once_value_15);
8458 } else fra.me.REG[16] = once_value_15;
8459 fra.me.REG[16] = fra.me.REG[16];
8460 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
8461 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
8462 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
8463 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8464 if (!once_value_16) {
8465 fra.me.REG[14] = BOX_NativeString("");
8466 REGB4 = TAG_Int(0);
8467 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
8468 once_value_16 = fra.me.REG[14];
8469 register_static_object(&once_value_16);
8470 } else fra.me.REG[14] = once_value_16;
8471 fra.me.REG[14] = fra.me.REG[14];
8472 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8473 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
8474 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
8475 /* ./../lib/standard//collection//array.nit:239 */
8476 REGB4 = TAG_Int(1);
8477 /* ./../lib/standard//kernel.nit:218 */
8478 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
8479 /* ./../lib/standard//collection//array.nit:239 */
8480 REGB5 = REGB4;
8481 } else {
8482 /* ./../lib/standard//collection//array.nit:237 */
8483 goto label17;
8484 }
8485 }
8486 label17: while(0);
8487 /* ./syntax//typing.nit:1467 */
8488 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8489 REGB5 = TAG_Int(7);
8490 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8491 if (!once_value_18) {
8492 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
8493 REGB5 = TAG_Int(26);
8494 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
8495 once_value_18 = fra.me.REG[11];
8496 register_static_object(&once_value_18);
8497 } else fra.me.REG[11] = once_value_18;
8498 fra.me.REG[11] = fra.me.REG[11];
8499 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
8500 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8501 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8502 if (!once_value_19) {
8503 fra.me.REG[10] = BOX_NativeString("' in ");
8504 REGB5 = TAG_Int(5);
8505 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8506 once_value_19 = fra.me.REG[10];
8507 register_static_object(&once_value_19);
8508 } else fra.me.REG[10] = once_value_19;
8509 fra.me.REG[10] = fra.me.REG[10];
8510 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8511 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8512 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8513 if (!once_value_20) {
8514 fra.me.REG[10] = BOX_NativeString("; only closures are ");
8515 REGB5 = TAG_Int(20);
8516 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8517 once_value_20 = fra.me.REG[10];
8518 register_static_object(&once_value_20);
8519 } else fra.me.REG[10] = once_value_20;
8520 fra.me.REG[10] = fra.me.REG[10];
8521 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8522 if (!once_value_21) {
8523 fra.me.REG[10] = BOX_NativeString(",");
8524 REGB5 = TAG_Int(1);
8525 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8526 once_value_21 = fra.me.REG[10];
8527 register_static_object(&once_value_21);
8528 } else fra.me.REG[10] = once_value_21;
8529 fra.me.REG[10] = fra.me.REG[10];
8530 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
8531 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8532 if (!once_value_22) {
8533 fra.me.REG[10] = BOX_NativeString(".");
8534 REGB5 = TAG_Int(1);
8535 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8536 once_value_22 = fra.me.REG[10];
8537 register_static_object(&once_value_22);
8538 } else fra.me.REG[10] = once_value_22;
8539 fra.me.REG[10] = fra.me.REG[10];
8540 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8541 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8542 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
8543 }
8544 }
8545 /* ./../lib/standard//kernel.nit:337 */
8546 REGB5 = TAG_Int(1);
8547 /* ./../lib/standard//kernel.nit:218 */
8548 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
8549 /* ./../lib/standard//kernel.nit:337 */
8550 REGB2 = REGB5;
8551 } else {
8552 /* ./../lib/standard//kernel.nit:335 */
8553 goto label23;
8554 }
8555 }
8556 label23: while(0);
8557 /* ./syntax//typing.nit:1472 */
8558 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8559 if (UNTAG_Bool(REGB2)) {
8560 } else {
8561 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8562 if (UNTAG_Bool(REGB0)) {
8563 REGB0 = TAG_Bool(false);
8564 REGB2 = REGB0;
8565 } else {
8566 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
8567 REGB2 = REGB0;
8568 }
8569 }
8570 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8571 if (UNTAG_Bool(REGB2)) {
8572 /* ./syntax//typing.nit:1473 */
8573 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[8]);
8574 fra.me.REG[5] = fra.me.REG[8];
8575 }
8576 }
8577 }
8578 } else {
8579 /* ./syntax//typing.nit:1476 */
8580 REGB2 = TAG_Int(0);
8581 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8582 if (UNTAG_Bool(REGB0)) {
8583 } else {
8584 /* ./../lib/standard//kernel.nit:210 */
8585 REGB2 = TAG_Bool((REGB1)==(REGB2));
8586 /* ./syntax//typing.nit:1476 */
8587 REGB0 = REGB2;
8588 }
8589 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8590 if (UNTAG_Bool(REGB0)) {
8591 /* ./syntax//typing.nit:1477 */
8592 REGB0 = TAG_Int(3);
8593 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8594 if (!once_value_24) {
8595 fra.me.REG[6] = BOX_NativeString("Error: ");
8596 REGB0 = TAG_Int(7);
8597 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
8598 once_value_24 = fra.me.REG[6];
8599 register_static_object(&once_value_24);
8600 } else fra.me.REG[6] = once_value_24;
8601 fra.me.REG[6] = fra.me.REG[6];
8602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
8603 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8604 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8605 if (!once_value_25) {
8606 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
8607 REGB0 = TAG_Int(25);
8608 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
8609 once_value_25 = fra.me.REG[3];
8610 register_static_object(&once_value_25);
8611 } else fra.me.REG[3] = once_value_25;
8612 fra.me.REG[3] = fra.me.REG[3];
8613 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8614 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8615 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8616 }
8617 }
8618 /* ./syntax//typing.nit:1479 */
8619 goto label26;
8620 label26: while(0);
8621 stack_frame_head = fra.me.prev;
8622 return fra.me.REG[5];
8623 }
8624 void syntax___typing___AAbsSendExpr___do_typing(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7){
8625 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8626 val_t REGB0;
8627 val_t REGB1;
8628 val_t REGB2;
8629 val_t tmp;
8630 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8631 fra.me.file = LOCATE_syntax___typing;
8632 fra.me.line = 1484;
8633 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
8634 fra.me.has_broke = 0;
8635 fra.me.REG_size = 7;
8636 fra.me.REG[0] = NIT_NULL;
8637 fra.me.REG[1] = NIT_NULL;
8638 fra.me.REG[2] = NIT_NULL;
8639 fra.me.REG[3] = NIT_NULL;
8640 fra.me.REG[4] = NIT_NULL;
8641 fra.me.REG[5] = NIT_NULL;
8642 fra.me.REG[6] = NIT_NULL;
8643 fra.me.REG[0] = p0;
8644 fra.me.REG[1] = p1;
8645 fra.me.REG[2] = p2;
8646 REGB0 = p3;
8647 REGB1 = p4;
8648 fra.me.REG[3] = p5;
8649 fra.me.REG[4] = p6;
8650 fra.me.REG[5] = p7;
8651 /* ./syntax//typing.nit:1487 */
8652 fra.me.REG[3] = CALL_syntax___typing___AAbsSendExpr___get_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, fra.me.REG[3]);
8653 /* ./syntax//typing.nit:1488 */
8654 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8655 if (UNTAG_Bool(REGB0)) {
8656 } else {
8657 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8658 if (UNTAG_Bool(REGB2)) {
8659 REGB2 = TAG_Bool(false);
8660 REGB0 = REGB2;
8661 } else {
8662 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8663 REGB0 = REGB2;
8664 }
8665 }
8666 if (UNTAG_Bool(REGB0)) {
8667 goto label1;
8668 }
8669 /* ./syntax//typing.nit:1489 */
8670 fra.me.REG[2] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB1);
8671 /* ./syntax//typing.nit:1490 */
8672 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8673 if (UNTAG_Bool(REGB1)) {
8674 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1490);
8675 }
8676 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8677 REGB1 = CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[6], fra.me.REG[4]);
8678 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8679 if (UNTAG_Bool(REGB1)) {
8680 goto label1;
8681 }
8682 /* ./syntax//typing.nit:1491 */
8683 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8684 if (UNTAG_Bool(REGB1)) {
8685 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1491);
8686 }
8687 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8688 fra.me.REG[5] = CALL_syntax___typing___AAbsAbsSendExpr___process_closures(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[5]);
8689 /* ./syntax//typing.nit:1492 */
8690 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8691 if (UNTAG_Bool(REGB1)) {
8692 } else {
8693 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8694 if (UNTAG_Bool(REGB0)) {
8695 REGB0 = TAG_Bool(false);
8696 REGB1 = REGB0;
8697 } else {
8698 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8699 REGB1 = REGB0;
8700 }
8701 }
8702 if (UNTAG_Bool(REGB1)) {
8703 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8704 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8705 if (UNTAG_Bool(REGB1)) {
8706 } else {
8707 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8708 if (UNTAG_Bool(REGB0)) {
8709 REGB0 = TAG_Bool(false);
8710 REGB1 = REGB0;
8711 } else {
8712 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8713 REGB1 = REGB0;
8714 }
8715 }
8716 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8717 } else {
8718 REGB0 = TAG_Bool(false);
8719 REGB1 = REGB0;
8720 }
8721 if (UNTAG_Bool(REGB1)) {
8722 goto label1;
8723 }
8724 /* ./syntax//typing.nit:1493 */
8725 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
8726 /* ./syntax//typing.nit:1494 */
8727 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
8728 /* ./syntax//typing.nit:1495 */
8729 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
8730 label1: while(0);
8731 stack_frame_head = fra.me.prev;
8732 return;
8733 }
8734 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8735 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
8736 val_t REGB0;
8737 val_t REGB1;
8738 val_t REGB2;
8739 val_t REGB3;
8740 val_t tmp;
8741 static val_t once_value_1; /* Once value */
8742 static val_t once_value_2; /* Once value */
8743 static val_t once_value_3; /* Once value */
8744 static val_t once_value_4; /* Once value */
8745 static val_t once_value_5; /* Once value */
8746 static val_t once_value_6; /* Once value */
8747 static val_t once_value_8; /* Once value */
8748 static val_t once_value_9; /* Once value */
8749 static val_t once_value_10; /* Once value */
8750 static val_t once_value_11; /* Once value */
8751 static val_t once_value_12; /* Once value */
8752 static val_t once_value_13; /* Once value */
8753 static val_t once_value_14; /* Once value */
8754 static val_t once_value_15; /* Once value */
8755 static val_t once_value_16; /* Once value */
8756 static val_t once_value_17; /* Once value */
8757 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8758 fra.me.file = LOCATE_syntax___typing;
8759 fra.me.line = 1498;
8760 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
8761 fra.me.has_broke = 0;
8762 fra.me.REG_size = 10;
8763 fra.me.REG[0] = NIT_NULL;
8764 fra.me.REG[1] = NIT_NULL;
8765 fra.me.REG[2] = NIT_NULL;
8766 fra.me.REG[3] = NIT_NULL;
8767 fra.me.REG[4] = NIT_NULL;
8768 fra.me.REG[5] = NIT_NULL;
8769 fra.me.REG[6] = NIT_NULL;
8770 fra.me.REG[7] = NIT_NULL;
8771 fra.me.REG[8] = NIT_NULL;
8772 fra.me.REG[9] = NIT_NULL;
8773 fra.me.REG[0] = p0;
8774 fra.me.REG[1] = p1;
8775 fra.me.REG[2] = p2;
8776 REGB0 = p3;
8777 fra.me.REG[3] = p4;
8778 /* ./syntax//typing.nit:1500 */
8779 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
8780 if (UNTAG_Bool(REGB1)) {
8781 /* ./syntax//typing.nit:1501 */
8782 if (!once_value_1) {
8783 if (!once_value_2) {
8784 fra.me.REG[4] = BOX_NativeString("==");
8785 REGB1 = TAG_Int(2);
8786 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
8787 once_value_2 = fra.me.REG[4];
8788 register_static_object(&once_value_2);
8789 } else fra.me.REG[4] = once_value_2;
8790 fra.me.REG[4] = fra.me.REG[4];
8791 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8792 once_value_1 = fra.me.REG[4];
8793 register_static_object(&once_value_1);
8794 } else fra.me.REG[4] = once_value_1;
8795 fra.me.REG[4] = fra.me.REG[4];
8796 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8797 if (UNTAG_Bool(REGB1)) {
8798 } else {
8799 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8800 REGB1 = REGB2;
8801 }
8802 if (UNTAG_Bool(REGB1)) {
8803 REGB1 = TAG_Bool(true);
8804 } else {
8805 if (!once_value_3) {
8806 if (!once_value_4) {
8807 fra.me.REG[4] = BOX_NativeString("!=");
8808 REGB2 = TAG_Int(2);
8809 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
8810 once_value_4 = fra.me.REG[4];
8811 register_static_object(&once_value_4);
8812 } else fra.me.REG[4] = once_value_4;
8813 fra.me.REG[4] = fra.me.REG[4];
8814 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8815 once_value_3 = fra.me.REG[4];
8816 register_static_object(&once_value_3);
8817 } else fra.me.REG[4] = once_value_3;
8818 fra.me.REG[4] = fra.me.REG[4];
8819 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8820 if (UNTAG_Bool(REGB2)) {
8821 } else {
8822 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8823 REGB2 = REGB3;
8824 }
8825 REGB1 = REGB2;
8826 }
8827 if (UNTAG_Bool(REGB1)) {
8828 /* ./syntax//typing.nit:1503 */
8829 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
8830 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
8831 fra.me.REG[2] = fra.me.REG[4];
8832 } else {
8833 /* ./syntax//typing.nit:1505 */
8834 REGB1 = TAG_Int(3);
8835 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
8836 if (!once_value_5) {
8837 fra.me.REG[5] = BOX_NativeString("Error: Method '");
8838 REGB1 = TAG_Int(15);
8839 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
8840 once_value_5 = fra.me.REG[5];
8841 register_static_object(&once_value_5);
8842 } else fra.me.REG[5] = once_value_5;
8843 fra.me.REG[5] = fra.me.REG[5];
8844 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8845 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8846 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8847 if (!once_value_6) {
8848 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
8849 REGB1 = TAG_Int(17);
8850 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
8851 once_value_6 = fra.me.REG[5];
8852 register_static_object(&once_value_6);
8853 } else fra.me.REG[5] = once_value_6;
8854 fra.me.REG[5] = fra.me.REG[5];
8855 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8856 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8857 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8858 /* ./syntax//typing.nit:1506 */
8859 fra.me.REG[4] = NIT_NULL;
8860 goto label7;
8861 }
8862 }
8863 /* ./syntax//typing.nit:1509 */
8864 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
8865 /* ./syntax//typing.nit:1510 */
8866 fra.me.REG[6] = NIT_NULL;
8867 /* ./syntax//typing.nit:1511 */
8868 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8869 if (UNTAG_Bool(REGB1)) {
8870 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8871 fra.me.REG[6] = fra.me.REG[7];
8872 }
8873 /* ./syntax//typing.nit:1512 */
8874 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8875 if (UNTAG_Bool(REGB1)) {
8876 } else {
8877 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8878 if (UNTAG_Bool(REGB2)) {
8879 REGB2 = TAG_Bool(false);
8880 REGB1 = REGB2;
8881 } else {
8882 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
8883 REGB1 = REGB2;
8884 }
8885 }
8886 if (UNTAG_Bool(REGB1)) {
8887 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8888 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8889 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
8890 } else {
8891 REGB2 = TAG_Bool(false);
8892 REGB1 = REGB2;
8893 }
8894 if (UNTAG_Bool(REGB1)) {
8895 /* ./syntax//typing.nit:1513 */
8896 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8897 /* ./../lib/standard//collection//array.nit:23 */
8898 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8899 if (UNTAG_Bool(REGB1)) {
8900 } else {
8901 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8902 }
8903 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8904 /* ./syntax//typing.nit:1514 */
8905 REGB2 = TAG_Int(1);
8906 /* ./../lib/standard//kernel.nit:217 */
8907 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8908 /* ./syntax//typing.nit:1514 */
8909 if (UNTAG_Bool(REGB2)) {
8910 /* ./syntax//typing.nit:1515 */
8911 REGB2 = TAG_Int(5);
8912 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8913 if (!once_value_8) {
8914 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
8915 REGB2 = TAG_Int(29);
8916 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8917 once_value_8 = fra.me.REG[9];
8918 register_static_object(&once_value_8);
8919 } else fra.me.REG[9] = once_value_8;
8920 fra.me.REG[9] = fra.me.REG[9];
8921 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8922 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8923 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8924 if (!once_value_9) {
8925 fra.me.REG[9] = BOX_NativeString("' for ");
8926 REGB2 = TAG_Int(6);
8927 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8928 once_value_9 = fra.me.REG[9];
8929 register_static_object(&once_value_9);
8930 } else fra.me.REG[9] = once_value_9;
8931 fra.me.REG[9] = fra.me.REG[9];
8932 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8933 if (!once_value_10) {
8934 fra.me.REG[9] = BOX_NativeString(", ");
8935 REGB2 = TAG_Int(2);
8936 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8937 once_value_10 = fra.me.REG[9];
8938 register_static_object(&once_value_10);
8939 } else fra.me.REG[9] = once_value_10;
8940 fra.me.REG[9] = fra.me.REG[9];
8941 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
8942 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8943 if (!once_value_11) {
8944 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
8945 REGB2 = TAG_Int(27);
8946 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8947 once_value_11 = fra.me.REG[9];
8948 register_static_object(&once_value_11);
8949 } else fra.me.REG[9] = once_value_11;
8950 fra.me.REG[9] = fra.me.REG[9];
8951 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8952 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8953 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8954 /* ./syntax//typing.nit:1516 */
8955 fra.me.REG[4] = NIT_NULL;
8956 goto label7;
8957 } else {
8958 /* ./../lib/standard//collection//array.nit:23 */
8959 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8960 if (UNTAG_Bool(REGB2)) {
8961 } else {
8962 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8963 }
8964 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8965 /* ./syntax//typing.nit:1517 */
8966 REGB1 = TAG_Int(1);
8967 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
8968 if (UNTAG_Bool(REGB3)) {
8969 } else {
8970 /* ./../lib/standard//kernel.nit:210 */
8971 REGB1 = TAG_Bool((REGB2)==(REGB1));
8972 /* ./syntax//typing.nit:1517 */
8973 REGB3 = REGB1;
8974 }
8975 if (UNTAG_Bool(REGB3)) {
8976 /* ./syntax//typing.nit:1518 */
8977 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
8978 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8979 if (UNTAG_Bool(REGB3)) {
8980 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1518);
8981 }
8982 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8983 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
8984 /* ./syntax//typing.nit:1519 */
8985 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
8986 if (UNTAG_Bool(REGB3)) {
8987 } else {
8988 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1519);
8989 }
8990 /* ./syntax//typing.nit:1520 */
8991 fra.me.REG[6] = fra.me.REG[7];
8992 }
8993 }
8994 }
8995 /* ./syntax//typing.nit:1524 */
8996 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8997 if (UNTAG_Bool(REGB3)) {
8998 } else {
8999 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9000 if (UNTAG_Bool(REGB1)) {
9001 REGB1 = TAG_Bool(false);
9002 REGB3 = REGB1;
9003 } else {
9004 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9005 REGB3 = REGB1;
9006 }
9007 }
9008 if (UNTAG_Bool(REGB3)) {
9009 /* ./syntax//typing.nit:1525 */
9010 if (UNTAG_Bool(REGB0)) {
9011 /* ./syntax//typing.nit:1526 */
9012 REGB0 = TAG_Int(5);
9013 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9014 if (!once_value_12) {
9015 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9016 REGB0 = TAG_Int(27);
9017 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9018 once_value_12 = fra.me.REG[5];
9019 register_static_object(&once_value_12);
9020 } else fra.me.REG[5] = once_value_12;
9021 fra.me.REG[5] = fra.me.REG[5];
9022 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9023 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9024 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9025 if (!once_value_13) {
9026 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9027 REGB0 = TAG_Int(13);
9028 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9029 once_value_13 = fra.me.REG[5];
9030 register_static_object(&once_value_13);
9031 } else fra.me.REG[5] = once_value_13;
9032 fra.me.REG[5] = fra.me.REG[5];
9033 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9034 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9035 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9036 if (!once_value_14) {
9037 fra.me.REG[5] = BOX_NativeString(".");
9038 REGB0 = TAG_Int(1);
9039 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9040 once_value_14 = fra.me.REG[5];
9041 register_static_object(&once_value_14);
9042 } else fra.me.REG[5] = once_value_14;
9043 fra.me.REG[5] = fra.me.REG[5];
9044 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9045 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9046 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9047 } else {
9048 /* ./syntax//typing.nit:1528 */
9049 REGB0 = TAG_Int(5);
9050 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9051 if (!once_value_15) {
9052 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9053 REGB0 = TAG_Int(15);
9054 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9055 once_value_15 = fra.me.REG[5];
9056 register_static_object(&once_value_15);
9057 } else fra.me.REG[5] = once_value_15;
9058 fra.me.REG[5] = fra.me.REG[5];
9059 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9060 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9061 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9062 if (!once_value_16) {
9063 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9064 REGB0 = TAG_Int(20);
9065 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9066 once_value_16 = fra.me.REG[3];
9067 register_static_object(&once_value_16);
9068 } else fra.me.REG[3] = once_value_16;
9069 fra.me.REG[3] = fra.me.REG[3];
9070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9071 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9072 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9073 if (!once_value_17) {
9074 fra.me.REG[2] = BOX_NativeString(".");
9075 REGB0 = TAG_Int(1);
9076 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9077 once_value_17 = fra.me.REG[2];
9078 register_static_object(&once_value_17);
9079 } else fra.me.REG[2] = once_value_17;
9080 fra.me.REG[2] = fra.me.REG[2];
9081 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9082 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9083 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9084 }
9085 /* ./syntax//typing.nit:1530 */
9086 fra.me.REG[4] = NIT_NULL;
9087 goto label7;
9088 }
9089 /* ./syntax//typing.nit:1532 */
9090 fra.me.REG[4] = fra.me.REG[6];
9091 goto label7;
9092 label7: while(0);
9093 stack_frame_head = fra.me.prev;
9094 return fra.me.REG[4];
9095 }
9096 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9097 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9098 val_t REGB0;
9099 val_t tmp;
9100 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9101 fra.me.file = LOCATE_syntax___typing;
9102 fra.me.line = 1535;
9103 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9104 fra.me.has_broke = 0;
9105 fra.me.REG_size = 6;
9106 fra.me.REG[0] = NIT_NULL;
9107 fra.me.REG[1] = NIT_NULL;
9108 fra.me.REG[2] = NIT_NULL;
9109 fra.me.REG[3] = NIT_NULL;
9110 fra.me.REG[4] = NIT_NULL;
9111 fra.me.REG[5] = NIT_NULL;
9112 fra.me.REG[0] = p0;
9113 fra.me.REG[1] = p1;
9114 fra.me.REG[2] = p2;
9115 fra.me.REG[3] = p3;
9116 REGB0 = p4;
9117 /* ./syntax//typing.nit:1538 */
9118 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9119 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9120 CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[0], fra.me.REG[5], REGB0);
9121 /* ./syntax//typing.nit:1539 */
9122 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9123 /* ./syntax//typing.nit:1540 */
9124 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9125 if (UNTAG_Bool(REGB0)) {
9126 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9127 fra.me.REG[2] = fra.me.REG[3];
9128 }
9129 /* ./syntax//typing.nit:1541 */
9130 goto label1;
9131 label1: while(0);
9132 stack_frame_head = fra.me.prev;
9133 return fra.me.REG[2];
9134 }
9135 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9136 struct {struct stack_frame_t me;} fra;
9137 val_t REGB0;
9138 val_t tmp;
9139 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9140 fra.me.file = LOCATE_syntax___typing;
9141 fra.me.line = 1544;
9142 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9143 fra.me.has_broke = 0;
9144 fra.me.REG_size = 1;
9145 fra.me.REG[0] = NIT_NULL;
9146 fra.me.REG[0] = p0;
9147 /* ./syntax//typing.nit:1545 */
9148 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9149 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
9150 if (UNTAG_Bool(REGB0)) {
9151 } else {
9152 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1545);
9153 }
9154 goto label1;
9155 label1: while(0);
9156 stack_frame_head = fra.me.prev;
9157 return fra.me.REG[0];
9158 }
9159 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9160 struct {struct stack_frame_t me;} fra;
9161 val_t tmp;
9162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9163 fra.me.file = LOCATE_syntax___typing;
9164 fra.me.line = 1548;
9165 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9166 fra.me.has_broke = 0;
9167 fra.me.REG_size = 1;
9168 fra.me.REG[0] = NIT_NULL;
9169 fra.me.REG[0] = p0;
9170 /* ./syntax//typing.nit:1548 */
9171 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9172 stack_frame_head = fra.me.prev;
9173 return fra.me.REG[0];
9174 }
9175 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9176 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
9177 val_t REGB0;
9178 val_t REGB1;
9179 val_t REGB2;
9180 val_t tmp;
9181 static val_t once_value_1; /* Once value */
9182 static val_t once_value_2; /* Once value */
9183 static val_t once_value_3; /* Once value */
9184 static val_t once_value_4; /* Once value */
9185 static val_t once_value_5; /* Once value */
9186 static val_t once_value_6; /* Once value */
9187 static val_t once_value_7; /* Once value */
9188 static val_t once_value_8; /* Once value */
9189 static val_t once_value_9; /* Once value */
9190 static val_t once_value_10; /* Once value */
9191 static val_t once_value_11; /* Once value */
9192 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9193 fra.me.file = LOCATE_syntax___typing;
9194 fra.me.line = 1555;
9195 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9196 fra.me.has_broke = 0;
9197 fra.me.REG_size = 11;
9198 fra.me.REG[0] = NIT_NULL;
9199 fra.me.REG[1] = NIT_NULL;
9200 fra.me.REG[2] = NIT_NULL;
9201 fra.me.REG[3] = NIT_NULL;
9202 fra.me.REG[4] = NIT_NULL;
9203 fra.me.REG[5] = NIT_NULL;
9204 fra.me.REG[6] = NIT_NULL;
9205 fra.me.REG[7] = NIT_NULL;
9206 fra.me.REG[8] = NIT_NULL;
9207 fra.me.REG[9] = NIT_NULL;
9208 fra.me.REG[10] = NIT_NULL;
9209 fra.me.REG[0] = p0;
9210 fra.me.REG[1] = p1;
9211 fra.me.REG[2] = p2;
9212 /* ./syntax//typing.nit:1557 */
9213 fra.me.REG[3] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
9214 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9215 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
9216 if (UNTAG_Bool(REGB0)) {
9217 } else {
9218 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9219 if (UNTAG_Bool(REGB1)) {
9220 REGB1 = TAG_Bool(false);
9221 REGB0 = REGB1;
9222 } else {
9223 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9224 REGB0 = REGB1;
9225 }
9226 }
9227 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9228 if (UNTAG_Bool(REGB0)) {
9229 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9230 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
9231 if (UNTAG_Bool(REGB0)) {
9232 } else {
9233 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
9234 REGB0 = REGB1;
9235 }
9236 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9237 } else {
9238 REGB1 = TAG_Bool(false);
9239 REGB0 = REGB1;
9240 }
9241 if (UNTAG_Bool(REGB0)) {
9242 /* ./syntax//typing.nit:1558 */
9243 REGB0 = TAG_Int(3);
9244 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9245 if (!once_value_1) {
9246 fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
9247 REGB0 = TAG_Int(30);
9248 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9249 once_value_1 = fra.me.REG[3];
9250 register_static_object(&once_value_1);
9251 } else fra.me.REG[3] = once_value_1;
9252 fra.me.REG[3] = fra.me.REG[3];
9253 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9254 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9255 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9256 if (!once_value_2) {
9257 fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
9258 REGB0 = TAG_Int(29);
9259 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9260 once_value_2 = fra.me.REG[3];
9261 register_static_object(&once_value_2);
9262 } else fra.me.REG[3] = once_value_2;
9263 fra.me.REG[3] = fra.me.REG[3];
9264 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9265 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9266 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9267 }
9268 /* ./syntax//typing.nit:1560 */
9269 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9270 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9271 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
9272 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
9273 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
9274 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9275 /* ./syntax//typing.nit:1561 */
9276 fra.me.REG[4] = NIT_NULL;
9277 /* ./syntax//typing.nit:1562 */
9278 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
9279 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
9280 if (UNTAG_Bool(REGB0)) {
9281 } else {
9282 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1562);
9283 }
9284 /* ./syntax//typing.nit:1563 */
9285 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
9286 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9287 if (UNTAG_Bool(REGB0)) {
9288 /* ./syntax//typing.nit:1564 */
9289 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
9290 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9291 if (UNTAG_Bool(REGB0)) {
9292 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1564);
9293 }
9294 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
9295 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
9296 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
9297 fra.me.REG[4] = fra.me.REG[6];
9298 }
9299 /* ./syntax//typing.nit:1566 */
9300 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9301 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
9302 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
9303 /* ./syntax//typing.nit:1567 */
9304 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9305 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
9306 if (UNTAG_Bool(REGB0)) {
9307 } else {
9308 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
9309 REGB0 = REGB1;
9310 }
9311 if (UNTAG_Bool(REGB0)) {
9312 /* ./syntax//typing.nit:1568 */
9313 REGB0 = TAG_Bool(true);
9314 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
9315 } else {
9316 /* ./syntax//typing.nit:1569 */
9317 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
9318 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9319 if (UNTAG_Bool(REGB0)) {
9320 /* ./syntax//typing.nit:1570 */
9321 REGB0 = TAG_Int(5);
9322 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9323 if (!once_value_3) {
9324 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
9325 REGB0 = TAG_Int(28);
9326 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9327 once_value_3 = fra.me.REG[8];
9328 register_static_object(&once_value_3);
9329 } else fra.me.REG[8] = once_value_3;
9330 fra.me.REG[8] = fra.me.REG[8];
9331 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9332 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9333 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9334 if (!once_value_4) {
9335 fra.me.REG[8] = BOX_NativeString(" must be one in ");
9336 REGB0 = TAG_Int(16);
9337 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9338 once_value_4 = fra.me.REG[8];
9339 register_static_object(&once_value_4);
9340 } else fra.me.REG[8] = once_value_4;
9341 fra.me.REG[8] = fra.me.REG[8];
9342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9343 if (!once_value_5) {
9344 fra.me.REG[8] = BOX_NativeString(", ");
9345 REGB0 = TAG_Int(2);
9346 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9347 once_value_5 = fra.me.REG[8];
9348 register_static_object(&once_value_5);
9349 } else fra.me.REG[8] = once_value_5;
9350 fra.me.REG[8] = fra.me.REG[8];
9351 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
9352 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9353 if (!once_value_6) {
9354 fra.me.REG[8] = BOX_NativeString(".");
9355 REGB0 = TAG_Int(1);
9356 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9357 once_value_6 = fra.me.REG[8];
9358 register_static_object(&once_value_6);
9359 } else fra.me.REG[8] = once_value_6;
9360 fra.me.REG[8] = fra.me.REG[8];
9361 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9362 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9363 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9364 } else {
9365 /* ./syntax//typing.nit:1571 */
9366 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
9367 if (UNTAG_Bool(REGB0)) {
9368 } else {
9369 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9370 REGB0 = REGB1;
9371 }
9372 if (UNTAG_Bool(REGB0)) {
9373 /* ./syntax//typing.nit:1572 */
9374 REGB0 = TAG_Int(3);
9375 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9376 if (!once_value_7) {
9377 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
9378 REGB0 = TAG_Int(54);
9379 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9380 once_value_7 = fra.me.REG[8];
9381 register_static_object(&once_value_7);
9382 } else fra.me.REG[8] = once_value_7;
9383 fra.me.REG[8] = fra.me.REG[8];
9384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9385 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9386 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9387 if (!once_value_8) {
9388 fra.me.REG[8] = BOX_NativeString(" is allowed.");
9389 REGB0 = TAG_Int(12);
9390 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9391 once_value_8 = fra.me.REG[8];
9392 register_static_object(&once_value_8);
9393 } else fra.me.REG[8] = once_value_8;
9394 fra.me.REG[8] = fra.me.REG[8];
9395 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9396 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9397 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9398 } else {
9399 /* ./../lib/standard//collection//array.nit:234 */
9400 REGB0 = TAG_Int(0);
9401 /* ./../lib/standard//collection//array.nit:235 */
9402 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9403 if (UNTAG_Bool(REGB1)) {
9404 } else {
9405 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
9406 }
9407 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
9408 /* ./../lib/standard//collection//array.nit:236 */
9409 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
9410 /* ./../lib/standard//collection//array.nit:237 */
9411 while(1) {
9412 /* ./../lib/standard//collection//array.nit:23 */
9413 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9414 if (UNTAG_Bool(REGB1)) {
9415 } else {
9416 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
9417 }
9418 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
9419 /* ./../lib/standard//kernel.nit:215 */
9420 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
9421 /* ./../lib/standard//collection//array.nit:237 */
9422 if (UNTAG_Bool(REGB1)) {
9423 /* ./../lib/standard//collection//array.nit:238 */
9424 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9425 if (UNTAG_Bool(REGB1)) {
9426 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
9427 }
9428 /* ./../lib/standard//collection//array.nit:654 */
9429 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
9430 /* ./syntax//typing.nit:1575 */
9431 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[4]));
9432 if (UNTAG_Bool(REGB1)) {
9433 } else {
9434 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
9435 REGB1 = REGB2;
9436 }
9437 if (UNTAG_Bool(REGB1)) {
9438 /* ./syntax//typing.nit:1576 */
9439 fra.me.REG[4] = NIT_NULL;
9440 } else {
9441 /* ./syntax//typing.nit:1577 */
9442 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[3]));
9443 if (UNTAG_Bool(REGB1)) {
9444 } else {
9445 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9446 REGB1 = REGB2;
9447 }
9448 if (UNTAG_Bool(REGB1)) {
9449 /* ./syntax//typing.nit:1578 */
9450 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9451 if (UNTAG_Bool(REGB1)) {
9452 } else {
9453 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9454 if (UNTAG_Bool(REGB2)) {
9455 REGB2 = TAG_Bool(false);
9456 REGB1 = REGB2;
9457 } else {
9458 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9459 REGB1 = REGB2;
9460 }
9461 }
9462 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9463 if (UNTAG_Bool(REGB1)) {
9464 /* ./syntax//typing.nit:1579 */
9465 REGB1 = TAG_Int(5);
9466 fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9467 if (!once_value_9) {
9468 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
9469 REGB1 = TAG_Int(22);
9470 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
9471 once_value_9 = fra.me.REG[10];
9472 register_static_object(&once_value_9);
9473 } else fra.me.REG[10] = once_value_9;
9474 fra.me.REG[10] = fra.me.REG[10];
9475 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
9476 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9477 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9478 if (!once_value_10) {
9479 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
9480 REGB1 = TAG_Int(39);
9481 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9482 once_value_10 = fra.me.REG[8];
9483 register_static_object(&once_value_10);
9484 } else fra.me.REG[8] = once_value_10;
9485 fra.me.REG[8] = fra.me.REG[8];
9486 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9487 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9488 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9489 if (!once_value_11) {
9490 fra.me.REG[8] = BOX_NativeString("");
9491 REGB1 = TAG_Int(0);
9492 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9493 once_value_11 = fra.me.REG[8];
9494 register_static_object(&once_value_11);
9495 } else fra.me.REG[8] = once_value_11;
9496 fra.me.REG[8] = fra.me.REG[8];
9497 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9498 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
9499 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[9]);
9500 }
9501 /* ./syntax//typing.nit:1581 */
9502 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
9503 /* ./syntax//typing.nit:1582 */
9504 goto label12;
9505 }
9506 }
9507 /* ./../lib/standard//collection//array.nit:239 */
9508 REGB1 = TAG_Int(1);
9509 /* ./../lib/standard//kernel.nit:218 */
9510 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
9511 /* ./../lib/standard//collection//array.nit:239 */
9512 REGB0 = REGB1;
9513 } else {
9514 /* ./../lib/standard//collection//array.nit:237 */
9515 goto label13;
9516 }
9517 }
9518 label13: while(0);
9519 label12: while(0);
9520 }
9521 }
9522 }
9523 stack_frame_head = fra.me.prev;
9524 return;
9525 }
9526 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
9527 struct {struct stack_frame_t me;} fra;
9528 val_t tmp;
9529 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9530 fra.me.file = LOCATE_syntax___typing;
9531 fra.me.line = 1591;
9532 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
9533 fra.me.has_broke = 0;
9534 fra.me.REG_size = 1;
9535 fra.me.REG[0] = NIT_NULL;
9536 fra.me.REG[0] = p0;
9537 /* ./syntax//typing.nit:1591 */
9538 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9539 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9540 goto label1;
9541 label1: while(0);
9542 stack_frame_head = fra.me.prev;
9543 return fra.me.REG[0];
9544 }
9545 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
9546 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9547 val_t REGB0;
9548 val_t REGB1;
9549 val_t tmp;
9550 static val_t once_value_2; /* Once value */
9551 static val_t once_value_3; /* Once value */
9552 static val_t once_value_4; /* Once value */
9553 static val_t once_value_5; /* Once value */
9554 static val_t once_value_6; /* Once value */
9555 static val_t once_value_7; /* Once value */
9556 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9557 fra.me.file = LOCATE_syntax___typing;
9558 fra.me.line = 1592;
9559 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
9560 fra.me.has_broke = 0;
9561 fra.me.REG_size = 5;
9562 fra.me.REG[0] = NIT_NULL;
9563 fra.me.REG[1] = NIT_NULL;
9564 fra.me.REG[2] = NIT_NULL;
9565 fra.me.REG[3] = NIT_NULL;
9566 fra.me.REG[4] = NIT_NULL;
9567 fra.me.REG[0] = p0;
9568 fra.me.REG[1] = p1;
9569 /* ./syntax//typing.nit:1594 */
9570 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9571 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
9572 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9573 if (UNTAG_Bool(REGB0)) {
9574 goto label1;
9575 }
9576 /* ./syntax//typing.nit:1595 */
9577 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9578 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
9579 /* ./syntax//typing.nit:1596 */
9580 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9581 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
9582 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
9583 if (UNTAG_Bool(REGB0)) {
9584 /* ./syntax//typing.nit:1597 */
9585 REGB0 = TAG_Int(3);
9586 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9587 if (!once_value_2) {
9588 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
9589 REGB0 = TAG_Int(41);
9590 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9591 once_value_2 = fra.me.REG[4];
9592 register_static_object(&once_value_2);
9593 } else fra.me.REG[4] = once_value_2;
9594 fra.me.REG[4] = fra.me.REG[4];
9595 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9596 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9597 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9598 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9599 if (!once_value_3) {
9600 fra.me.REG[4] = BOX_NativeString(".");
9601 REGB0 = TAG_Int(1);
9602 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9603 once_value_3 = fra.me.REG[4];
9604 register_static_object(&once_value_3);
9605 } else fra.me.REG[4] = once_value_3;
9606 fra.me.REG[4] = fra.me.REG[4];
9607 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9608 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9609 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9610 /* ./syntax//typing.nit:1598 */
9611 goto label1;
9612 }
9613 /* ./syntax//typing.nit:1601 */
9614 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9615 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9616 if (UNTAG_Bool(REGB0)) {
9617 } else {
9618 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9619 if (UNTAG_Bool(REGB1)) {
9620 REGB1 = TAG_Bool(false);
9621 REGB0 = REGB1;
9622 } else {
9623 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9624 REGB0 = REGB1;
9625 }
9626 }
9627 if (UNTAG_Bool(REGB0)) {
9628 /* ./syntax//typing.nit:1602 */
9629 if (!once_value_4) {
9630 if (!once_value_5) {
9631 fra.me.REG[3] = BOX_NativeString("init");
9632 REGB0 = TAG_Int(4);
9633 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9634 once_value_5 = fra.me.REG[3];
9635 register_static_object(&once_value_5);
9636 } else fra.me.REG[3] = once_value_5;
9637 fra.me.REG[3] = fra.me.REG[3];
9638 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9639 once_value_4 = fra.me.REG[3];
9640 register_static_object(&once_value_4);
9641 } else fra.me.REG[3] = once_value_4;
9642 fra.me.REG[3] = fra.me.REG[3];
9643 } else {
9644 /* ./syntax//typing.nit:1604 */
9645 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9646 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9647 if (UNTAG_Bool(REGB0)) {
9648 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1604);
9649 }
9650 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9651 fra.me.REG[3] = fra.me.REG[4];
9652 }
9653 /* ./syntax//typing.nit:1607 */
9654 REGB0 = TAG_Bool(false);
9655 REGB1 = TAG_Bool(false);
9656 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9657 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1, fra.me.REG[3], fra.me.REG[4], NIT_NULL);
9658 /* ./syntax//typing.nit:1608 */
9659 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9660 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9661 if (UNTAG_Bool(REGB1)) {
9662 } else {
9663 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9664 if (UNTAG_Bool(REGB0)) {
9665 REGB0 = TAG_Bool(false);
9666 REGB1 = REGB0;
9667 } else {
9668 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9669 REGB1 = REGB0;
9670 }
9671 }
9672 if (UNTAG_Bool(REGB1)) {
9673 goto label1;
9674 }
9675 /* ./syntax//typing.nit:1610 */
9676 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9677 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9678 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9679 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9680 if (UNTAG_Bool(REGB1)) {
9681 /* ./syntax//typing.nit:1611 */
9682 REGB1 = TAG_Int(3);
9683 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9684 if (!once_value_6) {
9685 fra.me.REG[3] = BOX_NativeString("Error: ");
9686 REGB1 = TAG_Int(7);
9687 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9688 once_value_6 = fra.me.REG[3];
9689 register_static_object(&once_value_6);
9690 } else fra.me.REG[3] = once_value_6;
9691 fra.me.REG[3] = fra.me.REG[3];
9692 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9693 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9694 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9695 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9696 if (!once_value_7) {
9697 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
9698 REGB1 = TAG_Int(22);
9699 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9700 once_value_7 = fra.me.REG[3];
9701 register_static_object(&once_value_7);
9702 } else fra.me.REG[3] = once_value_7;
9703 fra.me.REG[3] = fra.me.REG[3];
9704 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9705 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9706 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9707 /* ./syntax//typing.nit:1612 */
9708 goto label1;
9709 }
9710 /* ./syntax//typing.nit:1614 */
9711 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
9712 /* ./syntax//typing.nit:1615 */
9713 REGB1 = TAG_Bool(true);
9714 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9715 label1: while(0);
9716 stack_frame_head = fra.me.prev;
9717 return;
9718 }
9719 val_t syntax___typing___ASendExpr___name(val_t p0){
9720 struct {struct stack_frame_t me;} fra;
9721 val_t tmp;
9722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9723 fra.me.file = LOCATE_syntax___typing;
9724 fra.me.line = 1621;
9725 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
9726 fra.me.has_broke = 0;
9727 fra.me.REG_size = 0;
9728 /* ./syntax//typing.nit:1621 */
9729 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1621);
9730 stack_frame_head = fra.me.prev;
9731 return NIT_NULL;
9732 }
9733 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
9734 struct {struct stack_frame_t me;} fra;
9735 val_t tmp;
9736 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9737 fra.me.file = LOCATE_syntax___typing;
9738 fra.me.line = 1624;
9739 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
9740 fra.me.has_broke = 0;
9741 fra.me.REG_size = 1;
9742 fra.me.REG[0] = NIT_NULL;
9743 fra.me.REG[0] = p0;
9744 /* ./syntax//typing.nit:1625 */
9745 fra.me.REG[0] = NIT_NULL;
9746 goto label1;
9747 label1: while(0);
9748 stack_frame_head = fra.me.prev;
9749 return fra.me.REG[0];
9750 }
9751 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
9752 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9753 val_t tmp;
9754 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9755 fra.me.file = LOCATE_syntax___typing;
9756 fra.me.line = 1627;
9757 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
9758 fra.me.has_broke = 0;
9759 fra.me.REG_size = 2;
9760 fra.me.REG[0] = NIT_NULL;
9761 fra.me.REG[1] = NIT_NULL;
9762 fra.me.REG[0] = p0;
9763 fra.me.REG[1] = p1;
9764 /* ./syntax//typing.nit:1629 */
9765 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9766 stack_frame_head = fra.me.prev;
9767 return;
9768 }
9769 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
9770 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9771 val_t REGB0;
9772 val_t REGB1;
9773 val_t tmp;
9774 static val_t once_value_2; /* Once value */
9775 static val_t once_value_3; /* Once value */
9776 static val_t once_value_4; /* Once value */
9777 static val_t once_value_5; /* Once value */
9778 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9779 fra.me.file = LOCATE_syntax___typing;
9780 fra.me.line = 1632;
9781 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
9782 fra.me.has_broke = 0;
9783 fra.me.REG_size = 6;
9784 fra.me.REG[0] = NIT_NULL;
9785 fra.me.REG[1] = NIT_NULL;
9786 fra.me.REG[2] = NIT_NULL;
9787 fra.me.REG[3] = NIT_NULL;
9788 fra.me.REG[4] = NIT_NULL;
9789 fra.me.REG[5] = NIT_NULL;
9790 fra.me.REG[0] = p0;
9791 fra.me.REG[1] = p1;
9792 /* ./syntax//typing.nit:1634 */
9793 fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9794 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
9795 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9796 if (UNTAG_Bool(REGB0)) {
9797 goto label1;
9798 }
9799 /* ./syntax//typing.nit:1635 */
9800 fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9801 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
9802 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9803 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
9804 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9805 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9806 fra.me.REG[3] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9807 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9808 fra.me.REG[5] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
9809 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1, fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
9810 /* ./syntax//typing.nit:1636 */
9811 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9812 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9813 if (UNTAG_Bool(REGB1)) {
9814 } else {
9815 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9816 if (UNTAG_Bool(REGB0)) {
9817 REGB0 = TAG_Bool(false);
9818 REGB1 = REGB0;
9819 } else {
9820 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9821 REGB1 = REGB0;
9822 }
9823 }
9824 if (UNTAG_Bool(REGB1)) {
9825 goto label1;
9826 }
9827 /* ./syntax//typing.nit:1637 */
9828 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9829 REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
9830 if (UNTAG_Bool(REGB1)) {
9831 } else {
9832 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1637);
9833 }
9834 /* ./syntax//typing.nit:1639 */
9835 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
9836 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9837 if (UNTAG_Bool(REGB1)) {
9838 /* ./syntax//typing.nit:1640 */
9839 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9840 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9841 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9842 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9843 if (UNTAG_Bool(REGB1)) {
9844 /* ./syntax//typing.nit:1641 */
9845 REGB1 = TAG_Int(3);
9846 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9847 if (!once_value_2) {
9848 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
9849 REGB1 = TAG_Int(33);
9850 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9851 once_value_2 = fra.me.REG[3];
9852 register_static_object(&once_value_2);
9853 } else fra.me.REG[3] = once_value_2;
9854 fra.me.REG[3] = fra.me.REG[3];
9855 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9856 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9858 if (!once_value_3) {
9859 fra.me.REG[3] = BOX_NativeString(" in a method.");
9860 REGB1 = TAG_Int(13);
9861 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9862 once_value_3 = fra.me.REG[3];
9863 register_static_object(&once_value_3);
9864 } else fra.me.REG[3] = once_value_3;
9865 fra.me.REG[3] = fra.me.REG[3];
9866 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9867 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9868 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9869 } else {
9870 /* ./syntax//typing.nit:1642 */
9871 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9872 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9873 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9874 if (UNTAG_Bool(REGB1)) {
9875 /* ./syntax//typing.nit:1643 */
9876 REGB1 = TAG_Int(3);
9877 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9878 if (!once_value_4) {
9879 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
9880 REGB1 = TAG_Int(19);
9881 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9882 once_value_4 = fra.me.REG[3];
9883 register_static_object(&once_value_4);
9884 } else fra.me.REG[3] = once_value_4;
9885 fra.me.REG[3] = fra.me.REG[3];
9886 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9887 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9888 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9889 if (!once_value_5) {
9890 fra.me.REG[3] = BOX_NativeString(" is not invoken on 'self'.");
9891 REGB1 = TAG_Int(26);
9892 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9893 once_value_5 = fra.me.REG[3];
9894 register_static_object(&once_value_5);
9895 } else fra.me.REG[3] = once_value_5;
9896 fra.me.REG[3] = fra.me.REG[3];
9897 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9898 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9899 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9900 } else {
9901 /* ./syntax//typing.nit:1645 */
9902 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
9903 }
9904 }
9905 }
9906 /* ./syntax//typing.nit:1649 */
9907 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[0])(fra.me.REG[0]);
9908 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
9909 /* ./syntax//typing.nit:1650 */
9910 REGB1 = TAG_Bool(true);
9911 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9912 label1: while(0);
9913 stack_frame_head = fra.me.prev;
9914 return;
9915 }
9916 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
9917 struct {struct stack_frame_t me;} fra;
9918 val_t REGB0;
9919 val_t tmp;
9920 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9921 fra.me.file = LOCATE_syntax___typing;
9922 fra.me.line = 1655;
9923 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
9924 fra.me.has_broke = 0;
9925 fra.me.REG_size = 1;
9926 fra.me.REG[0] = NIT_NULL;
9927 fra.me.REG[0] = p0;
9928 /* ./syntax//typing.nit:1655 */
9929 fra.me.REG[0] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[0]);
9930 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
9931 if (UNTAG_Bool(REGB0)) {
9932 } else {
9933 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1655);
9934 }
9935 goto label1;
9936 label1: while(0);
9937 stack_frame_head = fra.me.prev;
9938 return fra.me.REG[0];
9939 }
9940 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
9941 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9942 val_t REGB0;
9943 val_t REGB1;
9944 val_t REGB2;
9945 val_t tmp;
9946 static val_t once_value_2; /* Once value */
9947 static val_t once_value_3; /* Once value */
9948 static val_t once_value_4; /* Once value */
9949 static val_t once_value_5; /* Once value */
9950 static val_t once_value_6; /* Once value */
9951 static val_t once_value_7; /* Once value */
9952 static val_t once_value_8; /* Once value */
9953 static val_t once_value_9; /* Once value */
9954 static val_t once_value_10; /* Once value */
9955 static val_t once_value_11; /* Once value */
9956 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9957 fra.me.file = LOCATE_syntax___typing;
9958 fra.me.line = 1657;
9959 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
9960 fra.me.has_broke = 0;
9961 fra.me.REG_size = 7;
9962 fra.me.REG[0] = NIT_NULL;
9963 fra.me.REG[1] = NIT_NULL;
9964 fra.me.REG[2] = NIT_NULL;
9965 fra.me.REG[3] = NIT_NULL;
9966 fra.me.REG[4] = NIT_NULL;
9967 fra.me.REG[5] = NIT_NULL;
9968 fra.me.REG[6] = NIT_NULL;
9969 fra.me.REG[0] = p0;
9970 fra.me.REG[1] = p1;
9971 /* ./syntax//typing.nit:1659 */
9972 fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9973 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
9974 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9975 if (UNTAG_Bool(REGB0)) {
9976 goto label1;
9977 }
9978 /* ./syntax//typing.nit:1660 */
9979 fra.me.REG[2] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9980 /* ./syntax//typing.nit:1661 */
9981 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9982 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
9983 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9984 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
9985 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
9986 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9987 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
9988 CALL_syntax___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);
9989 /* ./syntax//typing.nit:1662 */
9990 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9991 /* ./syntax//typing.nit:1663 */
9992 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9993 if (UNTAG_Bool(REGB1)) {
9994 } else {
9995 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9996 if (UNTAG_Bool(REGB0)) {
9997 REGB0 = TAG_Bool(false);
9998 REGB1 = REGB0;
9999 } else {
10000 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10001 REGB1 = REGB0;
10002 }
10003 }
10004 if (UNTAG_Bool(REGB1)) {
10005 goto label1;
10006 }
10007 /* ./syntax//typing.nit:1664 */
10008 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10009 if (UNTAG_Bool(REGB1)) {
10010 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1664);
10011 }
10012 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10013 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10014 if (UNTAG_Bool(REGB1)) {
10015 /* ./syntax//typing.nit:1665 */
10016 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10017 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10018 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10019 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10020 if (UNTAG_Bool(REGB1)) {
10021 /* ./syntax//typing.nit:1666 */
10022 REGB1 = TAG_Int(3);
10023 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10024 if (!once_value_2) {
10025 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10026 REGB1 = TAG_Int(33);
10027 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10028 once_value_2 = fra.me.REG[5];
10029 register_static_object(&once_value_2);
10030 } else fra.me.REG[5] = once_value_2;
10031 fra.me.REG[5] = fra.me.REG[5];
10032 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10033 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10034 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10035 if (!once_value_3) {
10036 fra.me.REG[5] = BOX_NativeString(" in a method.");
10037 REGB1 = TAG_Int(13);
10038 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10039 once_value_3 = fra.me.REG[5];
10040 register_static_object(&once_value_3);
10041 } else fra.me.REG[5] = once_value_3;
10042 fra.me.REG[5] = fra.me.REG[5];
10043 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10044 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10045 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10046 } else {
10047 /* ./syntax//typing.nit:1667 */
10048 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10049 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10050 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10051 if (UNTAG_Bool(REGB1)) {
10052 /* ./syntax//typing.nit:1668 */
10053 REGB1 = TAG_Int(3);
10054 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10055 if (!once_value_4) {
10056 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10057 REGB1 = TAG_Int(19);
10058 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10059 once_value_4 = fra.me.REG[5];
10060 register_static_object(&once_value_4);
10061 } else fra.me.REG[5] = once_value_4;
10062 fra.me.REG[5] = fra.me.REG[5];
10063 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10064 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10065 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10066 if (!once_value_5) {
10067 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10068 REGB1 = TAG_Int(26);
10069 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10070 once_value_5 = fra.me.REG[5];
10071 register_static_object(&once_value_5);
10072 } else fra.me.REG[5] = once_value_5;
10073 fra.me.REG[5] = fra.me.REG[5];
10074 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10075 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10076 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10077 }
10078 }
10079 }
10080 /* ./syntax//typing.nit:1671 */
10081 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10082 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10083 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10084 if (UNTAG_Bool(REGB1)) {
10085 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1671);
10086 }
10087 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10088 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
10089 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
10090 if (UNTAG_Bool(REGB1)) {
10091 } else {
10092 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1671);
10093 }
10094 /* ./syntax//typing.nit:1672 */
10095 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10096 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10097 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10098 if (UNTAG_Bool(REGB1)) {
10099 fra.me.REG[5] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
10100 fra.me.REG[3] = fra.me.REG[5];
10101 }
10102 /* ./syntax//typing.nit:1674 */
10103 fra.me.REG[3] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
10104 /* ./syntax//typing.nit:1675 */
10105 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10106 if (UNTAG_Bool(REGB1)) {
10107 } else {
10108 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10109 if (UNTAG_Bool(REGB0)) {
10110 REGB0 = TAG_Bool(false);
10111 REGB1 = REGB0;
10112 } else {
10113 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10114 REGB1 = REGB0;
10115 }
10116 }
10117 if (UNTAG_Bool(REGB1)) {
10118 goto label1;
10119 }
10120 /* ./syntax//typing.nit:1676 */
10121 fra.me.REG[5] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10122 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
10123 CALL_syntax___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]);
10124 /* ./syntax//typing.nit:1678 */
10125 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[0]) = fra.me.REG[4];
10126 /* ./syntax//typing.nit:1679 */
10127 fra.me.REG[5] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
10128 fra.me.REG[2] = fra.me.REG[5];
10129 /* ./syntax//typing.nit:1680 */
10130 fra.me.REG[5] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
10131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
10132 /* ./syntax//typing.nit:1682 */
10133 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10134 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
10135 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10136 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
10137 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10138 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10139 REGB2 = TAG_Int(3);
10140 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10141 if (!once_value_6) {
10142 fra.me.REG[6] = BOX_NativeString("");
10143 REGB2 = TAG_Int(0);
10144 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10145 once_value_6 = fra.me.REG[6];
10146 register_static_object(&once_value_6);
10147 } else fra.me.REG[6] = once_value_6;
10148 fra.me.REG[6] = fra.me.REG[6];
10149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
10150 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
10151 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10152 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
10153 if (!once_value_7) {
10154 fra.me.REG[6] = BOX_NativeString("=");
10155 REGB2 = TAG_Int(1);
10156 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10157 once_value_7 = fra.me.REG[6];
10158 register_static_object(&once_value_7);
10159 } else fra.me.REG[6] = once_value_7;
10160 fra.me.REG[6] = fra.me.REG[6];
10161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
10162 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10163 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10164 CALL_syntax___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);
10165 /* ./syntax//typing.nit:1683 */
10166 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10167 if (UNTAG_Bool(REGB0)) {
10168 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1683);
10169 }
10170 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10171 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
10172 if (UNTAG_Bool(REGB0)) {
10173 /* ./syntax//typing.nit:1684 */
10174 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10175 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
10176 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
10177 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10178 if (UNTAG_Bool(REGB0)) {
10179 /* ./syntax//typing.nit:1685 */
10180 REGB0 = TAG_Int(3);
10181 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10182 if (!once_value_8) {
10183 fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
10184 REGB0 = TAG_Int(33);
10185 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10186 once_value_8 = fra.me.REG[3];
10187 register_static_object(&once_value_8);
10188 } else fra.me.REG[3] = once_value_8;
10189 fra.me.REG[3] = fra.me.REG[3];
10190 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10191 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10192 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10193 if (!once_value_9) {
10194 fra.me.REG[3] = BOX_NativeString(" in a method.");
10195 REGB0 = TAG_Int(13);
10196 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10197 once_value_9 = fra.me.REG[3];
10198 register_static_object(&once_value_9);
10199 } else fra.me.REG[3] = once_value_9;
10200 fra.me.REG[3] = fra.me.REG[3];
10201 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10202 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10203 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
10204 } else {
10205 /* ./syntax//typing.nit:1686 */
10206 fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
10207 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[2])(fra.me.REG[2]);
10208 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10209 if (UNTAG_Bool(REGB0)) {
10210 /* ./syntax//typing.nit:1687 */
10211 REGB0 = TAG_Int(3);
10212 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10213 if (!once_value_10) {
10214 fra.me.REG[3] = BOX_NativeString("Error: constructor ");
10215 REGB0 = TAG_Int(19);
10216 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10217 once_value_10 = fra.me.REG[3];
10218 register_static_object(&once_value_10);
10219 } else fra.me.REG[3] = once_value_10;
10220 fra.me.REG[3] = fra.me.REG[3];
10221 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
10222 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10223 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
10224 if (!once_value_11) {
10225 fra.me.REG[4] = BOX_NativeString(" is not invoken on 'self'.");
10226 REGB0 = TAG_Int(26);
10227 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10228 once_value_11 = fra.me.REG[4];
10229 register_static_object(&once_value_11);
10230 } else fra.me.REG[4] = once_value_11;
10231 fra.me.REG[4] = fra.me.REG[4];
10232 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
10233 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10234 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
10235 }
10236 }
10237 }
10238 /* ./syntax//typing.nit:1691 */
10239 REGB0 = TAG_Bool(true);
10240 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
10241 label1: while(0);
10242 stack_frame_head = fra.me.prev;
10243 return;
10244 }
10245 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
10246 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10247 val_t REGB0;
10248 val_t tmp;
10249 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10250 fra.me.file = LOCATE_syntax___typing;
10251 fra.me.line = 1696;
10252 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
10253 fra.me.has_broke = 0;
10254 fra.me.REG_size = 2;
10255 fra.me.REG[0] = NIT_NULL;
10256 fra.me.REG[1] = NIT_NULL;
10257 fra.me.REG[0] = p0;
10258 /* ./syntax//typing.nit:1696 */
10259 REGB0 = TAG_Int(1);
10260 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10261 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
10262 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10263 goto label1;
10264 label1: while(0);
10265 stack_frame_head = fra.me.prev;
10266 return fra.me.REG[1];
10267 }
10268 val_t syntax___typing___AEqExpr___name(val_t p0){
10269 struct {struct stack_frame_t me;} fra;
10270 val_t REGB0;
10271 val_t tmp;
10272 static val_t once_value_1; /* Once value */
10273 static val_t once_value_2; /* Once value */
10274 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10275 fra.me.file = LOCATE_syntax___typing;
10276 fra.me.line = 1699;
10277 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
10278 fra.me.has_broke = 0;
10279 fra.me.REG_size = 1;
10280 fra.me.REG[0] = NIT_NULL;
10281 fra.me.REG[0] = p0;
10282 /* ./syntax//typing.nit:1699 */
10283 if (!once_value_1) {
10284 if (!once_value_2) {
10285 fra.me.REG[0] = BOX_NativeString("==");
10286 REGB0 = TAG_Int(2);
10287 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10288 once_value_2 = fra.me.REG[0];
10289 register_static_object(&once_value_2);
10290 } else fra.me.REG[0] = once_value_2;
10291 fra.me.REG[0] = fra.me.REG[0];
10292 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10293 once_value_1 = fra.me.REG[0];
10294 register_static_object(&once_value_1);
10295 } else fra.me.REG[0] = once_value_1;
10296 fra.me.REG[0] = fra.me.REG[0];
10297 goto label3;
10298 label3: while(0);
10299 stack_frame_head = fra.me.prev;
10300 return fra.me.REG[0];
10301 }
10302 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
10303 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10304 val_t REGB0;
10305 val_t REGB1;
10306 val_t tmp;
10307 static val_t once_value_2; /* Once value */
10308 static val_t once_value_3; /* Once value */
10309 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10310 fra.me.file = LOCATE_syntax___typing;
10311 fra.me.line = 1700;
10312 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
10313 fra.me.has_broke = 0;
10314 fra.me.REG_size = 4;
10315 fra.me.REG[0] = NIT_NULL;
10316 fra.me.REG[1] = NIT_NULL;
10317 fra.me.REG[2] = NIT_NULL;
10318 fra.me.REG[3] = NIT_NULL;
10319 fra.me.REG[0] = p0;
10320 fra.me.REG[1] = p1;
10321 /* ./syntax//typing.nit:1700 */
10322 fra.me.REG[2] = fra.me.REG[0];
10323 fra.me.REG[3] = fra.me.REG[1];
10324 /* ./syntax//typing.nit:1702 */
10325 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10326 /* ./syntax//typing.nit:1703 */
10327 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10328 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10329 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10330 if (UNTAG_Bool(REGB0)) {
10331 REGB0 = TAG_Bool(true);
10332 } else {
10333 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10334 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10335 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10336 REGB0 = REGB1;
10337 }
10338 if (UNTAG_Bool(REGB0)) {
10339 goto label1;
10340 }
10341 /* ./syntax//typing.nit:1704 */
10342 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10343 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10344 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10345 if (UNTAG_Bool(REGB0)) {
10346 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10347 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10348 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10349 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10350 } else {
10351 REGB1 = TAG_Bool(false);
10352 REGB0 = REGB1;
10353 }
10354 if (UNTAG_Bool(REGB0)) {
10355 REGB0 = TAG_Bool(true);
10356 } else {
10357 /* ./syntax//typing.nit:1705 */
10358 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10359 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10360 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10361 /* ./syntax//typing.nit:1704 */
10362 REGB0 = REGB1;
10363 }
10364 if (UNTAG_Bool(REGB0)) {
10365 /* ./syntax//typing.nit:1705 */
10366 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10367 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10368 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10369 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10370 } else {
10371 /* ./syntax//typing.nit:1704 */
10372 REGB1 = TAG_Bool(false);
10373 REGB0 = REGB1;
10374 }
10375 if (UNTAG_Bool(REGB0)) {
10376 /* ./syntax//typing.nit:1706 */
10377 if (!once_value_2) {
10378 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10379 REGB0 = TAG_Int(59);
10380 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10381 once_value_2 = fra.me.REG[1];
10382 register_static_object(&once_value_2);
10383 } else fra.me.REG[1] = once_value_2;
10384 fra.me.REG[1] = fra.me.REG[1];
10385 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10386 }
10387 /* ./syntax//typing.nit:1709 */
10388 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10389 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10390 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10391 if (UNTAG_Bool(REGB0)) {
10392 /* ./syntax//typing.nit:1710 */
10393 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10394 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10395 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10396 if (UNTAG_Bool(REGB0)) {
10397 /* ./syntax//typing.nit:1711 */
10398 if (!once_value_3) {
10399 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10400 REGB0 = TAG_Int(43);
10401 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10402 once_value_3 = fra.me.REG[1];
10403 register_static_object(&once_value_3);
10404 } else fra.me.REG[1] = once_value_3;
10405 fra.me.REG[1] = fra.me.REG[1];
10406 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10407 } else {
10408 /* ./syntax//typing.nit:1713 */
10409 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10410 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10411 }
10412 } else {
10413 /* ./syntax//typing.nit:1715 */
10414 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10415 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10416 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10417 if (UNTAG_Bool(REGB0)) {
10418 /* ./syntax//typing.nit:1716 */
10419 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10420 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10421 }
10422 }
10423 label1: while(0);
10424 stack_frame_head = fra.me.prev;
10425 return;
10426 }
10427 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10428 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10429 val_t REGB0;
10430 val_t REGB1;
10431 val_t tmp;
10432 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10433 fra.me.file = LOCATE_syntax___typing;
10434 fra.me.line = 1720;
10435 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
10436 fra.me.has_broke = 0;
10437 fra.me.REG_size = 5;
10438 fra.me.REG[0] = NIT_NULL;
10439 fra.me.REG[1] = NIT_NULL;
10440 fra.me.REG[2] = NIT_NULL;
10441 fra.me.REG[3] = NIT_NULL;
10442 fra.me.REG[4] = NIT_NULL;
10443 fra.me.REG[0] = p0;
10444 fra.me.REG[1] = p1;
10445 fra.me.REG[2] = p2;
10446 /* ./syntax//typing.nit:1722 */
10447 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10448 /* ./syntax//typing.nit:1723 */
10449 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10450 if (UNTAG_Bool(REGB0)) {
10451 } else {
10452 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10453 if (UNTAG_Bool(REGB1)) {
10454 REGB1 = TAG_Bool(false);
10455 REGB0 = REGB1;
10456 } else {
10457 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10458 REGB0 = REGB1;
10459 }
10460 }
10461 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10462 if (UNTAG_Bool(REGB0)) {
10463 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10464 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10465 } else {
10466 REGB1 = TAG_Bool(false);
10467 REGB0 = REGB1;
10468 }
10469 if (UNTAG_Bool(REGB0)) {
10470 /* ./syntax//typing.nit:1724 */
10471 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10472 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10473 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10474 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
10475 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10476 /* ./syntax//typing.nit:1725 */
10477 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10478 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10479 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
10480 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10481 }
10482 stack_frame_head = fra.me.prev;
10483 return;
10484 }
10485 val_t syntax___typing___ANeExpr___name(val_t p0){
10486 struct {struct stack_frame_t me;} fra;
10487 val_t REGB0;
10488 val_t tmp;
10489 static val_t once_value_1; /* Once value */
10490 static val_t once_value_2; /* Once value */
10491 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10492 fra.me.file = LOCATE_syntax___typing;
10493 fra.me.line = 1730;
10494 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
10495 fra.me.has_broke = 0;
10496 fra.me.REG_size = 1;
10497 fra.me.REG[0] = NIT_NULL;
10498 fra.me.REG[0] = p0;
10499 /* ./syntax//typing.nit:1730 */
10500 if (!once_value_1) {
10501 if (!once_value_2) {
10502 fra.me.REG[0] = BOX_NativeString("!=");
10503 REGB0 = TAG_Int(2);
10504 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10505 once_value_2 = fra.me.REG[0];
10506 register_static_object(&once_value_2);
10507 } else fra.me.REG[0] = once_value_2;
10508 fra.me.REG[0] = fra.me.REG[0];
10509 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10510 once_value_1 = fra.me.REG[0];
10511 register_static_object(&once_value_1);
10512 } else fra.me.REG[0] = once_value_1;
10513 fra.me.REG[0] = fra.me.REG[0];
10514 goto label3;
10515 label3: while(0);
10516 stack_frame_head = fra.me.prev;
10517 return fra.me.REG[0];
10518 }
10519 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
10520 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10521 val_t REGB0;
10522 val_t REGB1;
10523 val_t tmp;
10524 static val_t once_value_2; /* Once value */
10525 static val_t once_value_3; /* Once value */
10526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10527 fra.me.file = LOCATE_syntax___typing;
10528 fra.me.line = 1731;
10529 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
10530 fra.me.has_broke = 0;
10531 fra.me.REG_size = 4;
10532 fra.me.REG[0] = NIT_NULL;
10533 fra.me.REG[1] = NIT_NULL;
10534 fra.me.REG[2] = NIT_NULL;
10535 fra.me.REG[3] = NIT_NULL;
10536 fra.me.REG[0] = p0;
10537 fra.me.REG[1] = p1;
10538 /* ./syntax//typing.nit:1731 */
10539 fra.me.REG[2] = fra.me.REG[0];
10540 fra.me.REG[3] = fra.me.REG[1];
10541 /* ./syntax//typing.nit:1733 */
10542 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10543 /* ./syntax//typing.nit:1734 */
10544 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10545 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10546 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10547 if (UNTAG_Bool(REGB0)) {
10548 REGB0 = TAG_Bool(true);
10549 } else {
10550 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10551 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10552 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10553 REGB0 = REGB1;
10554 }
10555 if (UNTAG_Bool(REGB0)) {
10556 goto label1;
10557 }
10558 /* ./syntax//typing.nit:1735 */
10559 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10560 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10561 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10562 if (UNTAG_Bool(REGB0)) {
10563 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10564 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10565 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10566 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10567 } else {
10568 REGB1 = TAG_Bool(false);
10569 REGB0 = REGB1;
10570 }
10571 if (UNTAG_Bool(REGB0)) {
10572 REGB0 = TAG_Bool(true);
10573 } else {
10574 /* ./syntax//typing.nit:1736 */
10575 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10576 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10577 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10578 /* ./syntax//typing.nit:1735 */
10579 REGB0 = REGB1;
10580 }
10581 if (UNTAG_Bool(REGB0)) {
10582 /* ./syntax//typing.nit:1736 */
10583 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10584 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10585 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10586 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10587 } else {
10588 /* ./syntax//typing.nit:1735 */
10589 REGB1 = TAG_Bool(false);
10590 REGB0 = REGB1;
10591 }
10592 if (UNTAG_Bool(REGB0)) {
10593 /* ./syntax//typing.nit:1737 */
10594 if (!once_value_2) {
10595 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10596 REGB0 = TAG_Int(59);
10597 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10598 once_value_2 = fra.me.REG[1];
10599 register_static_object(&once_value_2);
10600 } else fra.me.REG[1] = once_value_2;
10601 fra.me.REG[1] = fra.me.REG[1];
10602 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10603 }
10604 /* ./syntax//typing.nit:1740 */
10605 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10606 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10607 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10608 if (UNTAG_Bool(REGB0)) {
10609 /* ./syntax//typing.nit:1741 */
10610 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10611 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10612 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10613 if (UNTAG_Bool(REGB0)) {
10614 /* ./syntax//typing.nit:1742 */
10615 if (!once_value_3) {
10616 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10617 REGB0 = TAG_Int(43);
10618 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10619 once_value_3 = fra.me.REG[1];
10620 register_static_object(&once_value_3);
10621 } else fra.me.REG[1] = once_value_3;
10622 fra.me.REG[1] = fra.me.REG[1];
10623 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10624 } else {
10625 /* ./syntax//typing.nit:1744 */
10626 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10627 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10628 }
10629 } else {
10630 /* ./syntax//typing.nit:1746 */
10631 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10632 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10633 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10634 if (UNTAG_Bool(REGB0)) {
10635 /* ./syntax//typing.nit:1747 */
10636 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10637 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10638 }
10639 }
10640 label1: while(0);
10641 stack_frame_head = fra.me.prev;
10642 return;
10643 }
10644 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10645 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10646 val_t REGB0;
10647 val_t REGB1;
10648 val_t tmp;
10649 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10650 fra.me.file = LOCATE_syntax___typing;
10651 fra.me.line = 1751;
10652 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
10653 fra.me.has_broke = 0;
10654 fra.me.REG_size = 5;
10655 fra.me.REG[0] = NIT_NULL;
10656 fra.me.REG[1] = NIT_NULL;
10657 fra.me.REG[2] = NIT_NULL;
10658 fra.me.REG[3] = NIT_NULL;
10659 fra.me.REG[4] = NIT_NULL;
10660 fra.me.REG[0] = p0;
10661 fra.me.REG[1] = p1;
10662 fra.me.REG[2] = p2;
10663 /* ./syntax//typing.nit:1753 */
10664 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10665 /* ./syntax//typing.nit:1754 */
10666 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10667 if (UNTAG_Bool(REGB0)) {
10668 } else {
10669 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10670 if (UNTAG_Bool(REGB1)) {
10671 REGB1 = TAG_Bool(false);
10672 REGB0 = REGB1;
10673 } else {
10674 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10675 REGB0 = REGB1;
10676 }
10677 }
10678 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10679 if (UNTAG_Bool(REGB0)) {
10680 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10681 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10682 } else {
10683 REGB1 = TAG_Bool(false);
10684 REGB0 = REGB1;
10685 }
10686 if (UNTAG_Bool(REGB0)) {
10687 /* ./syntax//typing.nit:1755 */
10688 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10689 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10690 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10691 fra.me.REG[2] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
10692 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10693 /* ./syntax//typing.nit:1756 */
10694 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10695 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10696 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[1]);
10697 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10698 }
10699 stack_frame_head = fra.me.prev;
10700 return;
10701 }
10702 val_t syntax___typing___ALtExpr___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_syntax___typing;
10710 fra.me.line = 1761;
10711 fra.me.meth = LOCATE_syntax___typing___ALtExpr___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:1761 */
10717 if (!once_value_1) {
10718 if (!once_value_2) {
10719 fra.me.REG[0] = BOX_NativeString("<");
10720 REGB0 = TAG_Int(1);
10721 fra.me.REG[0] = NEW_String_standard___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_standard___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 syntax___typing___ALeExpr___name(val_t p0){
10737 struct {struct stack_frame_t me;} fra;
10738 val_t REGB0;
10739 val_t tmp;
10740 static val_t once_value_1; /* Once value */
10741 static val_t once_value_2; /* Once value */
10742 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10743 fra.me.file = LOCATE_syntax___typing;
10744 fra.me.line = 1764;
10745 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
10746 fra.me.has_broke = 0;
10747 fra.me.REG_size = 1;
10748 fra.me.REG[0] = NIT_NULL;
10749 fra.me.REG[0] = p0;
10750 /* ./syntax//typing.nit:1764 */
10751 if (!once_value_1) {
10752 if (!once_value_2) {
10753 fra.me.REG[0] = BOX_NativeString("<=");
10754 REGB0 = TAG_Int(2);
10755 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10756 once_value_2 = fra.me.REG[0];
10757 register_static_object(&once_value_2);
10758 } else fra.me.REG[0] = once_value_2;
10759 fra.me.REG[0] = fra.me.REG[0];
10760 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10761 once_value_1 = fra.me.REG[0];
10762 register_static_object(&once_value_1);
10763 } else fra.me.REG[0] = once_value_1;
10764 fra.me.REG[0] = fra.me.REG[0];
10765 goto label3;
10766 label3: while(0);
10767 stack_frame_head = fra.me.prev;
10768 return fra.me.REG[0];
10769 }
10770 val_t syntax___typing___ALlExpr___name(val_t p0){
10771 struct {struct stack_frame_t me;} fra;
10772 val_t REGB0;
10773 val_t tmp;
10774 static val_t once_value_1; /* Once value */
10775 static val_t once_value_2; /* Once value */
10776 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10777 fra.me.file = LOCATE_syntax___typing;
10778 fra.me.line = 1767;
10779 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
10780 fra.me.has_broke = 0;
10781 fra.me.REG_size = 1;
10782 fra.me.REG[0] = NIT_NULL;
10783 fra.me.REG[0] = p0;
10784 /* ./syntax//typing.nit:1767 */
10785 if (!once_value_1) {
10786 if (!once_value_2) {
10787 fra.me.REG[0] = BOX_NativeString("<<");
10788 REGB0 = TAG_Int(2);
10789 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10790 once_value_2 = fra.me.REG[0];
10791 register_static_object(&once_value_2);
10792 } else fra.me.REG[0] = once_value_2;
10793 fra.me.REG[0] = fra.me.REG[0];
10794 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10795 once_value_1 = fra.me.REG[0];
10796 register_static_object(&once_value_1);
10797 } else fra.me.REG[0] = once_value_1;
10798 fra.me.REG[0] = fra.me.REG[0];
10799 goto label3;
10800 label3: while(0);
10801 stack_frame_head = fra.me.prev;
10802 return fra.me.REG[0];
10803 }
10804 val_t syntax___typing___AGtExpr___name(val_t p0){
10805 struct {struct stack_frame_t me;} fra;
10806 val_t REGB0;
10807 val_t tmp;
10808 static val_t once_value_1; /* Once value */
10809 static val_t once_value_2; /* Once value */
10810 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10811 fra.me.file = LOCATE_syntax___typing;
10812 fra.me.line = 1770;
10813 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
10814 fra.me.has_broke = 0;
10815 fra.me.REG_size = 1;
10816 fra.me.REG[0] = NIT_NULL;
10817 fra.me.REG[0] = p0;
10818 /* ./syntax//typing.nit:1770 */
10819 if (!once_value_1) {
10820 if (!once_value_2) {
10821 fra.me.REG[0] = BOX_NativeString(">");
10822 REGB0 = TAG_Int(1);
10823 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10824 once_value_2 = fra.me.REG[0];
10825 register_static_object(&once_value_2);
10826 } else fra.me.REG[0] = once_value_2;
10827 fra.me.REG[0] = fra.me.REG[0];
10828 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10829 once_value_1 = fra.me.REG[0];
10830 register_static_object(&once_value_1);
10831 } else fra.me.REG[0] = once_value_1;
10832 fra.me.REG[0] = fra.me.REG[0];
10833 goto label3;
10834 label3: while(0);
10835 stack_frame_head = fra.me.prev;
10836 return fra.me.REG[0];
10837 }
10838 val_t syntax___typing___AGeExpr___name(val_t p0){
10839 struct {struct stack_frame_t me;} fra;
10840 val_t REGB0;
10841 val_t tmp;
10842 static val_t once_value_1; /* Once value */
10843 static val_t once_value_2; /* Once value */
10844 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10845 fra.me.file = LOCATE_syntax___typing;
10846 fra.me.line = 1773;
10847 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
10848 fra.me.has_broke = 0;
10849 fra.me.REG_size = 1;
10850 fra.me.REG[0] = NIT_NULL;
10851 fra.me.REG[0] = p0;
10852 /* ./syntax//typing.nit:1773 */
10853 if (!once_value_1) {
10854 if (!once_value_2) {
10855 fra.me.REG[0] = BOX_NativeString(">=");
10856 REGB0 = TAG_Int(2);
10857 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10858 once_value_2 = fra.me.REG[0];
10859 register_static_object(&once_value_2);
10860 } else fra.me.REG[0] = once_value_2;
10861 fra.me.REG[0] = fra.me.REG[0];
10862 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10863 once_value_1 = fra.me.REG[0];
10864 register_static_object(&once_value_1);
10865 } else fra.me.REG[0] = once_value_1;
10866 fra.me.REG[0] = fra.me.REG[0];
10867 goto label3;
10868 label3: while(0);
10869 stack_frame_head = fra.me.prev;
10870 return fra.me.REG[0];
10871 }
10872 val_t syntax___typing___AGgExpr___name(val_t p0){
10873 struct {struct stack_frame_t me;} fra;
10874 val_t REGB0;
10875 val_t tmp;
10876 static val_t once_value_1; /* Once value */
10877 static val_t once_value_2; /* Once value */
10878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10879 fra.me.file = LOCATE_syntax___typing;
10880 fra.me.line = 1776;
10881 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
10882 fra.me.has_broke = 0;
10883 fra.me.REG_size = 1;
10884 fra.me.REG[0] = NIT_NULL;
10885 fra.me.REG[0] = p0;
10886 /* ./syntax//typing.nit:1776 */
10887 if (!once_value_1) {
10888 if (!once_value_2) {
10889 fra.me.REG[0] = BOX_NativeString(">>");
10890 REGB0 = TAG_Int(2);
10891 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10892 once_value_2 = fra.me.REG[0];
10893 register_static_object(&once_value_2);
10894 } else fra.me.REG[0] = once_value_2;
10895 fra.me.REG[0] = fra.me.REG[0];
10896 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10897 once_value_1 = fra.me.REG[0];
10898 register_static_object(&once_value_1);
10899 } else fra.me.REG[0] = once_value_1;
10900 fra.me.REG[0] = fra.me.REG[0];
10901 goto label3;
10902 label3: while(0);
10903 stack_frame_head = fra.me.prev;
10904 return fra.me.REG[0];
10905 }
10906 val_t syntax___typing___APlusExpr___name(val_t p0){
10907 struct {struct stack_frame_t me;} fra;
10908 val_t REGB0;
10909 val_t tmp;
10910 static val_t once_value_1; /* Once value */
10911 static val_t once_value_2; /* Once value */
10912 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10913 fra.me.file = LOCATE_syntax___typing;
10914 fra.me.line = 1779;
10915 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
10916 fra.me.has_broke = 0;
10917 fra.me.REG_size = 1;
10918 fra.me.REG[0] = NIT_NULL;
10919 fra.me.REG[0] = p0;
10920 /* ./syntax//typing.nit:1779 */
10921 if (!once_value_1) {
10922 if (!once_value_2) {
10923 fra.me.REG[0] = BOX_NativeString("+");
10924 REGB0 = TAG_Int(1);
10925 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10926 once_value_2 = fra.me.REG[0];
10927 register_static_object(&once_value_2);
10928 } else fra.me.REG[0] = once_value_2;
10929 fra.me.REG[0] = fra.me.REG[0];
10930 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10931 once_value_1 = fra.me.REG[0];
10932 register_static_object(&once_value_1);
10933 } else fra.me.REG[0] = once_value_1;
10934 fra.me.REG[0] = fra.me.REG[0];
10935 goto label3;
10936 label3: while(0);
10937 stack_frame_head = fra.me.prev;
10938 return fra.me.REG[0];
10939 }
10940 val_t syntax___typing___AMinusExpr___name(val_t p0){
10941 struct {struct stack_frame_t me;} fra;
10942 val_t REGB0;
10943 val_t tmp;
10944 static val_t once_value_1; /* Once value */
10945 static val_t once_value_2; /* Once value */
10946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10947 fra.me.file = LOCATE_syntax___typing;
10948 fra.me.line = 1782;
10949 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
10950 fra.me.has_broke = 0;
10951 fra.me.REG_size = 1;
10952 fra.me.REG[0] = NIT_NULL;
10953 fra.me.REG[0] = p0;
10954 /* ./syntax//typing.nit:1782 */
10955 if (!once_value_1) {
10956 if (!once_value_2) {
10957 fra.me.REG[0] = BOX_NativeString("-");
10958 REGB0 = TAG_Int(1);
10959 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10960 once_value_2 = fra.me.REG[0];
10961 register_static_object(&once_value_2);
10962 } else fra.me.REG[0] = once_value_2;
10963 fra.me.REG[0] = fra.me.REG[0];
10964 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10965 once_value_1 = fra.me.REG[0];
10966 register_static_object(&once_value_1);
10967 } else fra.me.REG[0] = once_value_1;
10968 fra.me.REG[0] = fra.me.REG[0];
10969 goto label3;
10970 label3: while(0);
10971 stack_frame_head = fra.me.prev;
10972 return fra.me.REG[0];
10973 }
10974 val_t syntax___typing___AStarshipExpr___name(val_t p0){
10975 struct {struct stack_frame_t me;} fra;
10976 val_t REGB0;
10977 val_t tmp;
10978 static val_t once_value_1; /* Once value */
10979 static val_t once_value_2; /* Once value */
10980 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10981 fra.me.file = LOCATE_syntax___typing;
10982 fra.me.line = 1785;
10983 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
10984 fra.me.has_broke = 0;
10985 fra.me.REG_size = 1;
10986 fra.me.REG[0] = NIT_NULL;
10987 fra.me.REG[0] = p0;
10988 /* ./syntax//typing.nit:1785 */
10989 if (!once_value_1) {
10990 if (!once_value_2) {
10991 fra.me.REG[0] = BOX_NativeString("<=>");
10992 REGB0 = TAG_Int(3);
10993 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10994 once_value_2 = fra.me.REG[0];
10995 register_static_object(&once_value_2);
10996 } else fra.me.REG[0] = once_value_2;
10997 fra.me.REG[0] = fra.me.REG[0];
10998 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10999 once_value_1 = fra.me.REG[0];
11000 register_static_object(&once_value_1);
11001 } else fra.me.REG[0] = once_value_1;
11002 fra.me.REG[0] = fra.me.REG[0];
11003 goto label3;
11004 label3: while(0);
11005 stack_frame_head = fra.me.prev;
11006 return fra.me.REG[0];
11007 }
11008 val_t syntax___typing___AStarExpr___name(val_t p0){
11009 struct {struct stack_frame_t me;} fra;
11010 val_t REGB0;
11011 val_t tmp;
11012 static val_t once_value_1; /* Once value */
11013 static val_t once_value_2; /* Once value */
11014 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11015 fra.me.file = LOCATE_syntax___typing;
11016 fra.me.line = 1788;
11017 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11018 fra.me.has_broke = 0;
11019 fra.me.REG_size = 1;
11020 fra.me.REG[0] = NIT_NULL;
11021 fra.me.REG[0] = p0;
11022 /* ./syntax//typing.nit:1788 */
11023 if (!once_value_1) {
11024 if (!once_value_2) {
11025 fra.me.REG[0] = BOX_NativeString("*");
11026 REGB0 = TAG_Int(1);
11027 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11028 once_value_2 = fra.me.REG[0];
11029 register_static_object(&once_value_2);
11030 } else fra.me.REG[0] = once_value_2;
11031 fra.me.REG[0] = fra.me.REG[0];
11032 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11033 once_value_1 = fra.me.REG[0];
11034 register_static_object(&once_value_1);
11035 } else fra.me.REG[0] = once_value_1;
11036 fra.me.REG[0] = fra.me.REG[0];
11037 goto label3;
11038 label3: while(0);
11039 stack_frame_head = fra.me.prev;
11040 return fra.me.REG[0];
11041 }
11042 val_t syntax___typing___ASlashExpr___name(val_t p0){
11043 struct {struct stack_frame_t me;} fra;
11044 val_t REGB0;
11045 val_t tmp;
11046 static val_t once_value_1; /* Once value */
11047 static val_t once_value_2; /* Once value */
11048 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11049 fra.me.file = LOCATE_syntax___typing;
11050 fra.me.line = 1791;
11051 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11052 fra.me.has_broke = 0;
11053 fra.me.REG_size = 1;
11054 fra.me.REG[0] = NIT_NULL;
11055 fra.me.REG[0] = p0;
11056 /* ./syntax//typing.nit:1791 */
11057 if (!once_value_1) {
11058 if (!once_value_2) {
11059 fra.me.REG[0] = BOX_NativeString("/");
11060 REGB0 = TAG_Int(1);
11061 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11062 once_value_2 = fra.me.REG[0];
11063 register_static_object(&once_value_2);
11064 } else fra.me.REG[0] = once_value_2;
11065 fra.me.REG[0] = fra.me.REG[0];
11066 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11067 once_value_1 = fra.me.REG[0];
11068 register_static_object(&once_value_1);
11069 } else fra.me.REG[0] = once_value_1;
11070 fra.me.REG[0] = fra.me.REG[0];
11071 goto label3;
11072 label3: while(0);
11073 stack_frame_head = fra.me.prev;
11074 return fra.me.REG[0];
11075 }
11076 val_t syntax___typing___APercentExpr___name(val_t p0){
11077 struct {struct stack_frame_t me;} fra;
11078 val_t REGB0;
11079 val_t tmp;
11080 static val_t once_value_1; /* Once value */
11081 static val_t once_value_2; /* Once value */
11082 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11083 fra.me.file = LOCATE_syntax___typing;
11084 fra.me.line = 1794;
11085 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11086 fra.me.has_broke = 0;
11087 fra.me.REG_size = 1;
11088 fra.me.REG[0] = NIT_NULL;
11089 fra.me.REG[0] = p0;
11090 /* ./syntax//typing.nit:1794 */
11091 if (!once_value_1) {
11092 if (!once_value_2) {
11093 fra.me.REG[0] = BOX_NativeString("%");
11094 REGB0 = TAG_Int(1);
11095 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11096 once_value_2 = fra.me.REG[0];
11097 register_static_object(&once_value_2);
11098 } else fra.me.REG[0] = once_value_2;
11099 fra.me.REG[0] = fra.me.REG[0];
11100 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11101 once_value_1 = fra.me.REG[0];
11102 register_static_object(&once_value_1);
11103 } else fra.me.REG[0] = once_value_1;
11104 fra.me.REG[0] = fra.me.REG[0];
11105 goto label3;
11106 label3: while(0);
11107 stack_frame_head = fra.me.prev;
11108 return fra.me.REG[0];
11109 }
11110 val_t syntax___typing___AUminusExpr___name(val_t p0){
11111 struct {struct stack_frame_t me;} fra;
11112 val_t REGB0;
11113 val_t tmp;
11114 static val_t once_value_1; /* Once value */
11115 static val_t once_value_2; /* Once value */
11116 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11117 fra.me.file = LOCATE_syntax___typing;
11118 fra.me.line = 1798;
11119 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11120 fra.me.has_broke = 0;
11121 fra.me.REG_size = 1;
11122 fra.me.REG[0] = NIT_NULL;
11123 fra.me.REG[0] = p0;
11124 /* ./syntax//typing.nit:1798 */
11125 if (!once_value_1) {
11126 if (!once_value_2) {
11127 fra.me.REG[0] = BOX_NativeString("unary -");
11128 REGB0 = TAG_Int(7);
11129 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11130 once_value_2 = fra.me.REG[0];
11131 register_static_object(&once_value_2);
11132 } else fra.me.REG[0] = once_value_2;
11133 fra.me.REG[0] = fra.me.REG[0];
11134 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11135 once_value_1 = fra.me.REG[0];
11136 register_static_object(&once_value_1);
11137 } else fra.me.REG[0] = once_value_1;
11138 fra.me.REG[0] = fra.me.REG[0];
11139 goto label3;
11140 label3: while(0);
11141 stack_frame_head = fra.me.prev;
11142 return fra.me.REG[0];
11143 }
11144 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11145 struct {struct stack_frame_t me;} fra;
11146 val_t tmp;
11147 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11148 fra.me.file = LOCATE_syntax___typing;
11149 fra.me.line = 1799;
11150 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
11151 fra.me.has_broke = 0;
11152 fra.me.REG_size = 1;
11153 fra.me.REG[0] = NIT_NULL;
11154 fra.me.REG[0] = p0;
11155 /* ./syntax//typing.nit:1799 */
11156 fra.me.REG[0] = NIT_NULL;
11157 goto label1;
11158 label1: while(0);
11159 stack_frame_head = fra.me.prev;
11160 return fra.me.REG[0];
11161 }
11162 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
11163 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
11164 val_t REGB0;
11165 val_t REGB1;
11166 val_t tmp;
11167 static val_t once_value_1; /* Once value */
11168 static val_t once_value_2; /* Once value */
11169 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11170 fra.me.file = LOCATE_syntax___typing;
11171 fra.me.line = 1803;
11172 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
11173 fra.me.has_broke = 0;
11174 fra.me.REG_size = 9;
11175 fra.me.REG[0] = NIT_NULL;
11176 fra.me.REG[1] = NIT_NULL;
11177 fra.me.REG[2] = NIT_NULL;
11178 fra.me.REG[3] = NIT_NULL;
11179 fra.me.REG[4] = NIT_NULL;
11180 fra.me.REG[5] = NIT_NULL;
11181 fra.me.REG[6] = NIT_NULL;
11182 fra.me.REG[7] = NIT_NULL;
11183 fra.me.REG[8] = NIT_NULL;
11184 fra.me.REG[0] = p0;
11185 fra.me.REG[1] = p1;
11186 /* ./syntax//typing.nit:1803 */
11187 fra.me.REG[2] = fra.me.REG[0];
11188 fra.me.REG[3] = fra.me.REG[1];
11189 /* ./syntax//typing.nit:1805 */
11190 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11191 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
11192 if (UNTAG_Bool(REGB0)) {
11193 /* ./syntax//typing.nit:1806 */
11194 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11195 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11196 /* ./syntax//typing.nit:1807 */
11197 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
11198 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
11199 /* ./syntax//typing.nit:1808 */
11200 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11201 if (UNTAG_Bool(REGB0)) {
11202 } else {
11203 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11204 if (UNTAG_Bool(REGB1)) {
11205 REGB1 = TAG_Bool(false);
11206 REGB0 = REGB1;
11207 } else {
11208 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
11209 REGB0 = REGB1;
11210 }
11211 }
11212 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11213 if (UNTAG_Bool(REGB0)) {
11214 /* ./syntax//typing.nit:1810 */
11215 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_syntax___syntax_base___ClosureVariable, ID_syntax___syntax_base___ClosureVariable)) /*cast ClosureVariable*/;
11216 if (UNTAG_Bool(REGB0)) {
11217 /* ./syntax//typing.nit:1811 */
11218 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11219 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11220 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
11221 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
11222 /* ./syntax//typing.nit:1812 */
11223 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11224 } else {
11225 /* ./syntax//typing.nit:1814 */
11226 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11227 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
11228 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11229 if (UNTAG_Bool(REGB0)) {
11230 /* ./syntax//typing.nit:1815 */
11231 REGB0 = TAG_Int(3);
11232 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11233 if (!once_value_1) {
11234 fra.me.REG[6] = BOX_NativeString("Error: ");
11235 REGB0 = TAG_Int(7);
11236 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
11237 once_value_1 = fra.me.REG[6];
11238 register_static_object(&once_value_1);
11239 } else fra.me.REG[6] = once_value_1;
11240 fra.me.REG[6] = fra.me.REG[6];
11241 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11242 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11243 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11244 if (!once_value_2) {
11245 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
11246 REGB0 = TAG_Int(29);
11247 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11248 once_value_2 = fra.me.REG[4];
11249 register_static_object(&once_value_2);
11250 } else fra.me.REG[4] = once_value_2;
11251 fra.me.REG[4] = fra.me.REG[4];
11252 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11253 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
11254 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
11255 /* ./syntax//typing.nit:1816 */
11256 goto label3;
11257 }
11258 /* ./syntax//typing.nit:1818 */
11259 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
11260 fra.me.REG[8] = fra.me.REG[7];
11261 /* ./syntax//typing.nit:1819 */
11262 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11263 }
11264 /* ./syntax//typing.nit:1821 */
11265 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
11266 /* ./syntax//typing.nit:1822 */
11267 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
11268 /* ./syntax//typing.nit:1823 */
11269 goto label3;
11270 }
11271 }
11272 /* ./syntax//typing.nit:1827 */
11273 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11274 label3: while(0);
11275 stack_frame_head = fra.me.prev;
11276 return;
11277 }
11278 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
11279 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11280 val_t REGB0;
11281 val_t tmp;
11282 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11283 fra.me.file = LOCATE_syntax___typing;
11284 fra.me.line = 1830;
11285 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
11286 fra.me.has_broke = 0;
11287 fra.me.REG_size = 2;
11288 fra.me.REG[0] = NIT_NULL;
11289 fra.me.REG[1] = NIT_NULL;
11290 fra.me.REG[0] = p0;
11291 /* ./syntax//typing.nit:1832 */
11292 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11293 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11294 if (UNTAG_Bool(REGB0)) {
11295 /* ./syntax//typing.nit:1833 */
11296 fra.me.REG[1] = NIT_NULL;
11297 goto label1;
11298 } else {
11299 /* ./syntax//typing.nit:1835 */
11300 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11301 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11302 fra.me.REG[1] = fra.me.REG[0];
11303 goto label1;
11304 }
11305 label1: while(0);
11306 stack_frame_head = fra.me.prev;
11307 return fra.me.REG[1];
11308 }
11309 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
11310 struct {struct stack_frame_t me;} fra;
11311 val_t tmp;
11312 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11313 fra.me.file = LOCATE_syntax___typing;
11314 fra.me.line = 1839;
11315 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
11316 fra.me.has_broke = 0;
11317 fra.me.REG_size = 0;
11318 /* ./syntax//typing.nit:1839 */
11319 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1839);
11320 stack_frame_head = fra.me.prev;
11321 return NIT_NULL;
11322 }
11323 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
11324 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11325 val_t tmp;
11326 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11327 fra.me.file = LOCATE_syntax___typing;
11328 fra.me.line = 1844;
11329 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
11330 fra.me.has_broke = 0;
11331 fra.me.REG_size = 2;
11332 fra.me.REG[0] = NIT_NULL;
11333 fra.me.REG[1] = NIT_NULL;
11334 fra.me.REG[0] = p0;
11335 fra.me.REG[1] = p1;
11336 /* ./syntax//typing.nit:1846 */
11337 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11338 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
11339 goto label1;
11340 label1: while(0);
11341 stack_frame_head = fra.me.prev;
11342 return fra.me.REG[0];
11343 }
11344 val_t syntax___typing___ACallExpr___name(val_t p0){
11345 struct {struct stack_frame_t me;} fra;
11346 val_t tmp;
11347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11348 fra.me.file = LOCATE_syntax___typing;
11349 fra.me.line = 1849;
11350 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
11351 fra.me.has_broke = 0;
11352 fra.me.REG_size = 1;
11353 fra.me.REG[0] = NIT_NULL;
11354 fra.me.REG[0] = p0;
11355 /* ./syntax//typing.nit:1849 */
11356 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11357 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11358 goto label1;
11359 label1: while(0);
11360 stack_frame_head = fra.me.prev;
11361 return fra.me.REG[0];
11362 }
11363 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
11364 struct {struct stack_frame_t me;} fra;
11365 val_t tmp;
11366 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11367 fra.me.file = LOCATE_syntax___typing;
11368 fra.me.line = 1850;
11369 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
11370 fra.me.has_broke = 0;
11371 fra.me.REG_size = 1;
11372 fra.me.REG[0] = NIT_NULL;
11373 fra.me.REG[0] = p0;
11374 /* ./syntax//typing.nit:1850 */
11375 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11376 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11377 goto label1;
11378 label1: while(0);
11379 stack_frame_head = fra.me.prev;
11380 return fra.me.REG[0];
11381 }
11382 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
11383 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11384 val_t tmp;
11385 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11386 fra.me.file = LOCATE_syntax___typing;
11387 fra.me.line = 1854;
11388 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
11389 fra.me.has_broke = 0;
11390 fra.me.REG_size = 3;
11391 fra.me.REG[0] = NIT_NULL;
11392 fra.me.REG[1] = NIT_NULL;
11393 fra.me.REG[2] = NIT_NULL;
11394 fra.me.REG[0] = p0;
11395 fra.me.REG[1] = p1;
11396 /* ./syntax//typing.nit:1856 */
11397 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11398 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
11399 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11400 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11401 goto label1;
11402 label1: while(0);
11403 stack_frame_head = fra.me.prev;
11404 return fra.me.REG[0];
11405 }
11406 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
11407 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11408 val_t REGB0;
11409 val_t tmp;
11410 static val_t once_value_1; /* Once value */
11411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11412 fra.me.file = LOCATE_syntax___typing;
11413 fra.me.line = 1859;
11414 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
11415 fra.me.has_broke = 0;
11416 fra.me.REG_size = 2;
11417 fra.me.REG[0] = NIT_NULL;
11418 fra.me.REG[1] = NIT_NULL;
11419 fra.me.REG[0] = p0;
11420 /* ./syntax//typing.nit:1859 */
11421 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11422 fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
11423 if (!once_value_1) {
11424 fra.me.REG[1] = BOX_NativeString("=");
11425 REGB0 = TAG_Int(1);
11426 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11427 once_value_1 = fra.me.REG[1];
11428 register_static_object(&once_value_1);
11429 } else fra.me.REG[1] = once_value_1;
11430 fra.me.REG[1] = fra.me.REG[1];
11431 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11432 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
11433 goto label2;
11434 label2: while(0);
11435 stack_frame_head = fra.me.prev;
11436 return fra.me.REG[1];
11437 }
11438 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
11439 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11440 val_t tmp;
11441 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11442 fra.me.file = LOCATE_syntax___typing;
11443 fra.me.line = 1860;
11444 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
11445 fra.me.has_broke = 0;
11446 fra.me.REG_size = 2;
11447 fra.me.REG[0] = NIT_NULL;
11448 fra.me.REG[1] = NIT_NULL;
11449 fra.me.REG[0] = p0;
11450 /* ./syntax//typing.nit:1861 */
11451 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11452 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11453 /* ./syntax//typing.nit:1862 */
11454 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11455 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11456 /* ./syntax//typing.nit:1863 */
11457 goto label1;
11458 label1: while(0);
11459 stack_frame_head = fra.me.prev;
11460 return fra.me.REG[1];
11461 }
11462 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
11463 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11464 val_t tmp;
11465 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11466 fra.me.file = LOCATE_syntax___typing;
11467 fra.me.line = 1868;
11468 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
11469 fra.me.has_broke = 0;
11470 fra.me.REG_size = 3;
11471 fra.me.REG[0] = NIT_NULL;
11472 fra.me.REG[1] = NIT_NULL;
11473 fra.me.REG[2] = NIT_NULL;
11474 fra.me.REG[0] = p0;
11475 fra.me.REG[1] = p1;
11476 /* ./syntax//typing.nit:1870 */
11477 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11478 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
11479 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11480 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11481 goto label1;
11482 label1: while(0);
11483 stack_frame_head = fra.me.prev;
11484 return fra.me.REG[0];
11485 }
11486 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
11487 struct {struct stack_frame_t me;} fra;
11488 val_t tmp;
11489 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11490 fra.me.file = LOCATE_syntax___typing;
11491 fra.me.line = 1873;
11492 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
11493 fra.me.has_broke = 0;
11494 fra.me.REG_size = 1;
11495 fra.me.REG[0] = NIT_NULL;
11496 fra.me.REG[0] = p0;
11497 /* ./syntax//typing.nit:1873 */
11498 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11499 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11500 goto label1;
11501 label1: while(0);
11502 stack_frame_head = fra.me.prev;
11503 return fra.me.REG[0];
11504 }
11505 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
11506 struct {struct stack_frame_t me;} fra;
11507 val_t tmp;
11508 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11509 fra.me.file = LOCATE_syntax___typing;
11510 fra.me.line = 1874;
11511 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
11512 fra.me.has_broke = 0;
11513 fra.me.REG_size = 1;
11514 fra.me.REG[0] = NIT_NULL;
11515 fra.me.REG[0] = p0;
11516 /* ./syntax//typing.nit:1874 */
11517 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11518 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11519 goto label1;
11520 label1: while(0);
11521 stack_frame_head = fra.me.prev;
11522 return fra.me.REG[0];
11523 }
11524 val_t syntax___typing___ABraExpr___name(val_t p0){
11525 struct {struct stack_frame_t me;} fra;
11526 val_t REGB0;
11527 val_t tmp;
11528 static val_t once_value_1; /* Once value */
11529 static val_t once_value_2; /* Once value */
11530 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11531 fra.me.file = LOCATE_syntax___typing;
11532 fra.me.line = 1878;
11533 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
11534 fra.me.has_broke = 0;
11535 fra.me.REG_size = 1;
11536 fra.me.REG[0] = NIT_NULL;
11537 fra.me.REG[0] = p0;
11538 /* ./syntax//typing.nit:1878 */
11539 if (!once_value_1) {
11540 if (!once_value_2) {
11541 fra.me.REG[0] = BOX_NativeString("[]");
11542 REGB0 = TAG_Int(2);
11543 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11544 once_value_2 = fra.me.REG[0];
11545 register_static_object(&once_value_2);
11546 } else fra.me.REG[0] = once_value_2;
11547 fra.me.REG[0] = fra.me.REG[0];
11548 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11549 once_value_1 = fra.me.REG[0];
11550 register_static_object(&once_value_1);
11551 } else fra.me.REG[0] = once_value_1;
11552 fra.me.REG[0] = fra.me.REG[0];
11553 goto label3;
11554 label3: while(0);
11555 stack_frame_head = fra.me.prev;
11556 return fra.me.REG[0];
11557 }
11558 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
11559 struct {struct stack_frame_t me;} fra;
11560 val_t tmp;
11561 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11562 fra.me.file = LOCATE_syntax___typing;
11563 fra.me.line = 1879;
11564 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
11565 fra.me.has_broke = 0;
11566 fra.me.REG_size = 1;
11567 fra.me.REG[0] = NIT_NULL;
11568 fra.me.REG[0] = p0;
11569 /* ./syntax//typing.nit:1879 */
11570 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11571 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11572 goto label1;
11573 label1: while(0);
11574 stack_frame_head = fra.me.prev;
11575 return fra.me.REG[0];
11576 }
11577 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
11578 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11579 val_t REGB0;
11580 val_t tmp;
11581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11582 fra.me.file = LOCATE_syntax___typing;
11583 fra.me.line = 1880;
11584 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
11585 fra.me.has_broke = 0;
11586 fra.me.REG_size = 2;
11587 fra.me.REG[0] = NIT_NULL;
11588 fra.me.REG[1] = NIT_NULL;
11589 fra.me.REG[0] = p0;
11590 /* ./syntax//typing.nit:1882 */
11591 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11592 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11593 if (UNTAG_Bool(REGB0)) {
11594 /* ./syntax//typing.nit:1883 */
11595 fra.me.REG[1] = NIT_NULL;
11596 goto label1;
11597 } else {
11598 /* ./syntax//typing.nit:1885 */
11599 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11600 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11601 fra.me.REG[1] = fra.me.REG[0];
11602 goto label1;
11603 }
11604 label1: while(0);
11605 stack_frame_head = fra.me.prev;
11606 return fra.me.REG[1];
11607 }
11608 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
11609 struct {struct stack_frame_t me;} fra;
11610 val_t REGB0;
11611 val_t tmp;
11612 static val_t once_value_1; /* Once value */
11613 static val_t once_value_2; /* Once value */
11614 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11615 fra.me.file = LOCATE_syntax___typing;
11616 fra.me.line = 1891;
11617 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
11618 fra.me.has_broke = 0;
11619 fra.me.REG_size = 1;
11620 fra.me.REG[0] = NIT_NULL;
11621 fra.me.REG[0] = p0;
11622 /* ./syntax//typing.nit:1891 */
11623 if (!once_value_1) {
11624 if (!once_value_2) {
11625 fra.me.REG[0] = BOX_NativeString("[]=");
11626 REGB0 = TAG_Int(3);
11627 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11628 once_value_2 = fra.me.REG[0];
11629 register_static_object(&once_value_2);
11630 } else fra.me.REG[0] = once_value_2;
11631 fra.me.REG[0] = fra.me.REG[0];
11632 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11633 once_value_1 = fra.me.REG[0];
11634 register_static_object(&once_value_1);
11635 } else fra.me.REG[0] = once_value_1;
11636 fra.me.REG[0] = fra.me.REG[0];
11637 goto label3;
11638 label3: while(0);
11639 stack_frame_head = fra.me.prev;
11640 return fra.me.REG[0];
11641 }
11642 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
11643 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11644 val_t tmp;
11645 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11646 fra.me.file = LOCATE_syntax___typing;
11647 fra.me.line = 1892;
11648 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
11649 fra.me.has_broke = 0;
11650 fra.me.REG_size = 2;
11651 fra.me.REG[0] = NIT_NULL;
11652 fra.me.REG[1] = NIT_NULL;
11653 fra.me.REG[0] = p0;
11654 /* ./syntax//typing.nit:1893 */
11655 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11656 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11657 /* ./syntax//typing.nit:1894 */
11658 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11659 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11660 /* ./syntax//typing.nit:1895 */
11661 goto label1;
11662 label1: while(0);
11663 stack_frame_head = fra.me.prev;
11664 return fra.me.REG[1];
11665 }
11666 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
11667 struct {struct stack_frame_t me;} fra;
11668 val_t REGB0;
11669 val_t tmp;
11670 static val_t once_value_1; /* Once value */
11671 static val_t once_value_2; /* Once value */
11672 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11673 fra.me.file = LOCATE_syntax___typing;
11674 fra.me.line = 1900;
11675 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
11676 fra.me.has_broke = 0;
11677 fra.me.REG_size = 1;
11678 fra.me.REG[0] = NIT_NULL;
11679 fra.me.REG[0] = p0;
11680 /* ./syntax//typing.nit:1900 */
11681 if (!once_value_1) {
11682 if (!once_value_2) {
11683 fra.me.REG[0] = BOX_NativeString("[]");
11684 REGB0 = TAG_Int(2);
11685 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11686 once_value_2 = fra.me.REG[0];
11687 register_static_object(&once_value_2);
11688 } else fra.me.REG[0] = once_value_2;
11689 fra.me.REG[0] = fra.me.REG[0];
11690 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11691 once_value_1 = fra.me.REG[0];
11692 register_static_object(&once_value_1);
11693 } else fra.me.REG[0] = once_value_1;
11694 fra.me.REG[0] = fra.me.REG[0];
11695 goto label3;
11696 label3: while(0);
11697 stack_frame_head = fra.me.prev;
11698 return fra.me.REG[0];
11699 }
11700 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
11701 struct {struct stack_frame_t me;} fra;
11702 val_t tmp;
11703 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11704 fra.me.file = LOCATE_syntax___typing;
11705 fra.me.line = 1901;
11706 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
11707 fra.me.has_broke = 0;
11708 fra.me.REG_size = 1;
11709 fra.me.REG[0] = NIT_NULL;
11710 fra.me.REG[0] = p0;
11711 /* ./syntax//typing.nit:1901 */
11712 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11713 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11714 goto label1;
11715 label1: while(0);
11716 stack_frame_head = fra.me.prev;
11717 return fra.me.REG[0];
11718 }
11719 val_t syntax___typing___AInitExpr___name(val_t p0){
11720 struct {struct stack_frame_t me;} fra;
11721 val_t REGB0;
11722 val_t tmp;
11723 static val_t once_value_1; /* Once value */
11724 static val_t once_value_2; /* Once value */
11725 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11726 fra.me.file = LOCATE_syntax___typing;
11727 fra.me.line = 1905;
11728 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
11729 fra.me.has_broke = 0;
11730 fra.me.REG_size = 1;
11731 fra.me.REG[0] = NIT_NULL;
11732 fra.me.REG[0] = p0;
11733 /* ./syntax//typing.nit:1905 */
11734 if (!once_value_1) {
11735 if (!once_value_2) {
11736 fra.me.REG[0] = BOX_NativeString("init");
11737 REGB0 = TAG_Int(4);
11738 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11739 once_value_2 = fra.me.REG[0];
11740 register_static_object(&once_value_2);
11741 } else fra.me.REG[0] = once_value_2;
11742 fra.me.REG[0] = fra.me.REG[0];
11743 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11744 once_value_1 = fra.me.REG[0];
11745 register_static_object(&once_value_1);
11746 } else fra.me.REG[0] = once_value_1;
11747 fra.me.REG[0] = fra.me.REG[0];
11748 goto label3;
11749 label3: while(0);
11750 stack_frame_head = fra.me.prev;
11751 return fra.me.REG[0];
11752 }
11753 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
11754 struct {struct stack_frame_t me;} fra;
11755 val_t tmp;
11756 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11757 fra.me.file = LOCATE_syntax___typing;
11758 fra.me.line = 1906;
11759 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
11760 fra.me.has_broke = 0;
11761 fra.me.REG_size = 1;
11762 fra.me.REG[0] = NIT_NULL;
11763 fra.me.REG[0] = p0;
11764 /* ./syntax//typing.nit:1906 */
11765 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11766 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11767 goto label1;
11768 label1: while(0);
11769 stack_frame_head = fra.me.prev;
11770 return fra.me.REG[0];
11771 }
11772 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
11773 struct {struct stack_frame_t me;} fra;
11774 val_t REGB0;
11775 val_t tmp;
11776 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11777 fra.me.file = LOCATE_syntax___typing;
11778 fra.me.line = 1911;
11779 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
11780 fra.me.has_broke = 0;
11781 fra.me.REG_size = 1;
11782 fra.me.REG[0] = NIT_NULL;
11783 fra.me.REG[0] = p0;
11784 /* ./syntax//typing.nit:1911 */
11785 fra.me.REG[0] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[0]);
11786 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
11787 if (UNTAG_Bool(REGB0)) {
11788 } else {
11789 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1911);
11790 }
11791 goto label1;
11792 label1: while(0);
11793 stack_frame_head = fra.me.prev;
11794 return fra.me.REG[0];
11795 }
11796 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
11797 struct {struct stack_frame_t me;} fra;
11798 val_t tmp;
11799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11800 fra.me.file = LOCATE_syntax___typing;
11801 fra.me.line = 1912;
11802 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
11803 fra.me.has_broke = 0;
11804 fra.me.REG_size = 1;
11805 fra.me.REG[0] = NIT_NULL;
11806 fra.me.REG[0] = p0;
11807 /* ./syntax//typing.nit:1912 */
11808 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11809 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11810 goto label1;
11811 label1: while(0);
11812 stack_frame_head = fra.me.prev;
11813 return fra.me.REG[0];
11814 }
11815 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
11816 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11817 val_t REGB0;
11818 val_t REGB1;
11819 val_t tmp;
11820 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11821 fra.me.file = LOCATE_syntax___typing;
11822 fra.me.line = 1914;
11823 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
11824 fra.me.has_broke = 0;
11825 fra.me.REG_size = 5;
11826 fra.me.REG[0] = NIT_NULL;
11827 fra.me.REG[1] = NIT_NULL;
11828 fra.me.REG[2] = NIT_NULL;
11829 fra.me.REG[3] = NIT_NULL;
11830 fra.me.REG[4] = NIT_NULL;
11831 fra.me.REG[0] = p0;
11832 fra.me.REG[1] = p1;
11833 /* ./syntax//typing.nit:1916 */
11834 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
11835 /* ./syntax//typing.nit:1917 */
11836 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11837 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11838 if (UNTAG_Bool(REGB0)) {
11839 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11840 }
11841 /* ./syntax//typing.nit:1918 */
11842 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11843 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
11844 /* ./syntax//typing.nit:1919 */
11845 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11846 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
11847 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
11848 REGB0 = CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
11849 /* ./syntax//typing.nit:1920 */
11850 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11851 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
11852 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11853 if (UNTAG_Bool(REGB1)) {
11854 /* ./syntax//typing.nit:1921 */
11855 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11856 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11857 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11858 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
11859 CALL_syntax___typing___AAbsAbsSendExpr___process_closures(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[3]);
11860 }
11861 /* ./syntax//typing.nit:1923 */
11862 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11863 if (UNTAG_Bool(REGB0)) {
11864 goto label1;
11865 }
11866 /* ./syntax//typing.nit:1924 */
11867 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
11868 /* ./syntax//typing.nit:1925 */
11869 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
11870 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
11871 /* ./syntax//typing.nit:1926 */
11872 REGB0 = TAG_Bool(true);
11873 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11874 label1: while(0);
11875 stack_frame_head = fra.me.prev;
11876 return;
11877 }
11878 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
11879 struct {struct stack_frame_t me;} fra;
11880 val_t tmp;
11881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11882 fra.me.file = LOCATE_syntax___typing;
11883 fra.me.line = 1931;
11884 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
11885 fra.me.has_broke = 0;
11886 fra.me.REG_size = 0;
11887 /* ./syntax//typing.nit:1931 */
11888 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1931);
11889 stack_frame_head = fra.me.prev;
11890 return NIT_NULL;
11891 }
11892 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
11893 struct {struct stack_frame_t me;} fra;
11894 val_t tmp;
11895 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11896 fra.me.file = LOCATE_syntax___typing;
11897 fra.me.line = 1934;
11898 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
11899 fra.me.has_broke = 0;
11900 fra.me.REG_size = 1;
11901 fra.me.REG[0] = NIT_NULL;
11902 fra.me.REG[0] = p0;
11903 /* ./syntax//typing.nit:1934 */
11904 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
11905 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11906 goto label1;
11907 label1: while(0);
11908 stack_frame_head = fra.me.prev;
11909 return fra.me.REG[0];
11910 }
11911 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
11912 struct {struct stack_frame_t me;} fra;
11913 val_t tmp;
11914 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11915 fra.me.file = LOCATE_syntax___typing;
11916 fra.me.line = 1937;
11917 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
11918 fra.me.has_broke = 0;
11919 fra.me.REG_size = 1;
11920 fra.me.REG[0] = NIT_NULL;
11921 fra.me.REG[0] = p0;
11922 /* ./syntax//typing.nit:1937 */
11923 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
11924 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11925 goto label1;
11926 label1: while(0);
11927 stack_frame_head = fra.me.prev;
11928 return fra.me.REG[0];
11929 }
11930 val_t syntax___typing___AClosureDef___closure(val_t p0){
11931 struct {struct stack_frame_t me;} fra;
11932 val_t REGB0;
11933 val_t tmp;
11934 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11935 fra.me.file = LOCATE_syntax___typing;
11936 fra.me.line = 1942;
11937 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
11938 fra.me.has_broke = 0;
11939 fra.me.REG_size = 1;
11940 fra.me.REG[0] = NIT_NULL;
11941 fra.me.REG[0] = p0;
11942 /* ./syntax//typing.nit:1942 */
11943 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]);
11944 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
11945 if (UNTAG_Bool(REGB0)) {
11946 } else {
11947 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1942);
11948 }
11949 goto label1;
11950 label1: while(0);
11951 stack_frame_head = fra.me.prev;
11952 return fra.me.REG[0];
11953 }
11954 val_t syntax___typing___AClosureDef___escapable(val_t p0){
11955 struct {struct stack_frame_t me;} fra;
11956 val_t tmp;
11957 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11958 fra.me.file = LOCATE_syntax___typing;
11959 fra.me.line = 1944;
11960 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
11961 fra.me.has_broke = 0;
11962 fra.me.REG_size = 1;
11963 fra.me.REG[0] = NIT_NULL;
11964 fra.me.REG[0] = p0;
11965 /* ./syntax//typing.nit:1944 */
11966 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
11967 stack_frame_head = fra.me.prev;
11968 return fra.me.REG[0];
11969 }
11970 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
11971 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11972 val_t REGB0;
11973 val_t tmp;
11974 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11975 fra.me.file = LOCATE_syntax___typing;
11976 fra.me.line = 1948;
11977 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
11978 fra.me.has_broke = 0;
11979 fra.me.REG_size = 3;
11980 fra.me.REG[0] = NIT_NULL;
11981 fra.me.REG[1] = NIT_NULL;
11982 fra.me.REG[2] = NIT_NULL;
11983 fra.me.REG[0] = p0;
11984 fra.me.REG[1] = p1;
11985 /* ./syntax//typing.nit:1948 */
11986 fra.me.REG[2] = fra.me.REG[0];
11987 /* ./syntax//typing.nit:1951 */
11988 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
11989 if (UNTAG_Bool(REGB0)) {
11990 } else {
11991 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1951);
11992 }
11993 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
11994 if (UNTAG_Bool(REGB0)) {
11995 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11996 }
11997 stack_frame_head = fra.me.prev;
11998 return;
11999 }
12000 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12001 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12002 val_t REGB0;
12003 val_t REGB1;
12004 val_t REGB2;
12005 val_t REGB3;
12006 val_t tmp;
12007 static val_t once_value_1; /* Once value */
12008 static val_t once_value_2; /* Once value */
12009 static val_t once_value_3; /* Once value */
12010 static val_t once_value_6; /* Once value */
12011 static val_t once_value_7; /* Once value */
12012 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12013 fra.me.file = LOCATE_syntax___typing;
12014 fra.me.line = 1954;
12015 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12016 fra.me.has_broke = 0;
12017 fra.me.REG_size = 8;
12018 fra.me.REG[0] = NIT_NULL;
12019 fra.me.REG[1] = NIT_NULL;
12020 fra.me.REG[2] = NIT_NULL;
12021 fra.me.REG[3] = NIT_NULL;
12022 fra.me.REG[4] = NIT_NULL;
12023 fra.me.REG[5] = NIT_NULL;
12024 fra.me.REG[6] = NIT_NULL;
12025 fra.me.REG[7] = NIT_NULL;
12026 fra.me.REG[0] = p0;
12027 fra.me.REG[1] = p1;
12028 fra.me.REG[2] = p2;
12029 /* ./syntax//typing.nit:1956 */
12030 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12031 /* ./syntax//typing.nit:1958 */
12032 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12033 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12034 /* ./syntax//typing.nit:1959 */
12035 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12036 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12037 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12038 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12039 if (UNTAG_Bool(REGB2)) {
12040 } else {
12041 /* ./../lib/standard//kernel.nit:210 */
12042 REGB1 = TAG_Bool((REGB0)==(REGB1));
12043 /* ./syntax//typing.nit:1959 */
12044 REGB2 = REGB1;
12045 }
12046 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12047 if (UNTAG_Bool(REGB2)) {
12048 /* ./syntax//typing.nit:1960 */
12049 REGB2 = TAG_Int(5);
12050 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12051 if (!once_value_1) {
12052 fra.me.REG[5] = BOX_NativeString("Error: ");
12053 REGB2 = TAG_Int(7);
12054 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12055 once_value_1 = fra.me.REG[5];
12056 register_static_object(&once_value_1);
12057 } else fra.me.REG[5] = once_value_1;
12058 fra.me.REG[5] = fra.me.REG[5];
12059 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12060 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12061 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12062 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12063 if (!once_value_2) {
12064 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12065 REGB2 = TAG_Int(36);
12066 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12067 once_value_2 = fra.me.REG[5];
12068 register_static_object(&once_value_2);
12069 } else fra.me.REG[5] = once_value_2;
12070 fra.me.REG[5] = fra.me.REG[5];
12071 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12072 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12073 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
12074 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12075 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12076 if (!once_value_3) {
12077 fra.me.REG[5] = BOX_NativeString(" found.");
12078 REGB2 = TAG_Int(7);
12079 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12080 once_value_3 = fra.me.REG[5];
12081 register_static_object(&once_value_3);
12082 } else fra.me.REG[5] = once_value_3;
12083 fra.me.REG[5] = fra.me.REG[5];
12084 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12085 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12086 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12087 /* ./syntax//typing.nit:1961 */
12088 goto label4;
12089 }
12090 /* ./syntax//typing.nit:1964 */
12091 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12092 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
12093 /* ./syntax//typing.nit:1966 */
12094 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12095 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
12096 /* ./syntax//typing.nit:1967 */
12097 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12098 /* ./syntax//typing.nit:1968 */
12099 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12100 /* ./syntax//typing.nit:1969 */
12101 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12102 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
12103 /* ./syntax//typing.nit:1970 */
12104 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
12105 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
12106 /* ./syntax//typing.nit:1971 */
12107 REGB2 = TAG_Int(0);
12108 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12109 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
12110 /* ./../lib/standard//kernel.nit:335 */
12111 while(1) {
12112 /* ./../lib/standard//kernel.nit:215 */
12113 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
12114 /* ./../lib/standard//kernel.nit:335 */
12115 if (UNTAG_Bool(REGB0)) {
12116 /* ./syntax//typing.nit:1971 */
12117 REGB0 = REGB2;
12118 /* ./syntax//typing.nit:1972 */
12119 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12120 fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
12121 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12122 if (UNTAG_Bool(REGB3)) {
12123 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1972);
12124 }
12125 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
12126 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12127 fra.me.REG[7] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
12128 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
12129 /* ./syntax//typing.nit:1973 */
12130 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
12131 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12132 if (UNTAG_Bool(REGB3)) {
12133 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1973);
12134 }
12135 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12136 /* ./syntax//typing.nit:1974 */
12137 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
12138 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12139 /* ./syntax//typing.nit:1975 */
12140 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12141 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12142 /* ./../lib/standard//kernel.nit:337 */
12143 REGB0 = TAG_Int(1);
12144 /* ./../lib/standard//kernel.nit:218 */
12145 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
12146 /* ./../lib/standard//kernel.nit:337 */
12147 REGB2 = REGB0;
12148 } else {
12149 /* ./../lib/standard//kernel.nit:335 */
12150 goto label5;
12151 }
12152 }
12153 label5: while(0);
12154 /* ./syntax//typing.nit:1978 */
12155 REGB2 = TAG_Bool(true);
12156 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
12157 /* ./syntax//typing.nit:1979 */
12158 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12159 /* ./syntax//typing.nit:1981 */
12160 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12161 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
12162 REGB1 = TAG_Bool(false);
12163 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
12164 if (UNTAG_Bool(REGB0)) {
12165 } else {
12166 /* ./../lib/standard//kernel.nit:178 */
12167 REGB1 = TAG_Bool((REGB2)==(REGB1));
12168 /* ./syntax//typing.nit:1981 */
12169 REGB0 = REGB1;
12170 }
12171 if (UNTAG_Bool(REGB0)) {
12172 /* ./syntax//typing.nit:1982 */
12173 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12174 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12175 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
12176 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12177 if (UNTAG_Bool(REGB0)) {
12178 } else {
12179 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12180 if (UNTAG_Bool(REGB1)) {
12181 REGB1 = TAG_Bool(false);
12182 REGB0 = REGB1;
12183 } else {
12184 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12185 REGB0 = REGB1;
12186 }
12187 }
12188 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12189 if (UNTAG_Bool(REGB0)) {
12190 /* ./syntax//typing.nit:1983 */
12191 if (!once_value_6) {
12192 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
12193 REGB0 = TAG_Int(77);
12194 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12195 once_value_6 = fra.me.REG[3];
12196 register_static_object(&once_value_6);
12197 } else fra.me.REG[3] = once_value_6;
12198 fra.me.REG[3] = fra.me.REG[3];
12199 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12200 } else {
12201 /* ./syntax//typing.nit:1984 */
12202 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12203 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12204 if (UNTAG_Bool(REGB0)) {
12205 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
12206 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12207 if (UNTAG_Bool(REGB0)) {
12208 } else {
12209 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12210 if (UNTAG_Bool(REGB1)) {
12211 REGB1 = TAG_Bool(false);
12212 REGB0 = REGB1;
12213 } else {
12214 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
12215 REGB0 = REGB1;
12216 }
12217 }
12218 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12219 } else {
12220 REGB1 = TAG_Bool(false);
12221 REGB0 = REGB1;
12222 }
12223 if (UNTAG_Bool(REGB0)) {
12224 /* ./syntax//typing.nit:1985 */
12225 if (!once_value_7) {
12226 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
12227 REGB0 = TAG_Int(80);
12228 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
12229 once_value_7 = fra.me.REG[2];
12230 register_static_object(&once_value_7);
12231 } else fra.me.REG[2] = once_value_7;
12232 fra.me.REG[2] = fra.me.REG[2];
12233 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
12234 }
12235 }
12236 }
12237 /* ./syntax//typing.nit:1988 */
12238 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
12239 /* ./syntax//typing.nit:1989 */
12240 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
12241 /* ./syntax//typing.nit:1990 */
12242 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12243 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
12244 label4: while(0);
12245 stack_frame_head = fra.me.prev;
12246 return;
12247 }
12248 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
12249 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
12250 val_t REGB0;
12251 val_t REGB1;
12252 val_t tmp;
12253 static val_t once_value_2; /* Once value */
12254 static val_t once_value_3; /* Once value */
12255 static val_t once_value_4; /* Once value */
12256 static val_t once_value_5; /* Once value */
12257 static val_t once_value_6; /* Once value */
12258 static val_t once_value_7; /* Once value */
12259 static val_t once_value_8; /* Once value */
12260 static val_t once_value_9; /* Once value */
12261 static val_t once_value_10; /* Once value */
12262 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12263 fra.me.file = LOCATE_syntax___typing;
12264 fra.me.line = 1996;
12265 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
12266 fra.me.has_broke = 0;
12267 fra.me.REG_size = 6;
12268 fra.me.REG[0] = NIT_NULL;
12269 fra.me.REG[1] = NIT_NULL;
12270 fra.me.REG[2] = NIT_NULL;
12271 fra.me.REG[3] = NIT_NULL;
12272 fra.me.REG[4] = NIT_NULL;
12273 fra.me.REG[5] = NIT_NULL;
12274 fra.me.REG[0] = p0;
12275 fra.me.REG[1] = p1;
12276 fra.me.REG[2] = p2;
12277 fra.me.REG[3] = p3;
12278 /* ./syntax//typing.nit:1998 */
12279 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12280 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12281 if (UNTAG_Bool(REGB0)) {
12282 goto label1;
12283 }
12284 /* ./syntax//typing.nit:1999 */
12285 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12286 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12287 if (UNTAG_Bool(REGB0)) {
12288 goto label1;
12289 }
12290 /* ./syntax//typing.nit:2000 */
12291 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12292 /* ./syntax//typing.nit:2001 */
12293 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12294 /* ./syntax//typing.nit:2002 */
12295 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12296 if (UNTAG_Bool(REGB0)) {
12297 } else {
12298 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12299 REGB0 = REGB1;
12300 }
12301 if (UNTAG_Bool(REGB0)) {
12302 /* ./syntax//typing.nit:2003 */
12303 REGB0 = TAG_Int(3);
12304 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12305 if (!once_value_2) {
12306 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12307 REGB0 = TAG_Int(33);
12308 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12309 once_value_2 = fra.me.REG[5];
12310 register_static_object(&once_value_2);
12311 } else fra.me.REG[5] = once_value_2;
12312 fra.me.REG[5] = fra.me.REG[5];
12313 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12314 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12315 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12316 if (!once_value_3) {
12317 fra.me.REG[5] = BOX_NativeString(".");
12318 REGB0 = TAG_Int(1);
12319 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12320 once_value_3 = fra.me.REG[5];
12321 register_static_object(&once_value_3);
12322 } else fra.me.REG[5] = once_value_3;
12323 fra.me.REG[5] = fra.me.REG[5];
12324 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12325 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12326 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12327 } else {
12328 /* ./syntax//typing.nit:2004 */
12329 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12330 if (UNTAG_Bool(REGB0)) {
12331 /* ./syntax//typing.nit:2005 */
12332 REGB0 = TAG_Int(5);
12333 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12334 if (!once_value_4) {
12335 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12336 REGB0 = TAG_Int(33);
12337 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12338 once_value_4 = fra.me.REG[5];
12339 register_static_object(&once_value_4);
12340 } else fra.me.REG[5] = once_value_4;
12341 fra.me.REG[5] = fra.me.REG[5];
12342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12343 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12345 if (!once_value_5) {
12346 fra.me.REG[5] = BOX_NativeString(" since it is a ");
12347 REGB0 = TAG_Int(15);
12348 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12349 once_value_5 = fra.me.REG[5];
12350 register_static_object(&once_value_5);
12351 } else fra.me.REG[5] = once_value_5;
12352 fra.me.REG[5] = fra.me.REG[5];
12353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12354 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
12355 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12356 if (!once_value_6) {
12357 fra.me.REG[5] = BOX_NativeString(".");
12358 REGB0 = TAG_Int(1);
12359 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12360 once_value_6 = fra.me.REG[5];
12361 register_static_object(&once_value_6);
12362 } else fra.me.REG[5] = once_value_6;
12363 fra.me.REG[5] = fra.me.REG[5];
12364 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12365 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12366 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12367 } else {
12368 /* ./syntax//typing.nit:2006 */
12369 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12370 if (UNTAG_Bool(REGB0)) {
12371 /* ./syntax//typing.nit:2008 */
12372 REGB0 = TAG_Int(3);
12373 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12374 if (!once_value_7) {
12375 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
12376 REGB0 = TAG_Int(50);
12377 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12378 once_value_7 = fra.me.REG[5];
12379 register_static_object(&once_value_7);
12380 } else fra.me.REG[5] = once_value_7;
12381 fra.me.REG[5] = fra.me.REG[5];
12382 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12383 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12385 if (!once_value_8) {
12386 fra.me.REG[5] = BOX_NativeString(".");
12387 REGB0 = TAG_Int(1);
12388 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12389 once_value_8 = fra.me.REG[5];
12390 register_static_object(&once_value_8);
12391 } else fra.me.REG[5] = once_value_8;
12392 fra.me.REG[5] = fra.me.REG[5];
12393 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12394 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12395 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12396 } else {
12397 /* ./syntax//typing.nit:2009 */
12398 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12399 if (UNTAG_Bool(REGB0)) {
12400 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
12401 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12402 if (UNTAG_Bool(REGB0)) {
12403 } else {
12404 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12405 REGB0 = REGB1;
12406 }
12407 } else {
12408 REGB1 = TAG_Bool(false);
12409 REGB0 = REGB1;
12410 }
12411 if (UNTAG_Bool(REGB0)) {
12412 /* ./syntax//typing.nit:2010 */
12413 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
12414 if (UNTAG_Bool(REGB0)) {
12415 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
12416 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
12417 } else {
12418 REGB1 = TAG_Bool(false);
12419 REGB0 = REGB1;
12420 }
12421 if (UNTAG_Bool(REGB0)) {
12422 } else {
12423 /* ./syntax//typing.nit:2016 */
12424 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
12425 if (UNTAG_Bool(REGB0)) {
12426 /* ./syntax//typing.nit:2017 */
12427 if (!once_value_9) {
12428 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
12429 REGB0 = TAG_Int(26);
12430 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12431 once_value_9 = fra.me.REG[3];
12432 register_static_object(&once_value_9);
12433 } else fra.me.REG[3] = once_value_9;
12434 fra.me.REG[3] = fra.me.REG[3];
12435 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12436 } else {
12437 /* ./syntax//typing.nit:2019 */
12438 if (!once_value_10) {
12439 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
12440 REGB0 = TAG_Int(32);
12441 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12442 once_value_10 = fra.me.REG[3];
12443 register_static_object(&once_value_10);
12444 } else fra.me.REG[3] = once_value_10;
12445 fra.me.REG[3] = fra.me.REG[3];
12446 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12447 }
12448 }
12449 }
12450 }
12451 }
12452 }
12453 label1: while(0);
12454 stack_frame_head = fra.me.prev;
12455 return;
12456 }
12457 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
12458 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12459 val_t REGB0;
12460 val_t REGB1;
12461 val_t tmp;
12462 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12463 fra.me.file = LOCATE_syntax___typing;
12464 fra.me.line = 2027;
12465 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
12466 fra.me.has_broke = 0;
12467 fra.me.REG_size = 5;
12468 fra.me.REG[0] = NIT_NULL;
12469 fra.me.REG[1] = NIT_NULL;
12470 fra.me.REG[2] = NIT_NULL;
12471 fra.me.REG[3] = NIT_NULL;
12472 fra.me.REG[4] = NIT_NULL;
12473 fra.me.REG[0] = p0;
12474 fra.me.REG[1] = p1;
12475 /* ./syntax//typing.nit:2029 */
12476 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12477 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12478 CALL_syntax___typing___ATypeCheckExpr___check_expr_cast(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
12479 /* ./syntax//typing.nit:2030 */
12480 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12481 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12482 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12483 if (UNTAG_Bool(REGB0)) {
12484 goto label1;
12485 }
12486 /* ./syntax//typing.nit:2031 */
12487 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12488 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
12489 /* ./syntax//typing.nit:2032 */
12490 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12491 if (UNTAG_Bool(REGB0)) {
12492 } else {
12493 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12494 if (UNTAG_Bool(REGB1)) {
12495 REGB1 = TAG_Bool(false);
12496 REGB0 = REGB1;
12497 } else {
12498 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12499 REGB0 = REGB1;
12500 }
12501 }
12502 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12503 if (UNTAG_Bool(REGB0)) {
12504 /* ./syntax//typing.nit:2033 */
12505 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12506 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12507 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
12508 fra.me.REG[4] = CALL_syntax___flow___FlowContext___sub_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3], fra.me.REG[4]);
12509 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
12510 }
12511 /* ./syntax//typing.nit:2035 */
12512 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
12513 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12514 /* ./syntax//typing.nit:2036 */
12515 REGB0 = TAG_Bool(true);
12516 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12517 label1: while(0);
12518 stack_frame_head = fra.me.prev;
12519 return;
12520 }
12521 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
12522 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
12523 val_t REGB0;
12524 val_t REGB1;
12525 val_t tmp;
12526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12527 fra.me.file = LOCATE_syntax___typing;
12528 fra.me.line = 2042;
12529 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
12530 fra.me.has_broke = 0;
12531 fra.me.REG_size = 4;
12532 fra.me.REG[0] = NIT_NULL;
12533 fra.me.REG[1] = NIT_NULL;
12534 fra.me.REG[2] = NIT_NULL;
12535 fra.me.REG[3] = NIT_NULL;
12536 fra.me.REG[0] = p0;
12537 fra.me.REG[1] = p1;
12538 /* ./syntax//typing.nit:2044 */
12539 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12540 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12541 CALL_syntax___typing___ATypeCheckExpr___check_expr_cast(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
12542 /* ./syntax//typing.nit:2045 */
12543 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12544 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12545 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12546 if (UNTAG_Bool(REGB0)) {
12547 goto label1;
12548 }
12549 /* ./syntax//typing.nit:2046 */
12550 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12551 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12552 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
12553 /* ./syntax//typing.nit:2047 */
12554 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
12555 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12556 if (UNTAG_Bool(REGB0)) {
12557 } else {
12558 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12559 if (UNTAG_Bool(REGB1)) {
12560 REGB1 = TAG_Bool(false);
12561 REGB0 = REGB1;
12562 } else {
12563 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12564 REGB0 = REGB1;
12565 }
12566 }
12567 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12568 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12569 label1: while(0);
12570 stack_frame_head = fra.me.prev;
12571 return;
12572 }
12573 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
12574 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12575 val_t REGB0;
12576 val_t tmp;
12577 static val_t once_value_2; /* Once value */
12578 static val_t once_value_3; /* Once value */
12579 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12580 fra.me.file = LOCATE_syntax___typing;
12581 fra.me.line = 2052;
12582 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
12583 fra.me.has_broke = 0;
12584 fra.me.REG_size = 5;
12585 fra.me.REG[0] = NIT_NULL;
12586 fra.me.REG[1] = NIT_NULL;
12587 fra.me.REG[2] = NIT_NULL;
12588 fra.me.REG[3] = NIT_NULL;
12589 fra.me.REG[4] = NIT_NULL;
12590 fra.me.REG[0] = p0;
12591 fra.me.REG[1] = p1;
12592 /* ./syntax//typing.nit:2054 */
12593 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12594 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12595 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12596 if (UNTAG_Bool(REGB0)) {
12597 goto label1;
12598 }
12599 /* ./syntax//typing.nit:2055 */
12600 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12601 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12602 /* ./syntax//typing.nit:2056 */
12603 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12604 if (UNTAG_Bool(REGB0)) {
12605 /* ./syntax//typing.nit:2057 */
12606 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12607 if (!once_value_2) {
12608 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
12609 REGB0 = TAG_Int(43);
12610 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12611 once_value_2 = fra.me.REG[4];
12612 register_static_object(&once_value_2);
12613 } else fra.me.REG[4] = once_value_2;
12614 fra.me.REG[4] = fra.me.REG[4];
12615 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
12616 /* ./syntax//typing.nit:2058 */
12617 goto label1;
12618 } else {
12619 /* ./syntax//typing.nit:2059 */
12620 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12621 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12622 if (UNTAG_Bool(REGB0)) {
12623 /* ./syntax//typing.nit:2060 */
12624 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12625 if (!once_value_3) {
12626 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
12627 REGB0 = TAG_Int(45);
12628 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12629 once_value_3 = fra.me.REG[4];
12630 register_static_object(&once_value_3);
12631 } else fra.me.REG[4] = once_value_3;
12632 fra.me.REG[4] = fra.me.REG[4];
12633 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
12634 }
12635 }
12636 /* ./syntax//typing.nit:2062 */
12637 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12638 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
12639 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
12640 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
12641 /* ./syntax//typing.nit:2063 */
12642 REGB0 = TAG_Bool(true);
12643 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12644 label1: while(0);
12645 stack_frame_head = fra.me.prev;
12646 return;
12647 }
12648 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
12649 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12650 val_t REGB0;
12651 val_t tmp;
12652 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12653 fra.me.file = LOCATE_syntax___typing;
12654 fra.me.line = 2068;
12655 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
12656 fra.me.has_broke = 0;
12657 fra.me.REG_size = 2;
12658 fra.me.REG[0] = NIT_NULL;
12659 fra.me.REG[1] = NIT_NULL;
12660 fra.me.REG[0] = p0;
12661 fra.me.REG[1] = p1;
12662 /* ./syntax//typing.nit:2070 */
12663 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12664 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
12665 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12666 if (UNTAG_Bool(REGB0)) {
12667 goto label1;
12668 }
12669 /* ./syntax//typing.nit:2071 */
12670 REGB0 = TAG_Bool(true);
12671 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12672 /* ./syntax//typing.nit:2072 */
12673 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12674 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
12675 if (UNTAG_Bool(REGB0)) {
12676 goto label1;
12677 }
12678 /* ./syntax//typing.nit:2073 */
12679 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12680 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
12681 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12682 label1: while(0);
12683 stack_frame_head = fra.me.prev;
12684 return;
12685 }
12686 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
12687 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12688 val_t REGB0;
12689 val_t REGB1;
12690 val_t tmp;
12691 static val_t once_value_1; /* Once value */
12692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12693 fra.me.file = LOCATE_syntax___typing;
12694 fra.me.line = 2078;
12695 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
12696 fra.me.has_broke = 0;
12697 fra.me.REG_size = 5;
12698 fra.me.REG[0] = NIT_NULL;
12699 fra.me.REG[1] = NIT_NULL;
12700 fra.me.REG[2] = NIT_NULL;
12701 fra.me.REG[3] = NIT_NULL;
12702 fra.me.REG[4] = NIT_NULL;
12703 fra.me.REG[0] = p0;
12704 fra.me.REG[1] = p1;
12705 /* ./syntax//typing.nit:2078 */
12706 fra.me.REG[2] = fra.me.REG[0];
12707 fra.me.REG[3] = fra.me.REG[1];
12708 /* ./syntax//typing.nit:2080 */
12709 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12710 REGB1 = TAG_Int(0);
12711 /* ./../lib/standard//kernel.nit:217 */
12712 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
12713 /* ./syntax//typing.nit:2080 */
12714 if (UNTAG_Bool(REGB1)) {
12715 /* ./syntax//typing.nit:2081 */
12716 if (!once_value_1) {
12717 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
12718 REGB1 = TAG_Int(34);
12719 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
12720 once_value_1 = fra.me.REG[4];
12721 register_static_object(&once_value_1);
12722 } else fra.me.REG[4] = once_value_1;
12723 fra.me.REG[4] = fra.me.REG[4];
12724 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
12725 }
12726 /* ./syntax//typing.nit:2083 */
12727 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12728 REGB0 = TAG_Int(1);
12729 /* ./../lib/standard//kernel.nit:218 */
12730 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
12731 /* ./syntax//typing.nit:2083 */
12732 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
12733 /* ./syntax//typing.nit:2085 */
12734 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12735 /* ./syntax//typing.nit:2087 */
12736 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12737 REGB1 = TAG_Int(1);
12738 /* ./../lib/standard//kernel.nit:220 */
12739 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
12740 /* ./syntax//typing.nit:2087 */
12741 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
12742 stack_frame_head = fra.me.prev;
12743 return;
12744 }