c_src: update
[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; val_t MORE_REG[1];} 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 = 2;
95 fra.me.REG[0] = NIT_NULL;
96 fra.me.REG[1] = NIT_NULL;
97 fra.me.REG[0] = p0;
98 /* ./syntax//typing.nit:49 */
99 fra.me.REG[1] = fra.me.REG[0];
100 /* ./syntax//typing.nit:50 */
101 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
102 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
103 if (UNTAG_Bool(REGB0)) {
104 } else {
105 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
106 }
107 goto label1;
108 label1: while(0);
109 stack_frame_head = fra.me.prev;
110 return fra.me.REG[1];
111 }
112 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
113 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
114 val_t tmp;
115 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
116 fra.me.file = LOCATE_syntax___typing;
117 fra.me.line = 51;
118 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
119 fra.me.has_broke = 0;
120 fra.me.REG_size = 2;
121 fra.me.REG[0] = NIT_NULL;
122 fra.me.REG[1] = NIT_NULL;
123 fra.me.REG[0] = p0;
124 fra.me.REG[1] = p1;
125 /* ./syntax//typing.nit:51 */
126 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
127 stack_frame_head = fra.me.prev;
128 return;
129 }
130 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
131 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
132 val_t REGB0;
133 val_t tmp;
134 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
135 fra.me.file = LOCATE_syntax___typing;
136 fra.me.line = 53;
137 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
138 fra.me.has_broke = 0;
139 fra.me.REG_size = 3;
140 fra.me.REG[0] = NIT_NULL;
141 fra.me.REG[1] = NIT_NULL;
142 fra.me.REG[2] = NIT_NULL;
143 fra.me.REG[0] = p0;
144 fra.me.REG[1] = p1;
145 /* ./syntax//typing.nit:56 */
146 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
147 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
148 if (UNTAG_Bool(REGB0)) {
149 goto label1;
150 }
151 /* ./syntax//typing.nit:57 */
152 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
153 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
154 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
155 label1: while(0);
156 stack_frame_head = fra.me.prev;
157 return;
158 }
159 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
160 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
161 val_t tmp;
162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
163 fra.me.file = LOCATE_syntax___typing;
164 fra.me.line = 60;
165 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
166 fra.me.has_broke = 0;
167 fra.me.REG_size = 3;
168 fra.me.REG[0] = NIT_NULL;
169 fra.me.REG[1] = NIT_NULL;
170 fra.me.REG[2] = NIT_NULL;
171 fra.me.REG[0] = p0;
172 fra.me.REG[1] = p1;
173 /* ./syntax//typing.nit:63 */
174 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
175 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
176 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
177 stack_frame_head = fra.me.prev;
178 return;
179 }
180 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
181 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
182 val_t REGB0;
183 val_t REGB1;
184 val_t tmp;
185 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
186 fra.me.file = LOCATE_syntax___typing;
187 fra.me.line = 66;
188 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
189 fra.me.has_broke = 0;
190 fra.me.REG_size = 3;
191 fra.me.REG[0] = NIT_NULL;
192 fra.me.REG[1] = NIT_NULL;
193 fra.me.REG[2] = NIT_NULL;
194 fra.me.REG[0] = p0;
195 fra.me.REG[1] = p1;
196 /* ./syntax//typing.nit:69 */
197 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
198 if (UNTAG_Bool(REGB0)) {
199 } else {
200 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
201 if (UNTAG_Bool(REGB1)) {
202 REGB1 = TAG_Bool(false);
203 REGB0 = REGB1;
204 } else {
205 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
206 REGB0 = REGB1;
207 }
208 }
209 if (UNTAG_Bool(REGB0)) {
210 goto label1;
211 }
212 /* ./syntax//typing.nit:70 */
213 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
214 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
215 /* ./syntax//typing.nit:71 */
216 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
217 /* ./syntax//typing.nit:72 */
218 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
219 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
220 label1: while(0);
221 stack_frame_head = fra.me.prev;
222 return;
223 }
224 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
225 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
226 val_t REGB0;
227 val_t tmp;
228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
229 fra.me.file = LOCATE_syntax___typing;
230 fra.me.line = 75;
231 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
232 fra.me.has_broke = 0;
233 fra.me.REG_size = 2;
234 fra.me.REG[0] = NIT_NULL;
235 fra.me.REG[1] = NIT_NULL;
236 fra.me.REG[0] = p0;
237 /* ./syntax//typing.nit:75 */
238 fra.me.REG[1] = fra.me.REG[0];
239 /* ./syntax//typing.nit:76 */
240 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
241 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
242 if (UNTAG_Bool(REGB0)) {
243 } else {
244 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
245 }
246 goto label1;
247 label1: while(0);
248 stack_frame_head = fra.me.prev;
249 return fra.me.REG[1];
250 }
251 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
252 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
253 val_t tmp;
254 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
255 fra.me.file = LOCATE_syntax___typing;
256 fra.me.line = 77;
257 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
258 fra.me.has_broke = 0;
259 fra.me.REG_size = 2;
260 fra.me.REG[0] = NIT_NULL;
261 fra.me.REG[1] = NIT_NULL;
262 fra.me.REG[0] = p0;
263 fra.me.REG[1] = p1;
264 /* ./syntax//typing.nit:77 */
265 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
266 stack_frame_head = fra.me.prev;
267 return;
268 }
269 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
270 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
271 val_t REGB0;
272 val_t tmp;
273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
274 fra.me.file = LOCATE_syntax___typing;
275 fra.me.line = 79;
276 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
277 fra.me.has_broke = 0;
278 fra.me.REG_size = 2;
279 fra.me.REG[0] = NIT_NULL;
280 fra.me.REG[1] = NIT_NULL;
281 fra.me.REG[0] = p0;
282 /* ./syntax//typing.nit:79 */
283 fra.me.REG[1] = fra.me.REG[0];
284 /* ./syntax//typing.nit:80 */
285 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
286 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
287 if (UNTAG_Bool(REGB0)) {
288 } else {
289 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
290 }
291 goto label1;
292 label1: while(0);
293 stack_frame_head = fra.me.prev;
294 return fra.me.REG[1];
295 }
296 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
297 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
298 val_t tmp;
299 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
300 fra.me.file = LOCATE_syntax___typing;
301 fra.me.line = 81;
302 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
303 fra.me.has_broke = 0;
304 fra.me.REG_size = 2;
305 fra.me.REG[0] = NIT_NULL;
306 fra.me.REG[1] = NIT_NULL;
307 fra.me.REG[0] = p0;
308 fra.me.REG[1] = p1;
309 /* ./syntax//typing.nit:81 */
310 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
311 stack_frame_head = fra.me.prev;
312 return;
313 }
314 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
315 struct {struct stack_frame_t me;} fra;
316 val_t tmp;
317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
318 fra.me.file = LOCATE_syntax___typing;
319 fra.me.line = 83;
320 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
321 fra.me.has_broke = 0;
322 fra.me.REG_size = 1;
323 fra.me.REG[0] = NIT_NULL;
324 fra.me.REG[0] = p0;
325 /* ./syntax//typing.nit:83 */
326 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
327 stack_frame_head = fra.me.prev;
328 return fra.me.REG[0];
329 }
330 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
331 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
332 val_t tmp;
333 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
334 fra.me.file = LOCATE_syntax___typing;
335 fra.me.line = 83;
336 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
337 fra.me.has_broke = 0;
338 fra.me.REG_size = 2;
339 fra.me.REG[0] = NIT_NULL;
340 fra.me.REG[1] = NIT_NULL;
341 fra.me.REG[0] = p0;
342 fra.me.REG[1] = p1;
343 /* ./syntax//typing.nit:83 */
344 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
345 stack_frame_head = fra.me.prev;
346 return;
347 }
348 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
349 struct {struct stack_frame_t me;} fra;
350 val_t tmp;
351 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
352 fra.me.file = LOCATE_syntax___typing;
353 fra.me.line = 86;
354 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
355 fra.me.has_broke = 0;
356 fra.me.REG_size = 1;
357 fra.me.REG[0] = NIT_NULL;
358 fra.me.REG[0] = p0;
359 /* ./syntax//typing.nit:86 */
360 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
361 stack_frame_head = fra.me.prev;
362 return fra.me.REG[0];
363 }
364 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
365 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
366 val_t tmp;
367 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
368 fra.me.file = LOCATE_syntax___typing;
369 fra.me.line = 86;
370 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
371 fra.me.has_broke = 0;
372 fra.me.REG_size = 2;
373 fra.me.REG[0] = NIT_NULL;
374 fra.me.REG[1] = NIT_NULL;
375 fra.me.REG[0] = p0;
376 fra.me.REG[1] = p1;
377 /* ./syntax//typing.nit:86 */
378 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
379 stack_frame_head = fra.me.prev;
380 return;
381 }
382 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
383 struct {struct stack_frame_t me;} fra;
384 val_t REGB0;
385 val_t tmp;
386 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
387 fra.me.file = LOCATE_syntax___typing;
388 fra.me.line = 89;
389 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
390 fra.me.has_broke = 0;
391 fra.me.REG_size = 1;
392 fra.me.REG[0] = NIT_NULL;
393 fra.me.REG[0] = p0;
394 /* ./syntax//typing.nit:89 */
395 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
396 if (UNTAG_Bool(REGB0)) {
397 } else {
398 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
399 }
400 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
401 stack_frame_head = fra.me.prev;
402 return REGB0;
403 }
404 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
405 struct {struct stack_frame_t me;} fra;
406 val_t REGB0;
407 val_t tmp;
408 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
409 fra.me.file = LOCATE_syntax___typing;
410 fra.me.line = 89;
411 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
412 fra.me.has_broke = 0;
413 fra.me.REG_size = 1;
414 fra.me.REG[0] = NIT_NULL;
415 fra.me.REG[0] = p0;
416 REGB0 = p1;
417 /* ./syntax//typing.nit:89 */
418 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
419 stack_frame_head = fra.me.prev;
420 return;
421 }
422 void syntax___typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
423 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
424 val_t REGB0;
425 val_t REGB1;
426 val_t tmp;
427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
428 fra.me.file = LOCATE_syntax___typing;
429 fra.me.line = 92;
430 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
431 fra.me.has_broke = 0;
432 fra.me.REG_size = 2;
433 fra.me.REG[0] = NIT_NULL;
434 fra.me.REG[1] = NIT_NULL;
435 fra.me.REG[0] = p0;
436 fra.me.REG[1] = p1;
437 /* ./syntax//typing.nit:95 */
438 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
439 /* ./syntax//typing.nit:96 */
440 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
441 if (UNTAG_Bool(REGB0)) {
442 } else {
443 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
444 if (UNTAG_Bool(REGB1)) {
445 REGB1 = TAG_Bool(false);
446 REGB0 = REGB1;
447 } else {
448 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
449 REGB0 = REGB1;
450 }
451 }
452 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
453 if (UNTAG_Bool(REGB0)) {
454 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
455 }
456 stack_frame_head = fra.me.prev;
457 return;
458 }
459 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
460 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
461 val_t REGB0;
462 val_t REGB1;
463 val_t tmp;
464 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
465 fra.me.file = LOCATE_syntax___typing;
466 fra.me.line = 99;
467 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
468 fra.me.has_broke = 0;
469 fra.me.REG_size = 2;
470 fra.me.REG[0] = NIT_NULL;
471 fra.me.REG[1] = NIT_NULL;
472 fra.me.REG[0] = p0;
473 fra.me.REG[1] = p1;
474 /* ./syntax//typing.nit:102 */
475 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
476 /* ./syntax//typing.nit:103 */
477 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
478 if (UNTAG_Bool(REGB0)) {
479 } else {
480 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
481 if (UNTAG_Bool(REGB1)) {
482 REGB1 = TAG_Bool(false);
483 REGB0 = REGB1;
484 } else {
485 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
486 REGB0 = REGB1;
487 }
488 }
489 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
490 if (UNTAG_Bool(REGB0)) {
491 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
492 }
493 stack_frame_head = fra.me.prev;
494 return;
495 }
496 val_t syntax___typing___TypingVisitor___is_default_closure_definition(val_t p0){
497 struct {struct stack_frame_t me;} fra;
498 val_t REGB0;
499 val_t tmp;
500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
501 fra.me.file = LOCATE_syntax___typing;
502 fra.me.line = 106;
503 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition;
504 fra.me.has_broke = 0;
505 fra.me.REG_size = 1;
506 fra.me.REG[0] = NIT_NULL;
507 fra.me.REG[0] = p0;
508 /* ./syntax//typing.nit:106 */
509 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
510 if (UNTAG_Bool(REGB0)) {
511 } else {
512 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_syntax___typing, 106);
513 }
514 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
515 stack_frame_head = fra.me.prev;
516 return REGB0;
517 }
518 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
519 struct {struct stack_frame_t me;} fra;
520 val_t REGB0;
521 val_t tmp;
522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
523 fra.me.file = LOCATE_syntax___typing;
524 fra.me.line = 106;
525 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
526 fra.me.has_broke = 0;
527 fra.me.REG_size = 1;
528 fra.me.REG[0] = NIT_NULL;
529 fra.me.REG[0] = p0;
530 REGB0 = p1;
531 /* ./syntax//typing.nit:106 */
532 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
533 stack_frame_head = fra.me.prev;
534 return;
535 }
536 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
537 struct {struct stack_frame_t me;} fra;
538 val_t REGB0;
539 val_t tmp;
540 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
541 fra.me.file = LOCATE_syntax___typing;
542 fra.me.line = 109;
543 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count;
544 fra.me.has_broke = 0;
545 fra.me.REG_size = 1;
546 fra.me.REG[0] = NIT_NULL;
547 fra.me.REG[0] = p0;
548 /* ./syntax//typing.nit:109 */
549 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
550 if (UNTAG_Bool(REGB0)) {
551 } else {
552 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
553 }
554 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
555 stack_frame_head = fra.me.prev;
556 return REGB0;
557 }
558 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
559 struct {struct stack_frame_t me;} fra;
560 val_t REGB0;
561 val_t tmp;
562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
563 fra.me.file = LOCATE_syntax___typing;
564 fra.me.line = 109;
565 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
566 fra.me.has_broke = 0;
567 fra.me.REG_size = 1;
568 fra.me.REG[0] = NIT_NULL;
569 fra.me.REG[0] = p0;
570 REGB0 = p1;
571 /* ./syntax//typing.nit:109 */
572 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
573 stack_frame_head = fra.me.prev;
574 return;
575 }
576 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
577 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
578 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
579 val_t tmp;
580 if (init_table[itpos0]) return;
581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
582 fra.me.file = LOCATE_syntax___typing;
583 fra.me.line = 112;
584 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
585 fra.me.has_broke = 0;
586 fra.me.REG_size = 3;
587 fra.me.REG[0] = NIT_NULL;
588 fra.me.REG[1] = NIT_NULL;
589 fra.me.REG[2] = NIT_NULL;
590 fra.me.REG[0] = p0;
591 fra.me.REG[1] = p1;
592 fra.me.REG[2] = p2;
593 /* ./syntax//typing.nit:112 */
594 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
595 stack_frame_head = fra.me.prev;
596 init_table[itpos0] = 1;
597 return;
598 }
599 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
600 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
601 val_t REGB0;
602 val_t REGB1;
603 val_t REGB2;
604 val_t tmp;
605 static val_t once_value_6; /* Once value */
606 static val_t once_value_7; /* Once value */
607 static val_t once_value_8; /* Once value */
608 static val_t once_value_10; /* Once value */
609 static val_t once_value_11; /* Once value */
610 static val_t once_value_12; /* Once value */
611 static val_t once_value_13; /* Once value */
612 static val_t once_value_14; /* Once value */
613 static val_t once_value_15; /* Once value */
614 static val_t once_value_16; /* Once value */
615 static val_t once_value_18; /* Once value */
616 static val_t once_value_19; /* Once value */
617 static val_t once_value_20; /* Once value */
618 static val_t once_value_21; /* Once value */
619 static val_t once_value_22; /* Once value */
620 static val_t once_value_23; /* Once value */
621 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
622 fra.me.file = LOCATE_syntax___typing;
623 fra.me.line = 114;
624 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
625 fra.me.has_broke = 0;
626 fra.me.REG_size = 12;
627 fra.me.REG[0] = NIT_NULL;
628 fra.me.REG[1] = NIT_NULL;
629 fra.me.REG[2] = NIT_NULL;
630 fra.me.REG[3] = NIT_NULL;
631 fra.me.REG[4] = NIT_NULL;
632 fra.me.REG[5] = NIT_NULL;
633 fra.me.REG[6] = NIT_NULL;
634 fra.me.REG[7] = NIT_NULL;
635 fra.me.REG[8] = NIT_NULL;
636 fra.me.REG[9] = NIT_NULL;
637 fra.me.REG[10] = NIT_NULL;
638 fra.me.REG[11] = NIT_NULL;
639 fra.me.REG[0] = p0;
640 fra.me.REG[1] = p1;
641 fra.me.REG[2] = p2;
642 fra.me.REG[3] = p3;
643 /* ./syntax//typing.nit:114 */
644 fra.me.REG[4] = fra.me.REG[0];
645 /* ./syntax//typing.nit:116 */
646 fra.me.REG[5] = fra.me.REG[4];
647 /* ./syntax//typing.nit:119 */
648 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
649 /* ./syntax//typing.nit:120 */
650 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
651 /* ./syntax//typing.nit:121 */
652 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
653 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
654 if (UNTAG_Bool(REGB0)) {
655 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
656 }
657 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
658 fra.me.REG[8] = REGB0;
659 /* ./syntax//typing.nit:122 */
660 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
661 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[9])(fra.me.REG[9], (&(fra.me)), ((fun_t)OC_syntax___typing___TypingVisitor___get_default_constructor_for_1));
662 switch ((&(fra.me))->has_broke) {
663 case 0: break;
664 case 1: (&(fra.me))->has_broke = 0; goto label5;
665 }
666 /* ./../lib/standard//collection//array.nit:23 */
667 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
668 if (UNTAG_Bool(REGB0)) {
669 } else {
670 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
671 }
672 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
673 /* ./syntax//typing.nit:141 */
674 REGB1 = TAG_Int(1);
675 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
676 if (UNTAG_Bool(REGB2)) {
677 } else {
678 /* ./../lib/standard//kernel.nit:210 */
679 REGB1 = TAG_Bool((REGB0)==(REGB1));
680 /* ./syntax//typing.nit:141 */
681 REGB2 = REGB1;
682 }
683 if (UNTAG_Bool(REGB2)) {
684 /* ./syntax//typing.nit:142 */
685 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
686 fra.me.REG[9] = fra.me.REG[3];
687 goto label5;
688 } else {
689 /* ./../lib/standard//collection//array.nit:23 */
690 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
691 if (UNTAG_Bool(REGB2)) {
692 } else {
693 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
694 }
695 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
696 /* ./syntax//typing.nit:143 */
697 REGB1 = TAG_Int(0);
698 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
699 if (UNTAG_Bool(REGB0)) {
700 } else {
701 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
702 }
703 /* ./../lib/standard//kernel.nit:217 */
704 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
705 /* ./syntax//typing.nit:143 */
706 if (UNTAG_Bool(REGB1)) {
707 /* ./syntax//typing.nit:144 */
708 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
709 /* ./../lib/standard//collection//array.nit:232 */
710 REGB1 = TAG_Int(0);
711 /* ./../lib/standard//collection//array.nit:233 */
712 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
713 if (UNTAG_Bool(REGB2)) {
714 } else {
715 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
716 }
717 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
718 /* ./../lib/standard//collection//array.nit:234 */
719 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
720 /* ./../lib/standard//collection//array.nit:235 */
721 while(1) {
722 /* ./../lib/standard//collection//array.nit:23 */
723 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
724 if (UNTAG_Bool(REGB2)) {
725 } else {
726 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
727 }
728 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
729 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
730 if (UNTAG_Bool(REGB0)) {
731 } else {
732 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
733 }
734 /* ./../lib/standard//kernel.nit:215 */
735 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
736 /* ./../lib/standard//collection//array.nit:235 */
737 if (UNTAG_Bool(REGB2)) {
738 /* ./../lib/standard//collection//array.nit:236 */
739 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
740 if (UNTAG_Bool(REGB2)) {
741 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
742 }
743 /* ./../lib/standard//collection//array.nit:652 */
744 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
745 /* ./syntax//typing.nit:146 */
746 REGB2 = TAG_Int(5);
747 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
748 if (!once_value_6) {
749 fra.me.REG[11] = BOX_NativeString("");
750 REGB2 = TAG_Int(0);
751 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
752 once_value_6 = fra.me.REG[11];
753 register_static_object(&once_value_6);
754 } else fra.me.REG[11] = once_value_6;
755 fra.me.REG[11] = fra.me.REG[11];
756 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
757 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
759 if (!once_value_7) {
760 fra.me.REG[11] = BOX_NativeString("");
761 REGB2 = TAG_Int(0);
762 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
763 once_value_7 = fra.me.REG[11];
764 register_static_object(&once_value_7);
765 } else fra.me.REG[11] = once_value_7;
766 fra.me.REG[11] = fra.me.REG[11];
767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
768 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
769 REGB2 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
770 if (UNTAG_Bool(REGB2)) {
771 } else {
772 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
773 }
774 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
775 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
776 if (!once_value_8) {
777 fra.me.REG[4] = BOX_NativeString("");
778 REGB2 = TAG_Int(0);
779 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
780 once_value_8 = fra.me.REG[4];
781 register_static_object(&once_value_8);
782 } else fra.me.REG[4] = once_value_8;
783 fra.me.REG[4] = fra.me.REG[4];
784 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
785 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
786 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
787 /* ./../lib/standard//collection//array.nit:237 */
788 REGB2 = TAG_Int(1);
789 /* ./../lib/standard//kernel.nit:218 */
790 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
791 /* ./../lib/standard//collection//array.nit:237 */
792 REGB1 = REGB2;
793 } else {
794 /* ./../lib/standard//collection//array.nit:235 */
795 goto label9;
796 }
797 }
798 label9: while(0);
799 /* ./syntax//typing.nit:148 */
800 REGB1 = TAG_Int(5);
801 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
802 if (!once_value_10) {
803 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
804 REGB1 = TAG_Int(51);
805 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
806 once_value_10 = fra.me.REG[6];
807 register_static_object(&once_value_10);
808 } else fra.me.REG[6] = once_value_10;
809 fra.me.REG[6] = fra.me.REG[6];
810 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
811 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
813 if (!once_value_11) {
814 fra.me.REG[6] = BOX_NativeString(": ");
815 REGB1 = TAG_Int(2);
816 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
817 once_value_11 = fra.me.REG[6];
818 register_static_object(&once_value_11);
819 } else fra.me.REG[6] = once_value_11;
820 fra.me.REG[6] = fra.me.REG[6];
821 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
822 if (!once_value_12) {
823 fra.me.REG[6] = BOX_NativeString(", ");
824 REGB1 = TAG_Int(2);
825 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
826 once_value_12 = fra.me.REG[6];
827 register_static_object(&once_value_12);
828 } else fra.me.REG[6] = once_value_12;
829 fra.me.REG[6] = fra.me.REG[6];
830 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
831 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
832 if (!once_value_13) {
833 fra.me.REG[6] = BOX_NativeString(".");
834 REGB1 = TAG_Int(1);
835 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
836 once_value_13 = fra.me.REG[6];
837 register_static_object(&once_value_13);
838 } else fra.me.REG[6] = once_value_13;
839 fra.me.REG[6] = fra.me.REG[6];
840 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
841 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
842 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
843 /* ./syntax//typing.nit:149 */
844 fra.me.REG[9] = NIT_NULL;
845 goto label5;
846 } else {
847 /* ./../lib/standard//collection//array.nit:23 */
848 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
849 if (UNTAG_Bool(REGB1)) {
850 } else {
851 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
852 }
853 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
854 /* ./syntax//typing.nit:150 */
855 REGB2 = TAG_Int(0);
856 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
857 if (UNTAG_Bool(REGB0)) {
858 } else {
859 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
860 }
861 /* ./../lib/standard//kernel.nit:217 */
862 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
863 /* ./syntax//typing.nit:150 */
864 if (UNTAG_Bool(REGB2)) {
865 /* ./syntax//typing.nit:151 */
866 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
867 /* ./../lib/standard//collection//array.nit:232 */
868 REGB2 = TAG_Int(0);
869 /* ./../lib/standard//collection//array.nit:233 */
870 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
871 if (UNTAG_Bool(REGB1)) {
872 } else {
873 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
874 }
875 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
876 /* ./../lib/standard//collection//array.nit:234 */
877 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
878 /* ./../lib/standard//collection//array.nit:235 */
879 while(1) {
880 /* ./../lib/standard//collection//array.nit:23 */
881 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
882 if (UNTAG_Bool(REGB1)) {
883 } else {
884 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
885 }
886 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
887 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
888 if (UNTAG_Bool(REGB0)) {
889 } else {
890 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
891 }
892 /* ./../lib/standard//kernel.nit:215 */
893 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
894 /* ./../lib/standard//collection//array.nit:235 */
895 if (UNTAG_Bool(REGB1)) {
896 /* ./../lib/standard//collection//array.nit:236 */
897 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
898 if (UNTAG_Bool(REGB1)) {
899 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
900 }
901 /* ./../lib/standard//collection//array.nit:652 */
902 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
903 /* ./syntax//typing.nit:153 */
904 REGB1 = TAG_Int(5);
905 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
906 if (!once_value_14) {
907 fra.me.REG[4] = BOX_NativeString("");
908 REGB1 = TAG_Int(0);
909 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
910 once_value_14 = fra.me.REG[4];
911 register_static_object(&once_value_14);
912 } else fra.me.REG[4] = once_value_14;
913 fra.me.REG[4] = fra.me.REG[4];
914 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
915 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
916 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
917 if (!once_value_15) {
918 fra.me.REG[4] = BOX_NativeString("");
919 REGB1 = TAG_Int(0);
920 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
921 once_value_15 = fra.me.REG[4];
922 register_static_object(&once_value_15);
923 } else fra.me.REG[4] = once_value_15;
924 fra.me.REG[4] = fra.me.REG[4];
925 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
926 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
927 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*/;
928 if (UNTAG_Bool(REGB1)) {
929 } else {
930 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
931 }
932 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
933 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
934 if (!once_value_16) {
935 fra.me.REG[3] = BOX_NativeString("");
936 REGB1 = TAG_Int(0);
937 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
938 once_value_16 = fra.me.REG[3];
939 register_static_object(&once_value_16);
940 } else fra.me.REG[3] = once_value_16;
941 fra.me.REG[3] = fra.me.REG[3];
942 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
943 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
944 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
945 /* ./../lib/standard//collection//array.nit:237 */
946 REGB1 = TAG_Int(1);
947 /* ./../lib/standard//kernel.nit:218 */
948 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
949 /* ./../lib/standard//collection//array.nit:237 */
950 REGB2 = REGB1;
951 } else {
952 /* ./../lib/standard//collection//array.nit:235 */
953 goto label17;
954 }
955 }
956 label17: while(0);
957 /* ./syntax//typing.nit:155 */
958 REGB2 = TAG_Int(5);
959 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
960 if (!once_value_18) {
961 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
962 REGB2 = TAG_Int(55);
963 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
964 once_value_18 = fra.me.REG[6];
965 register_static_object(&once_value_18);
966 } else fra.me.REG[6] = once_value_18;
967 fra.me.REG[6] = fra.me.REG[6];
968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
969 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
970 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
971 if (!once_value_19) {
972 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
973 REGB2 = TAG_Int(27);
974 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
975 once_value_19 = fra.me.REG[6];
976 register_static_object(&once_value_19);
977 } else fra.me.REG[6] = once_value_19;
978 fra.me.REG[6] = fra.me.REG[6];
979 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
980 if (!once_value_20) {
981 fra.me.REG[6] = BOX_NativeString(", ");
982 REGB2 = TAG_Int(2);
983 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
984 once_value_20 = fra.me.REG[6];
985 register_static_object(&once_value_20);
986 } else fra.me.REG[6] = once_value_20;
987 fra.me.REG[6] = fra.me.REG[6];
988 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
989 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
990 if (!once_value_21) {
991 fra.me.REG[6] = BOX_NativeString(".");
992 REGB2 = TAG_Int(1);
993 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
994 once_value_21 = fra.me.REG[6];
995 register_static_object(&once_value_21);
996 } else fra.me.REG[6] = once_value_21;
997 fra.me.REG[6] = fra.me.REG[6];
998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
999 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1000 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1001 /* ./syntax//typing.nit:156 */
1002 fra.me.REG[9] = NIT_NULL;
1003 goto label5;
1004 } else {
1005 /* ./syntax//typing.nit:158 */
1006 REGB2 = TAG_Int(3);
1007 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1008 if (!once_value_22) {
1009 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1010 REGB2 = TAG_Int(55);
1011 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1012 once_value_22 = fra.me.REG[6];
1013 register_static_object(&once_value_22);
1014 } else fra.me.REG[6] = once_value_22;
1015 fra.me.REG[6] = fra.me.REG[6];
1016 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1017 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1018 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1019 if (!once_value_23) {
1020 fra.me.REG[2] = BOX_NativeString(".");
1021 REGB2 = TAG_Int(1);
1022 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
1023 once_value_23 = fra.me.REG[2];
1024 register_static_object(&once_value_23);
1025 } else fra.me.REG[2] = once_value_23;
1026 fra.me.REG[2] = fra.me.REG[2];
1027 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1028 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1029 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1030 /* ./syntax//typing.nit:159 */
1031 fra.me.REG[9] = NIT_NULL;
1032 goto label5;
1033 }
1034 }
1035 }
1036 label5: while(0);
1037 stack_frame_head = fra.me.prev;
1038 return fra.me.REG[9];
1039 }
1040 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){
1041 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1042 val_t REGB0;
1043 val_t REGB1;
1044 val_t REGB2;
1045 val_t REGB3;
1046 fun_t CREG[1];
1047 val_t tmp;
1048 static val_t once_value_3; /* Once value */
1049 static val_t once_value_4; /* Once value */
1050 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1051 fra.me.file = LOCATE_syntax___typing;
1052 fra.me.line = 0;
1053 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1054 fra.me.has_broke = 0;
1055 fra.me.REG_size = 4;
1056 fra.me.REG[0] = NIT_NULL;
1057 fra.me.REG[1] = NIT_NULL;
1058 fra.me.REG[2] = NIT_NULL;
1059 fra.me.REG[3] = NIT_NULL;
1060 fra.me.closure_ctx = closctx_param;
1061 fra.me.closure_funs = CREG;
1062 fra.me.REG[0] = p0;
1063 CREG[0] = clos_fun0;
1064 /* ./syntax//typing.nit:123 */
1065 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1066 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1067 if (UNTAG_Bool(REGB0)) {
1068 goto label2;
1069 }
1070 /* ./syntax//typing.nit:124 */
1071 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1072 /* ./syntax//typing.nit:125 */
1073 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1074 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1075 /* ./syntax//typing.nit:126 */
1076 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1077 if (UNTAG_Bool(REGB0)) {
1078 } else {
1079 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1080 }
1081 /* ./syntax//typing.nit:127 */
1082 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1083 /* ./syntax//typing.nit:128 */
1084 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1085 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1086 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1087 if (UNTAG_Bool(REGB1)) {
1088 } else {
1089 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1090 REGB1 = REGB2;
1091 }
1092 if (UNTAG_Bool(REGB1)) {
1093 /* ./syntax//typing.nit:129 */
1094 REGB1 = TAG_Int(0);
1095 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1096 if (UNTAG_Bool(REGB2)) {
1097 } else {
1098 /* ./../lib/standard//kernel.nit:210 */
1099 REGB1 = TAG_Bool((REGB0)==(REGB1));
1100 /* ./syntax//typing.nit:129 */
1101 REGB2 = REGB1;
1102 }
1103 if (UNTAG_Bool(REGB2)) {
1104 REGB2 = TAG_Bool(true);
1105 } else {
1106 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1107 if (UNTAG_Bool(REGB1)) {
1108 } else {
1109 /* ./../lib/standard//kernel.nit:210 */
1110 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1111 /* ./syntax//typing.nit:129 */
1112 REGB1 = REGB3;
1113 }
1114 if (UNTAG_Bool(REGB1)) {
1115 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1116 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1117 if (UNTAG_Bool(REGB1)) {
1118 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1119 }
1120 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1121 } else {
1122 REGB3 = TAG_Bool(false);
1123 REGB1 = REGB3;
1124 }
1125 REGB2 = REGB1;
1126 }
1127 if (UNTAG_Bool(REGB2)) {
1128 /* ./syntax//typing.nit:130 */
1129 closctx->REG[9] = fra.me.REG[0];
1130 closctx->has_broke = 1;
1131 goto label2;
1132 } else {
1133 /* ./syntax//typing.nit:132 */
1134 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1135 }
1136 } else {
1137 /* ./syntax//typing.nit:134 */
1138 REGB2 = TAG_Int(0);
1139 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1140 if (UNTAG_Bool(REGB1)) {
1141 } else {
1142 /* ./../lib/standard//kernel.nit:210 */
1143 REGB2 = TAG_Bool((REGB0)==(REGB2));
1144 /* ./syntax//typing.nit:134 */
1145 REGB1 = REGB2;
1146 }
1147 if (UNTAG_Bool(REGB1)) {
1148 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1149 if (!once_value_3) {
1150 if (!once_value_4) {
1151 fra.me.REG[3] = BOX_NativeString("init");
1152 REGB1 = TAG_Int(4);
1153 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
1154 once_value_4 = fra.me.REG[3];
1155 register_static_object(&once_value_4);
1156 } else fra.me.REG[3] = once_value_4;
1157 fra.me.REG[3] = fra.me.REG[3];
1158 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1159 once_value_3 = fra.me.REG[3];
1160 register_static_object(&once_value_3);
1161 } else fra.me.REG[3] = once_value_3;
1162 fra.me.REG[3] = fra.me.REG[3];
1163 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1164 if (UNTAG_Bool(REGB1)) {
1165 } else {
1166 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1167 REGB1 = REGB2;
1168 }
1169 } else {
1170 REGB2 = TAG_Bool(false);
1171 REGB1 = REGB2;
1172 }
1173 if (UNTAG_Bool(REGB1)) {
1174 /* ./syntax//typing.nit:135 */
1175 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1176 /* ./syntax//typing.nit:136 */
1177 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1178 } else {
1179 /* ./syntax//typing.nit:138 */
1180 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1181 }
1182 }
1183 label2: while(0);
1184 stack_frame_head = fra.me.prev;
1185 return;
1186 }
1187 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1188 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1189 val_t tmp;
1190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1191 fra.me.file = LOCATE_syntax___typing;
1192 fra.me.line = 168;
1193 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1194 fra.me.has_broke = 0;
1195 fra.me.REG_size = 2;
1196 fra.me.REG[0] = NIT_NULL;
1197 fra.me.REG[1] = NIT_NULL;
1198 fra.me.REG[0] = p0;
1199 fra.me.REG[1] = p1;
1200 /* ./syntax//typing.nit:170 */
1201 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1202 /* ./syntax//typing.nit:171 */
1203 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1204 stack_frame_head = fra.me.prev;
1205 return;
1206 }
1207 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1208 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1209 val_t tmp;
1210 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1211 fra.me.file = LOCATE_syntax___typing;
1212 fra.me.line = 173;
1213 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1214 fra.me.has_broke = 0;
1215 fra.me.REG_size = 2;
1216 fra.me.REG[0] = NIT_NULL;
1217 fra.me.REG[1] = NIT_NULL;
1218 fra.me.REG[0] = p0;
1219 fra.me.REG[1] = p1;
1220 stack_frame_head = fra.me.prev;
1221 return;
1222 }
1223 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1224 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1225 val_t REGB0;
1226 val_t tmp;
1227 static val_t once_value_1; /* Once value */
1228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1229 fra.me.file = LOCATE_syntax___typing;
1230 fra.me.line = 177;
1231 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1232 fra.me.has_broke = 0;
1233 fra.me.REG_size = 5;
1234 fra.me.REG[0] = NIT_NULL;
1235 fra.me.REG[1] = NIT_NULL;
1236 fra.me.REG[2] = NIT_NULL;
1237 fra.me.REG[3] = NIT_NULL;
1238 fra.me.REG[4] = NIT_NULL;
1239 fra.me.REG[0] = p0;
1240 fra.me.REG[1] = p1;
1241 /* ./syntax//typing.nit:177 */
1242 fra.me.REG[2] = fra.me.REG[0];
1243 fra.me.REG[3] = fra.me.REG[1];
1244 /* ./syntax//typing.nit:179 */
1245 if (!once_value_1) {
1246 fra.me.REG[4] = BOX_NativeString("self");
1247 REGB0 = TAG_Int(4);
1248 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1249 once_value_1 = fra.me.REG[4];
1250 register_static_object(&once_value_1);
1251 } else fra.me.REG[4] = once_value_1;
1252 fra.me.REG[4] = fra.me.REG[4];
1253 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1254 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1255 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1256 /* ./syntax//typing.nit:180 */
1257 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1258 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1259 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1260 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1261 /* ./syntax//typing.nit:181 */
1262 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1263 stack_frame_head = fra.me.prev;
1264 return;
1265 }
1266 val_t syntax___typing___APropdef___self_var(val_t p0){
1267 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1268 val_t REGB0;
1269 val_t tmp;
1270 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1271 fra.me.file = LOCATE_syntax___typing;
1272 fra.me.line = 186;
1273 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1274 fra.me.has_broke = 0;
1275 fra.me.REG_size = 2;
1276 fra.me.REG[0] = NIT_NULL;
1277 fra.me.REG[1] = NIT_NULL;
1278 fra.me.REG[0] = p0;
1279 /* ./syntax//typing.nit:186 */
1280 fra.me.REG[1] = fra.me.REG[0];
1281 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1282 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1283 if (UNTAG_Bool(REGB0)) {
1284 } else {
1285 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1286 }
1287 goto label1;
1288 label1: while(0);
1289 stack_frame_head = fra.me.prev;
1290 return fra.me.REG[1];
1291 }
1292 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1293 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1294 val_t REGB0;
1295 val_t REGB1;
1296 val_t tmp;
1297 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1298 fra.me.file = LOCATE_syntax___typing;
1299 fra.me.line = 191;
1300 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1301 fra.me.has_broke = 0;
1302 fra.me.REG_size = 5;
1303 fra.me.REG[0] = NIT_NULL;
1304 fra.me.REG[1] = NIT_NULL;
1305 fra.me.REG[2] = NIT_NULL;
1306 fra.me.REG[3] = NIT_NULL;
1307 fra.me.REG[4] = NIT_NULL;
1308 fra.me.REG[0] = p0;
1309 fra.me.REG[1] = p1;
1310 /* ./syntax//typing.nit:191 */
1311 fra.me.REG[2] = fra.me.REG[0];
1312 fra.me.REG[3] = fra.me.REG[1];
1313 /* ./syntax//typing.nit:193 */
1314 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1315 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1316 /* ./syntax//typing.nit:194 */
1317 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1318 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1319 /* ./syntax//typing.nit:196 */
1320 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1321 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1322 /* ./syntax//typing.nit:197 */
1323 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1324 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1325 /* ./syntax//typing.nit:198 */
1326 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1327 /* ./syntax//typing.nit:199 */
1328 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1329 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1330 if (UNTAG_Bool(REGB0)) {
1331 } else {
1332 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1333 if (UNTAG_Bool(REGB1)) {
1334 REGB1 = TAG_Bool(false);
1335 REGB0 = REGB1;
1336 } else {
1337 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1338 REGB0 = REGB1;
1339 }
1340 }
1341 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1342 if (UNTAG_Bool(REGB0)) {
1343 /* ./syntax//typing.nit:200 */
1344 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1345 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*/;
1346 if (UNTAG_Bool(REGB0)) {
1347 } else {
1348 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1349 }
1350 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1351 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1352 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1353 if (UNTAG_Bool(REGB0)) {
1354 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1355 }
1356 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1357 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*/;
1358 if (UNTAG_Bool(REGB0)) {
1359 } else {
1360 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1361 }
1362 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1363 }
1364 /* ./syntax//typing.nit:202 */
1365 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1366 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1367 stack_frame_head = fra.me.prev;
1368 return;
1369 }
1370 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1371 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1372 val_t tmp;
1373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1374 fra.me.file = LOCATE_syntax___typing;
1375 fra.me.line = 207;
1376 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1377 fra.me.has_broke = 0;
1378 fra.me.REG_size = 5;
1379 fra.me.REG[0] = NIT_NULL;
1380 fra.me.REG[1] = NIT_NULL;
1381 fra.me.REG[2] = NIT_NULL;
1382 fra.me.REG[3] = NIT_NULL;
1383 fra.me.REG[4] = NIT_NULL;
1384 fra.me.REG[0] = p0;
1385 fra.me.REG[1] = p1;
1386 /* ./syntax//typing.nit:207 */
1387 fra.me.REG[2] = fra.me.REG[0];
1388 fra.me.REG[3] = fra.me.REG[1];
1389 /* ./syntax//typing.nit:209 */
1390 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1391 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1392 /* ./syntax//typing.nit:210 */
1393 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1394 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1395 /* ./syntax//typing.nit:212 */
1396 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1397 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1398 /* ./syntax//typing.nit:213 */
1399 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1400 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1401 /* ./syntax//typing.nit:214 */
1402 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1403 /* ./syntax//typing.nit:215 */
1404 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1405 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1406 stack_frame_head = fra.me.prev;
1407 return;
1408 }
1409 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1410 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1411 val_t REGB0;
1412 val_t REGB1;
1413 val_t tmp;
1414 static val_t once_value_1; /* Once value */
1415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1416 fra.me.file = LOCATE_syntax___typing;
1417 fra.me.line = 220;
1418 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1419 fra.me.has_broke = 0;
1420 fra.me.REG_size = 4;
1421 fra.me.REG[0] = NIT_NULL;
1422 fra.me.REG[1] = NIT_NULL;
1423 fra.me.REG[2] = NIT_NULL;
1424 fra.me.REG[3] = NIT_NULL;
1425 fra.me.REG[0] = p0;
1426 fra.me.REG[1] = p1;
1427 /* ./syntax//typing.nit:220 */
1428 fra.me.REG[2] = fra.me.REG[0];
1429 fra.me.REG[3] = fra.me.REG[1];
1430 /* ./syntax//typing.nit:222 */
1431 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1432 /* ./syntax//typing.nit:223 */
1433 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1434 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1435 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1436 if (UNTAG_Bool(REGB0)) {
1437 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1438 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1439 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1440 if (UNTAG_Bool(REGB0)) {
1441 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1442 }
1443 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1444 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1445 if (UNTAG_Bool(REGB0)) {
1446 } else {
1447 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1448 if (UNTAG_Bool(REGB1)) {
1449 REGB1 = TAG_Bool(false);
1450 REGB0 = REGB1;
1451 } else {
1452 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1453 REGB0 = REGB1;
1454 }
1455 }
1456 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1457 } else {
1458 REGB1 = TAG_Bool(false);
1459 REGB0 = REGB1;
1460 }
1461 if (UNTAG_Bool(REGB0)) {
1462 /* ./syntax//typing.nit:224 */
1463 if (!once_value_1) {
1464 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1465 REGB0 = TAG_Int(78);
1466 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1467 once_value_1 = fra.me.REG[1];
1468 register_static_object(&once_value_1);
1469 } else fra.me.REG[1] = once_value_1;
1470 fra.me.REG[1] = fra.me.REG[1];
1471 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1472 }
1473 stack_frame_head = fra.me.prev;
1474 return;
1475 }
1476 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1477 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1478 val_t REGB0;
1479 val_t tmp;
1480 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1481 fra.me.file = LOCATE_syntax___typing;
1482 fra.me.line = 230;
1483 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1484 fra.me.has_broke = 0;
1485 fra.me.REG_size = 5;
1486 fra.me.REG[0] = NIT_NULL;
1487 fra.me.REG[1] = NIT_NULL;
1488 fra.me.REG[2] = NIT_NULL;
1489 fra.me.REG[3] = NIT_NULL;
1490 fra.me.REG[4] = NIT_NULL;
1491 fra.me.REG[0] = p0;
1492 fra.me.REG[1] = p1;
1493 /* ./syntax//typing.nit:230 */
1494 fra.me.REG[2] = fra.me.REG[0];
1495 fra.me.REG[3] = fra.me.REG[1];
1496 /* ./syntax//typing.nit:232 */
1497 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1498 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1499 /* ./syntax//typing.nit:233 */
1500 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1501 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1502 /* ./syntax//typing.nit:234 */
1503 REGB0 = TAG_Bool(false);
1504 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1505 /* ./syntax//typing.nit:235 */
1506 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1507 stack_frame_head = fra.me.prev;
1508 return;
1509 }
1510 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1511 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1512 val_t REGB0;
1513 val_t REGB1;
1514 val_t REGB2;
1515 val_t REGB3;
1516 val_t REGB4;
1517 val_t REGB5;
1518 val_t tmp;
1519 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1520 fra.me.file = LOCATE_syntax___typing;
1521 fra.me.line = 238;
1522 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1523 fra.me.has_broke = 0;
1524 fra.me.REG_size = 8;
1525 fra.me.REG[0] = NIT_NULL;
1526 fra.me.REG[1] = NIT_NULL;
1527 fra.me.REG[2] = NIT_NULL;
1528 fra.me.REG[3] = NIT_NULL;
1529 fra.me.REG[4] = NIT_NULL;
1530 fra.me.REG[5] = NIT_NULL;
1531 fra.me.REG[6] = NIT_NULL;
1532 fra.me.REG[7] = NIT_NULL;
1533 fra.me.REG[0] = p0;
1534 fra.me.REG[1] = p1;
1535 /* ./syntax//typing.nit:238 */
1536 fra.me.REG[2] = fra.me.REG[0];
1537 fra.me.REG[3] = fra.me.REG[1];
1538 /* ./syntax//typing.nit:240 */
1539 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1540 /* ./syntax//typing.nit:241 */
1541 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1542 if (UNTAG_Bool(REGB0)) {
1543 REGB0 = TAG_Bool(true);
1544 } else {
1545 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1546 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1547 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1548 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1549 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1550 if (UNTAG_Bool(REGB1)) {
1551 } else {
1552 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1553 REGB1 = REGB2;
1554 }
1555 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1556 REGB0 = REGB1;
1557 }
1558 if (UNTAG_Bool(REGB0)) {
1559 } else {
1560 /* ./syntax//typing.nit:244 */
1561 REGB0 = TAG_Int(0);
1562 /* ./syntax//typing.nit:245 */
1563 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1564 /* ./../lib/standard//collection//array.nit:23 */
1565 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1566 if (UNTAG_Bool(REGB1)) {
1567 } else {
1568 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
1569 }
1570 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1571 /* ./syntax//typing.nit:246 */
1572 fra.me.REG[4] = NIT_NULL;
1573 /* ./syntax//typing.nit:247 */
1574 fra.me.REG[1] = NIT_NULL;
1575 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1576 if (UNTAG_Bool(REGB2)) {
1577 } else {
1578 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1579 }
1580 /* ./../lib/standard//kernel.nit:215 */
1581 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1582 /* ./syntax//typing.nit:248 */
1583 if (UNTAG_Bool(REGB2)) {
1584 /* ./syntax//typing.nit:249 */
1585 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1586 /* ./../lib/standard//collection//array.nit:241 */
1587 REGB2 = REGB0;
1588 /* ./../lib/standard//collection//array.nit:243 */
1589 REGB3 = TAG_Int(0);
1590 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1591 if (UNTAG_Bool(REGB4)) {
1592 } else {
1593 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1594 }
1595 /* ./../lib/standard//kernel.nit:216 */
1596 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1597 /* ./../lib/standard//collection//array.nit:243 */
1598 if (UNTAG_Bool(REGB3)) {
1599 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1600 if (UNTAG_Bool(REGB3)) {
1601 } else {
1602 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
1603 }
1604 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1605 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1606 if (UNTAG_Bool(REGB4)) {
1607 } else {
1608 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1609 }
1610 /* ./../lib/standard//kernel.nit:215 */
1611 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1612 } else {
1613 /* ./../lib/standard//collection//array.nit:243 */
1614 REGB4 = TAG_Bool(false);
1615 REGB3 = REGB4;
1616 }
1617 if (UNTAG_Bool(REGB3)) {
1618 } else {
1619 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
1620 }
1621 /* ./../lib/standard//collection//array.nit:244 */
1622 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1623 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1624 if (UNTAG_Bool(REGB3)) {
1625 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
1626 }
1627 /* ./../lib/standard//collection//array.nit:652 */
1628 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1629 /* ./../lib/standard//collection//array.nit:244 */
1630 goto label1;
1631 label1: while(0);
1632 /* ./syntax//typing.nit:249 */
1633 fra.me.REG[4] = fra.me.REG[5];
1634 /* ./syntax//typing.nit:250 */
1635 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1636 if (UNTAG_Bool(REGB2)) {
1637 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1638 }
1639 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1640 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1641 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1642 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1643 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1644 fra.me.REG[1] = fra.me.REG[6];
1645 }
1646 /* ./syntax//typing.nit:252 */
1647 REGB2 = TAG_Int(0);
1648 /* ./syntax//typing.nit:253 */
1649 while(1) {
1650 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1651 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1652 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1653 /* ./../lib/standard//collection//array.nit:23 */
1654 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1655 if (UNTAG_Bool(REGB3)) {
1656 } else {
1657 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
1658 }
1659 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1660 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1661 if (UNTAG_Bool(REGB4)) {
1662 } else {
1663 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1664 }
1665 /* ./../lib/standard//kernel.nit:215 */
1666 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1667 /* ./syntax//typing.nit:253 */
1668 if (UNTAG_Bool(REGB3)) {
1669 /* ./syntax//typing.nit:254 */
1670 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1671 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1672 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1673 /* ./../lib/standard//collection//array.nit:241 */
1674 REGB3 = REGB2;
1675 /* ./../lib/standard//collection//array.nit:243 */
1676 REGB4 = TAG_Int(0);
1677 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1678 if (UNTAG_Bool(REGB5)) {
1679 } else {
1680 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1681 }
1682 /* ./../lib/standard//kernel.nit:216 */
1683 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1684 /* ./../lib/standard//collection//array.nit:243 */
1685 if (UNTAG_Bool(REGB4)) {
1686 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1687 if (UNTAG_Bool(REGB4)) {
1688 } else {
1689 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
1690 }
1691 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1692 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1693 if (UNTAG_Bool(REGB5)) {
1694 } else {
1695 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1696 }
1697 /* ./../lib/standard//kernel.nit:215 */
1698 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1699 } else {
1700 /* ./../lib/standard//collection//array.nit:243 */
1701 REGB5 = TAG_Bool(false);
1702 REGB4 = REGB5;
1703 }
1704 if (UNTAG_Bool(REGB4)) {
1705 } else {
1706 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
1707 }
1708 /* ./../lib/standard//collection//array.nit:244 */
1709 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1710 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1711 if (UNTAG_Bool(REGB4)) {
1712 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
1713 }
1714 /* ./../lib/standard//collection//array.nit:652 */
1715 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1716 /* ./../lib/standard//collection//array.nit:244 */
1717 goto label2;
1718 label2: while(0);
1719 /* ./syntax//typing.nit:255 */
1720 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1721 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1722 if (UNTAG_Bool(REGB3)) {
1723 REGB3 = TAG_Bool(true);
1724 } else {
1725 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1726 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1727 REGB3 = REGB4;
1728 }
1729 if (UNTAG_Bool(REGB3)) {
1730 REGB3 = TAG_Bool(true);
1731 } else {
1732 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1733 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1734 REGB3 = REGB4;
1735 }
1736 if (UNTAG_Bool(REGB3)) {
1737 /* ./syntax//typing.nit:256 */
1738 REGB3 = TAG_Int(1);
1739 /* ./../lib/standard//kernel.nit:218 */
1740 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1741 /* ./syntax//typing.nit:256 */
1742 REGB2 = REGB3;
1743 } else {
1744 /* ./syntax//typing.nit:257 */
1745 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1746 if (UNTAG_Bool(REGB3)) {
1747 } else {
1748 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1749 if (UNTAG_Bool(REGB4)) {
1750 REGB4 = TAG_Bool(false);
1751 REGB3 = REGB4;
1752 } else {
1753 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1754 REGB3 = REGB4;
1755 }
1756 }
1757 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1758 if (UNTAG_Bool(REGB3)) {
1759 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1760 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1761 if (UNTAG_Bool(REGB3)) {
1762 REGB3 = TAG_Bool(true);
1763 } else {
1764 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1765 if (UNTAG_Bool(REGB4)) {
1766 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1767 }
1768 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1769 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1770 REGB3 = REGB4;
1771 }
1772 } else {
1773 REGB4 = TAG_Bool(false);
1774 REGB3 = REGB4;
1775 }
1776 if (UNTAG_Bool(REGB3)) {
1777 /* ./syntax//typing.nit:258 */
1778 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1779 if (UNTAG_Bool(REGB3)) {
1780 } else {
1781 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1782 REGB3 = REGB4;
1783 }
1784 if (UNTAG_Bool(REGB3)) {
1785 REGB3 = TAG_Int(1);
1786 /* ./../lib/standard//kernel.nit:218 */
1787 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1788 /* ./syntax//typing.nit:258 */
1789 REGB2 = REGB3;
1790 }
1791 /* ./syntax//typing.nit:259 */
1792 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1793 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1794 if (UNTAG_Bool(REGB3)) {
1795 } else {
1796 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1797 }
1798 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1799 /* ./syntax//typing.nit:260 */
1800 REGB3 = TAG_Int(1);
1801 /* ./../lib/standard//kernel.nit:218 */
1802 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1803 /* ./syntax//typing.nit:260 */
1804 REGB0 = REGB3;
1805 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1806 if (UNTAG_Bool(REGB3)) {
1807 } else {
1808 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1809 }
1810 /* ./../lib/standard//kernel.nit:215 */
1811 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1812 /* ./syntax//typing.nit:261 */
1813 if (UNTAG_Bool(REGB3)) {
1814 /* ./syntax//typing.nit:262 */
1815 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1816 /* ./../lib/standard//collection//array.nit:241 */
1817 REGB3 = REGB0;
1818 /* ./../lib/standard//collection//array.nit:243 */
1819 REGB4 = TAG_Int(0);
1820 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1821 if (UNTAG_Bool(REGB5)) {
1822 } else {
1823 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1824 }
1825 /* ./../lib/standard//kernel.nit:216 */
1826 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1827 /* ./../lib/standard//collection//array.nit:243 */
1828 if (UNTAG_Bool(REGB4)) {
1829 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1830 if (UNTAG_Bool(REGB4)) {
1831 } else {
1832 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
1833 }
1834 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1835 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1836 if (UNTAG_Bool(REGB5)) {
1837 } else {
1838 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1839 }
1840 /* ./../lib/standard//kernel.nit:215 */
1841 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1842 } else {
1843 /* ./../lib/standard//collection//array.nit:243 */
1844 REGB5 = TAG_Bool(false);
1845 REGB4 = REGB5;
1846 }
1847 if (UNTAG_Bool(REGB4)) {
1848 } else {
1849 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
1850 }
1851 /* ./../lib/standard//collection//array.nit:244 */
1852 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1853 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1854 if (UNTAG_Bool(REGB4)) {
1855 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
1856 }
1857 /* ./../lib/standard//collection//array.nit:652 */
1858 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1859 /* ./../lib/standard//collection//array.nit:244 */
1860 goto label3;
1861 label3: while(0);
1862 /* ./syntax//typing.nit:262 */
1863 fra.me.REG[4] = fra.me.REG[5];
1864 /* ./syntax//typing.nit:263 */
1865 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1866 if (UNTAG_Bool(REGB3)) {
1867 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1868 }
1869 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1870 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1871 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1872 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1873 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1874 fra.me.REG[1] = fra.me.REG[7];
1875 } else {
1876 /* ./syntax//typing.nit:265 */
1877 fra.me.REG[4] = NIT_NULL;
1878 /* ./syntax//typing.nit:266 */
1879 fra.me.REG[1] = NIT_NULL;
1880 }
1881 } else {
1882 /* ./syntax//typing.nit:269 */
1883 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1884 fra.me.REG[7] = CALL_syntax___typing___TypingVisitor___get_default_constructor_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6], fra.me.REG[7]);
1885 /* ./syntax//typing.nit:270 */
1886 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1887 if (UNTAG_Bool(REGB3)) {
1888 } else {
1889 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1890 if (UNTAG_Bool(REGB4)) {
1891 REGB4 = TAG_Bool(false);
1892 REGB3 = REGB4;
1893 } else {
1894 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1895 REGB3 = REGB4;
1896 }
1897 }
1898 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1899 if (UNTAG_Bool(REGB3)) {
1900 /* ./syntax//typing.nit:271 */
1901 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1902 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1903 }
1904 /* ./syntax//typing.nit:273 */
1905 REGB3 = TAG_Int(1);
1906 /* ./../lib/standard//kernel.nit:218 */
1907 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1908 /* ./syntax//typing.nit:273 */
1909 REGB2 = REGB3;
1910 }
1911 }
1912 } else {
1913 /* ./syntax//typing.nit:253 */
1914 goto label4;
1915 }
1916 }
1917 label4: while(0);
1918 }
1919 stack_frame_head = fra.me.prev;
1920 return;
1921 }
1922 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
1923 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1924 val_t tmp;
1925 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1926 fra.me.file = LOCATE_syntax___typing;
1927 fra.me.line = 281;
1928 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
1929 fra.me.has_broke = 0;
1930 fra.me.REG_size = 2;
1931 fra.me.REG[0] = NIT_NULL;
1932 fra.me.REG[1] = NIT_NULL;
1933 fra.me.REG[0] = p0;
1934 fra.me.REG[1] = p1;
1935 /* ./syntax//typing.nit:283 */
1936 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
1937 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1938 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1939 stack_frame_head = fra.me.prev;
1940 return;
1941 }
1942 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
1943 struct {struct stack_frame_t me;} fra;
1944 val_t tmp;
1945 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1946 fra.me.file = LOCATE_syntax___typing;
1947 fra.me.line = 288;
1948 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
1949 fra.me.has_broke = 0;
1950 fra.me.REG_size = 1;
1951 fra.me.REG[0] = NIT_NULL;
1952 fra.me.REG[0] = p0;
1953 /* ./syntax//typing.nit:288 */
1954 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
1955 stack_frame_head = fra.me.prev;
1956 return fra.me.REG[0];
1957 }
1958 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
1959 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1960 val_t REGB0;
1961 val_t REGB1;
1962 val_t REGB2;
1963 val_t tmp;
1964 static val_t once_value_1; /* Once value */
1965 static val_t once_value_2; /* Once value */
1966 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1967 fra.me.file = LOCATE_syntax___typing;
1968 fra.me.line = 291;
1969 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
1970 fra.me.has_broke = 0;
1971 fra.me.REG_size = 10;
1972 fra.me.REG[0] = NIT_NULL;
1973 fra.me.REG[1] = NIT_NULL;
1974 fra.me.REG[2] = NIT_NULL;
1975 fra.me.REG[3] = NIT_NULL;
1976 fra.me.REG[4] = NIT_NULL;
1977 fra.me.REG[5] = NIT_NULL;
1978 fra.me.REG[6] = NIT_NULL;
1979 fra.me.REG[7] = NIT_NULL;
1980 fra.me.REG[8] = NIT_NULL;
1981 fra.me.REG[9] = NIT_NULL;
1982 fra.me.REG[0] = p0;
1983 fra.me.REG[1] = p1;
1984 /* ./syntax//typing.nit:291 */
1985 fra.me.REG[2] = fra.me.REG[0];
1986 fra.me.REG[3] = fra.me.REG[1];
1987 /* ./syntax//typing.nit:294 */
1988 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1989 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
1990 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1991 /* ./syntax//typing.nit:296 */
1992 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1993 /* ./syntax//typing.nit:297 */
1994 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1995 /* ./syntax//typing.nit:298 */
1996 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1997 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1998 /* ./syntax//typing.nit:300 */
1999 fra.me.REG[6] = NIT_NULL;
2000 /* ./syntax//typing.nit:301 */
2001 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2002 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2003 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2004 if (UNTAG_Bool(REGB0)) {
2005 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 301);
2006 }
2007 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2008 /* ./syntax//typing.nit:302 */
2009 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2010 if (UNTAG_Bool(REGB0)) {
2011 } else {
2012 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2013 if (UNTAG_Bool(REGB1)) {
2014 REGB1 = TAG_Bool(false);
2015 REGB0 = REGB1;
2016 } else {
2017 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2018 REGB0 = REGB1;
2019 }
2020 }
2021 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2022 if (UNTAG_Bool(REGB0)) {
2023 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2024 fra.me.REG[6] = fra.me.REG[8];
2025 }
2026 /* ./syntax//typing.nit:303 */
2027 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2028 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2029 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2030 /* ./syntax//typing.nit:304 */
2031 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2032 /* ./syntax//typing.nit:305 */
2033 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2034 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2035 /* ./syntax//typing.nit:307 */
2036 REGB0 = TAG_Bool(true);
2037 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2038 /* ./syntax//typing.nit:309 */
2039 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2040 /* ./syntax//typing.nit:311 */
2041 REGB0 = TAG_Bool(false);
2042 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2043 /* ./syntax//typing.nit:313 */
2044 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2045 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2046 if (UNTAG_Bool(REGB0)) {
2047 } else {
2048 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2049 if (UNTAG_Bool(REGB1)) {
2050 REGB1 = TAG_Bool(false);
2051 REGB0 = REGB1;
2052 } else {
2053 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2054 REGB0 = REGB1;
2055 }
2056 }
2057 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2058 if (UNTAG_Bool(REGB0)) {
2059 /* ./syntax//typing.nit:314 */
2060 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2061 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2062 REGB1 = TAG_Bool(false);
2063 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2064 if (UNTAG_Bool(REGB2)) {
2065 } else {
2066 /* ./../lib/standard//kernel.nit:178 */
2067 REGB1 = TAG_Bool((REGB0)==(REGB1));
2068 /* ./syntax//typing.nit:314 */
2069 REGB2 = REGB1;
2070 }
2071 if (UNTAG_Bool(REGB2)) {
2072 /* ./syntax//typing.nit:315 */
2073 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2074 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2075 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2076 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2077 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2078 if (UNTAG_Bool(REGB2)) {
2079 } else {
2080 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2081 if (UNTAG_Bool(REGB1)) {
2082 REGB1 = TAG_Bool(false);
2083 REGB2 = REGB1;
2084 } else {
2085 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2086 REGB2 = REGB1;
2087 }
2088 }
2089 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2090 if (UNTAG_Bool(REGB2)) {
2091 /* ./syntax//typing.nit:316 */
2092 if (!once_value_1) {
2093 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2094 REGB2 = TAG_Int(77);
2095 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
2096 once_value_1 = fra.me.REG[1];
2097 register_static_object(&once_value_1);
2098 } else fra.me.REG[1] = once_value_1;
2099 fra.me.REG[1] = fra.me.REG[1];
2100 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2101 } else {
2102 /* ./syntax//typing.nit:317 */
2103 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2104 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2105 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2106 if (UNTAG_Bool(REGB2)) {
2107 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2108 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2109 if (UNTAG_Bool(REGB2)) {
2110 } else {
2111 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2112 if (UNTAG_Bool(REGB1)) {
2113 REGB1 = TAG_Bool(false);
2114 REGB2 = REGB1;
2115 } else {
2116 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2117 REGB2 = REGB1;
2118 }
2119 }
2120 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2121 } else {
2122 REGB1 = TAG_Bool(false);
2123 REGB2 = REGB1;
2124 }
2125 if (UNTAG_Bool(REGB2)) {
2126 /* ./syntax//typing.nit:318 */
2127 if (!once_value_2) {
2128 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2129 REGB2 = TAG_Int(80);
2130 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
2131 once_value_2 = fra.me.REG[8];
2132 register_static_object(&once_value_2);
2133 } else fra.me.REG[8] = once_value_2;
2134 fra.me.REG[8] = fra.me.REG[8];
2135 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2136 }
2137 }
2138 }
2139 }
2140 /* ./syntax//typing.nit:322 */
2141 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2142 if (UNTAG_Bool(REGB2)) {
2143 } else {
2144 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2145 if (UNTAG_Bool(REGB1)) {
2146 REGB1 = TAG_Bool(false);
2147 REGB2 = REGB1;
2148 } else {
2149 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2150 REGB2 = REGB1;
2151 }
2152 }
2153 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2154 if (UNTAG_Bool(REGB2)) {
2155 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2156 if (UNTAG_Bool(REGB2)) {
2157 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 322);
2158 }
2159 /* ./../lib/standard//collection//array.nit:232 */
2160 REGB2 = TAG_Int(0);
2161 /* ./../lib/standard//collection//array.nit:233 */
2162 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2163 if (UNTAG_Bool(REGB1)) {
2164 } else {
2165 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
2166 }
2167 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2168 /* ./../lib/standard//collection//array.nit:234 */
2169 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2170 /* ./../lib/standard//collection//array.nit:235 */
2171 while(1) {
2172 /* ./../lib/standard//collection//array.nit:23 */
2173 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2174 if (UNTAG_Bool(REGB1)) {
2175 } else {
2176 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
2177 }
2178 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2179 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2180 if (UNTAG_Bool(REGB0)) {
2181 } else {
2182 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2183 }
2184 /* ./../lib/standard//kernel.nit:215 */
2185 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2186 /* ./../lib/standard//collection//array.nit:235 */
2187 if (UNTAG_Bool(REGB1)) {
2188 /* ./../lib/standard//collection//array.nit:236 */
2189 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2190 if (UNTAG_Bool(REGB1)) {
2191 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
2192 }
2193 /* ./../lib/standard//collection//array.nit:652 */
2194 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2195 /* ./syntax//typing.nit:323 */
2196 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2197 /* ./../lib/standard//collection//array.nit:237 */
2198 REGB1 = TAG_Int(1);
2199 /* ./../lib/standard//kernel.nit:218 */
2200 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2201 /* ./../lib/standard//collection//array.nit:237 */
2202 REGB2 = REGB1;
2203 } else {
2204 /* ./../lib/standard//collection//array.nit:235 */
2205 goto label3;
2206 }
2207 }
2208 label3: while(0);
2209 }
2210 /* ./syntax//typing.nit:326 */
2211 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2212 /* ./syntax//typing.nit:327 */
2213 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2214 /* ./syntax//typing.nit:328 */
2215 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2216 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2217 stack_frame_head = fra.me.prev;
2218 return;
2219 }
2220 val_t syntax___typing___AType___stype(val_t p0){
2221 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2222 val_t REGB0;
2223 val_t tmp;
2224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2225 fra.me.file = LOCATE_syntax___typing;
2226 fra.me.line = 333;
2227 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2228 fra.me.has_broke = 0;
2229 fra.me.REG_size = 2;
2230 fra.me.REG[0] = NIT_NULL;
2231 fra.me.REG[1] = NIT_NULL;
2232 fra.me.REG[0] = p0;
2233 /* ./syntax//typing.nit:333 */
2234 fra.me.REG[1] = fra.me.REG[0];
2235 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2236 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2237 if (UNTAG_Bool(REGB0)) {
2238 } else {
2239 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 333);
2240 }
2241 goto label1;
2242 label1: while(0);
2243 stack_frame_head = fra.me.prev;
2244 return fra.me.REG[1];
2245 }
2246 val_t syntax___typing___AType___is_typed(val_t p0){
2247 struct {struct stack_frame_t me;} fra;
2248 val_t REGB0;
2249 val_t REGB1;
2250 val_t tmp;
2251 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2252 fra.me.file = LOCATE_syntax___typing;
2253 fra.me.line = 334;
2254 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2255 fra.me.has_broke = 0;
2256 fra.me.REG_size = 1;
2257 fra.me.REG[0] = NIT_NULL;
2258 fra.me.REG[0] = p0;
2259 /* ./syntax//typing.nit:334 */
2260 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2261 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2262 if (UNTAG_Bool(REGB0)) {
2263 } else {
2264 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2265 if (UNTAG_Bool(REGB1)) {
2266 REGB1 = TAG_Bool(false);
2267 REGB0 = REGB1;
2268 } else {
2269 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2270 REGB0 = REGB1;
2271 }
2272 }
2273 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2274 goto label1;
2275 label1: while(0);
2276 stack_frame_head = fra.me.prev;
2277 return REGB0;
2278 }
2279 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2280 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2281 val_t tmp;
2282 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2283 fra.me.file = LOCATE_syntax___typing;
2284 fra.me.line = 337;
2285 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2286 fra.me.has_broke = 0;
2287 fra.me.REG_size = 2;
2288 fra.me.REG[0] = NIT_NULL;
2289 fra.me.REG[1] = NIT_NULL;
2290 fra.me.REG[0] = p0;
2291 fra.me.REG[1] = p1;
2292 /* ./syntax//typing.nit:339 */
2293 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2294 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2295 stack_frame_head = fra.me.prev;
2296 return;
2297 }
2298 val_t syntax___typing___AExpr___is_typed(val_t p0){
2299 struct {struct stack_frame_t me;} fra;
2300 val_t REGB0;
2301 val_t tmp;
2302 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2303 fra.me.file = LOCATE_syntax___typing;
2304 fra.me.line = 344;
2305 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2306 fra.me.has_broke = 0;
2307 fra.me.REG_size = 1;
2308 fra.me.REG[0] = NIT_NULL;
2309 fra.me.REG[0] = p0;
2310 /* ./syntax//typing.nit:344 */
2311 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2312 if (UNTAG_Bool(REGB0)) {
2313 } else {
2314 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 344);
2315 }
2316 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2317 stack_frame_head = fra.me.prev;
2318 return REGB0;
2319 }
2320 val_t syntax___typing___AExpr___is_statement(val_t p0){
2321 struct {struct stack_frame_t me;} fra;
2322 val_t REGB0;
2323 val_t REGB1;
2324 val_t tmp;
2325 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2326 fra.me.file = LOCATE_syntax___typing;
2327 fra.me.line = 345;
2328 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
2329 fra.me.has_broke = 0;
2330 fra.me.REG_size = 1;
2331 fra.me.REG[0] = NIT_NULL;
2332 fra.me.REG[0] = p0;
2333 /* ./syntax//typing.nit:345 */
2334 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2335 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2336 if (UNTAG_Bool(REGB0)) {
2337 } else {
2338 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2339 if (UNTAG_Bool(REGB1)) {
2340 REGB1 = TAG_Bool(false);
2341 REGB0 = REGB1;
2342 } else {
2343 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2344 REGB0 = REGB1;
2345 }
2346 }
2347 goto label1;
2348 label1: while(0);
2349 stack_frame_head = fra.me.prev;
2350 return REGB0;
2351 }
2352 val_t syntax___typing___AExpr___stype(val_t p0){
2353 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2354 val_t REGB0;
2355 val_t tmp;
2356 static val_t once_value_1; /* Once value */
2357 static val_t once_value_2; /* Once value */
2358 static val_t once_value_3; /* Once value */
2359 static val_t once_value_4; /* Once value */
2360 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2361 fra.me.file = LOCATE_syntax___typing;
2362 fra.me.line = 346;
2363 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2364 fra.me.has_broke = 0;
2365 fra.me.REG_size = 4;
2366 fra.me.REG[0] = NIT_NULL;
2367 fra.me.REG[1] = NIT_NULL;
2368 fra.me.REG[2] = NIT_NULL;
2369 fra.me.REG[3] = NIT_NULL;
2370 fra.me.REG[0] = p0;
2371 /* ./syntax//typing.nit:346 */
2372 fra.me.REG[1] = fra.me.REG[0];
2373 /* ./syntax//typing.nit:348 */
2374 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2375 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2376 if (UNTAG_Bool(REGB0)) {
2377 /* ./syntax//typing.nit:349 */
2378 REGB0 = TAG_Int(3);
2379 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2380 if (!once_value_1) {
2381 fra.me.REG[3] = BOX_NativeString("");
2382 REGB0 = TAG_Int(0);
2383 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2384 once_value_1 = fra.me.REG[3];
2385 register_static_object(&once_value_1);
2386 } else fra.me.REG[3] = once_value_1;
2387 fra.me.REG[3] = fra.me.REG[3];
2388 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2389 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2390 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2391 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2392 if (!once_value_2) {
2393 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2394 REGB0 = TAG_Int(14);
2395 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2396 once_value_2 = fra.me.REG[3];
2397 register_static_object(&once_value_2);
2398 } else fra.me.REG[3] = once_value_2;
2399 fra.me.REG[3] = fra.me.REG[3];
2400 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2401 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2402 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2403 /* ./syntax//typing.nit:350 */
2404 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 350);
2405 }
2406 /* ./syntax//typing.nit:352 */
2407 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2408 if (UNTAG_Bool(REGB0)) {
2409 /* ./syntax//typing.nit:353 */
2410 REGB0 = TAG_Int(3);
2411 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2412 if (!once_value_3) {
2413 fra.me.REG[3] = BOX_NativeString("");
2414 REGB0 = TAG_Int(0);
2415 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2416 once_value_3 = fra.me.REG[3];
2417 register_static_object(&once_value_3);
2418 } else fra.me.REG[3] = once_value_3;
2419 fra.me.REG[3] = fra.me.REG[3];
2420 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2421 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2422 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2424 if (!once_value_4) {
2425 fra.me.REG[3] = BOX_NativeString(": is_statement");
2426 REGB0 = TAG_Int(14);
2427 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2428 once_value_4 = fra.me.REG[3];
2429 register_static_object(&once_value_4);
2430 } else fra.me.REG[3] = once_value_4;
2431 fra.me.REG[3] = fra.me.REG[3];
2432 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2433 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2434 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2435 /* ./syntax//typing.nit:354 */
2436 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 354);
2437 }
2438 /* ./syntax//typing.nit:356 */
2439 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2440 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2441 if (UNTAG_Bool(REGB0)) {
2442 } else {
2443 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 356);
2444 }
2445 goto label5;
2446 label5: while(0);
2447 stack_frame_head = fra.me.prev;
2448 return fra.me.REG[1];
2449 }
2450 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2451 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2452 val_t REGB0;
2453 val_t tmp;
2454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2455 fra.me.file = LOCATE_syntax___typing;
2456 fra.me.line = 360;
2457 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2458 fra.me.has_broke = 0;
2459 fra.me.REG_size = 2;
2460 fra.me.REG[0] = NIT_NULL;
2461 fra.me.REG[1] = NIT_NULL;
2462 fra.me.REG[0] = p0;
2463 fra.me.REG[1] = p1;
2464 /* ./syntax//typing.nit:363 */
2465 REGB0 = TAG_Bool(true);
2466 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2467 stack_frame_head = fra.me.prev;
2468 return;
2469 }
2470 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2471 struct {struct stack_frame_t me;} fra;
2472 val_t REGB0;
2473 val_t tmp;
2474 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2475 fra.me.file = LOCATE_syntax___typing;
2476 fra.me.line = 366;
2477 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2478 fra.me.has_broke = 0;
2479 fra.me.REG_size = 1;
2480 fra.me.REG[0] = NIT_NULL;
2481 fra.me.REG[0] = p0;
2482 /* ./syntax//typing.nit:367 */
2483 REGB0 = TAG_Bool(false);
2484 goto label1;
2485 label1: while(0);
2486 stack_frame_head = fra.me.prev;
2487 return REGB0;
2488 }
2489 val_t syntax___typing___AExpr___is_self(val_t p0){
2490 struct {struct stack_frame_t me;} fra;
2491 val_t REGB0;
2492 val_t tmp;
2493 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2494 fra.me.file = LOCATE_syntax___typing;
2495 fra.me.line = 369;
2496 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2497 fra.me.has_broke = 0;
2498 fra.me.REG_size = 1;
2499 fra.me.REG[0] = NIT_NULL;
2500 fra.me.REG[0] = p0;
2501 /* ./syntax//typing.nit:370 */
2502 REGB0 = TAG_Bool(false);
2503 goto label1;
2504 label1: while(0);
2505 stack_frame_head = fra.me.prev;
2506 return REGB0;
2507 }
2508 val_t syntax___typing___AExpr___its_variable(val_t p0){
2509 struct {struct stack_frame_t me;} fra;
2510 val_t tmp;
2511 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2512 fra.me.file = LOCATE_syntax___typing;
2513 fra.me.line = 372;
2514 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2515 fra.me.has_broke = 0;
2516 fra.me.REG_size = 1;
2517 fra.me.REG[0] = NIT_NULL;
2518 fra.me.REG[0] = p0;
2519 /* ./syntax//typing.nit:373 */
2520 fra.me.REG[0] = NIT_NULL;
2521 goto label1;
2522 label1: while(0);
2523 stack_frame_head = fra.me.prev;
2524 return fra.me.REG[0];
2525 }
2526 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2527 struct {struct stack_frame_t me;} fra;
2528 val_t tmp;
2529 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2530 fra.me.file = LOCATE_syntax___typing;
2531 fra.me.line = 375;
2532 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2533 fra.me.has_broke = 0;
2534 fra.me.REG_size = 1;
2535 fra.me.REG[0] = NIT_NULL;
2536 fra.me.REG[0] = p0;
2537 /* ./syntax//typing.nit:375 */
2538 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2539 stack_frame_head = fra.me.prev;
2540 return fra.me.REG[0];
2541 }
2542 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2543 struct {struct stack_frame_t me;} fra;
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 = 378;
2548 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2549 fra.me.has_broke = 0;
2550 fra.me.REG_size = 1;
2551 fra.me.REG[0] = NIT_NULL;
2552 fra.me.REG[0] = p0;
2553 /* ./syntax//typing.nit:378 */
2554 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2555 stack_frame_head = fra.me.prev;
2556 return fra.me.REG[0];
2557 }
2558 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2559 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2560 val_t REGB0;
2561 val_t tmp;
2562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2563 fra.me.file = LOCATE_syntax___typing;
2564 fra.me.line = 384;
2565 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2566 fra.me.has_broke = 0;
2567 fra.me.REG_size = 2;
2568 fra.me.REG[0] = NIT_NULL;
2569 fra.me.REG[1] = NIT_NULL;
2570 fra.me.REG[0] = p0;
2571 /* ./syntax//typing.nit:384 */
2572 fra.me.REG[1] = fra.me.REG[0];
2573 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2574 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2575 if (UNTAG_Bool(REGB0)) {
2576 } else {
2577 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 384);
2578 }
2579 goto label1;
2580 label1: while(0);
2581 stack_frame_head = fra.me.prev;
2582 return fra.me.REG[1];
2583 }
2584 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2585 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2586 val_t REGB0;
2587 val_t REGB1;
2588 val_t tmp;
2589 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2590 fra.me.file = LOCATE_syntax___typing;
2591 fra.me.line = 386;
2592 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2593 fra.me.has_broke = 0;
2594 fra.me.REG_size = 5;
2595 fra.me.REG[0] = NIT_NULL;
2596 fra.me.REG[1] = NIT_NULL;
2597 fra.me.REG[2] = NIT_NULL;
2598 fra.me.REG[3] = NIT_NULL;
2599 fra.me.REG[4] = NIT_NULL;
2600 fra.me.REG[0] = p0;
2601 fra.me.REG[1] = p1;
2602 /* ./syntax//typing.nit:388 */
2603 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2604 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2605 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2606 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2607 /* ./syntax//typing.nit:389 */
2608 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2609 /* ./syntax//typing.nit:390 */
2610 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2611 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2612 /* ./syntax//typing.nit:391 */
2613 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2614 /* ./syntax//typing.nit:392 */
2615 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2616 if (UNTAG_Bool(REGB0)) {
2617 } else {
2618 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2619 if (UNTAG_Bool(REGB1)) {
2620 REGB1 = TAG_Bool(false);
2621 REGB0 = REGB1;
2622 } else {
2623 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2624 REGB0 = REGB1;
2625 }
2626 }
2627 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2628 if (UNTAG_Bool(REGB0)) {
2629 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2630 }
2631 /* ./syntax//typing.nit:394 */
2632 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2633 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2634 if (UNTAG_Bool(REGB0)) {
2635 } else {
2636 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2637 if (UNTAG_Bool(REGB1)) {
2638 REGB1 = TAG_Bool(false);
2639 REGB0 = REGB1;
2640 } else {
2641 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2642 REGB0 = REGB1;
2643 }
2644 }
2645 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2646 if (UNTAG_Bool(REGB0)) {
2647 /* ./syntax//typing.nit:395 */
2648 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2649 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2650 if (UNTAG_Bool(REGB0)) {
2651 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 395);
2652 }
2653 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2654 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2655 if (UNTAG_Bool(REGB0)) {
2656 goto label1;
2657 }
2658 /* ./syntax//typing.nit:396 */
2659 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2660 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2661 if (UNTAG_Bool(REGB0)) {
2662 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 396);
2663 }
2664 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2665 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2666 /* ./syntax//typing.nit:397 */
2667 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2668 if (UNTAG_Bool(REGB0)) {
2669 } else {
2670 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2671 if (UNTAG_Bool(REGB1)) {
2672 REGB1 = TAG_Bool(false);
2673 REGB0 = REGB1;
2674 } else {
2675 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2676 REGB0 = REGB1;
2677 }
2678 }
2679 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2680 if (UNTAG_Bool(REGB0)) {
2681 /* ./syntax//typing.nit:398 */
2682 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2683 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2684 }
2685 } else {
2686 /* ./syntax//typing.nit:400 */
2687 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2688 if (UNTAG_Bool(REGB0)) {
2689 } else {
2690 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2691 if (UNTAG_Bool(REGB1)) {
2692 REGB1 = TAG_Bool(false);
2693 REGB0 = REGB1;
2694 } else {
2695 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2696 REGB0 = REGB1;
2697 }
2698 }
2699 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2700 if (UNTAG_Bool(REGB0)) {
2701 /* ./syntax//typing.nit:401 */
2702 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2703 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2704 if (UNTAG_Bool(REGB0)) {
2705 goto label1;
2706 }
2707 /* ./syntax//typing.nit:402 */
2708 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2709 if (UNTAG_Bool(REGB0)) {
2710 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 402);
2711 }
2712 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2713 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2714 } else {
2715 /* ./syntax//typing.nit:404 */
2716 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2717 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2718 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2719 }
2720 }
2721 /* ./syntax//typing.nit:406 */
2722 REGB0 = TAG_Bool(true);
2723 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2724 label1: while(0);
2725 stack_frame_head = fra.me.prev;
2726 return;
2727 }
2728 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2729 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2730 val_t REGB0;
2731 val_t tmp;
2732 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2733 fra.me.file = LOCATE_syntax___typing;
2734 fra.me.line = 411;
2735 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2736 fra.me.has_broke = 0;
2737 fra.me.REG_size = 3;
2738 fra.me.REG[0] = NIT_NULL;
2739 fra.me.REG[1] = NIT_NULL;
2740 fra.me.REG[2] = NIT_NULL;
2741 fra.me.REG[0] = p0;
2742 fra.me.REG[1] = p1;
2743 /* ./syntax//typing.nit:413 */
2744 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2745 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));
2746 /* ./syntax//typing.nit:422 */
2747 REGB0 = TAG_Bool(true);
2748 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2749 stack_frame_head = fra.me.prev;
2750 return;
2751 }
2752 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){
2753 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2754 val_t REGB0;
2755 fun_t CREG[1];
2756 val_t tmp;
2757 static val_t once_value_2; /* Once value */
2758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2759 fra.me.file = LOCATE_syntax___typing;
2760 fra.me.line = 0;
2761 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2762 fra.me.has_broke = 0;
2763 fra.me.REG_size = 2;
2764 fra.me.REG[0] = NIT_NULL;
2765 fra.me.REG[1] = NIT_NULL;
2766 fra.me.closure_ctx = closctx_param;
2767 fra.me.closure_funs = CREG;
2768 fra.me.REG[0] = p0;
2769 CREG[0] = clos_fun0;
2770 /* ./syntax//typing.nit:414 */
2771 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2772 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2773 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2774 if (UNTAG_Bool(REGB0)) {
2775 /* ./syntax//typing.nit:415 */
2776 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2777 } else {
2778 /* ./syntax//typing.nit:416 */
2779 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2780 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
2781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2782 if (UNTAG_Bool(REGB0)) {
2783 /* ./syntax//typing.nit:417 */
2784 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2785 REGB0 = TAG_Bool(true);
2786 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
2787 /* ./syntax//typing.nit:418 */
2788 if (!once_value_2) {
2789 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
2790 REGB0 = TAG_Int(29);
2791 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
2792 once_value_2 = fra.me.REG[1];
2793 register_static_object(&once_value_2);
2794 } else fra.me.REG[1] = once_value_2;
2795 fra.me.REG[1] = fra.me.REG[1];
2796 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
2797 }
2798 }
2799 stack_frame_head = fra.me.prev;
2800 return;
2801 }
2802 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2803 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2804 val_t REGB0;
2805 val_t REGB1;
2806 val_t tmp;
2807 static val_t once_value_1; /* Once value */
2808 static val_t once_value_3; /* Once value */
2809 static val_t once_value_4; /* Once value */
2810 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2811 fra.me.file = LOCATE_syntax___typing;
2812 fra.me.line = 427;
2813 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
2814 fra.me.has_broke = 0;
2815 fra.me.REG_size = 5;
2816 fra.me.REG[0] = NIT_NULL;
2817 fra.me.REG[1] = NIT_NULL;
2818 fra.me.REG[2] = NIT_NULL;
2819 fra.me.REG[3] = NIT_NULL;
2820 fra.me.REG[4] = NIT_NULL;
2821 fra.me.REG[0] = p0;
2822 fra.me.REG[1] = p1;
2823 /* ./syntax//typing.nit:429 */
2824 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2825 /* ./syntax//typing.nit:430 */
2826 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2827 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2828 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2829 if (UNTAG_Bool(REGB0)) {
2830 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 430);
2831 }
2832 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2833 /* ./syntax//typing.nit:432 */
2834 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
2835 if (UNTAG_Bool(REGB0)) {
2836 /* ./syntax//typing.nit:433 */
2837 if (!once_value_1) {
2838 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
2839 REGB0 = TAG_Int(82);
2840 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2841 once_value_1 = fra.me.REG[3];
2842 register_static_object(&once_value_1);
2843 } else fra.me.REG[3] = once_value_1;
2844 fra.me.REG[3] = fra.me.REG[3];
2845 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2846 /* ./syntax//typing.nit:434 */
2847 goto label2;
2848 }
2849 /* ./syntax//typing.nit:437 */
2850 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2851 /* ./syntax//typing.nit:438 */
2852 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2853 if (UNTAG_Bool(REGB0)) {
2854 } else {
2855 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2856 if (UNTAG_Bool(REGB1)) {
2857 REGB1 = TAG_Bool(false);
2858 REGB0 = REGB1;
2859 } else {
2860 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2861 REGB0 = REGB1;
2862 }
2863 }
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 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2878 } else {
2879 REGB1 = TAG_Bool(false);
2880 REGB0 = REGB1;
2881 }
2882 if (UNTAG_Bool(REGB0)) {
2883 /* ./syntax//typing.nit:439 */
2884 if (!once_value_3) {
2885 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2886 REGB0 = TAG_Int(42);
2887 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2888 once_value_3 = fra.me.REG[4];
2889 register_static_object(&once_value_3);
2890 } else fra.me.REG[4] = once_value_3;
2891 fra.me.REG[4] = fra.me.REG[4];
2892 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2893 } else {
2894 /* ./syntax//typing.nit:440 */
2895 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2896 if (UNTAG_Bool(REGB0)) {
2897 } else {
2898 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2899 if (UNTAG_Bool(REGB1)) {
2900 REGB1 = TAG_Bool(false);
2901 REGB0 = REGB1;
2902 } else {
2903 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2904 REGB0 = REGB1;
2905 }
2906 }
2907 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2908 if (UNTAG_Bool(REGB0)) {
2909 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2910 if (UNTAG_Bool(REGB0)) {
2911 } else {
2912 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2913 if (UNTAG_Bool(REGB1)) {
2914 REGB1 = TAG_Bool(false);
2915 REGB0 = REGB1;
2916 } else {
2917 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2918 REGB0 = REGB1;
2919 }
2920 }
2921 } else {
2922 REGB1 = TAG_Bool(false);
2923 REGB0 = REGB1;
2924 }
2925 if (UNTAG_Bool(REGB0)) {
2926 /* ./syntax//typing.nit:441 */
2927 if (!once_value_4) {
2928 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
2929 REGB0 = TAG_Int(40);
2930 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2931 once_value_4 = fra.me.REG[4];
2932 register_static_object(&once_value_4);
2933 } else fra.me.REG[4] = once_value_4;
2934 fra.me.REG[4] = fra.me.REG[4];
2935 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2936 } else {
2937 /* ./syntax//typing.nit:442 */
2938 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2939 if (UNTAG_Bool(REGB0)) {
2940 } else {
2941 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2942 if (UNTAG_Bool(REGB1)) {
2943 REGB1 = TAG_Bool(false);
2944 REGB0 = REGB1;
2945 } else {
2946 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2947 REGB0 = REGB1;
2948 }
2949 }
2950 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2951 if (UNTAG_Bool(REGB0)) {
2952 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2953 if (UNTAG_Bool(REGB0)) {
2954 } else {
2955 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2956 if (UNTAG_Bool(REGB1)) {
2957 REGB1 = TAG_Bool(false);
2958 REGB0 = REGB1;
2959 } else {
2960 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2961 REGB0 = REGB1;
2962 }
2963 }
2964 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2965 } else {
2966 REGB1 = TAG_Bool(false);
2967 REGB0 = REGB1;
2968 }
2969 if (UNTAG_Bool(REGB0)) {
2970 /* ./syntax//typing.nit:443 */
2971 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2972 }
2973 }
2974 }
2975 /* ./syntax//typing.nit:445 */
2976 REGB0 = TAG_Bool(true);
2977 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2978 label2: while(0);
2979 stack_frame_head = fra.me.prev;
2980 return;
2981 }
2982 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
2983 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2984 val_t REGB0;
2985 val_t REGB1;
2986 val_t tmp;
2987 static val_t once_value_2; /* Once value */
2988 static val_t once_value_3; /* Once value */
2989 static val_t once_value_4; /* Once value */
2990 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2991 fra.me.file = LOCATE_syntax___typing;
2992 fra.me.line = 450;
2993 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
2994 fra.me.has_broke = 0;
2995 fra.me.REG_size = 5;
2996 fra.me.REG[0] = NIT_NULL;
2997 fra.me.REG[1] = NIT_NULL;
2998 fra.me.REG[2] = NIT_NULL;
2999 fra.me.REG[3] = NIT_NULL;
3000 fra.me.REG[4] = NIT_NULL;
3001 fra.me.REG[0] = p0;
3002 fra.me.REG[1] = p1;
3003 /* ./syntax//typing.nit:450 */
3004 fra.me.REG[2] = fra.me.REG[0];
3005 /* ./syntax//typing.nit:452 */
3006 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3007 /* ./syntax//typing.nit:453 */
3008 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3009 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3010 /* ./syntax//typing.nit:454 */
3011 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3012 if (UNTAG_Bool(REGB0)) {
3013 } else {
3014 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3015 if (UNTAG_Bool(REGB1)) {
3016 REGB1 = TAG_Bool(false);
3017 REGB0 = REGB1;
3018 } else {
3019 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3020 REGB0 = REGB1;
3021 }
3022 }
3023 if (UNTAG_Bool(REGB0)) {
3024 goto label1;
3025 }
3026 /* ./syntax//typing.nit:456 */
3027 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3028 if (UNTAG_Bool(REGB0)) {
3029 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 456);
3030 }
3031 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[3])(fra.me.REG[3]);
3032 if (UNTAG_Bool(REGB0)) {
3033 /* ./syntax//typing.nit:457 */
3034 if (!once_value_2) {
3035 fra.me.REG[4] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3036 REGB0 = TAG_Int(39);
3037 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3038 once_value_2 = fra.me.REG[4];
3039 register_static_object(&once_value_2);
3040 } else fra.me.REG[4] = once_value_2;
3041 fra.me.REG[4] = fra.me.REG[4];
3042 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3043 /* ./syntax//typing.nit:458 */
3044 goto label1;
3045 }
3046 /* ./syntax//typing.nit:461 */
3047 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3048 if (UNTAG_Bool(REGB0)) {
3049 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 461);
3050 }
3051 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[3])(fra.me.REG[3]);
3052 /* ./syntax//typing.nit:462 */
3053 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3054 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3055 if (UNTAG_Bool(REGB0)) {
3056 } else {
3057 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3058 if (UNTAG_Bool(REGB1)) {
3059 REGB1 = TAG_Bool(false);
3060 REGB0 = REGB1;
3061 } else {
3062 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3063 REGB0 = REGB1;
3064 }
3065 }
3066 if (UNTAG_Bool(REGB0)) {
3067 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3068 if (UNTAG_Bool(REGB0)) {
3069 } else {
3070 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3071 if (UNTAG_Bool(REGB1)) {
3072 REGB1 = TAG_Bool(false);
3073 REGB0 = REGB1;
3074 } else {
3075 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3076 REGB0 = REGB1;
3077 }
3078 }
3079 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3080 } else {
3081 REGB1 = TAG_Bool(false);
3082 REGB0 = REGB1;
3083 }
3084 if (UNTAG_Bool(REGB0)) {
3085 /* ./syntax//typing.nit:463 */
3086 if (!once_value_3) {
3087 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3088 REGB0 = TAG_Int(52);
3089 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3090 once_value_3 = fra.me.REG[4];
3091 register_static_object(&once_value_3);
3092 } else fra.me.REG[4] = once_value_3;
3093 fra.me.REG[4] = fra.me.REG[4];
3094 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3095 } else {
3096 /* ./syntax//typing.nit:464 */
3097 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3098 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3099 if (UNTAG_Bool(REGB0)) {
3100 } else {
3101 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3102 if (UNTAG_Bool(REGB1)) {
3103 REGB1 = TAG_Bool(false);
3104 REGB0 = REGB1;
3105 } else {
3106 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3107 REGB0 = REGB1;
3108 }
3109 }
3110 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3111 if (UNTAG_Bool(REGB0)) {
3112 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3113 if (UNTAG_Bool(REGB0)) {
3114 } else {
3115 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3116 if (UNTAG_Bool(REGB1)) {
3117 REGB1 = TAG_Bool(false);
3118 REGB0 = REGB1;
3119 } else {
3120 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3121 REGB0 = REGB1;
3122 }
3123 }
3124 } else {
3125 REGB1 = TAG_Bool(false);
3126 REGB0 = REGB1;
3127 }
3128 if (UNTAG_Bool(REGB0)) {
3129 /* ./syntax//typing.nit:465 */
3130 if (!once_value_4) {
3131 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3132 REGB0 = TAG_Int(53);
3133 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3134 once_value_4 = fra.me.REG[4];
3135 register_static_object(&once_value_4);
3136 } else fra.me.REG[4] = once_value_4;
3137 fra.me.REG[4] = fra.me.REG[4];
3138 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3139 } else {
3140 /* ./syntax//typing.nit:466 */
3141 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3142 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3143 if (UNTAG_Bool(REGB0)) {
3144 } else {
3145 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3146 if (UNTAG_Bool(REGB1)) {
3147 REGB1 = TAG_Bool(false);
3148 REGB0 = REGB1;
3149 } else {
3150 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3151 REGB0 = REGB1;
3152 }
3153 }
3154 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3155 if (UNTAG_Bool(REGB0)) {
3156 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3157 if (UNTAG_Bool(REGB0)) {
3158 } else {
3159 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3160 if (UNTAG_Bool(REGB1)) {
3161 REGB1 = TAG_Bool(false);
3162 REGB0 = REGB1;
3163 } else {
3164 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3165 REGB0 = REGB1;
3166 }
3167 }
3168 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3169 } else {
3170 REGB1 = TAG_Bool(false);
3171 REGB0 = REGB1;
3172 }
3173 if (UNTAG_Bool(REGB0)) {
3174 /* ./syntax//typing.nit:467 */
3175 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3176 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
3177 if (UNTAG_Bool(REGB0)) {
3178 } else {
3179 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 467);
3180 }
3181 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
3182 }
3183 }
3184 }
3185 /* ./syntax//typing.nit:469 */
3186 REGB0 = TAG_Bool(true);
3187 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3188 label1: while(0);
3189 stack_frame_head = fra.me.prev;
3190 return;
3191 }
3192 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3193 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3194 val_t REGB0;
3195 val_t REGB1;
3196 val_t tmp;
3197 static val_t once_value_2; /* Once value */
3198 static val_t once_value_3; /* Once value */
3199 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3200 fra.me.file = LOCATE_syntax___typing;
3201 fra.me.line = 474;
3202 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3203 fra.me.has_broke = 0;
3204 fra.me.REG_size = 6;
3205 fra.me.REG[0] = NIT_NULL;
3206 fra.me.REG[1] = NIT_NULL;
3207 fra.me.REG[2] = NIT_NULL;
3208 fra.me.REG[3] = NIT_NULL;
3209 fra.me.REG[4] = NIT_NULL;
3210 fra.me.REG[5] = NIT_NULL;
3211 fra.me.REG[0] = p0;
3212 fra.me.REG[1] = p1;
3213 /* ./syntax//typing.nit:474 */
3214 fra.me.REG[2] = fra.me.REG[0];
3215 /* ./syntax//typing.nit:476 */
3216 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3217 /* ./syntax//typing.nit:477 */
3218 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3219 /* ./syntax//typing.nit:478 */
3220 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3221 fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3222 /* ./syntax//typing.nit:479 */
3223 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3224 if (UNTAG_Bool(REGB0)) {
3225 } else {
3226 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3227 if (UNTAG_Bool(REGB1)) {
3228 REGB1 = TAG_Bool(false);
3229 REGB0 = REGB1;
3230 } else {
3231 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3232 REGB0 = REGB1;
3233 }
3234 }
3235 if (UNTAG_Bool(REGB0)) {
3236 goto label1;
3237 }
3238 /* ./syntax//typing.nit:481 */
3239 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3240 if (UNTAG_Bool(REGB0)) {
3241 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 481);
3242 }
3243 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[4])(fra.me.REG[4]);
3244 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3245 /* ./syntax//typing.nit:483 */
3246 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3247 if (UNTAG_Bool(REGB0)) {
3248 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 483);
3249 }
3250 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[4])(fra.me.REG[4]);
3251 /* ./syntax//typing.nit:484 */
3252 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3253 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3254 if (UNTAG_Bool(REGB0)) {
3255 } else {
3256 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3257 if (UNTAG_Bool(REGB1)) {
3258 REGB1 = TAG_Bool(false);
3259 REGB0 = REGB1;
3260 } else {
3261 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3262 REGB0 = REGB1;
3263 }
3264 }
3265 if (UNTAG_Bool(REGB0)) {
3266 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3267 if (UNTAG_Bool(REGB0)) {
3268 } else {
3269 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3270 if (UNTAG_Bool(REGB1)) {
3271 REGB1 = TAG_Bool(false);
3272 REGB0 = REGB1;
3273 } else {
3274 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3275 REGB0 = REGB1;
3276 }
3277 }
3278 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3279 } else {
3280 REGB1 = TAG_Bool(false);
3281 REGB0 = REGB1;
3282 }
3283 if (UNTAG_Bool(REGB0)) {
3284 /* ./syntax//typing.nit:485 */
3285 if (!once_value_2) {
3286 fra.me.REG[3] = BOX_NativeString("Error: break with a value required in this block.");
3287 REGB0 = TAG_Int(49);
3288 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3289 once_value_2 = fra.me.REG[3];
3290 register_static_object(&once_value_2);
3291 } else fra.me.REG[3] = once_value_2;
3292 fra.me.REG[3] = fra.me.REG[3];
3293 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3294 } else {
3295 /* ./syntax//typing.nit:486 */
3296 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3297 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3298 if (UNTAG_Bool(REGB0)) {
3299 } else {
3300 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3301 if (UNTAG_Bool(REGB1)) {
3302 REGB1 = TAG_Bool(false);
3303 REGB0 = REGB1;
3304 } else {
3305 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3306 REGB0 = REGB1;
3307 }
3308 }
3309 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3310 if (UNTAG_Bool(REGB0)) {
3311 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3312 if (UNTAG_Bool(REGB0)) {
3313 } else {
3314 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3315 if (UNTAG_Bool(REGB1)) {
3316 REGB1 = TAG_Bool(false);
3317 REGB0 = REGB1;
3318 } else {
3319 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3320 REGB0 = REGB1;
3321 }
3322 }
3323 } else {
3324 REGB1 = TAG_Bool(false);
3325 REGB0 = REGB1;
3326 }
3327 if (UNTAG_Bool(REGB0)) {
3328 /* ./syntax//typing.nit:487 */
3329 if (!once_value_3) {
3330 fra.me.REG[3] = BOX_NativeString("Error: break without value required in this block.");
3331 REGB0 = TAG_Int(50);
3332 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3333 once_value_3 = fra.me.REG[3];
3334 register_static_object(&once_value_3);
3335 } else fra.me.REG[3] = once_value_3;
3336 fra.me.REG[3] = fra.me.REG[3];
3337 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3338 } else {
3339 /* ./syntax//typing.nit:488 */
3340 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3341 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3342 if (UNTAG_Bool(REGB0)) {
3343 } else {
3344 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3345 if (UNTAG_Bool(REGB1)) {
3346 REGB1 = TAG_Bool(false);
3347 REGB0 = REGB1;
3348 } else {
3349 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3350 REGB0 = REGB1;
3351 }
3352 }
3353 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3354 if (UNTAG_Bool(REGB0)) {
3355 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3356 if (UNTAG_Bool(REGB0)) {
3357 } else {
3358 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3359 if (UNTAG_Bool(REGB1)) {
3360 REGB1 = TAG_Bool(false);
3361 REGB0 = REGB1;
3362 } else {
3363 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3364 REGB0 = REGB1;
3365 }
3366 }
3367 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3368 } else {
3369 REGB1 = TAG_Bool(false);
3370 REGB0 = REGB1;
3371 }
3372 if (UNTAG_Bool(REGB0)) {
3373 /* ./syntax//typing.nit:490 */
3374 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3375 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*/;
3376 if (UNTAG_Bool(REGB0)) {
3377 } else {
3378 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 490);
3379 }
3380 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3381 if (UNTAG_Bool(REGB0)) {
3382 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 490);
3383 }
3384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3385 }
3386 }
3387 }
3388 /* ./syntax//typing.nit:492 */
3389 REGB0 = TAG_Bool(true);
3390 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3391 label1: while(0);
3392 stack_frame_head = fra.me.prev;
3393 return;
3394 }
3395 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3396 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3397 val_t REGB0;
3398 val_t tmp;
3399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3400 fra.me.file = LOCATE_syntax___typing;
3401 fra.me.line = 497;
3402 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3403 fra.me.has_broke = 0;
3404 fra.me.REG_size = 2;
3405 fra.me.REG[0] = NIT_NULL;
3406 fra.me.REG[1] = NIT_NULL;
3407 fra.me.REG[0] = p0;
3408 fra.me.REG[1] = p1;
3409 /* ./syntax//typing.nit:499 */
3410 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3411 /* ./syntax//typing.nit:500 */
3412 REGB0 = TAG_Bool(true);
3413 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3414 stack_frame_head = fra.me.prev;
3415 return;
3416 }
3417 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3418 struct {struct stack_frame_t me;} fra;
3419 val_t tmp;
3420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3421 fra.me.file = LOCATE_syntax___typing;
3422 fra.me.line = 507;
3423 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3424 fra.me.has_broke = 0;
3425 fra.me.REG_size = 1;
3426 fra.me.REG[0] = NIT_NULL;
3427 fra.me.REG[0] = p0;
3428 /* ./syntax//typing.nit:507 */
3429 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3430 stack_frame_head = fra.me.prev;
3431 return fra.me.REG[0];
3432 }
3433 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3434 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3435 val_t REGB0;
3436 val_t REGB1;
3437 val_t tmp;
3438 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3439 fra.me.file = LOCATE_syntax___typing;
3440 fra.me.line = 510;
3441 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3442 fra.me.has_broke = 0;
3443 fra.me.REG_size = 7;
3444 fra.me.REG[0] = NIT_NULL;
3445 fra.me.REG[1] = NIT_NULL;
3446 fra.me.REG[2] = NIT_NULL;
3447 fra.me.REG[3] = NIT_NULL;
3448 fra.me.REG[4] = NIT_NULL;
3449 fra.me.REG[5] = NIT_NULL;
3450 fra.me.REG[6] = NIT_NULL;
3451 fra.me.REG[0] = p0;
3452 fra.me.REG[1] = p1;
3453 fra.me.REG[2] = p2;
3454 fra.me.REG[3] = p3;
3455 REGB0 = p4;
3456 /* ./syntax//typing.nit:514 */
3457 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3458 /* ./syntax//typing.nit:515 */
3459 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3460 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3461 /* ./syntax//typing.nit:518 */
3462 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3463 /* ./syntax//typing.nit:519 */
3464 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3465 /* ./syntax//typing.nit:520 */
3466 if (UNTAG_Bool(REGB0)) {
3467 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3468 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3469 }
3470 /* ./syntax//typing.nit:523 */
3471 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3472 /* ./syntax//typing.nit:526 */
3473 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3474 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3475 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3476 if (UNTAG_Bool(REGB1)) {
3477 /* ./syntax//typing.nit:527 */
3478 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3479 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3480 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3481 }
3482 /* ./syntax//typing.nit:531 */
3483 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3484 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3485 if (UNTAG_Bool(REGB1)) {
3486 /* ./syntax//typing.nit:532 */
3487 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3488 /* ./syntax//typing.nit:533 */
3489 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3490 } else {
3491 /* ./syntax//typing.nit:535 */
3492 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3493 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]);
3494 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3495 }
3496 /* ./syntax//typing.nit:538 */
3497 if (UNTAG_Bool(REGB0)) {
3498 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3499 }
3500 /* ./syntax//typing.nit:539 */
3501 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3502 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3503 /* ./syntax//typing.nit:540 */
3504 REGB0 = TAG_Bool(true);
3505 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3506 stack_frame_head = fra.me.prev;
3507 return;
3508 }
3509 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3510 struct {struct stack_frame_t me;} fra;
3511 val_t tmp;
3512 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3513 fra.me.file = LOCATE_syntax___typing;
3514 fra.me.line = 543;
3515 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3516 fra.me.has_broke = 0;
3517 fra.me.REG_size = 0;
3518 /* ./syntax//typing.nit:543 */
3519 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 543);
3520 stack_frame_head = fra.me.prev;
3521 return;
3522 }
3523 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3524 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3525 val_t REGB0;
3526 val_t tmp;
3527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3528 fra.me.file = LOCATE_syntax___typing;
3529 fra.me.line = 549;
3530 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3531 fra.me.has_broke = 0;
3532 fra.me.REG_size = 4;
3533 fra.me.REG[0] = NIT_NULL;
3534 fra.me.REG[1] = NIT_NULL;
3535 fra.me.REG[2] = NIT_NULL;
3536 fra.me.REG[3] = NIT_NULL;
3537 fra.me.REG[0] = p0;
3538 fra.me.REG[1] = p1;
3539 /* ./syntax//typing.nit:551 */
3540 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3541 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3542 REGB0 = TAG_Bool(false);
3543 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);
3544 stack_frame_head = fra.me.prev;
3545 return;
3546 }
3547 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3548 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3549 val_t tmp;
3550 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3551 fra.me.file = LOCATE_syntax___typing;
3552 fra.me.line = 554;
3553 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3554 fra.me.has_broke = 0;
3555 fra.me.REG_size = 2;
3556 fra.me.REG[0] = NIT_NULL;
3557 fra.me.REG[1] = NIT_NULL;
3558 fra.me.REG[0] = p0;
3559 fra.me.REG[1] = p1;
3560 /* ./syntax//typing.nit:556 */
3561 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3562 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3563 stack_frame_head = fra.me.prev;
3564 return;
3565 }
3566 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3567 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3568 val_t REGB0;
3569 val_t tmp;
3570 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3571 fra.me.file = LOCATE_syntax___typing;
3572 fra.me.line = 561;
3573 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3574 fra.me.has_broke = 0;
3575 fra.me.REG_size = 5;
3576 fra.me.REG[0] = NIT_NULL;
3577 fra.me.REG[1] = NIT_NULL;
3578 fra.me.REG[2] = NIT_NULL;
3579 fra.me.REG[3] = NIT_NULL;
3580 fra.me.REG[4] = NIT_NULL;
3581 fra.me.REG[0] = p0;
3582 fra.me.REG[1] = p1;
3583 /* ./syntax//typing.nit:563 */
3584 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3585 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3586 /* ./syntax//typing.nit:564 */
3587 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3588 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3589 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3590 /* ./syntax//typing.nit:567 */
3591 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3592 /* ./syntax//typing.nit:568 */
3593 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3594 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3595 /* ./syntax//typing.nit:571 */
3596 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3597 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3598 /* ./syntax//typing.nit:574 */
3599 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3600 /* ./syntax//typing.nit:577 */
3601 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3602 /* ./syntax//typing.nit:578 */
3603 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3604 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3605 /* ./syntax//typing.nit:581 */
3606 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3607 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3608 /* ./syntax//typing.nit:584 */
3609 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3610 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3611 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]);
3612 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3613 /* ./syntax//typing.nit:585 */
3614 REGB0 = TAG_Bool(true);
3615 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3616 stack_frame_head = fra.me.prev;
3617 return;
3618 }
3619 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3620 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3621 val_t REGB0;
3622 val_t tmp;
3623 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3624 fra.me.file = LOCATE_syntax___typing;
3625 fra.me.line = 591;
3626 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
3627 fra.me.has_broke = 0;
3628 fra.me.REG_size = 4;
3629 fra.me.REG[0] = NIT_NULL;
3630 fra.me.REG[1] = NIT_NULL;
3631 fra.me.REG[2] = NIT_NULL;
3632 fra.me.REG[3] = NIT_NULL;
3633 fra.me.REG[0] = p0;
3634 fra.me.REG[1] = p1;
3635 /* ./syntax//typing.nit:593 */
3636 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3637 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3638 REGB0 = TAG_Bool(true);
3639 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);
3640 stack_frame_head = fra.me.prev;
3641 return;
3642 }
3643 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3644 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3645 val_t REGB0;
3646 val_t tmp;
3647 static val_t once_value_1; /* Once value */
3648 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3649 fra.me.file = LOCATE_syntax___typing;
3650 fra.me.line = 596;
3651 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
3652 fra.me.has_broke = 0;
3653 fra.me.REG_size = 5;
3654 fra.me.REG[0] = NIT_NULL;
3655 fra.me.REG[1] = NIT_NULL;
3656 fra.me.REG[2] = NIT_NULL;
3657 fra.me.REG[3] = NIT_NULL;
3658 fra.me.REG[4] = NIT_NULL;
3659 fra.me.REG[0] = p0;
3660 fra.me.REG[1] = p1;
3661 /* ./syntax//typing.nit:598 */
3662 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3663 /* ./syntax//typing.nit:601 */
3664 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3665 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3666 /* ./syntax//typing.nit:602 */
3667 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3668 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3669 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3670 /* ./syntax//typing.nit:604 */
3671 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3672 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
3673 if (UNTAG_Bool(REGB0)) {
3674 /* ./syntax//typing.nit:605 */
3675 if (!once_value_1) {
3676 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3677 REGB0 = TAG_Int(47);
3678 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3679 once_value_1 = fra.me.REG[4];
3680 register_static_object(&once_value_1);
3681 } else fra.me.REG[4] = once_value_1;
3682 fra.me.REG[4] = fra.me.REG[4];
3683 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3684 }
3685 /* ./syntax//typing.nit:609 */
3686 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3687 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3688 /* ./syntax//typing.nit:612 */
3689 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3690 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3691 /* ./syntax//typing.nit:615 */
3692 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3693 /* ./syntax//typing.nit:616 */
3694 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3695 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3696 /* ./syntax//typing.nit:617 */
3697 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3698 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3699 if (UNTAG_Bool(REGB0)) {
3700 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 617);
3701 }
3702 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3703 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3704 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3705 stack_frame_head = fra.me.prev;
3706 return;
3707 }
3708 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3709 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3710 val_t REGB0;
3711 val_t tmp;
3712 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3713 fra.me.file = LOCATE_syntax___typing;
3714 fra.me.line = 623;
3715 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
3716 fra.me.has_broke = 0;
3717 fra.me.REG_size = 4;
3718 fra.me.REG[0] = NIT_NULL;
3719 fra.me.REG[1] = NIT_NULL;
3720 fra.me.REG[2] = NIT_NULL;
3721 fra.me.REG[3] = NIT_NULL;
3722 fra.me.REG[0] = p0;
3723 fra.me.REG[1] = p1;
3724 /* ./syntax//typing.nit:625 */
3725 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3726 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3727 REGB0 = TAG_Bool(true);
3728 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);
3729 stack_frame_head = fra.me.prev;
3730 return;
3731 }
3732 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
3733 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3734 val_t tmp;
3735 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3736 fra.me.file = LOCATE_syntax___typing;
3737 fra.me.line = 628;
3738 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
3739 fra.me.has_broke = 0;
3740 fra.me.REG_size = 3;
3741 fra.me.REG[0] = NIT_NULL;
3742 fra.me.REG[1] = NIT_NULL;
3743 fra.me.REG[2] = NIT_NULL;
3744 fra.me.REG[0] = p0;
3745 fra.me.REG[1] = p1;
3746 /* ./syntax//typing.nit:631 */
3747 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3748 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3749 /* ./syntax//typing.nit:634 */
3750 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3751 stack_frame_head = fra.me.prev;
3752 return;
3753 }
3754 val_t syntax___typing___AForExpr___variables(val_t p0){
3755 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3756 val_t REGB0;
3757 val_t tmp;
3758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3759 fra.me.file = LOCATE_syntax___typing;
3760 fra.me.line = 641;
3761 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
3762 fra.me.has_broke = 0;
3763 fra.me.REG_size = 2;
3764 fra.me.REG[0] = NIT_NULL;
3765 fra.me.REG[1] = NIT_NULL;
3766 fra.me.REG[0] = p0;
3767 /* ./syntax//typing.nit:641 */
3768 fra.me.REG[1] = fra.me.REG[0];
3769 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
3770 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
3771 if (UNTAG_Bool(REGB0)) {
3772 } else {
3773 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 641);
3774 }
3775 goto label1;
3776 label1: while(0);
3777 stack_frame_head = fra.me.prev;
3778 return fra.me.REG[1];
3779 }
3780 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
3781 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3782 val_t REGB0;
3783 val_t tmp;
3784 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3785 fra.me.file = LOCATE_syntax___typing;
3786 fra.me.line = 643;
3787 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
3788 fra.me.has_broke = 0;
3789 fra.me.REG_size = 4;
3790 fra.me.REG[0] = NIT_NULL;
3791 fra.me.REG[1] = NIT_NULL;
3792 fra.me.REG[2] = NIT_NULL;
3793 fra.me.REG[3] = NIT_NULL;
3794 fra.me.REG[0] = p0;
3795 fra.me.REG[1] = p1;
3796 /* ./syntax//typing.nit:645 */
3797 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3798 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3799 REGB0 = TAG_Bool(true);
3800 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);
3801 stack_frame_head = fra.me.prev;
3802 return;
3803 }
3804 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3805 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3806 val_t tmp;
3807 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3808 fra.me.file = LOCATE_syntax___typing;
3809 fra.me.line = 648;
3810 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
3811 fra.me.has_broke = 0;
3812 fra.me.REG_size = 3;
3813 fra.me.REG[0] = NIT_NULL;
3814 fra.me.REG[1] = NIT_NULL;
3815 fra.me.REG[2] = NIT_NULL;
3816 fra.me.REG[0] = p0;
3817 fra.me.REG[1] = p1;
3818 /* ./syntax//typing.nit:650 */
3819 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3820 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3821 /* ./syntax//typing.nit:651 */
3822 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3823 /* ./syntax//typing.nit:653 */
3824 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3825 /* ./syntax//typing.nit:656 */
3826 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3827 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3828 /* ./syntax//typing.nit:659 */
3829 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3830 /* ./syntax//typing.nit:660 */
3831 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3832 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3833 stack_frame_head = fra.me.prev;
3834 return;
3835 }
3836 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
3837 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3838 val_t REGB0;
3839 val_t REGB1;
3840 val_t REGB2;
3841 val_t REGB3;
3842 val_t REGB4;
3843 val_t REGB5;
3844 val_t tmp;
3845 static val_t once_value_3; /* Once value */
3846 static val_t once_value_4; /* Once value */
3847 static val_t once_value_5; /* Once value */
3848 static val_t once_value_6; /* Once value */
3849 static val_t once_value_7; /* Once value */
3850 static val_t once_value_8; /* Once value */
3851 static val_t once_value_9; /* Once value */
3852 static val_t once_value_10; /* Once value */
3853 static val_t once_value_11; /* Once value */
3854 static val_t once_value_12; /* Once value */
3855 static val_t once_value_13; /* Once value */
3856 static val_t once_value_14; /* Once value */
3857 static val_t once_value_15; /* Once value */
3858 static val_t once_value_16; /* Once value */
3859 static val_t once_value_17; /* Once value */
3860 static val_t once_value_18; /* Once value */
3861 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3862 fra.me.file = LOCATE_syntax___typing;
3863 fra.me.line = 663;
3864 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
3865 fra.me.has_broke = 0;
3866 fra.me.REG_size = 8;
3867 fra.me.REG[0] = NIT_NULL;
3868 fra.me.REG[1] = NIT_NULL;
3869 fra.me.REG[2] = NIT_NULL;
3870 fra.me.REG[3] = NIT_NULL;
3871 fra.me.REG[4] = NIT_NULL;
3872 fra.me.REG[5] = NIT_NULL;
3873 fra.me.REG[6] = NIT_NULL;
3874 fra.me.REG[7] = NIT_NULL;
3875 fra.me.REG[0] = p0;
3876 fra.me.REG[1] = p1;
3877 /* ./syntax//typing.nit:666 */
3878 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
3879 /* ./syntax//typing.nit:667 */
3880 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
3881 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));
3882 /* ./syntax//typing.nit:672 */
3883 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
3884 /* ./syntax//typing.nit:675 */
3885 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3886 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3887 /* ./syntax//typing.nit:676 */
3888 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3889 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3890 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3891 if (UNTAG_Bool(REGB0)) {
3892 goto label2;
3893 }
3894 /* ./syntax//typing.nit:677 */
3895 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3896 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
3897 /* ./syntax//typing.nit:679 */
3898 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
3899 if (UNTAG_Bool(REGB0)) {
3900 /* ./syntax//typing.nit:680 */
3901 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3902 if (!once_value_3) {
3903 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
3904 REGB0 = TAG_Int(43);
3905 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3906 once_value_3 = fra.me.REG[5];
3907 register_static_object(&once_value_3);
3908 } else fra.me.REG[5] = once_value_3;
3909 fra.me.REG[5] = fra.me.REG[5];
3910 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3911 /* ./syntax//typing.nit:681 */
3912 goto label2;
3913 }
3914 /* ./syntax//typing.nit:685 */
3915 if (!once_value_4) {
3916 if (!once_value_5) {
3917 fra.me.REG[5] = BOX_NativeString("iterate");
3918 REGB0 = TAG_Int(7);
3919 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3920 once_value_5 = fra.me.REG[5];
3921 register_static_object(&once_value_5);
3922 } else fra.me.REG[5] = once_value_5;
3923 fra.me.REG[5] = fra.me.REG[5];
3924 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
3925 once_value_4 = fra.me.REG[5];
3926 register_static_object(&once_value_4);
3927 } else fra.me.REG[5] = once_value_4;
3928 fra.me.REG[5] = fra.me.REG[5];
3929 /* ./syntax//typing.nit:686 */
3930 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
3931 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3932 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3933 if (UNTAG_Bool(REGB0)) {
3934 /* ./syntax//typing.nit:687 */
3935 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3936 REGB0 = TAG_Int(3);
3937 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3938 if (!once_value_6) {
3939 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
3940 REGB0 = TAG_Int(60);
3941 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3942 once_value_6 = fra.me.REG[7];
3943 register_static_object(&once_value_6);
3944 } else fra.me.REG[7] = once_value_6;
3945 fra.me.REG[7] = fra.me.REG[7];
3946 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3947 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3948 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3949 if (!once_value_7) {
3950 fra.me.REG[7] = BOX_NativeString(".");
3951 REGB0 = TAG_Int(1);
3952 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3953 once_value_7 = fra.me.REG[7];
3954 register_static_object(&once_value_7);
3955 } else fra.me.REG[7] = once_value_7;
3956 fra.me.REG[7] = fra.me.REG[7];
3957 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3958 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
3959 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
3960 /* ./syntax//typing.nit:688 */
3961 goto label2;
3962 }
3963 /* ./syntax//typing.nit:690 */
3964 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
3965 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
3966 /* ./syntax//typing.nit:691 */
3967 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
3968 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3969 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3970 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
3971 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);
3972 /* ./syntax//typing.nit:692 */
3973 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3974 /* ./syntax//typing.nit:693 */
3975 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3976 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
3977 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3978 if (UNTAG_Bool(REGB0)) {
3979 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
3980 fra.me.REG[3] = fra.me.REG[5];
3981 }
3982 /* ./syntax//typing.nit:694 */
3983 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
3984 REGB1 = TAG_Int(0);
3985 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
3986 if (UNTAG_Bool(REGB2)) {
3987 } else {
3988 /* ./../lib/standard//kernel.nit:210 */
3989 REGB1 = TAG_Bool((REGB0)==(REGB1));
3990 /* ./syntax//typing.nit:694 */
3991 REGB2 = REGB1;
3992 }
3993 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
3994 if (UNTAG_Bool(REGB2)) {
3995 /* ./syntax//typing.nit:695 */
3996 if (!once_value_8) {
3997 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
3998 REGB2 = TAG_Int(63);
3999 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4000 once_value_8 = fra.me.REG[5];
4001 register_static_object(&once_value_8);
4002 } else fra.me.REG[5] = once_value_8;
4003 fra.me.REG[5] = fra.me.REG[5];
4004 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4005 /* ./syntax//typing.nit:696 */
4006 goto label2;
4007 } else {
4008 /* ./syntax//typing.nit:697 */
4009 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4010 /* ./../lib/standard//collection//array.nit:23 */
4011 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4012 if (UNTAG_Bool(REGB2)) {
4013 } else {
4014 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4015 }
4016 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4017 /* ./syntax//typing.nit:697 */
4018 REGB1 = TAG_Int(1);
4019 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4020 if (UNTAG_Bool(REGB0)) {
4021 } else {
4022 /* ./../lib/standard//kernel.nit:210 */
4023 REGB1 = TAG_Bool((REGB2)==(REGB1));
4024 /* ./syntax//typing.nit:697 */
4025 REGB0 = REGB1;
4026 }
4027 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4028 if (UNTAG_Bool(REGB0)) {
4029 /* ./syntax//typing.nit:698 */
4030 if (!once_value_9) {
4031 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4032 REGB0 = TAG_Int(62);
4033 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4034 once_value_9 = fra.me.REG[5];
4035 register_static_object(&once_value_9);
4036 } else fra.me.REG[5] = once_value_9;
4037 fra.me.REG[5] = fra.me.REG[5];
4038 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4039 /* ./syntax//typing.nit:699 */
4040 goto label2;
4041 }
4042 }
4043 /* ./syntax//typing.nit:701 */
4044 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4045 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4046 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4047 if (UNTAG_Bool(REGB0)) {
4048 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 701);
4049 }
4050 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4051 fra.me.REG[3] = fra.me.REG[5];
4052 /* ./syntax//typing.nit:702 */
4053 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4054 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4055 if (UNTAG_Bool(REGB0)) {
4056 } else {
4057 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4058 if (UNTAG_Bool(REGB1)) {
4059 REGB1 = TAG_Bool(false);
4060 REGB0 = REGB1;
4061 } else {
4062 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4063 REGB0 = REGB1;
4064 }
4065 }
4066 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4067 if (UNTAG_Bool(REGB0)) {
4068 /* ./syntax//typing.nit:703 */
4069 if (!once_value_10) {
4070 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4071 REGB0 = TAG_Int(73);
4072 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4073 once_value_10 = fra.me.REG[5];
4074 register_static_object(&once_value_10);
4075 } else fra.me.REG[5] = once_value_10;
4076 fra.me.REG[5] = fra.me.REG[5];
4077 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4078 /* ./syntax//typing.nit:704 */
4079 goto label2;
4080 }
4081 /* ./../lib/standard//collection//array.nit:23 */
4082 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4083 if (UNTAG_Bool(REGB0)) {
4084 } else {
4085 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4086 }
4087 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4088 /* ./syntax//typing.nit:706 */
4089 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4090 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4091 if (UNTAG_Bool(REGB2)) {
4092 } else {
4093 /* ./../lib/standard//kernel.nit:210 */
4094 REGB1 = TAG_Bool((REGB0)==(REGB1));
4095 /* ./syntax//typing.nit:706 */
4096 REGB2 = REGB1;
4097 }
4098 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4099 if (UNTAG_Bool(REGB2)) {
4100 /* ./syntax//typing.nit:707 */
4101 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4102 REGB1 = TAG_Int(1);
4103 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4104 if (UNTAG_Bool(REGB0)) {
4105 } else {
4106 /* ./../lib/standard//kernel.nit:210 */
4107 REGB1 = TAG_Bool((REGB2)==(REGB1));
4108 /* ./syntax//typing.nit:707 */
4109 REGB0 = REGB1;
4110 }
4111 if (UNTAG_Bool(REGB0)) {
4112 /* ./syntax//typing.nit:708 */
4113 REGB0 = TAG_Int(7);
4114 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4115 if (!once_value_11) {
4116 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4117 REGB0 = TAG_Int(16);
4118 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4119 once_value_11 = fra.me.REG[4];
4120 register_static_object(&once_value_11);
4121 } else fra.me.REG[4] = once_value_11;
4122 fra.me.REG[4] = fra.me.REG[4];
4123 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4124 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4125 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4126 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4127 if (!once_value_12) {
4128 fra.me.REG[4] = BOX_NativeString(" variable ");
4129 REGB0 = TAG_Int(10);
4130 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4131 once_value_12 = fra.me.REG[4];
4132 register_static_object(&once_value_12);
4133 } else fra.me.REG[4] = once_value_12;
4134 fra.me.REG[4] = fra.me.REG[4];
4135 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4136 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4137 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4138 if (!once_value_13) {
4139 fra.me.REG[4] = BOX_NativeString(", found ");
4140 REGB0 = TAG_Int(8);
4141 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4142 once_value_13 = fra.me.REG[4];
4143 register_static_object(&once_value_13);
4144 } else fra.me.REG[4] = once_value_13;
4145 fra.me.REG[4] = fra.me.REG[4];
4146 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4147 /* ./../lib/standard//collection//array.nit:23 */
4148 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4149 if (UNTAG_Bool(REGB0)) {
4150 } else {
4151 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4152 }
4153 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4154 /* ./syntax//typing.nit:708 */
4155 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4156 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4157 if (!once_value_14) {
4158 fra.me.REG[4] = BOX_NativeString(".");
4159 REGB0 = TAG_Int(1);
4160 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4161 once_value_14 = fra.me.REG[4];
4162 register_static_object(&once_value_14);
4163 } else fra.me.REG[4] = once_value_14;
4164 fra.me.REG[4] = fra.me.REG[4];
4165 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4166 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4167 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4168 } else {
4169 /* ./syntax//typing.nit:710 */
4170 REGB0 = TAG_Int(7);
4171 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4172 if (!once_value_15) {
4173 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4174 REGB0 = TAG_Int(16);
4175 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4176 once_value_15 = fra.me.REG[4];
4177 register_static_object(&once_value_15);
4178 } else fra.me.REG[4] = once_value_15;
4179 fra.me.REG[4] = fra.me.REG[4];
4180 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4181 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4182 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4183 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4184 if (!once_value_16) {
4185 fra.me.REG[4] = BOX_NativeString(" variables ");
4186 REGB0 = TAG_Int(11);
4187 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4188 once_value_16 = fra.me.REG[4];
4189 register_static_object(&once_value_16);
4190 } else fra.me.REG[4] = once_value_16;
4191 fra.me.REG[4] = fra.me.REG[4];
4192 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4193 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4194 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4195 if (!once_value_17) {
4196 fra.me.REG[4] = BOX_NativeString(", found ");
4197 REGB0 = TAG_Int(8);
4198 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4199 once_value_17 = fra.me.REG[4];
4200 register_static_object(&once_value_17);
4201 } else fra.me.REG[4] = once_value_17;
4202 fra.me.REG[4] = fra.me.REG[4];
4203 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4204 /* ./../lib/standard//collection//array.nit:23 */
4205 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4206 if (UNTAG_Bool(REGB0)) {
4207 } else {
4208 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4209 }
4210 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4211 /* ./syntax//typing.nit:710 */
4212 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4213 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4214 if (!once_value_18) {
4215 fra.me.REG[4] = BOX_NativeString(".");
4216 REGB0 = TAG_Int(1);
4217 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4218 once_value_18 = fra.me.REG[4];
4219 register_static_object(&once_value_18);
4220 } else fra.me.REG[4] = once_value_18;
4221 fra.me.REG[4] = fra.me.REG[4];
4222 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4223 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4224 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4225 }
4226 /* ./syntax//typing.nit:712 */
4227 goto label2;
4228 }
4229 /* ./syntax//typing.nit:716 */
4230 REGB0 = TAG_Int(0);
4231 /* ./../lib/standard//collection//array.nit:23 */
4232 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4233 if (UNTAG_Bool(REGB1)) {
4234 } else {
4235 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
4236 }
4237 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4238 /* ./../lib/standard//kernel.nit:335 */
4239 while(1) {
4240 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4241 if (UNTAG_Bool(REGB2)) {
4242 } else {
4243 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4244 }
4245 /* ./../lib/standard//kernel.nit:215 */
4246 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4247 /* ./../lib/standard//kernel.nit:335 */
4248 if (UNTAG_Bool(REGB2)) {
4249 /* ./syntax//typing.nit:716 */
4250 REGB2 = REGB0;
4251 /* ./../lib/standard//collection//array.nit:241 */
4252 fra.me.REG[5] = fra.me.REG[2];
4253 REGB3 = REGB2;
4254 /* ./../lib/standard//collection//array.nit:243 */
4255 REGB4 = TAG_Int(0);
4256 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4257 if (UNTAG_Bool(REGB5)) {
4258 } else {
4259 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4260 }
4261 /* ./../lib/standard//kernel.nit:216 */
4262 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4263 /* ./../lib/standard//collection//array.nit:243 */
4264 if (UNTAG_Bool(REGB4)) {
4265 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4266 if (UNTAG_Bool(REGB4)) {
4267 } else {
4268 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
4269 }
4270 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4271 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4272 if (UNTAG_Bool(REGB5)) {
4273 } else {
4274 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4275 }
4276 /* ./../lib/standard//kernel.nit:215 */
4277 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4278 } else {
4279 /* ./../lib/standard//collection//array.nit:243 */
4280 REGB5 = TAG_Bool(false);
4281 REGB4 = REGB5;
4282 }
4283 if (UNTAG_Bool(REGB4)) {
4284 } else {
4285 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
4286 }
4287 /* ./../lib/standard//collection//array.nit:244 */
4288 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4289 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4290 if (UNTAG_Bool(REGB4)) {
4291 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
4292 }
4293 /* ./../lib/standard//collection//array.nit:652 */
4294 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4295 /* ./../lib/standard//collection//array.nit:244 */
4296 goto label19;
4297 label19: while(0);
4298 /* ./syntax//typing.nit:717 */
4299 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4300 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4301 if (UNTAG_Bool(REGB2)) {
4302 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 717);
4303 }
4304 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4305 /* ./../lib/standard//kernel.nit:337 */
4306 REGB2 = TAG_Int(1);
4307 /* ./../lib/standard//kernel.nit:218 */
4308 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4309 /* ./../lib/standard//kernel.nit:337 */
4310 REGB0 = REGB2;
4311 } else {
4312 /* ./../lib/standard//kernel.nit:335 */
4313 goto label20;
4314 }
4315 }
4316 label20: while(0);
4317 label2: while(0);
4318 stack_frame_head = fra.me.prev;
4319 return;
4320 }
4321 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){
4322 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4323 fun_t CREG[1];
4324 val_t tmp;
4325 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4326 fra.me.file = LOCATE_syntax___typing;
4327 fra.me.line = 0;
4328 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4329 fra.me.has_broke = 0;
4330 fra.me.REG_size = 2;
4331 fra.me.REG[0] = NIT_NULL;
4332 fra.me.REG[1] = NIT_NULL;
4333 fra.me.closure_ctx = closctx_param;
4334 fra.me.closure_funs = CREG;
4335 fra.me.REG[0] = p0;
4336 CREG[0] = clos_fun0;
4337 /* ./syntax//typing.nit:668 */
4338 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4339 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4340 /* ./syntax//typing.nit:669 */
4341 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4342 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4343 /* ./syntax//typing.nit:670 */
4344 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4345 stack_frame_head = fra.me.prev;
4346 return;
4347 }
4348 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4349 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4350 val_t REGB0;
4351 val_t REGB1;
4352 val_t tmp;
4353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4354 fra.me.file = LOCATE_syntax___typing;
4355 fra.me.line = 723;
4356 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4357 fra.me.has_broke = 0;
4358 fra.me.REG_size = 4;
4359 fra.me.REG[0] = NIT_NULL;
4360 fra.me.REG[1] = NIT_NULL;
4361 fra.me.REG[2] = NIT_NULL;
4362 fra.me.REG[3] = NIT_NULL;
4363 fra.me.REG[0] = p0;
4364 fra.me.REG[1] = p1;
4365 /* ./syntax//typing.nit:726 */
4366 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4367 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4368 /* ./syntax//typing.nit:727 */
4369 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4370 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4371 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4372 /* ./syntax//typing.nit:730 */
4373 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4374 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4375 if (UNTAG_Bool(REGB0)) {
4376 } else {
4377 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4378 if (UNTAG_Bool(REGB1)) {
4379 REGB1 = TAG_Bool(false);
4380 REGB0 = REGB1;
4381 } else {
4382 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4383 REGB0 = REGB1;
4384 }
4385 }
4386 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4387 if (UNTAG_Bool(REGB0)) {
4388 /* ./syntax//typing.nit:731 */
4389 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4390 /* ./syntax//typing.nit:732 */
4391 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4392 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4393 /* ./syntax//typing.nit:733 */
4394 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4395 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4396 /* ./syntax//typing.nit:734 */
4397 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4398 }
4399 /* ./syntax//typing.nit:738 */
4400 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4401 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4402 /* ./syntax//typing.nit:739 */
4403 REGB0 = TAG_Bool(true);
4404 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4405 stack_frame_head = fra.me.prev;
4406 return;
4407 }
4408 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4409 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4410 val_t REGB0;
4411 val_t tmp;
4412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4413 fra.me.file = LOCATE_syntax___typing;
4414 fra.me.line = 745;
4415 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4416 fra.me.has_broke = 0;
4417 fra.me.REG_size = 2;
4418 fra.me.REG[0] = NIT_NULL;
4419 fra.me.REG[1] = NIT_NULL;
4420 fra.me.REG[0] = p0;
4421 /* ./syntax//typing.nit:745 */
4422 fra.me.REG[1] = fra.me.REG[0];
4423 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4424 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4425 if (UNTAG_Bool(REGB0)) {
4426 } else {
4427 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 745);
4428 }
4429 goto label1;
4430 label1: while(0);
4431 stack_frame_head = fra.me.prev;
4432 return fra.me.REG[1];
4433 }
4434 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4435 struct {struct stack_frame_t me;} fra;
4436 val_t tmp;
4437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4438 fra.me.file = LOCATE_syntax___typing;
4439 fra.me.line = 749;
4440 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4441 fra.me.has_broke = 0;
4442 fra.me.REG_size = 1;
4443 fra.me.REG[0] = NIT_NULL;
4444 fra.me.REG[0] = p0;
4445 /* ./syntax//typing.nit:749 */
4446 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4447 goto label1;
4448 label1: while(0);
4449 stack_frame_head = fra.me.prev;
4450 return fra.me.REG[0];
4451 }
4452 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4453 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4454 val_t REGB0;
4455 val_t REGB1;
4456 val_t tmp;
4457 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4458 fra.me.file = LOCATE_syntax___typing;
4459 fra.me.line = 751;
4460 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4461 fra.me.has_broke = 0;
4462 fra.me.REG_size = 4;
4463 fra.me.REG[0] = NIT_NULL;
4464 fra.me.REG[1] = NIT_NULL;
4465 fra.me.REG[2] = NIT_NULL;
4466 fra.me.REG[3] = NIT_NULL;
4467 fra.me.REG[0] = p0;
4468 fra.me.REG[1] = p1;
4469 /* ./syntax//typing.nit:753 */
4470 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4471 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4472 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4473 /* ./syntax//typing.nit:754 */
4474 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4475 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4476 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4477 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4478 /* ./syntax//typing.nit:755 */
4479 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4480 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4481 if (UNTAG_Bool(REGB0)) {
4482 } else {
4483 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4484 if (UNTAG_Bool(REGB1)) {
4485 REGB1 = TAG_Bool(false);
4486 REGB0 = REGB1;
4487 } else {
4488 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4489 REGB0 = REGB1;
4490 }
4491 }
4492 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4493 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4494 stack_frame_head = fra.me.prev;
4495 return;
4496 }
4497 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4498 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4499 val_t REGB0;
4500 val_t REGB1;
4501 val_t tmp;
4502 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4503 fra.me.file = LOCATE_syntax___typing;
4504 fra.me.line = 760;
4505 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4506 fra.me.has_broke = 0;
4507 fra.me.REG_size = 5;
4508 fra.me.REG[0] = NIT_NULL;
4509 fra.me.REG[1] = NIT_NULL;
4510 fra.me.REG[2] = NIT_NULL;
4511 fra.me.REG[3] = NIT_NULL;
4512 fra.me.REG[4] = NIT_NULL;
4513 fra.me.REG[0] = p0;
4514 fra.me.REG[1] = p1;
4515 /* ./syntax//typing.nit:762 */
4516 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4517 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4518 /* ./syntax//typing.nit:765 */
4519 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4520 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4521 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4522 /* ./syntax//typing.nit:766 */
4523 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4524 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4525 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4526 if (UNTAG_Bool(REGB0)) {
4527 goto label1;
4528 }
4529 /* ./syntax//typing.nit:767 */
4530 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4531 if (UNTAG_Bool(REGB0)) {
4532 } else {
4533 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4534 if (UNTAG_Bool(REGB1)) {
4535 REGB1 = TAG_Bool(false);
4536 REGB0 = REGB1;
4537 } else {
4538 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4539 REGB0 = REGB1;
4540 }
4541 }
4542 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4543 if (UNTAG_Bool(REGB0)) {
4544 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4545 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]);
4546 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4547 } else {
4548 REGB1 = TAG_Bool(false);
4549 REGB0 = REGB1;
4550 }
4551 if (UNTAG_Bool(REGB0)) {
4552 goto label1;
4553 }
4554 /* ./syntax//typing.nit:770 */
4555 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4556 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4557 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4558 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4559 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]);
4560 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4561 /* ./syntax//typing.nit:772 */
4562 REGB0 = TAG_Bool(true);
4563 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4564 label1: while(0);
4565 stack_frame_head = fra.me.prev;
4566 return;
4567 }
4568 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4569 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4570 val_t REGB0;
4571 val_t REGB1;
4572 val_t tmp;
4573 static val_t once_value_2; /* Once value */
4574 static val_t once_value_3; /* Once value */
4575 static val_t once_value_4; /* Once value */
4576 static val_t once_value_5; /* Once value */
4577 static val_t once_value_6; /* Once value */
4578 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4579 fra.me.file = LOCATE_syntax___typing;
4580 fra.me.line = 777;
4581 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4582 fra.me.has_broke = 0;
4583 fra.me.REG_size = 8;
4584 fra.me.REG[0] = NIT_NULL;
4585 fra.me.REG[1] = NIT_NULL;
4586 fra.me.REG[2] = NIT_NULL;
4587 fra.me.REG[3] = NIT_NULL;
4588 fra.me.REG[4] = NIT_NULL;
4589 fra.me.REG[5] = NIT_NULL;
4590 fra.me.REG[6] = NIT_NULL;
4591 fra.me.REG[7] = NIT_NULL;
4592 fra.me.REG[0] = p0;
4593 fra.me.REG[1] = p1;
4594 fra.me.REG[2] = p2;
4595 /* ./syntax//typing.nit:782 */
4596 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4597 if (UNTAG_Bool(REGB0)) {
4598 } else {
4599 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4600 if (UNTAG_Bool(REGB1)) {
4601 REGB1 = TAG_Bool(false);
4602 REGB0 = REGB1;
4603 } else {
4604 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4605 REGB0 = REGB1;
4606 }
4607 }
4608 if (UNTAG_Bool(REGB0)) {
4609 /* ./syntax//typing.nit:783 */
4610 fra.me.REG[3] = NIT_NULL;
4611 goto label1;
4612 }
4613 /* ./syntax//typing.nit:785 */
4614 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4615 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4616 /* ./syntax//typing.nit:786 */
4617 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*/;
4618 if (UNTAG_Bool(REGB0)) {
4619 /* ./syntax//typing.nit:787 */
4620 REGB0 = TAG_Int(3);
4621 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4622 if (!once_value_2) {
4623 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4624 REGB0 = TAG_Int(15);
4625 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4626 once_value_2 = fra.me.REG[6];
4627 register_static_object(&once_value_2);
4628 } else fra.me.REG[6] = once_value_2;
4629 fra.me.REG[6] = fra.me.REG[6];
4630 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4631 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4632 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4633 if (!once_value_3) {
4634 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4635 REGB0 = TAG_Int(17);
4636 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4637 once_value_3 = fra.me.REG[6];
4638 register_static_object(&once_value_3);
4639 } else fra.me.REG[6] = once_value_3;
4640 fra.me.REG[6] = fra.me.REG[6];
4641 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4642 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4643 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4644 /* ./syntax//typing.nit:788 */
4645 fra.me.REG[3] = NIT_NULL;
4646 goto label1;
4647 }
4648 /* ./syntax//typing.nit:790 */
4649 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4650 if (UNTAG_Bool(REGB0)) {
4651 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 790);
4652 }
4653 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4654 /* ./syntax//typing.nit:791 */
4655 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4656 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4657 if (UNTAG_Bool(REGB0)) {
4658 /* ./syntax//typing.nit:792 */
4659 REGB0 = TAG_Int(5);
4660 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4661 if (!once_value_4) {
4662 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4663 REGB0 = TAG_Int(15);
4664 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4665 once_value_4 = fra.me.REG[7];
4666 register_static_object(&once_value_4);
4667 } else fra.me.REG[7] = once_value_4;
4668 fra.me.REG[7] = fra.me.REG[7];
4669 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4670 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4671 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4672 if (!once_value_5) {
4673 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4674 REGB0 = TAG_Int(20);
4675 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4676 once_value_5 = fra.me.REG[7];
4677 register_static_object(&once_value_5);
4678 } else fra.me.REG[7] = once_value_5;
4679 fra.me.REG[7] = fra.me.REG[7];
4680 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4681 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4682 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4683 if (!once_value_6) {
4684 fra.me.REG[7] = BOX_NativeString(".");
4685 REGB0 = TAG_Int(1);
4686 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4687 once_value_6 = fra.me.REG[7];
4688 register_static_object(&once_value_6);
4689 } else fra.me.REG[7] = once_value_6;
4690 fra.me.REG[7] = fra.me.REG[7];
4691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4692 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4693 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4694 /* ./syntax//typing.nit:793 */
4695 fra.me.REG[3] = NIT_NULL;
4696 goto label1;
4697 }
4698 /* ./syntax//typing.nit:795 */
4699 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4700 /* ./syntax//typing.nit:796 */
4701 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4702 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4703 REGB0 = TAG_Bool(false);
4704 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);
4705 /* ./syntax//typing.nit:797 */
4706 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4707 /* ./syntax//typing.nit:798 */
4708 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4709 /* ./syntax//typing.nit:799 */
4710 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4711 REGB0 = TAG_Int(0);
4712 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4713 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4714 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]);
4715 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4716 if (UNTAG_Bool(REGB0)) {
4717 fra.me.REG[3] = NIT_NULL;
4718 goto label1;
4719 }
4720 /* ./syntax//typing.nit:800 */
4721 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4722 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4723 if (UNTAG_Bool(REGB0)) {
4724 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 800);
4725 }
4726 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4727 fra.me.REG[3] = fra.me.REG[2];
4728 goto label1;
4729 label1: while(0);
4730 stack_frame_head = fra.me.prev;
4731 return fra.me.REG[3];
4732 }
4733 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
4734 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4735 val_t REGB0;
4736 val_t tmp;
4737 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4738 fra.me.file = LOCATE_syntax___typing;
4739 fra.me.line = 803;
4740 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
4741 fra.me.has_broke = 0;
4742 fra.me.REG_size = 2;
4743 fra.me.REG[0] = NIT_NULL;
4744 fra.me.REG[1] = NIT_NULL;
4745 fra.me.REG[0] = p0;
4746 /* ./syntax//typing.nit:803 */
4747 fra.me.REG[1] = fra.me.REG[0];
4748 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
4749 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4750 if (UNTAG_Bool(REGB0)) {
4751 } else {
4752 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 803);
4753 }
4754 goto label1;
4755 label1: while(0);
4756 stack_frame_head = fra.me.prev;
4757 return fra.me.REG[1];
4758 }
4759 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4760 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4761 val_t REGB0;
4762 val_t REGB1;
4763 val_t tmp;
4764 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4765 fra.me.file = LOCATE_syntax___typing;
4766 fra.me.line = 808;
4767 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
4768 fra.me.has_broke = 0;
4769 fra.me.REG_size = 5;
4770 fra.me.REG[0] = NIT_NULL;
4771 fra.me.REG[1] = NIT_NULL;
4772 fra.me.REG[2] = NIT_NULL;
4773 fra.me.REG[3] = NIT_NULL;
4774 fra.me.REG[4] = NIT_NULL;
4775 fra.me.REG[0] = p0;
4776 fra.me.REG[1] = p1;
4777 /* ./syntax//typing.nit:810 */
4778 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4779 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4780 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4781 /* ./syntax//typing.nit:811 */
4782 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4783 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4784 /* ./syntax//typing.nit:812 */
4785 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4786 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4787 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4788 /* ./syntax//typing.nit:813 */
4789 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]);
4790 /* ./syntax//typing.nit:814 */
4791 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4792 if (UNTAG_Bool(REGB0)) {
4793 } else {
4794 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4795 if (UNTAG_Bool(REGB1)) {
4796 REGB1 = TAG_Bool(false);
4797 REGB0 = REGB1;
4798 } else {
4799 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4800 REGB0 = REGB1;
4801 }
4802 }
4803 if (UNTAG_Bool(REGB0)) {
4804 goto label1;
4805 }
4806 /* ./syntax//typing.nit:817 */
4807 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4808 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4809 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4810 /* ./syntax//typing.nit:818 */
4811 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4812 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4813 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4814 if (UNTAG_Bool(REGB0)) {
4815 goto label1;
4816 }
4817 /* ./syntax//typing.nit:819 */
4818 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4819 if (UNTAG_Bool(REGB0)) {
4820 } else {
4821 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4822 if (UNTAG_Bool(REGB1)) {
4823 REGB1 = TAG_Bool(false);
4824 REGB0 = REGB1;
4825 } else {
4826 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4827 REGB0 = REGB1;
4828 }
4829 }
4830 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4831 if (UNTAG_Bool(REGB0)) {
4832 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4833 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]);
4834 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4835 } else {
4836 REGB1 = TAG_Bool(false);
4837 REGB0 = REGB1;
4838 }
4839 if (UNTAG_Bool(REGB0)) {
4840 goto label1;
4841 }
4842 /* ./syntax//typing.nit:822 */
4843 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4844 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4845 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]);
4846 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4847 /* ./syntax//typing.nit:824 */
4848 REGB0 = TAG_Bool(true);
4849 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4850 label1: while(0);
4851 stack_frame_head = fra.me.prev;
4852 return;
4853 }
4854 val_t syntax___typing___AAssignOp___method_name(val_t p0){
4855 struct {struct stack_frame_t me;} fra;
4856 val_t tmp;
4857 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4858 fra.me.file = LOCATE_syntax___typing;
4859 fra.me.line = 829;
4860 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
4861 fra.me.has_broke = 0;
4862 fra.me.REG_size = 0;
4863 /* ./syntax//typing.nit:829 */
4864 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 829);
4865 stack_frame_head = fra.me.prev;
4866 return NIT_NULL;
4867 }
4868 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
4869 struct {struct stack_frame_t me;} fra;
4870 val_t REGB0;
4871 val_t tmp;
4872 static val_t once_value_1; /* Once value */
4873 static val_t once_value_2; /* Once value */
4874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4875 fra.me.file = LOCATE_syntax___typing;
4876 fra.me.line = 832;
4877 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
4878 fra.me.has_broke = 0;
4879 fra.me.REG_size = 1;
4880 fra.me.REG[0] = NIT_NULL;
4881 fra.me.REG[0] = p0;
4882 /* ./syntax//typing.nit:832 */
4883 if (!once_value_1) {
4884 if (!once_value_2) {
4885 fra.me.REG[0] = BOX_NativeString("+");
4886 REGB0 = TAG_Int(1);
4887 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4888 once_value_2 = fra.me.REG[0];
4889 register_static_object(&once_value_2);
4890 } else fra.me.REG[0] = once_value_2;
4891 fra.me.REG[0] = fra.me.REG[0];
4892 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4893 once_value_1 = fra.me.REG[0];
4894 register_static_object(&once_value_1);
4895 } else fra.me.REG[0] = once_value_1;
4896 fra.me.REG[0] = fra.me.REG[0];
4897 goto label3;
4898 label3: while(0);
4899 stack_frame_head = fra.me.prev;
4900 return fra.me.REG[0];
4901 }
4902 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
4903 struct {struct stack_frame_t me;} fra;
4904 val_t REGB0;
4905 val_t tmp;
4906 static val_t once_value_1; /* Once value */
4907 static val_t once_value_2; /* Once value */
4908 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4909 fra.me.file = LOCATE_syntax___typing;
4910 fra.me.line = 835;
4911 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
4912 fra.me.has_broke = 0;
4913 fra.me.REG_size = 1;
4914 fra.me.REG[0] = NIT_NULL;
4915 fra.me.REG[0] = p0;
4916 /* ./syntax//typing.nit:835 */
4917 if (!once_value_1) {
4918 if (!once_value_2) {
4919 fra.me.REG[0] = BOX_NativeString("-");
4920 REGB0 = TAG_Int(1);
4921 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4922 once_value_2 = fra.me.REG[0];
4923 register_static_object(&once_value_2);
4924 } else fra.me.REG[0] = once_value_2;
4925 fra.me.REG[0] = fra.me.REG[0];
4926 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4927 once_value_1 = fra.me.REG[0];
4928 register_static_object(&once_value_1);
4929 } else fra.me.REG[0] = once_value_1;
4930 fra.me.REG[0] = fra.me.REG[0];
4931 goto label3;
4932 label3: while(0);
4933 stack_frame_head = fra.me.prev;
4934 return fra.me.REG[0];
4935 }
4936 val_t syntax___typing___ASelfExpr___variable(val_t p0){
4937 struct {struct stack_frame_t me; val_t MORE_REG[1];} 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 = 840;
4943 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
4944 fra.me.has_broke = 0;
4945 fra.me.REG_size = 2;
4946 fra.me.REG[0] = NIT_NULL;
4947 fra.me.REG[1] = NIT_NULL;
4948 fra.me.REG[0] = p0;
4949 /* ./syntax//typing.nit:840 */
4950 fra.me.REG[1] = fra.me.REG[0];
4951 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
4952 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4953 if (UNTAG_Bool(REGB0)) {
4954 } else {
4955 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 840);
4956 }
4957 goto label1;
4958 label1: while(0);
4959 stack_frame_head = fra.me.prev;
4960 return fra.me.REG[1];
4961 }
4962 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
4963 struct {struct stack_frame_t me;} fra;
4964 val_t tmp;
4965 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4966 fra.me.file = LOCATE_syntax___typing;
4967 fra.me.line = 842;
4968 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
4969 fra.me.has_broke = 0;
4970 fra.me.REG_size = 1;
4971 fra.me.REG[0] = NIT_NULL;
4972 fra.me.REG[0] = p0;
4973 /* ./syntax//typing.nit:842 */
4974 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4975 goto label1;
4976 label1: while(0);
4977 stack_frame_head = fra.me.prev;
4978 return fra.me.REG[0];
4979 }
4980 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
4981 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4982 val_t REGB0;
4983 val_t tmp;
4984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4985 fra.me.file = LOCATE_syntax___typing;
4986 fra.me.line = 844;
4987 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
4988 fra.me.has_broke = 0;
4989 fra.me.REG_size = 3;
4990 fra.me.REG[0] = NIT_NULL;
4991 fra.me.REG[1] = NIT_NULL;
4992 fra.me.REG[2] = NIT_NULL;
4993 fra.me.REG[0] = p0;
4994 fra.me.REG[1] = p1;
4995 /* ./syntax//typing.nit:846 */
4996 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
4997 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
4998 /* ./syntax//typing.nit:847 */
4999 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5000 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5001 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5002 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5003 /* ./syntax//typing.nit:848 */
5004 REGB0 = TAG_Bool(true);
5005 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5006 stack_frame_head = fra.me.prev;
5007 return;
5008 }
5009 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5010 struct {struct stack_frame_t me;} fra;
5011 val_t REGB0;
5012 val_t tmp;
5013 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5014 fra.me.file = LOCATE_syntax___typing;
5015 fra.me.line = 851;
5016 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5017 fra.me.has_broke = 0;
5018 fra.me.REG_size = 1;
5019 fra.me.REG[0] = NIT_NULL;
5020 fra.me.REG[0] = p0;
5021 /* ./syntax//typing.nit:851 */
5022 REGB0 = TAG_Bool(true);
5023 goto label1;
5024 label1: while(0);
5025 stack_frame_head = fra.me.prev;
5026 return REGB0;
5027 }
5028 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5029 struct {struct stack_frame_t me;} fra;
5030 val_t REGB0;
5031 val_t tmp;
5032 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5033 fra.me.file = LOCATE_syntax___typing;
5034 fra.me.line = 855;
5035 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5036 fra.me.has_broke = 0;
5037 fra.me.REG_size = 1;
5038 fra.me.REG[0] = NIT_NULL;
5039 fra.me.REG[0] = p0;
5040 /* ./syntax//typing.nit:855 */
5041 REGB0 = TAG_Bool(true);
5042 goto label1;
5043 label1: while(0);
5044 stack_frame_head = fra.me.prev;
5045 return REGB0;
5046 }
5047 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5048 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5049 val_t REGB0;
5050 val_t REGB1;
5051 val_t tmp;
5052 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5053 fra.me.file = LOCATE_syntax___typing;
5054 fra.me.line = 859;
5055 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5056 fra.me.has_broke = 0;
5057 fra.me.REG_size = 5;
5058 fra.me.REG[0] = NIT_NULL;
5059 fra.me.REG[1] = NIT_NULL;
5060 fra.me.REG[2] = NIT_NULL;
5061 fra.me.REG[3] = NIT_NULL;
5062 fra.me.REG[4] = NIT_NULL;
5063 fra.me.REG[0] = p0;
5064 fra.me.REG[1] = p1;
5065 /* ./syntax//typing.nit:861 */
5066 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5067 /* ./syntax//typing.nit:864 */
5068 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5069 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5070 /* ./syntax//typing.nit:865 */
5071 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5072 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5073 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5074 /* ./syntax//typing.nit:868 */
5075 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5076 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5077 /* ./syntax//typing.nit:871 */
5078 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5079 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5080 /* ./syntax//typing.nit:874 */
5081 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5082 /* ./syntax//typing.nit:877 */
5083 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5084 /* ./syntax//typing.nit:878 */
5085 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5086 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5087 /* ./syntax//typing.nit:881 */
5088 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5089 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5090 /* ./syntax//typing.nit:884 */
5091 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5092 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5093 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]);
5094 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5095 /* ./syntax//typing.nit:886 */
5096 REGB0 = TAG_Int(2);
5097 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5098 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5099 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5100 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5101 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5102 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]);
5103 /* ./syntax//typing.nit:887 */
5104 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5105 if (UNTAG_Bool(REGB0)) {
5106 } else {
5107 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5108 if (UNTAG_Bool(REGB1)) {
5109 REGB1 = TAG_Bool(false);
5110 REGB0 = REGB1;
5111 } else {
5112 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5113 REGB0 = REGB1;
5114 }
5115 }
5116 if (UNTAG_Bool(REGB0)) {
5117 goto label1;
5118 }
5119 /* ./syntax//typing.nit:889 */
5120 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5121 /* ./syntax//typing.nit:890 */
5122 REGB0 = TAG_Bool(true);
5123 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5124 label1: while(0);
5125 stack_frame_head = fra.me.prev;
5126 return;
5127 }
5128 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5129 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5130 val_t REGB0;
5131 val_t tmp;
5132 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5133 fra.me.file = LOCATE_syntax___typing;
5134 fra.me.line = 895;
5135 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5136 fra.me.has_broke = 0;
5137 fra.me.REG_size = 2;
5138 fra.me.REG[0] = NIT_NULL;
5139 fra.me.REG[1] = NIT_NULL;
5140 fra.me.REG[0] = p0;
5141 fra.me.REG[1] = p1;
5142 /* ./syntax//typing.nit:897 */
5143 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5144 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5145 /* ./syntax//typing.nit:898 */
5146 REGB0 = TAG_Bool(true);
5147 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5148 stack_frame_head = fra.me.prev;
5149 return;
5150 }
5151 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5152 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5153 val_t REGB0;
5154 val_t REGB1;
5155 val_t tmp;
5156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5157 fra.me.file = LOCATE_syntax___typing;
5158 fra.me.line = 903;
5159 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5160 fra.me.has_broke = 0;
5161 fra.me.REG_size = 5;
5162 fra.me.REG[0] = NIT_NULL;
5163 fra.me.REG[1] = NIT_NULL;
5164 fra.me.REG[2] = NIT_NULL;
5165 fra.me.REG[3] = NIT_NULL;
5166 fra.me.REG[4] = NIT_NULL;
5167 fra.me.REG[0] = p0;
5168 fra.me.REG[1] = p1;
5169 /* ./syntax//typing.nit:905 */
5170 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5171 /* ./syntax//typing.nit:906 */
5172 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5173 /* ./syntax//typing.nit:907 */
5174 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5175 /* ./syntax//typing.nit:910 */
5176 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___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:913 */
5179 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5180 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5181 /* ./syntax//typing.nit:916 */
5182 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___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:917 */
5185 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5186 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_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:918 */
5202 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5203 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5204 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5205 } else {
5206 /* ./syntax//typing.nit:920 */
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_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5209 }
5210 /* ./syntax//typing.nit:923 */
5211 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5212 /* ./syntax//typing.nit:925 */
5213 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___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:926 */
5216 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___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:927 */
5219 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5220 /* ./syntax//typing.nit:928 */
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___AAndExpr___accept_typing(val_t p0, val_t p1){
5227 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5228 val_t REGB0;
5229 val_t REGB1;
5230 val_t tmp;
5231 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5232 fra.me.file = LOCATE_syntax___typing;
5233 fra.me.line = 933;
5234 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5235 fra.me.has_broke = 0;
5236 fra.me.REG_size = 5;
5237 fra.me.REG[0] = NIT_NULL;
5238 fra.me.REG[1] = NIT_NULL;
5239 fra.me.REG[2] = NIT_NULL;
5240 fra.me.REG[3] = NIT_NULL;
5241 fra.me.REG[4] = NIT_NULL;
5242 fra.me.REG[0] = p0;
5243 fra.me.REG[1] = p1;
5244 /* ./syntax//typing.nit:935 */
5245 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5246 /* ./syntax//typing.nit:936 */
5247 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5248 /* ./syntax//typing.nit:939 */
5249 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5250 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5251 /* ./syntax//typing.nit:942 */
5252 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5253 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5254 /* ./syntax//typing.nit:945 */
5255 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5256 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5257 /* ./syntax//typing.nit:946 */
5258 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5259 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5260 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5261 if (UNTAG_Bool(REGB0)) {
5262 } else {
5263 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5264 if (UNTAG_Bool(REGB1)) {
5265 REGB1 = TAG_Bool(false);
5266 REGB0 = REGB1;
5267 } else {
5268 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5269 REGB0 = REGB1;
5270 }
5271 }
5272 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5273 if (UNTAG_Bool(REGB0)) {
5274 /* ./syntax//typing.nit:947 */
5275 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5276 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5277 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5278 } else {
5279 /* ./syntax//typing.nit:949 */
5280 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5281 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5282 }
5283 /* ./syntax//typing.nit:952 */
5284 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5285 /* ./syntax//typing.nit:954 */
5286 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5287 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5288 /* ./syntax//typing.nit:955 */
5289 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5290 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5291 /* ./syntax//typing.nit:956 */
5292 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5293 /* ./syntax//typing.nit:957 */
5294 REGB0 = TAG_Bool(true);
5295 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5296 stack_frame_head = fra.me.prev;
5297 return;
5298 }
5299 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5300 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5301 val_t REGB0;
5302 val_t tmp;
5303 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5304 fra.me.file = LOCATE_syntax___typing;
5305 fra.me.line = 962;
5306 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5307 fra.me.has_broke = 0;
5308 fra.me.REG_size = 4;
5309 fra.me.REG[0] = NIT_NULL;
5310 fra.me.REG[1] = NIT_NULL;
5311 fra.me.REG[2] = NIT_NULL;
5312 fra.me.REG[3] = NIT_NULL;
5313 fra.me.REG[0] = p0;
5314 fra.me.REG[1] = p1;
5315 /* ./syntax//typing.nit:964 */
5316 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5317 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5318 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5319 /* ./syntax//typing.nit:967 */
5320 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5321 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5322 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5323 /* ./syntax//typing.nit:968 */
5324 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5325 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5326 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5327 /* ./syntax//typing.nit:970 */
5328 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5329 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5330 /* ./syntax//typing.nit:971 */
5331 REGB0 = TAG_Bool(true);
5332 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5333 stack_frame_head = fra.me.prev;
5334 return;
5335 }
5336 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5337 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5338 val_t REGB0;
5339 val_t REGB1;
5340 val_t tmp;
5341 static val_t once_value_1; /* Once value */
5342 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5343 fra.me.file = LOCATE_syntax___typing;
5344 fra.me.line = 976;
5345 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5346 fra.me.has_broke = 0;
5347 fra.me.REG_size = 7;
5348 fra.me.REG[0] = NIT_NULL;
5349 fra.me.REG[1] = NIT_NULL;
5350 fra.me.REG[2] = NIT_NULL;
5351 fra.me.REG[3] = NIT_NULL;
5352 fra.me.REG[4] = NIT_NULL;
5353 fra.me.REG[5] = NIT_NULL;
5354 fra.me.REG[6] = NIT_NULL;
5355 fra.me.REG[0] = p0;
5356 fra.me.REG[1] = p1;
5357 /* ./syntax//typing.nit:978 */
5358 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5359 /* ./syntax//typing.nit:981 */
5360 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5361 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5362 /* ./syntax//typing.nit:982 */
5363 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5364 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5365 /* ./syntax//typing.nit:985 */
5366 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5367 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5368 /* ./syntax//typing.nit:986 */
5369 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5370 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5371 if (UNTAG_Bool(REGB0)) {
5372 /* ./syntax//typing.nit:987 */
5373 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5374 if (!once_value_1) {
5375 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
5376 REGB0 = TAG_Int(60);
5377 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5378 once_value_1 = fra.me.REG[5];
5379 register_static_object(&once_value_1);
5380 } else fra.me.REG[5] = once_value_1;
5381 fra.me.REG[5] = fra.me.REG[5];
5382 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5383 } else {
5384 /* ./syntax//typing.nit:989 */
5385 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5386 fra.me.REG[3] = fra.me.REG[5];
5387 }
5388 /* ./syntax//typing.nit:993 */
5389 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5390 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5391 /* ./syntax//typing.nit:994 */
5392 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5393 if (UNTAG_Bool(REGB0)) {
5394 } else {
5395 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5396 if (UNTAG_Bool(REGB1)) {
5397 REGB1 = TAG_Bool(false);
5398 REGB0 = REGB1;
5399 } else {
5400 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5401 REGB0 = REGB1;
5402 }
5403 }
5404 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5405 if (UNTAG_Bool(REGB0)) {
5406 /* ./syntax//typing.nit:995 */
5407 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5408 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5409 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]);
5410 }
5411 /* ./syntax//typing.nit:999 */
5412 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5413 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5414 /* ./syntax//typing.nit:1000 */
5415 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5416 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5417 /* ./syntax//typing.nit:1003 */
5418 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5419 /* ./syntax//typing.nit:1006 */
5420 REGB0 = TAG_Int(1);
5421 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5422 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5424 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]);
5425 /* ./syntax//typing.nit:1007 */
5426 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5427 if (UNTAG_Bool(REGB0)) {
5428 } else {
5429 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5430 if (UNTAG_Bool(REGB1)) {
5431 REGB1 = TAG_Bool(false);
5432 REGB0 = REGB1;
5433 } else {
5434 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5435 REGB0 = REGB1;
5436 }
5437 }
5438 if (UNTAG_Bool(REGB0)) {
5439 goto label2;
5440 }
5441 /* ./syntax//typing.nit:1009 */
5442 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5443 /* ./syntax//typing.nit:1010 */
5444 REGB0 = TAG_Bool(true);
5445 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5446 label2: while(0);
5447 stack_frame_head = fra.me.prev;
5448 return;
5449 }
5450 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5451 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5452 val_t REGB0;
5453 val_t tmp;
5454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5455 fra.me.file = LOCATE_syntax___typing;
5456 fra.me.line = 1015;
5457 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5458 fra.me.has_broke = 0;
5459 fra.me.REG_size = 2;
5460 fra.me.REG[0] = NIT_NULL;
5461 fra.me.REG[1] = NIT_NULL;
5462 fra.me.REG[0] = p0;
5463 fra.me.REG[1] = p1;
5464 /* ./syntax//typing.nit:1017 */
5465 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5466 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5467 /* ./syntax//typing.nit:1018 */
5468 REGB0 = TAG_Bool(true);
5469 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5470 stack_frame_head = fra.me.prev;
5471 return;
5472 }
5473 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5474 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5475 val_t REGB0;
5476 val_t tmp;
5477 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5478 fra.me.file = LOCATE_syntax___typing;
5479 fra.me.line = 1023;
5480 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5481 fra.me.has_broke = 0;
5482 fra.me.REG_size = 2;
5483 fra.me.REG[0] = NIT_NULL;
5484 fra.me.REG[1] = NIT_NULL;
5485 fra.me.REG[0] = p0;
5486 fra.me.REG[1] = p1;
5487 /* ./syntax//typing.nit:1025 */
5488 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5489 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5490 /* ./syntax//typing.nit:1026 */
5491 REGB0 = TAG_Bool(true);
5492 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5493 stack_frame_head = fra.me.prev;
5494 return;
5495 }
5496 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5497 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5498 val_t REGB0;
5499 val_t tmp;
5500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5501 fra.me.file = LOCATE_syntax___typing;
5502 fra.me.line = 1031;
5503 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5504 fra.me.has_broke = 0;
5505 fra.me.REG_size = 2;
5506 fra.me.REG[0] = NIT_NULL;
5507 fra.me.REG[1] = NIT_NULL;
5508 fra.me.REG[0] = p0;
5509 fra.me.REG[1] = p1;
5510 /* ./syntax//typing.nit:1033 */
5511 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5512 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5513 /* ./syntax//typing.nit:1034 */
5514 REGB0 = TAG_Bool(true);
5515 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5516 stack_frame_head = fra.me.prev;
5517 return;
5518 }
5519 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5520 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5521 val_t REGB0;
5522 val_t tmp;
5523 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5524 fra.me.file = LOCATE_syntax___typing;
5525 fra.me.line = 1039;
5526 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5527 fra.me.has_broke = 0;
5528 fra.me.REG_size = 2;
5529 fra.me.REG[0] = NIT_NULL;
5530 fra.me.REG[1] = NIT_NULL;
5531 fra.me.REG[0] = p0;
5532 fra.me.REG[1] = p1;
5533 /* ./syntax//typing.nit:1041 */
5534 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5535 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5536 /* ./syntax//typing.nit:1042 */
5537 REGB0 = TAG_Bool(true);
5538 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5539 stack_frame_head = fra.me.prev;
5540 return;
5541 }
5542 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5543 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5544 val_t REGB0;
5545 val_t tmp;
5546 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5547 fra.me.file = LOCATE_syntax___typing;
5548 fra.me.line = 1047;
5549 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5550 fra.me.has_broke = 0;
5551 fra.me.REG_size = 2;
5552 fra.me.REG[0] = NIT_NULL;
5553 fra.me.REG[1] = NIT_NULL;
5554 fra.me.REG[0] = p0;
5555 /* ./syntax//typing.nit:1047 */
5556 fra.me.REG[1] = fra.me.REG[0];
5557 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
5558 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5559 if (UNTAG_Bool(REGB0)) {
5560 } else {
5561 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1047);
5562 }
5563 goto label1;
5564 label1: while(0);
5565 stack_frame_head = fra.me.prev;
5566 return fra.me.REG[1];
5567 }
5568 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5569 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5570 val_t REGB0;
5571 val_t tmp;
5572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5573 fra.me.file = LOCATE_syntax___typing;
5574 fra.me.line = 1049;
5575 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5576 fra.me.has_broke = 0;
5577 fra.me.REG_size = 5;
5578 fra.me.REG[0] = NIT_NULL;
5579 fra.me.REG[1] = NIT_NULL;
5580 fra.me.REG[2] = NIT_NULL;
5581 fra.me.REG[3] = NIT_NULL;
5582 fra.me.REG[4] = NIT_NULL;
5583 fra.me.REG[0] = p0;
5584 fra.me.REG[1] = p1;
5585 /* ./syntax//typing.nit:1051 */
5586 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5587 /* ./syntax//typing.nit:1052 */
5588 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5589 /* ./syntax//typing.nit:1053 */
5590 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5591 /* ./syntax//typing.nit:1054 */
5592 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5593 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));
5594 /* ./syntax//typing.nit:1055 */
5595 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5596 /* ./syntax//typing.nit:1056 */
5597 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5598 /* ./syntax//typing.nit:1057 */
5599 REGB0 = TAG_Bool(true);
5600 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5601 stack_frame_head = fra.me.prev;
5602 return;
5603 }
5604 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){
5605 struct {struct stack_frame_t me;} fra;
5606 fun_t CREG[1];
5607 val_t tmp;
5608 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5609 fra.me.file = LOCATE_syntax___typing;
5610 fra.me.line = 0;
5611 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5612 fra.me.has_broke = 0;
5613 fra.me.REG_size = 1;
5614 fra.me.REG[0] = NIT_NULL;
5615 fra.me.closure_ctx = closctx_param;
5616 fra.me.closure_funs = CREG;
5617 fra.me.REG[0] = p0;
5618 CREG[0] = clos_fun0;
5619 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5620 stack_frame_head = fra.me.prev;
5621 return;
5622 }
5623 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
5624 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5625 val_t REGB0;
5626 val_t tmp;
5627 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5628 fra.me.file = LOCATE_syntax___typing;
5629 fra.me.line = 1062;
5630 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
5631 fra.me.has_broke = 0;
5632 fra.me.REG_size = 2;
5633 fra.me.REG[0] = NIT_NULL;
5634 fra.me.REG[1] = NIT_NULL;
5635 fra.me.REG[0] = p0;
5636 fra.me.REG[1] = p1;
5637 /* ./syntax//typing.nit:1064 */
5638 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5639 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5640 /* ./syntax//typing.nit:1065 */
5641 REGB0 = TAG_Bool(true);
5642 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5643 stack_frame_head = fra.me.prev;
5644 return;
5645 }
5646 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5647 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5648 val_t REGB0;
5649 val_t REGB1;
5650 val_t tmp;
5651 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5652 fra.me.file = LOCATE_syntax___typing;
5653 fra.me.line = 1070;
5654 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
5655 fra.me.has_broke = 0;
5656 fra.me.REG_size = 3;
5657 fra.me.REG[0] = NIT_NULL;
5658 fra.me.REG[1] = NIT_NULL;
5659 fra.me.REG[2] = NIT_NULL;
5660 fra.me.REG[0] = p0;
5661 fra.me.REG[1] = p1;
5662 /* ./syntax//typing.nit:1072 */
5663 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5664 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]);
5665 /* ./syntax//typing.nit:1073 */
5666 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5667 if (UNTAG_Bool(REGB0)) {
5668 } else {
5669 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5670 if (UNTAG_Bool(REGB1)) {
5671 REGB1 = TAG_Bool(false);
5672 REGB0 = REGB1;
5673 } else {
5674 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5675 REGB0 = REGB1;
5676 }
5677 }
5678 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5679 if (UNTAG_Bool(REGB0)) {
5680 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5681 }
5682 stack_frame_head = fra.me.prev;
5683 return;
5684 }
5685 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5686 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5687 val_t REGB0;
5688 val_t tmp;
5689 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5690 fra.me.file = LOCATE_syntax___typing;
5691 fra.me.line = 1076;
5692 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
5693 fra.me.has_broke = 0;
5694 fra.me.REG_size = 3;
5695 fra.me.REG[0] = NIT_NULL;
5696 fra.me.REG[1] = NIT_NULL;
5697 fra.me.REG[2] = NIT_NULL;
5698 fra.me.REG[0] = p0;
5699 fra.me.REG[1] = p1;
5700 fra.me.REG[2] = p2;
5701 /* ./syntax//typing.nit:1078 */
5702 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5703 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5704 /* ./syntax//typing.nit:1079 */
5705 REGB0 = TAG_Bool(true);
5706 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5707 stack_frame_head = fra.me.prev;
5708 return;
5709 }
5710 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5711 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5712 val_t REGB0;
5713 val_t REGB1;
5714 val_t tmp;
5715 static val_t once_value_2; /* Once value */
5716 static val_t once_value_3; /* Once value */
5717 static val_t once_value_4; /* Once value */
5718 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5719 fra.me.file = LOCATE_syntax___typing;
5720 fra.me.line = 1084;
5721 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
5722 fra.me.has_broke = 0;
5723 fra.me.REG_size = 6;
5724 fra.me.REG[0] = NIT_NULL;
5725 fra.me.REG[1] = NIT_NULL;
5726 fra.me.REG[2] = NIT_NULL;
5727 fra.me.REG[3] = NIT_NULL;
5728 fra.me.REG[4] = NIT_NULL;
5729 fra.me.REG[5] = NIT_NULL;
5730 fra.me.REG[0] = p0;
5731 fra.me.REG[1] = p1;
5732 /* ./syntax//typing.nit:1086 */
5733 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5734 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5735 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5736 if (UNTAG_Bool(REGB0)) {
5737 REGB0 = TAG_Bool(true);
5738 } else {
5739 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5740 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5741 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5742 REGB0 = REGB1;
5743 }
5744 if (UNTAG_Bool(REGB0)) {
5745 goto label1;
5746 }
5747 /* ./syntax//typing.nit:1087 */
5748 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5749 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5750 /* ./syntax//typing.nit:1088 */
5751 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5752 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5753 /* ./syntax//typing.nit:1089 */
5754 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5755 if (UNTAG_Bool(REGB0)) {
5756 /* ./syntax//typing.nit:1090 */
5757 fra.me.REG[2] = fra.me.REG[3];
5758 } else {
5759 /* ./syntax//typing.nit:1091 */
5760 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5761 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5762 if (UNTAG_Bool(REGB0)) {
5763 /* ./syntax//typing.nit:1092 */
5764 REGB0 = TAG_Int(5);
5765 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5766 if (!once_value_2) {
5767 fra.me.REG[5] = BOX_NativeString("Type error: ");
5768 REGB0 = TAG_Int(12);
5769 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5770 once_value_2 = fra.me.REG[5];
5771 register_static_object(&once_value_2);
5772 } else fra.me.REG[5] = once_value_2;
5773 fra.me.REG[5] = fra.me.REG[5];
5774 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5775 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5776 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5777 if (!once_value_3) {
5778 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5779 REGB0 = TAG_Int(19);
5780 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5781 once_value_3 = fra.me.REG[5];
5782 register_static_object(&once_value_3);
5783 } else fra.me.REG[5] = once_value_3;
5784 fra.me.REG[5] = fra.me.REG[5];
5785 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5786 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5787 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5788 if (!once_value_4) {
5789 fra.me.REG[3] = BOX_NativeString(".");
5790 REGB0 = TAG_Int(1);
5791 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5792 once_value_4 = fra.me.REG[3];
5793 register_static_object(&once_value_4);
5794 } else fra.me.REG[3] = once_value_4;
5795 fra.me.REG[3] = fra.me.REG[3];
5796 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5797 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5798 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5799 /* ./syntax//typing.nit:1093 */
5800 goto label1;
5801 }
5802 }
5803 /* ./syntax//typing.nit:1095 */
5804 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5805 /* ./syntax//typing.nit:1096 */
5806 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5807 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]);
5808 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5809 if (UNTAG_Bool(REGB0)) {
5810 REGB0 = TAG_Bool(true);
5811 } else {
5812 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5813 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]);
5814 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5815 REGB0 = REGB1;
5816 }
5817 if (UNTAG_Bool(REGB0)) {
5818 goto label1;
5819 }
5820 /* ./syntax//typing.nit:1097 */
5821 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5822 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5823 /* ./syntax//typing.nit:1098 */
5824 REGB0 = TAG_Bool(true);
5825 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5826 label1: while(0);
5827 stack_frame_head = fra.me.prev;
5828 return;
5829 }
5830 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
5831 struct {struct stack_frame_t me;} fra;
5832 val_t tmp;
5833 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5834 fra.me.file = LOCATE_syntax___typing;
5835 fra.me.line = 1103;
5836 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
5837 fra.me.has_broke = 0;
5838 fra.me.REG_size = 1;
5839 fra.me.REG[0] = NIT_NULL;
5840 fra.me.REG[0] = p0;
5841 /* ./syntax//typing.nit:1103 */
5842 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
5843 stack_frame_head = fra.me.prev;
5844 return fra.me.REG[0];
5845 }
5846 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
5847 struct {struct stack_frame_t me;} fra;
5848 val_t tmp;
5849 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5850 fra.me.file = LOCATE_syntax___typing;
5851 fra.me.line = 1104;
5852 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
5853 fra.me.has_broke = 0;
5854 fra.me.REG_size = 1;
5855 fra.me.REG[0] = NIT_NULL;
5856 fra.me.REG[0] = p0;
5857 /* ./syntax//typing.nit:1104 */
5858 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5859 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5860 goto label1;
5861 label1: while(0);
5862 stack_frame_head = fra.me.prev;
5863 return fra.me.REG[0];
5864 }
5865 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
5866 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
5867 val_t REGB0;
5868 val_t REGB1;
5869 val_t REGB2;
5870 val_t tmp;
5871 static val_t once_value_1; /* Once value */
5872 static val_t once_value_2; /* Once value */
5873 static val_t once_value_3; /* Once value */
5874 static val_t once_value_5; /* Once value */
5875 static val_t once_value_6; /* Once value */
5876 static val_t once_value_8; /* Once value */
5877 static val_t once_value_9; /* Once value */
5878 static val_t once_value_10; /* Once value */
5879 static val_t once_value_11; /* Once value */
5880 static val_t once_value_12; /* Once value */
5881 static val_t once_value_13; /* Once value */
5882 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5883 fra.me.file = LOCATE_syntax___typing;
5884 fra.me.line = 1105;
5885 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
5886 fra.me.has_broke = 0;
5887 fra.me.REG_size = 10;
5888 fra.me.REG[0] = NIT_NULL;
5889 fra.me.REG[1] = NIT_NULL;
5890 fra.me.REG[2] = NIT_NULL;
5891 fra.me.REG[3] = NIT_NULL;
5892 fra.me.REG[4] = NIT_NULL;
5893 fra.me.REG[5] = NIT_NULL;
5894 fra.me.REG[6] = NIT_NULL;
5895 fra.me.REG[7] = NIT_NULL;
5896 fra.me.REG[8] = NIT_NULL;
5897 fra.me.REG[9] = NIT_NULL;
5898 fra.me.REG[0] = p0;
5899 fra.me.REG[1] = p1;
5900 /* ./syntax//typing.nit:1105 */
5901 fra.me.REG[2] = fra.me.REG[0];
5902 /* ./syntax//typing.nit:1107 */
5903 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5904 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
5905 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
5906 /* ./syntax//typing.nit:1108 */
5907 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
5908 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5909 if (UNTAG_Bool(REGB0)) {
5910 /* ./syntax//typing.nit:1109 */
5911 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5912 REGB0 = TAG_Bool(true);
5913 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
5914 } else {
5915 /* ./syntax//typing.nit:1110 */
5916 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5917 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5918 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
5919 if (UNTAG_Bool(REGB0)) {
5920 /* ./syntax//typing.nit:1111 */
5921 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5922 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5923 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
5924 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5925 /* ./../lib/standard//collection//array.nit:229 */
5926 fra.me.REG[4] = fra.me.REG[5];
5927 /* ./../lib/standard//collection//array.nit:232 */
5928 REGB0 = TAG_Int(0);
5929 /* ./../lib/standard//collection//array.nit:233 */
5930 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5931 if (UNTAG_Bool(REGB1)) {
5932 } else {
5933 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
5934 }
5935 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
5936 /* ./../lib/standard//collection//array.nit:234 */
5937 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
5938 /* ./../lib/standard//collection//array.nit:235 */
5939 while(1) {
5940 /* ./../lib/standard//collection//array.nit:23 */
5941 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5942 if (UNTAG_Bool(REGB1)) {
5943 } else {
5944 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
5945 }
5946 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
5947 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
5948 if (UNTAG_Bool(REGB2)) {
5949 } else {
5950 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5951 }
5952 /* ./../lib/standard//kernel.nit:215 */
5953 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5954 /* ./../lib/standard//collection//array.nit:235 */
5955 if (UNTAG_Bool(REGB1)) {
5956 /* ./../lib/standard//collection//array.nit:236 */
5957 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5958 if (UNTAG_Bool(REGB1)) {
5959 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
5960 }
5961 /* ./../lib/standard//collection//array.nit:652 */
5962 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
5963 /* ./syntax//typing.nit:1113 */
5964 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
5965 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
5966 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5967 if (UNTAG_Bool(REGB1)) {
5968 /* ./syntax//typing.nit:1114 */
5969 REGB1 = TAG_Int(5);
5970 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
5971 if (!once_value_1) {
5972 fra.me.REG[9] = BOX_NativeString("Error: ");
5973 REGB1 = TAG_Int(7);
5974 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
5975 once_value_1 = fra.me.REG[9];
5976 register_static_object(&once_value_1);
5977 } else fra.me.REG[9] = once_value_1;
5978 fra.me.REG[9] = fra.me.REG[9];
5979 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
5980 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
5981 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
5982 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
5983 if (!once_value_2) {
5984 fra.me.REG[9] = BOX_NativeString("::");
5985 REGB1 = TAG_Int(2);
5986 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
5987 once_value_2 = fra.me.REG[9];
5988 register_static_object(&once_value_2);
5989 } else fra.me.REG[9] = once_value_2;
5990 fra.me.REG[9] = fra.me.REG[9];
5991 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
5992 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
5993 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
5994 if (!once_value_3) {
5995 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
5996 REGB1 = TAG_Int(22);
5997 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
5998 once_value_3 = fra.me.REG[9];
5999 register_static_object(&once_value_3);
6000 } else fra.me.REG[9] = once_value_3;
6001 fra.me.REG[9] = fra.me.REG[9];
6002 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6003 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6004 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6005 } else {
6006 /* ./syntax//typing.nit:1116 */
6007 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6008 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6009 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6010 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6011 }
6012 /* ./../lib/standard//collection//array.nit:237 */
6013 REGB1 = TAG_Int(1);
6014 /* ./../lib/standard//kernel.nit:218 */
6015 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6016 /* ./../lib/standard//collection//array.nit:237 */
6017 REGB0 = REGB1;
6018 } else {
6019 /* ./../lib/standard//collection//array.nit:235 */
6020 goto label4;
6021 }
6022 }
6023 label4: while(0);
6024 /* ./syntax//typing.nit:1119 */
6025 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6026 if (UNTAG_Bool(REGB0)) {
6027 /* ./syntax//typing.nit:1120 */
6028 REGB0 = TAG_Int(3);
6029 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6030 if (!once_value_5) {
6031 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6032 REGB0 = TAG_Int(27);
6033 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6034 once_value_5 = fra.me.REG[4];
6035 register_static_object(&once_value_5);
6036 } else fra.me.REG[4] = once_value_5;
6037 fra.me.REG[4] = fra.me.REG[4];
6038 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6039 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6040 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6041 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6043 if (!once_value_6) {
6044 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6045 REGB0 = TAG_Int(17);
6046 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6047 once_value_6 = fra.me.REG[4];
6048 register_static_object(&once_value_6);
6049 } else fra.me.REG[4] = once_value_6;
6050 fra.me.REG[4] = fra.me.REG[4];
6051 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6052 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6053 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6054 /* ./syntax//typing.nit:1121 */
6055 goto label7;
6056 } else {
6057 /* ./../lib/standard//collection//array.nit:23 */
6058 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6059 if (UNTAG_Bool(REGB0)) {
6060 } else {
6061 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
6062 }
6063 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6064 /* ./syntax//typing.nit:1122 */
6065 REGB1 = TAG_Int(1);
6066 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6067 if (UNTAG_Bool(REGB2)) {
6068 } else {
6069 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6070 }
6071 /* ./../lib/standard//kernel.nit:217 */
6072 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6073 /* ./syntax//typing.nit:1122 */
6074 if (UNTAG_Bool(REGB1)) {
6075 /* ./syntax//typing.nit:1123 */
6076 REGB1 = TAG_Int(5);
6077 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6078 if (!once_value_8) {
6079 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6080 REGB1 = TAG_Int(37);
6081 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6082 once_value_8 = fra.me.REG[4];
6083 register_static_object(&once_value_8);
6084 } else fra.me.REG[4] = once_value_8;
6085 fra.me.REG[4] = fra.me.REG[4];
6086 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6087 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6088 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6089 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6090 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6091 if (!once_value_9) {
6092 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6093 REGB1 = TAG_Int(18);
6094 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6095 once_value_9 = fra.me.REG[4];
6096 register_static_object(&once_value_9);
6097 } else fra.me.REG[4] = once_value_9;
6098 fra.me.REG[4] = fra.me.REG[4];
6099 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6100 if (!once_value_10) {
6101 fra.me.REG[4] = BOX_NativeString(", ");
6102 REGB1 = TAG_Int(2);
6103 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6104 once_value_10 = fra.me.REG[4];
6105 register_static_object(&once_value_10);
6106 } else fra.me.REG[4] = once_value_10;
6107 fra.me.REG[4] = fra.me.REG[4];
6108 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6110 if (!once_value_11) {
6111 fra.me.REG[4] = BOX_NativeString(".");
6112 REGB1 = TAG_Int(1);
6113 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6114 once_value_11 = fra.me.REG[4];
6115 register_static_object(&once_value_11);
6116 } else fra.me.REG[4] = once_value_11;
6117 fra.me.REG[4] = fra.me.REG[4];
6118 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6119 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6120 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6121 /* ./syntax//typing.nit:1124 */
6122 goto label7;
6123 }
6124 }
6125 /* ./syntax//typing.nit:1126 */
6126 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6127 /* ./syntax//typing.nit:1127 */
6128 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6129 if (UNTAG_Bool(REGB1)) {
6130 } else {
6131 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1127);
6132 }
6133 /* ./syntax//typing.nit:1128 */
6134 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6135 /* ./syntax//typing.nit:1129 */
6136 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6137 /* ./syntax//typing.nit:1130 */
6138 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6139 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6140 REGB0 = TAG_Int(0);
6141 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6142 if (UNTAG_Bool(REGB2)) {
6143 } else {
6144 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6145 }
6146 /* ./../lib/standard//kernel.nit:217 */
6147 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6148 /* ./syntax//typing.nit:1130 */
6149 if (UNTAG_Bool(REGB0)) {
6150 /* ./syntax//typing.nit:1131 */
6151 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6152 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6153 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6154 if (UNTAG_Bool(REGB0)) {
6155 } else {
6156 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1131);
6157 }
6158 REGB0 = TAG_Bool(true);
6159 fra.me.REG[6] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], REGB0);
6160 /* ./syntax//typing.nit:1132 */
6161 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6162 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6163 CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4]);
6164 }
6165 } else {
6166 /* ./syntax//typing.nit:1135 */
6167 REGB0 = TAG_Int(3);
6168 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6169 if (!once_value_12) {
6170 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6171 REGB0 = TAG_Int(35);
6172 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6173 once_value_12 = fra.me.REG[5];
6174 register_static_object(&once_value_12);
6175 } else fra.me.REG[5] = once_value_12;
6176 fra.me.REG[5] = fra.me.REG[5];
6177 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6178 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6179 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6180 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6181 if (!once_value_13) {
6182 fra.me.REG[5] = BOX_NativeString(".");
6183 REGB0 = TAG_Int(1);
6184 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6185 once_value_13 = fra.me.REG[5];
6186 register_static_object(&once_value_13);
6187 } else fra.me.REG[5] = once_value_13;
6188 fra.me.REG[5] = fra.me.REG[5];
6189 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6190 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6191 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6192 /* ./syntax//typing.nit:1136 */
6193 goto label7;
6194 }
6195 }
6196 /* ./syntax//typing.nit:1139 */
6197 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6198 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6199 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6200 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*/;
6201 if (UNTAG_Bool(REGB0)) {
6202 } else {
6203 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1139);
6204 }
6205 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6206 if (UNTAG_Bool(REGB0)) {
6207 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1139);
6208 }
6209 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6210 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6211 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6212 if (UNTAG_Bool(REGB0)) {
6213 } else {
6214 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6215 if (UNTAG_Bool(REGB1)) {
6216 REGB1 = TAG_Bool(false);
6217 REGB0 = REGB1;
6218 } else {
6219 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6220 REGB0 = REGB1;
6221 }
6222 }
6223 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6224 if (UNTAG_Bool(REGB0)) {
6225 /* ./syntax//typing.nit:1140 */
6226 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6227 /* ./syntax//typing.nit:1141 */
6228 fra.me.REG[4] = NIT_NULL;
6229 /* ./../lib/standard//collection//array.nit:232 */
6230 REGB0 = TAG_Int(0);
6231 /* ./../lib/standard//collection//array.nit:233 */
6232 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6233 if (UNTAG_Bool(REGB1)) {
6234 } else {
6235 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
6236 }
6237 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6238 /* ./../lib/standard//collection//array.nit:234 */
6239 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6240 /* ./../lib/standard//collection//array.nit:235 */
6241 while(1) {
6242 /* ./../lib/standard//collection//array.nit:23 */
6243 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6244 if (UNTAG_Bool(REGB1)) {
6245 } else {
6246 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
6247 }
6248 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6249 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6250 if (UNTAG_Bool(REGB2)) {
6251 } else {
6252 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6253 }
6254 /* ./../lib/standard//kernel.nit:215 */
6255 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6256 /* ./../lib/standard//collection//array.nit:235 */
6257 if (UNTAG_Bool(REGB1)) {
6258 /* ./../lib/standard//collection//array.nit:236 */
6259 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6260 if (UNTAG_Bool(REGB1)) {
6261 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
6262 }
6263 /* ./../lib/standard//collection//array.nit:652 */
6264 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6265 /* ./syntax//typing.nit:1143 */
6266 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6267 if (UNTAG_Bool(REGB1)) {
6268 } else {
6269 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1143);
6270 }
6271 /* ./syntax//typing.nit:1144 */
6272 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6273 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6274 REGB1 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6275 if (UNTAG_Bool(REGB1)) {
6276 } else {
6277 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1144);
6278 }
6279 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6280 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6281 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6282 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6283 if (UNTAG_Bool(REGB1)) {
6284 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1144);
6285 }
6286 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6287 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6288 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6289 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6290 if (UNTAG_Bool(REGB1)) {
6291 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1144);
6292 }
6293 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6294 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6295 /* ./syntax//typing.nit:1145 */
6296 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6297 /* ./syntax//typing.nit:1146 */
6298 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6299 if (UNTAG_Bool(REGB1)) {
6300 } else {
6301 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6302 if (UNTAG_Bool(REGB2)) {
6303 REGB2 = TAG_Bool(false);
6304 REGB1 = REGB2;
6305 } else {
6306 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6307 REGB1 = REGB2;
6308 }
6309 }
6310 if (UNTAG_Bool(REGB1)) {
6311 REGB1 = TAG_Bool(true);
6312 } else {
6313 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6314 if (UNTAG_Bool(REGB2)) {
6315 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1146);
6316 }
6317 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6318 REGB1 = REGB2;
6319 }
6320 if (UNTAG_Bool(REGB1)) {
6321 /* ./syntax//typing.nit:1147 */
6322 fra.me.REG[4] = fra.me.REG[8];
6323 }
6324 /* ./../lib/standard//collection//array.nit:237 */
6325 REGB1 = TAG_Int(1);
6326 /* ./../lib/standard//kernel.nit:218 */
6327 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6328 /* ./../lib/standard//collection//array.nit:237 */
6329 REGB0 = REGB1;
6330 } else {
6331 /* ./../lib/standard//collection//array.nit:235 */
6332 goto label14;
6333 }
6334 }
6335 label14: while(0);
6336 /* ./../lib/standard//collection//array.nit:232 */
6337 REGB0 = TAG_Int(0);
6338 /* ./../lib/standard//collection//array.nit:233 */
6339 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6340 if (UNTAG_Bool(REGB1)) {
6341 } else {
6342 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
6343 }
6344 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6345 /* ./../lib/standard//collection//array.nit:234 */
6346 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6347 /* ./../lib/standard//collection//array.nit:235 */
6348 while(1) {
6349 /* ./../lib/standard//collection//array.nit:23 */
6350 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6351 if (UNTAG_Bool(REGB1)) {
6352 } else {
6353 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
6354 }
6355 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6356 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6357 if (UNTAG_Bool(REGB2)) {
6358 } else {
6359 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6360 }
6361 /* ./../lib/standard//kernel.nit:215 */
6362 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6363 /* ./../lib/standard//collection//array.nit:235 */
6364 if (UNTAG_Bool(REGB1)) {
6365 /* ./../lib/standard//collection//array.nit:236 */
6366 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6367 if (UNTAG_Bool(REGB1)) {
6368 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
6369 }
6370 /* ./../lib/standard//collection//array.nit:652 */
6371 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6372 /* ./syntax//typing.nit:1151 */
6373 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6374 if (UNTAG_Bool(REGB1)) {
6375 } else {
6376 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1151);
6377 }
6378 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
6379 /* ./../lib/standard//collection//array.nit:237 */
6380 REGB1 = TAG_Int(1);
6381 /* ./../lib/standard//kernel.nit:218 */
6382 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6383 /* ./../lib/standard//collection//array.nit:237 */
6384 REGB0 = REGB1;
6385 } else {
6386 /* ./../lib/standard//collection//array.nit:235 */
6387 goto label15;
6388 }
6389 }
6390 label15: while(0);
6391 /* ./syntax//typing.nit:1153 */
6392 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6393 }
6394 /* ./syntax//typing.nit:1155 */
6395 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6396 /* ./syntax//typing.nit:1156 */
6397 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6398 if (UNTAG_Bool(REGB0)) {
6399 } else {
6400 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1156);
6401 }
6402 /* ./syntax//typing.nit:1157 */
6403 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6404 /* ./syntax//typing.nit:1158 */
6405 REGB0 = TAG_Bool(true);
6406 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6407 label7: while(0);
6408 stack_frame_head = fra.me.prev;
6409 return;
6410 }
6411 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
6412 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6413 val_t REGB0;
6414 val_t tmp;
6415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6416 fra.me.file = LOCATE_syntax___typing;
6417 fra.me.line = 1163;
6418 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
6419 fra.me.has_broke = 0;
6420 fra.me.REG_size = 2;
6421 fra.me.REG[0] = NIT_NULL;
6422 fra.me.REG[1] = NIT_NULL;
6423 fra.me.REG[0] = p0;
6424 /* ./syntax//typing.nit:1163 */
6425 fra.me.REG[1] = fra.me.REG[0];
6426 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
6427 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6428 if (UNTAG_Bool(REGB0)) {
6429 } else {
6430 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1163);
6431 }
6432 goto label1;
6433 label1: while(0);
6434 stack_frame_head = fra.me.prev;
6435 return fra.me.REG[1];
6436 }
6437 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
6438 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6439 val_t REGB0;
6440 val_t tmp;
6441 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6442 fra.me.file = LOCATE_syntax___typing;
6443 fra.me.line = 1166;
6444 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
6445 fra.me.has_broke = 0;
6446 fra.me.REG_size = 2;
6447 fra.me.REG[0] = NIT_NULL;
6448 fra.me.REG[1] = NIT_NULL;
6449 fra.me.REG[0] = p0;
6450 /* ./syntax//typing.nit:1166 */
6451 fra.me.REG[1] = fra.me.REG[0];
6452 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
6453 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6454 if (UNTAG_Bool(REGB0)) {
6455 } else {
6456 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1166);
6457 }
6458 goto label1;
6459 label1: while(0);
6460 stack_frame_head = fra.me.prev;
6461 return fra.me.REG[1];
6462 }
6463 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
6464 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6465 val_t REGB0;
6466 val_t REGB1;
6467 val_t REGB2;
6468 val_t tmp;
6469 static val_t once_value_2; /* Once value */
6470 static val_t once_value_3; /* Once value */
6471 static val_t once_value_4; /* Once value */
6472 static val_t once_value_5; /* Once value */
6473 static val_t once_value_6; /* Once value */
6474 static val_t once_value_7; /* Once value */
6475 static val_t once_value_8; /* Once value */
6476 static val_t once_value_9; /* Once value */
6477 static val_t once_value_10; /* Once value */
6478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6479 fra.me.file = LOCATE_syntax___typing;
6480 fra.me.line = 1169;
6481 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
6482 fra.me.has_broke = 0;
6483 fra.me.REG_size = 7;
6484 fra.me.REG[0] = NIT_NULL;
6485 fra.me.REG[1] = NIT_NULL;
6486 fra.me.REG[2] = NIT_NULL;
6487 fra.me.REG[3] = NIT_NULL;
6488 fra.me.REG[4] = NIT_NULL;
6489 fra.me.REG[5] = NIT_NULL;
6490 fra.me.REG[6] = NIT_NULL;
6491 fra.me.REG[0] = p0;
6492 fra.me.REG[1] = p1;
6493 /* ./syntax//typing.nit:1172 */
6494 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6495 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6496 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6497 if (UNTAG_Bool(REGB0)) {
6498 goto label1;
6499 }
6500 /* ./syntax//typing.nit:1173 */
6501 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6502 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6503 /* ./syntax//typing.nit:1174 */
6504 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
6505 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
6506 /* ./syntax//typing.nit:1175 */
6507 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
6508 if (UNTAG_Bool(REGB0)) {
6509 /* ./syntax//typing.nit:1176 */
6510 REGB0 = TAG_Int(3);
6511 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6512 if (!once_value_2) {
6513 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
6514 REGB0 = TAG_Int(18);
6515 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6516 once_value_2 = fra.me.REG[5];
6517 register_static_object(&once_value_2);
6518 } else fra.me.REG[5] = once_value_2;
6519 fra.me.REG[5] = fra.me.REG[5];
6520 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6521 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6522 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6523 if (!once_value_3) {
6524 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
6525 REGB0 = TAG_Int(19);
6526 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6527 once_value_3 = fra.me.REG[5];
6528 register_static_object(&once_value_3);
6529 } else fra.me.REG[5] = once_value_3;
6530 fra.me.REG[5] = fra.me.REG[5];
6531 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6532 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6533 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6534 /* ./syntax//typing.nit:1177 */
6535 goto label1;
6536 }
6537 /* ./syntax//typing.nit:1179 */
6538 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
6539 /* ./syntax//typing.nit:1180 */
6540 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6541 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6542 if (UNTAG_Bool(REGB0)) {
6543 /* ./syntax//typing.nit:1181 */
6544 REGB0 = TAG_Int(5);
6545 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6546 if (!once_value_4) {
6547 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
6548 REGB0 = TAG_Int(17);
6549 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6550 once_value_4 = fra.me.REG[6];
6551 register_static_object(&once_value_4);
6552 } else fra.me.REG[6] = once_value_4;
6553 fra.me.REG[6] = fra.me.REG[6];
6554 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6555 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6556 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6557 if (!once_value_5) {
6558 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
6559 REGB0 = TAG_Int(19);
6560 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6561 once_value_5 = fra.me.REG[6];
6562 register_static_object(&once_value_5);
6563 } else fra.me.REG[6] = once_value_5;
6564 fra.me.REG[6] = fra.me.REG[6];
6565 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6566 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6567 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6568 if (!once_value_6) {
6569 fra.me.REG[6] = BOX_NativeString(".");
6570 REGB0 = TAG_Int(1);
6571 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
6572 once_value_6 = fra.me.REG[6];
6573 register_static_object(&once_value_6);
6574 } else fra.me.REG[6] = once_value_6;
6575 fra.me.REG[6] = fra.me.REG[6];
6576 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6577 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6578 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
6579 /* ./syntax//typing.nit:1182 */
6580 goto label1;
6581 }
6582 /* ./syntax//typing.nit:1184 */
6583 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6584 /* ./syntax//typing.nit:1185 */
6585 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6586 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6587 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
6588 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6589 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6590 REGB1 = TAG_Int(3);
6591 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6592 if (UNTAG_Bool(REGB2)) {
6593 } else {
6594 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6595 }
6596 /* ./../lib/standard//kernel.nit:215 */
6597 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6598 /* ./syntax//typing.nit:1185 */
6599 if (UNTAG_Bool(REGB1)) {
6600 /* ./syntax//typing.nit:1186 */
6601 REGB1 = TAG_Int(7);
6602 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6603 if (!once_value_7) {
6604 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
6605 REGB1 = TAG_Int(17);
6606 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
6607 once_value_7 = fra.me.REG[5];
6608 register_static_object(&once_value_7);
6609 } else fra.me.REG[5] = once_value_7;
6610 fra.me.REG[5] = fra.me.REG[5];
6611 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
6612 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6613 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6614 if (!once_value_8) {
6615 fra.me.REG[3] = BOX_NativeString(" from ");
6616 REGB1 = TAG_Int(6);
6617 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6618 once_value_8 = fra.me.REG[3];
6619 register_static_object(&once_value_8);
6620 } else fra.me.REG[3] = once_value_8;
6621 fra.me.REG[3] = fra.me.REG[3];
6622 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6623 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6624 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
6625 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
6626 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6627 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6628 if (!once_value_9) {
6629 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
6630 REGB1 = TAG_Int(17);
6631 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6632 once_value_9 = fra.me.REG[3];
6633 register_static_object(&once_value_9);
6634 } else fra.me.REG[3] = once_value_9;
6635 fra.me.REG[3] = fra.me.REG[3];
6636 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6637 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6638 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6640 if (!once_value_10) {
6641 fra.me.REG[3] = BOX_NativeString("");
6642 REGB1 = TAG_Int(0);
6643 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
6644 once_value_10 = fra.me.REG[3];
6645 register_static_object(&once_value_10);
6646 } else fra.me.REG[3] = once_value_10;
6647 fra.me.REG[3] = fra.me.REG[3];
6648 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6649 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6650 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
6651 }
6652 /* ./syntax//typing.nit:1188 */
6653 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
6654 /* ./syntax//typing.nit:1189 */
6655 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
6656 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
6657 /* ./syntax//typing.nit:1190 */
6658 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6659 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
6660 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6661 if (UNTAG_Bool(REGB1)) {
6662 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6663 if (UNTAG_Bool(REGB1)) {
6664 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1190);
6665 }
6666 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
6667 fra.me.REG[2] = fra.me.REG[4];
6668 }
6669 /* ./syntax//typing.nit:1191 */
6670 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
6671 label1: while(0);
6672 stack_frame_head = fra.me.prev;
6673 return;
6674 }
6675 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
6676 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6677 val_t REGB0;
6678 val_t REGB1;
6679 val_t tmp;
6680 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6681 fra.me.file = LOCATE_syntax___typing;
6682 fra.me.line = 1196;
6683 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
6684 fra.me.has_broke = 0;
6685 fra.me.REG_size = 2;
6686 fra.me.REG[0] = NIT_NULL;
6687 fra.me.REG[1] = NIT_NULL;
6688 fra.me.REG[0] = p0;
6689 fra.me.REG[1] = p1;
6690 /* ./syntax//typing.nit:1198 */
6691 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6692 /* ./syntax//typing.nit:1199 */
6693 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
6694 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6695 if (UNTAG_Bool(REGB0)) {
6696 } else {
6697 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6698 if (UNTAG_Bool(REGB1)) {
6699 REGB1 = TAG_Bool(false);
6700 REGB0 = REGB1;
6701 } else {
6702 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6703 REGB0 = REGB1;
6704 }
6705 }
6706 if (UNTAG_Bool(REGB0)) {
6707 goto label1;
6708 }
6709 /* ./syntax//typing.nit:1200 */
6710 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6711 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6712 /* ./syntax//typing.nit:1201 */
6713 REGB0 = TAG_Bool(true);
6714 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6715 label1: while(0);
6716 stack_frame_head = fra.me.prev;
6717 return;
6718 }
6719 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
6720 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6721 val_t REGB0;
6722 val_t REGB1;
6723 val_t tmp;
6724 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6725 fra.me.file = LOCATE_syntax___typing;
6726 fra.me.line = 1206;
6727 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
6728 fra.me.has_broke = 0;
6729 fra.me.REG_size = 4;
6730 fra.me.REG[0] = NIT_NULL;
6731 fra.me.REG[1] = NIT_NULL;
6732 fra.me.REG[2] = NIT_NULL;
6733 fra.me.REG[3] = NIT_NULL;
6734 fra.me.REG[0] = p0;
6735 fra.me.REG[1] = p1;
6736 /* ./syntax//typing.nit:1208 */
6737 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6738 /* ./syntax//typing.nit:1209 */
6739 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
6740 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6741 if (UNTAG_Bool(REGB0)) {
6742 } else {
6743 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6744 if (UNTAG_Bool(REGB1)) {
6745 REGB1 = TAG_Bool(false);
6746 REGB0 = REGB1;
6747 } else {
6748 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6749 REGB0 = REGB1;
6750 }
6751 }
6752 if (UNTAG_Bool(REGB0)) {
6753 goto label1;
6754 }
6755 /* ./syntax//typing.nit:1210 */
6756 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6757 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6758 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]);
6759 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6760 if (UNTAG_Bool(REGB0)) {
6761 goto label1;
6762 }
6763 /* ./syntax//typing.nit:1211 */
6764 REGB0 = TAG_Bool(true);
6765 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6766 label1: while(0);
6767 stack_frame_head = fra.me.prev;
6768 return;
6769 }
6770 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
6771 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6772 val_t REGB0;
6773 val_t REGB1;
6774 val_t tmp;
6775 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6776 fra.me.file = LOCATE_syntax___typing;
6777 fra.me.line = 1216;
6778 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
6779 fra.me.has_broke = 0;
6780 fra.me.REG_size = 4;
6781 fra.me.REG[0] = NIT_NULL;
6782 fra.me.REG[1] = NIT_NULL;
6783 fra.me.REG[2] = NIT_NULL;
6784 fra.me.REG[3] = NIT_NULL;
6785 fra.me.REG[0] = p0;
6786 fra.me.REG[1] = p1;
6787 /* ./syntax//typing.nit:1218 */
6788 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6789 /* ./syntax//typing.nit:1219 */
6790 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
6791 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6792 if (UNTAG_Bool(REGB0)) {
6793 } else {
6794 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6795 if (UNTAG_Bool(REGB1)) {
6796 REGB1 = TAG_Bool(false);
6797 REGB0 = REGB1;
6798 } else {
6799 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6800 REGB0 = REGB1;
6801 }
6802 }
6803 if (UNTAG_Bool(REGB0)) {
6804 goto label1;
6805 }
6806 /* ./syntax//typing.nit:1220 */
6807 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6808 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]);
6809 /* ./syntax//typing.nit:1221 */
6810 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6811 if (UNTAG_Bool(REGB0)) {
6812 } else {
6813 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6814 if (UNTAG_Bool(REGB1)) {
6815 REGB1 = TAG_Bool(false);
6816 REGB0 = REGB1;
6817 } else {
6818 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6819 REGB0 = REGB1;
6820 }
6821 }
6822 if (UNTAG_Bool(REGB0)) {
6823 goto label1;
6824 }
6825 /* ./syntax//typing.nit:1222 */
6826 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
6827 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6828 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]);
6829 /* ./syntax//typing.nit:1223 */
6830 REGB0 = TAG_Bool(true);
6831 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6832 label1: while(0);
6833 stack_frame_head = fra.me.prev;
6834 return;
6835 }
6836 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
6837 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6838 val_t REGB0;
6839 val_t REGB1;
6840 val_t tmp;
6841 static val_t once_value_2; /* Once value */
6842 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6843 fra.me.file = LOCATE_syntax___typing;
6844 fra.me.line = 1228;
6845 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
6846 fra.me.has_broke = 0;
6847 fra.me.REG_size = 3;
6848 fra.me.REG[0] = NIT_NULL;
6849 fra.me.REG[1] = NIT_NULL;
6850 fra.me.REG[2] = NIT_NULL;
6851 fra.me.REG[0] = p0;
6852 fra.me.REG[1] = p1;
6853 /* ./syntax//typing.nit:1230 */
6854 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
6855 /* ./syntax//typing.nit:1231 */
6856 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
6857 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6858 if (UNTAG_Bool(REGB0)) {
6859 } else {
6860 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6861 if (UNTAG_Bool(REGB1)) {
6862 REGB1 = TAG_Bool(false);
6863 REGB0 = REGB1;
6864 } else {
6865 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6866 REGB0 = REGB1;
6867 }
6868 }
6869 if (UNTAG_Bool(REGB0)) {
6870 goto label1;
6871 }
6872 /* ./syntax//typing.nit:1232 */
6873 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
6874 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
6875 if (UNTAG_Bool(REGB0)) {
6876 /* ./syntax//typing.nit:1233 */
6877 if (!once_value_2) {
6878 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
6879 REGB0 = TAG_Int(37);
6880 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
6881 once_value_2 = fra.me.REG[2];
6882 register_static_object(&once_value_2);
6883 } else fra.me.REG[2] = once_value_2;
6884 fra.me.REG[2] = fra.me.REG[2];
6885 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6886 }
6887 /* ./syntax//typing.nit:1235 */
6888 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
6889 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6890 /* ./syntax//typing.nit:1236 */
6891 REGB0 = TAG_Bool(true);
6892 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6893 label1: while(0);
6894 stack_frame_head = fra.me.prev;
6895 return;
6896 }
6897 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
6898 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6899 val_t REGB0;
6900 val_t tmp;
6901 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6902 fra.me.file = LOCATE_syntax___typing;
6903 fra.me.line = 1241;
6904 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
6905 fra.me.has_broke = 0;
6906 fra.me.REG_size = 2;
6907 fra.me.REG[0] = NIT_NULL;
6908 fra.me.REG[1] = NIT_NULL;
6909 fra.me.REG[0] = p0;
6910 /* ./syntax//typing.nit:1241 */
6911 fra.me.REG[1] = fra.me.REG[0];
6912 /* ./syntax//typing.nit:1242 */
6913 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
6914 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6915 if (UNTAG_Bool(REGB0)) {
6916 } else {
6917 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1242);
6918 }
6919 goto label1;
6920 label1: while(0);
6921 stack_frame_head = fra.me.prev;
6922 return fra.me.REG[1];
6923 }
6924 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
6925 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6926 val_t REGB0;
6927 val_t REGB1;
6928 val_t tmp;
6929 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6930 fra.me.file = LOCATE_syntax___typing;
6931 fra.me.line = 1245;
6932 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
6933 fra.me.has_broke = 0;
6934 fra.me.REG_size = 4;
6935 fra.me.REG[0] = NIT_NULL;
6936 fra.me.REG[1] = NIT_NULL;
6937 fra.me.REG[2] = NIT_NULL;
6938 fra.me.REG[3] = NIT_NULL;
6939 fra.me.REG[0] = p0;
6940 /* ./syntax//typing.nit:1248 */
6941 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
6942 /* ./syntax//typing.nit:1249 */
6943 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6944 if (UNTAG_Bool(REGB0)) {
6945 } else {
6946 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6947 if (UNTAG_Bool(REGB1)) {
6948 REGB1 = TAG_Bool(false);
6949 REGB0 = REGB1;
6950 } else {
6951 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6952 REGB0 = REGB1;
6953 }
6954 }
6955 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6956 if (UNTAG_Bool(REGB0)) {
6957 /* ./syntax//typing.nit:1250 */
6958 fra.me.REG[2] = fra.me.REG[1];
6959 goto label1;
6960 } else {
6961 /* ./syntax//typing.nit:1252 */
6962 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
6963 fra.me.REG[1] = fra.me.REG[3];
6964 /* ./syntax//typing.nit:1253 */
6965 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6966 if (UNTAG_Bool(REGB0)) {
6967 } else {
6968 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
6969 if (UNTAG_Bool(REGB1)) {
6970 REGB1 = TAG_Bool(false);
6971 REGB0 = REGB1;
6972 } else {
6973 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
6974 REGB0 = REGB1;
6975 }
6976 }
6977 if (UNTAG_Bool(REGB0)) {
6978 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
6979 fra.me.REG[1] = fra.me.REG[3];
6980 }
6981 /* ./syntax//typing.nit:1254 */
6982 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
6983 /* ./syntax//typing.nit:1255 */
6984 fra.me.REG[2] = fra.me.REG[1];
6985 goto label1;
6986 }
6987 label1: while(0);
6988 stack_frame_head = fra.me.prev;
6989 return fra.me.REG[2];
6990 }
6991 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
6992 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6993 val_t REGB0;
6994 val_t tmp;
6995 static val_t once_value_1; /* Once value */
6996 static val_t once_value_2; /* Once value */
6997 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6998 fra.me.file = LOCATE_syntax___typing;
6999 fra.me.line = 1261;
7000 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
7001 fra.me.has_broke = 0;
7002 fra.me.REG_size = 3;
7003 fra.me.REG[0] = NIT_NULL;
7004 fra.me.REG[1] = NIT_NULL;
7005 fra.me.REG[2] = NIT_NULL;
7006 fra.me.REG[0] = p0;
7007 /* ./syntax//typing.nit:1263 */
7008 REGB0 = TAG_Int(3);
7009 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7010 if (!once_value_1) {
7011 fra.me.REG[2] = BOX_NativeString("");
7012 REGB0 = TAG_Int(0);
7013 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7014 once_value_1 = fra.me.REG[2];
7015 register_static_object(&once_value_1);
7016 } else fra.me.REG[2] = once_value_1;
7017 fra.me.REG[2] = fra.me.REG[2];
7018 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7019 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
7020 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7021 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7022 if (!once_value_2) {
7023 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
7024 REGB0 = TAG_Int(25);
7025 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7026 once_value_2 = fra.me.REG[2];
7027 register_static_object(&once_value_2);
7028 } else fra.me.REG[2] = once_value_2;
7029 fra.me.REG[2] = fra.me.REG[2];
7030 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7031 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
7032 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7033 /* ./syntax//typing.nit:1264 */
7034 fra.me.REG[1] = NIT_NULL;
7035 goto label3;
7036 label3: while(0);
7037 stack_frame_head = fra.me.prev;
7038 return fra.me.REG[1];
7039 }
7040 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7041 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7042 val_t REGB0;
7043 val_t REGB1;
7044 val_t REGB2;
7045 val_t REGB3;
7046 val_t REGB4;
7047 val_t REGB5;
7048 val_t REGB6;
7049 val_t REGB7;
7050 val_t REGB8;
7051 val_t REGB9;
7052 val_t REGB10;
7053 val_t REGB11;
7054 val_t tmp;
7055 static val_t once_value_1; /* Once value */
7056 static val_t once_value_2; /* Once value */
7057 static val_t once_value_3; /* Once value */
7058 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7059 fra.me.file = LOCATE_syntax___typing;
7060 fra.me.line = 1267;
7061 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
7062 fra.me.has_broke = 0;
7063 fra.me.REG_size = 7;
7064 fra.me.REG[0] = NIT_NULL;
7065 fra.me.REG[1] = NIT_NULL;
7066 fra.me.REG[2] = NIT_NULL;
7067 fra.me.REG[3] = NIT_NULL;
7068 fra.me.REG[4] = NIT_NULL;
7069 fra.me.REG[5] = NIT_NULL;
7070 fra.me.REG[6] = NIT_NULL;
7071 fra.me.REG[0] = p0;
7072 fra.me.REG[1] = p1;
7073 fra.me.REG[2] = p2;
7074 fra.me.REG[3] = p3;
7075 fra.me.REG[4] = p4;
7076 /* ./syntax//typing.nit:1270 */
7077 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
7078 /* ./syntax//typing.nit:1271 */
7079 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
7080 /* ./syntax//typing.nit:1273 */
7081 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7082 if (UNTAG_Bool(REGB2)) {
7083 } else {
7084 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7085 if (UNTAG_Bool(REGB3)) {
7086 REGB3 = TAG_Bool(false);
7087 REGB2 = REGB3;
7088 } else {
7089 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7090 REGB2 = REGB3;
7091 }
7092 }
7093 if (UNTAG_Bool(REGB2)) {
7094 REGB2 = TAG_Int(0);
7095 } else {
7096 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7097 if (UNTAG_Bool(REGB3)) {
7098 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1273);
7099 }
7100 /* ./../lib/standard//collection//array.nit:23 */
7101 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7102 if (UNTAG_Bool(REGB3)) {
7103 } else {
7104 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7105 }
7106 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7107 /* ./syntax//typing.nit:1273 */
7108 REGB2 = REGB3;
7109 }
7110 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7111 if (UNTAG_Bool(REGB3)) {
7112 } else {
7113 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7114 }
7115 /* ./../lib/standard//kernel.nit:217 */
7116 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7117 /* ./syntax//typing.nit:1274 */
7118 if (UNTAG_Bool(REGB3)) {
7119 REGB3 = TAG_Bool(true);
7120 } else {
7121 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7122 if (UNTAG_Bool(REGB4)) {
7123 } else {
7124 /* ./../lib/standard//kernel.nit:210 */
7125 REGB5 = TAG_Bool((REGB1)==(REGB2));
7126 /* ./syntax//typing.nit:1274 */
7127 REGB4 = REGB5;
7128 }
7129 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
7130 if (UNTAG_Bool(REGB4)) {
7131 REGB4 = TAG_Int(1);
7132 /* ./../lib/standard//kernel.nit:219 */
7133 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
7134 /* ./syntax//typing.nit:1274 */
7135 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
7136 if (UNTAG_Bool(REGB5)) {
7137 } else {
7138 /* ./../lib/standard//kernel.nit:210 */
7139 REGB4 = TAG_Bool((REGB0)==(REGB4));
7140 /* ./syntax//typing.nit:1274 */
7141 REGB5 = REGB4;
7142 }
7143 } else {
7144 REGB4 = TAG_Bool(false);
7145 REGB5 = REGB4;
7146 }
7147 REGB3 = REGB5;
7148 }
7149 if (UNTAG_Bool(REGB3)) {
7150 /* ./syntax//typing.nit:1275 */
7151 REGB3 = TAG_Int(5);
7152 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
7153 if (!once_value_1) {
7154 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
7155 REGB3 = TAG_Int(37);
7156 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
7157 once_value_1 = fra.me.REG[6];
7158 register_static_object(&once_value_1);
7159 } else fra.me.REG[6] = once_value_1;
7160 fra.me.REG[6] = fra.me.REG[6];
7161 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7162 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7163 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7164 if (!once_value_2) {
7165 fra.me.REG[3] = BOX_NativeString("");
7166 REGB3 = TAG_Int(0);
7167 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7168 once_value_2 = fra.me.REG[3];
7169 register_static_object(&once_value_2);
7170 } else fra.me.REG[3] = once_value_2;
7171 fra.me.REG[3] = fra.me.REG[3];
7172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7173 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7174 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7175 if (!once_value_3) {
7176 fra.me.REG[3] = BOX_NativeString("'.");
7177 REGB3 = TAG_Int(2);
7178 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7179 once_value_3 = fra.me.REG[3];
7180 register_static_object(&once_value_3);
7181 } else fra.me.REG[3] = once_value_3;
7182 fra.me.REG[3] = fra.me.REG[3];
7183 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7184 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7185 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7186 /* ./syntax//typing.nit:1276 */
7187 REGB3 = TAG_Bool(false);
7188 goto label4;
7189 }
7190 /* ./syntax//typing.nit:1278 */
7191 REGB5 = TAG_Int(0);
7192 /* ./syntax//typing.nit:1279 */
7193 REGB4 = TAG_Int(0);
7194 /* ./../lib/standard//kernel.nit:330 */
7195 REGB6 = REGB1;
7196 /* ./../lib/standard//kernel.nit:335 */
7197 while(1) {
7198 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
7199 if (UNTAG_Bool(REGB7)) {
7200 } else {
7201 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7202 }
7203 /* ./../lib/standard//kernel.nit:215 */
7204 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
7205 /* ./../lib/standard//kernel.nit:335 */
7206 if (UNTAG_Bool(REGB7)) {
7207 /* ./syntax//typing.nit:1279 */
7208 REGB7 = REGB4;
7209 /* ./syntax//typing.nit:1281 */
7210 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
7211 /* ./syntax//typing.nit:1282 */
7212 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
7213 if (UNTAG_Bool(REGB8)) {
7214 } else {
7215 /* ./../lib/standard//kernel.nit:210 */
7216 REGB7 = TAG_Bool((REGB7)==(REGB0));
7217 /* ./syntax//typing.nit:1282 */
7218 REGB8 = REGB7;
7219 }
7220 if (UNTAG_Bool(REGB8)) {
7221 /* ./syntax//typing.nit:1283 */
7222 REGB8 = TAG_Int(0);
7223 /* ./../lib/standard//kernel.nit:220 */
7224 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
7225 /* ./../lib/standard//kernel.nit:324 */
7226 while(1) {
7227 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
7228 if (UNTAG_Bool(REGB9)) {
7229 } else {
7230 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7231 }
7232 /* ./../lib/standard//kernel.nit:214 */
7233 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
7234 /* ./../lib/standard//kernel.nit:324 */
7235 if (UNTAG_Bool(REGB9)) {
7236 /* ./syntax//typing.nit:1284 */
7237 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7238 if (UNTAG_Bool(REGB9)) {
7239 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1284);
7240 }
7241 /* ./../lib/standard//collection//array.nit:241 */
7242 fra.me.REG[0] = fra.me.REG[4];
7243 REGB9 = REGB5;
7244 /* ./../lib/standard//collection//array.nit:243 */
7245 REGB10 = TAG_Int(0);
7246 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
7247 if (UNTAG_Bool(REGB11)) {
7248 } else {
7249 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7250 }
7251 /* ./../lib/standard//kernel.nit:216 */
7252 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
7253 /* ./../lib/standard//collection//array.nit:243 */
7254 if (UNTAG_Bool(REGB10)) {
7255 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
7256 if (UNTAG_Bool(REGB10)) {
7257 } else {
7258 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
7259 }
7260 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
7261 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
7262 if (UNTAG_Bool(REGB11)) {
7263 } else {
7264 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7265 }
7266 /* ./../lib/standard//kernel.nit:215 */
7267 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
7268 } else {
7269 /* ./../lib/standard//collection//array.nit:243 */
7270 REGB11 = TAG_Bool(false);
7271 REGB10 = REGB11;
7272 }
7273 if (UNTAG_Bool(REGB10)) {
7274 } else {
7275 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
7276 }
7277 /* ./../lib/standard//collection//array.nit:244 */
7278 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
7279 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
7280 if (UNTAG_Bool(REGB10)) {
7281 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
7282 }
7283 /* ./../lib/standard//collection//array.nit:652 */
7284 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
7285 /* ./../lib/standard//collection//array.nit:244 */
7286 goto label5;
7287 label5: while(0);
7288 /* ./syntax//typing.nit:1285 */
7289 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7290 /* ./syntax//typing.nit:1286 */
7291 REGB9 = TAG_Int(1);
7292 /* ./../lib/standard//kernel.nit:218 */
7293 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
7294 /* ./syntax//typing.nit:1286 */
7295 REGB5 = REGB9;
7296 /* ./../lib/standard//kernel.nit:326 */
7297 REGB9 = TAG_Int(1);
7298 /* ./../lib/standard//kernel.nit:218 */
7299 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
7300 /* ./../lib/standard//kernel.nit:326 */
7301 REGB8 = REGB9;
7302 } else {
7303 /* ./../lib/standard//kernel.nit:324 */
7304 goto label6;
7305 }
7306 }
7307 label6: while(0);
7308 } else {
7309 /* ./syntax//typing.nit:1289 */
7310 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7311 if (UNTAG_Bool(REGB8)) {
7312 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1289);
7313 }
7314 /* ./../lib/standard//collection//array.nit:241 */
7315 fra.me.REG[3] = fra.me.REG[4];
7316 REGB8 = REGB5;
7317 /* ./../lib/standard//collection//array.nit:243 */
7318 REGB7 = TAG_Int(0);
7319 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
7320 if (UNTAG_Bool(REGB9)) {
7321 } else {
7322 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7323 }
7324 /* ./../lib/standard//kernel.nit:216 */
7325 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
7326 /* ./../lib/standard//collection//array.nit:243 */
7327 if (UNTAG_Bool(REGB7)) {
7328 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
7329 if (UNTAG_Bool(REGB7)) {
7330 } else {
7331 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
7332 }
7333 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
7334 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
7335 if (UNTAG_Bool(REGB9)) {
7336 } else {
7337 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7338 }
7339 /* ./../lib/standard//kernel.nit:215 */
7340 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
7341 } else {
7342 /* ./../lib/standard//collection//array.nit:243 */
7343 REGB9 = TAG_Bool(false);
7344 REGB7 = REGB9;
7345 }
7346 if (UNTAG_Bool(REGB7)) {
7347 } else {
7348 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
7349 }
7350 /* ./../lib/standard//collection//array.nit:244 */
7351 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
7352 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7353 if (UNTAG_Bool(REGB7)) {
7354 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
7355 }
7356 /* ./../lib/standard//collection//array.nit:652 */
7357 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
7358 /* ./../lib/standard//collection//array.nit:244 */
7359 goto label7;
7360 label7: while(0);
7361 /* ./syntax//typing.nit:1289 */
7362 fra.me.REG[0] = fra.me.REG[3];
7363 /* ./syntax//typing.nit:1290 */
7364 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7365 /* ./syntax//typing.nit:1291 */
7366 REGB8 = TAG_Int(1);
7367 /* ./../lib/standard//kernel.nit:218 */
7368 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
7369 /* ./syntax//typing.nit:1291 */
7370 REGB5 = REGB8;
7371 }
7372 /* ./../lib/standard//kernel.nit:337 */
7373 REGB8 = TAG_Int(1);
7374 /* ./../lib/standard//kernel.nit:218 */
7375 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
7376 /* ./../lib/standard//kernel.nit:337 */
7377 REGB4 = REGB8;
7378 } else {
7379 /* ./../lib/standard//kernel.nit:335 */
7380 goto label8;
7381 }
7382 }
7383 label8: while(0);
7384 /* ./syntax//typing.nit:1294 */
7385 REGB4 = TAG_Bool(true);
7386 REGB3 = REGB4;
7387 goto label4;
7388 label4: while(0);
7389 stack_frame_head = fra.me.prev;
7390 return REGB3;
7391 }
7392 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7393 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
7394 val_t REGB0;
7395 val_t REGB1;
7396 val_t REGB2;
7397 val_t REGB3;
7398 val_t REGB4;
7399 val_t REGB5;
7400 val_t tmp;
7401 static val_t once_value_2; /* Once value */
7402 static val_t once_value_3; /* Once value */
7403 static val_t once_value_4; /* Once value */
7404 static val_t once_value_5; /* Once value */
7405 static val_t once_value_6; /* Once value */
7406 static val_t once_value_7; /* Once value */
7407 static val_t once_value_8; /* Once value */
7408 static val_t once_value_11; /* Once value */
7409 static val_t once_value_12; /* Once value */
7410 static val_t once_value_13; /* Once value */
7411 static val_t once_value_14; /* Once value */
7412 static val_t once_value_15; /* Once value */
7413 static val_t once_value_16; /* Once value */
7414 static val_t once_value_18; /* Once value */
7415 static val_t once_value_19; /* Once value */
7416 static val_t once_value_20; /* Once value */
7417 static val_t once_value_21; /* Once value */
7418 static val_t once_value_22; /* Once value */
7419 static val_t once_value_24; /* Once value */
7420 static val_t once_value_25; /* Once value */
7421 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7422 fra.me.file = LOCATE_syntax___typing;
7423 fra.me.line = 1297;
7424 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
7425 fra.me.has_broke = 0;
7426 fra.me.REG_size = 17;
7427 fra.me.REG[0] = NIT_NULL;
7428 fra.me.REG[1] = NIT_NULL;
7429 fra.me.REG[2] = NIT_NULL;
7430 fra.me.REG[3] = NIT_NULL;
7431 fra.me.REG[4] = NIT_NULL;
7432 fra.me.REG[5] = NIT_NULL;
7433 fra.me.REG[6] = NIT_NULL;
7434 fra.me.REG[7] = NIT_NULL;
7435 fra.me.REG[8] = NIT_NULL;
7436 fra.me.REG[9] = NIT_NULL;
7437 fra.me.REG[10] = NIT_NULL;
7438 fra.me.REG[11] = NIT_NULL;
7439 fra.me.REG[12] = NIT_NULL;
7440 fra.me.REG[13] = NIT_NULL;
7441 fra.me.REG[14] = NIT_NULL;
7442 fra.me.REG[15] = NIT_NULL;
7443 fra.me.REG[16] = NIT_NULL;
7444 fra.me.REG[0] = p0;
7445 fra.me.REG[1] = p1;
7446 fra.me.REG[2] = p2;
7447 fra.me.REG[3] = p3;
7448 fra.me.REG[4] = p4;
7449 /* ./syntax//typing.nit:1300 */
7450 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7451 /* ./syntax//typing.nit:1301 */
7452 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
7453 /* ./syntax//typing.nit:1302 */
7454 REGB0 = TAG_Int(0);
7455 /* ./../lib/standard//collection//array.nit:229 */
7456 fra.me.REG[7] = fra.me.REG[6];
7457 /* ./../lib/standard//collection//array.nit:232 */
7458 REGB1 = TAG_Int(0);
7459 /* ./../lib/standard//collection//array.nit:233 */
7460 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7461 if (UNTAG_Bool(REGB2)) {
7462 } else {
7463 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
7464 }
7465 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
7466 /* ./../lib/standard//collection//array.nit:234 */
7467 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
7468 /* ./../lib/standard//collection//array.nit:235 */
7469 while(1) {
7470 /* ./../lib/standard//collection//array.nit:23 */
7471 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7472 if (UNTAG_Bool(REGB2)) {
7473 } else {
7474 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7475 }
7476 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
7477 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7478 if (UNTAG_Bool(REGB3)) {
7479 } else {
7480 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7481 }
7482 /* ./../lib/standard//kernel.nit:215 */
7483 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
7484 /* ./../lib/standard//collection//array.nit:235 */
7485 if (UNTAG_Bool(REGB2)) {
7486 /* ./../lib/standard//collection//array.nit:236 */
7487 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
7488 if (UNTAG_Bool(REGB2)) {
7489 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
7490 }
7491 /* ./../lib/standard//collection//array.nit:652 */
7492 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
7493 /* ./syntax//typing.nit:1304 */
7494 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
7495 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7496 if (UNTAG_Bool(REGB2)) {
7497 REGB2 = TAG_Int(1);
7498 /* ./../lib/standard//kernel.nit:218 */
7499 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
7500 /* ./syntax//typing.nit:1304 */
7501 REGB0 = REGB2;
7502 }
7503 /* ./../lib/standard//collection//array.nit:237 */
7504 REGB2 = TAG_Int(1);
7505 /* ./../lib/standard//kernel.nit:218 */
7506 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
7507 /* ./../lib/standard//collection//array.nit:237 */
7508 REGB1 = REGB2;
7509 } else {
7510 /* ./../lib/standard//collection//array.nit:235 */
7511 goto label1;
7512 }
7513 }
7514 label1: while(0);
7515 /* ./syntax//typing.nit:1306 */
7516 REGB1 = TAG_Int(0);
7517 /* ./syntax//typing.nit:1307 */
7518 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7519 if (UNTAG_Bool(REGB2)) {
7520 } else {
7521 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7522 if (UNTAG_Bool(REGB3)) {
7523 REGB3 = TAG_Bool(false);
7524 REGB2 = REGB3;
7525 } else {
7526 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7527 REGB2 = REGB3;
7528 }
7529 }
7530 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7531 if (UNTAG_Bool(REGB2)) {
7532 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7533 if (UNTAG_Bool(REGB2)) {
7534 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1307);
7535 }
7536 /* ./../lib/standard//collection//array.nit:23 */
7537 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7538 if (UNTAG_Bool(REGB2)) {
7539 } else {
7540 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7541 }
7542 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7543 /* ./syntax//typing.nit:1307 */
7544 REGB1 = REGB2;
7545 }
7546 /* ./../lib/standard//collection//array.nit:23 */
7547 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7548 if (UNTAG_Bool(REGB2)) {
7549 } else {
7550 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7551 }
7552 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
7553 /* ./syntax//typing.nit:1308 */
7554 REGB3 = TAG_Int(0);
7555 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
7556 if (UNTAG_Bool(REGB4)) {
7557 } else {
7558 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7559 }
7560 /* ./../lib/standard//kernel.nit:217 */
7561 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
7562 /* ./syntax//typing.nit:1308 */
7563 if (UNTAG_Bool(REGB3)) {
7564 /* ./syntax//typing.nit:1309 */
7565 REGB3 = TAG_Int(0);
7566 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
7567 if (UNTAG_Bool(REGB2)) {
7568 } else {
7569 /* ./../lib/standard//kernel.nit:210 */
7570 REGB3 = TAG_Bool((REGB1)==(REGB3));
7571 /* ./syntax//typing.nit:1309 */
7572 REGB2 = REGB3;
7573 }
7574 if (UNTAG_Bool(REGB2)) {
7575 REGB2 = TAG_Int(0);
7576 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7577 if (UNTAG_Bool(REGB3)) {
7578 } else {
7579 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7580 }
7581 /* ./../lib/standard//kernel.nit:217 */
7582 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
7583 } else {
7584 /* ./syntax//typing.nit:1309 */
7585 REGB3 = TAG_Bool(false);
7586 REGB2 = REGB3;
7587 }
7588 if (UNTAG_Bool(REGB2)) {
7589 /* ./syntax//typing.nit:1310 */
7590 REGB2 = TAG_Int(5);
7591 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
7592 if (!once_value_2) {
7593 fra.me.REG[7] = BOX_NativeString("Error: ");
7594 REGB2 = TAG_Int(7);
7595 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7596 once_value_2 = fra.me.REG[7];
7597 register_static_object(&once_value_2);
7598 } else fra.me.REG[7] = once_value_2;
7599 fra.me.REG[7] = fra.me.REG[7];
7600 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7601 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7603 if (!once_value_3) {
7604 fra.me.REG[7] = BOX_NativeString(" requires ");
7605 REGB2 = TAG_Int(10);
7606 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7607 once_value_3 = fra.me.REG[7];
7608 register_static_object(&once_value_3);
7609 } else fra.me.REG[7] = once_value_3;
7610 fra.me.REG[7] = fra.me.REG[7];
7611 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7612 /* ./../lib/standard//collection//array.nit:23 */
7613 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7614 if (UNTAG_Bool(REGB2)) {
7615 } else {
7616 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7617 }
7618 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
7619 /* ./syntax//typing.nit:1310 */
7620 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
7621 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7622 if (!once_value_4) {
7623 fra.me.REG[7] = BOX_NativeString(" blocks.");
7624 REGB2 = TAG_Int(8);
7625 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7626 once_value_4 = fra.me.REG[7];
7627 register_static_object(&once_value_4);
7628 } else fra.me.REG[7] = once_value_4;
7629 fra.me.REG[7] = fra.me.REG[7];
7630 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7631 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7632 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7633 } else {
7634 /* ./../lib/standard//collection//array.nit:23 */
7635 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7636 if (UNTAG_Bool(REGB2)) {
7637 } else {
7638 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7639 }
7640 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
7641 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7642 if (UNTAG_Bool(REGB3)) {
7643 } else {
7644 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7645 }
7646 /* ./../lib/standard//kernel.nit:217 */
7647 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7648 /* ./syntax//typing.nit:1311 */
7649 if (UNTAG_Bool(REGB2)) {
7650 REGB2 = TAG_Bool(true);
7651 } else {
7652 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7653 if (UNTAG_Bool(REGB3)) {
7654 } else {
7655 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7656 }
7657 /* ./../lib/standard//kernel.nit:215 */
7658 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
7659 /* ./syntax//typing.nit:1311 */
7660 REGB2 = REGB0;
7661 }
7662 if (UNTAG_Bool(REGB2)) {
7663 /* ./syntax//typing.nit:1312 */
7664 REGB2 = TAG_Int(7);
7665 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
7666 if (!once_value_5) {
7667 fra.me.REG[7] = BOX_NativeString("Error: ");
7668 REGB2 = TAG_Int(7);
7669 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7670 once_value_5 = fra.me.REG[7];
7671 register_static_object(&once_value_5);
7672 } else fra.me.REG[7] = once_value_5;
7673 fra.me.REG[7] = fra.me.REG[7];
7674 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7675 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7677 if (!once_value_6) {
7678 fra.me.REG[7] = BOX_NativeString(" requires ");
7679 REGB2 = TAG_Int(10);
7680 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7681 once_value_6 = fra.me.REG[7];
7682 register_static_object(&once_value_6);
7683 } else fra.me.REG[7] = once_value_6;
7684 fra.me.REG[7] = fra.me.REG[7];
7685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7686 /* ./../lib/standard//collection//array.nit:23 */
7687 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7688 if (UNTAG_Bool(REGB2)) {
7689 } else {
7690 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7691 }
7692 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
7693 /* ./syntax//typing.nit:1312 */
7694 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
7695 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7696 if (!once_value_7) {
7697 fra.me.REG[7] = BOX_NativeString(" blocks, ");
7698 REGB2 = TAG_Int(9);
7699 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7700 once_value_7 = fra.me.REG[7];
7701 register_static_object(&once_value_7);
7702 } else fra.me.REG[7] = once_value_7;
7703 fra.me.REG[7] = fra.me.REG[7];
7704 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7705 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7706 if (UNTAG_Bool(REGB2)) {
7707 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1312);
7708 }
7709 /* ./../lib/standard//collection//array.nit:23 */
7710 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7711 if (UNTAG_Bool(REGB2)) {
7712 } else {
7713 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7714 }
7715 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7716 /* ./syntax//typing.nit:1312 */
7717 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
7718 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7719 if (!once_value_8) {
7720 fra.me.REG[7] = BOX_NativeString(" found.");
7721 REGB2 = TAG_Int(7);
7722 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
7723 once_value_8 = fra.me.REG[7];
7724 register_static_object(&once_value_8);
7725 } else fra.me.REG[7] = once_value_8;
7726 fra.me.REG[7] = fra.me.REG[7];
7727 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
7728 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
7729 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
7730 } else {
7731 /* ./syntax//typing.nit:1315 */
7732 fra.me.REG[8] = NIT_NULL;
7733 /* ./syntax//typing.nit:1316 */
7734 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7735 if (UNTAG_Bool(REGB2)) {
7736 } else {
7737 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
7738 if (UNTAG_Bool(REGB0)) {
7739 REGB0 = TAG_Bool(false);
7740 REGB2 = REGB0;
7741 } else {
7742 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
7743 REGB2 = REGB0;
7744 }
7745 }
7746 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
7747 if (UNTAG_Bool(REGB2)) {
7748 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
7749 fra.me.REG[8] = fra.me.REG[7];
7750 }
7751 /* ./syntax//typing.nit:1319 */
7752 REGB2 = TAG_Int(0);
7753 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7754 if (UNTAG_Bool(REGB0)) {
7755 } else {
7756 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7757 }
7758 /* ./../lib/standard//kernel.nit:217 */
7759 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7760 /* ./syntax//typing.nit:1319 */
7761 if (UNTAG_Bool(REGB2)) {
7762 REGB2 = TAG_Int(1);
7763 /* ./../lib/standard//kernel.nit:220 */
7764 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
7765 /* ./syntax//typing.nit:1319 */
7766 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7767 if (UNTAG_Bool(REGB0)) {
7768 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1319);
7769 }
7770 /* ./../lib/standard//collection//array.nit:241 */
7771 fra.me.REG[7] = fra.me.REG[4];
7772 /* ./../lib/standard//collection//array.nit:243 */
7773 REGB0 = TAG_Int(0);
7774 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
7775 if (UNTAG_Bool(REGB3)) {
7776 } else {
7777 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7778 }
7779 /* ./../lib/standard//kernel.nit:216 */
7780 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
7781 /* ./../lib/standard//collection//array.nit:243 */
7782 if (UNTAG_Bool(REGB0)) {
7783 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
7784 if (UNTAG_Bool(REGB0)) {
7785 } else {
7786 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
7787 }
7788 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
7789 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
7790 if (UNTAG_Bool(REGB3)) {
7791 } else {
7792 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7793 }
7794 /* ./../lib/standard//kernel.nit:215 */
7795 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7796 } else {
7797 /* ./../lib/standard//collection//array.nit:243 */
7798 REGB3 = TAG_Bool(false);
7799 REGB0 = REGB3;
7800 }
7801 if (UNTAG_Bool(REGB0)) {
7802 } else {
7803 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
7804 }
7805 /* ./../lib/standard//collection//array.nit:244 */
7806 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
7807 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7808 if (UNTAG_Bool(REGB0)) {
7809 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
7810 }
7811 /* ./../lib/standard//collection//array.nit:652 */
7812 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
7813 /* ./../lib/standard//collection//array.nit:244 */
7814 goto label9;
7815 label9: while(0);
7816 /* ./syntax//typing.nit:1319 */
7817 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
7818 if (UNTAG_Bool(REGB2)) {
7819 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1319);
7820 }
7821 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
7822 } else {
7823 fra.me.REG[7] = NIT_NULL;
7824 }
7825 /* ./syntax//typing.nit:1322 */
7826 REGB2 = TAG_Int(0);
7827 /* ./../lib/standard//kernel.nit:330 */
7828 REGB0 = REGB1;
7829 /* ./../lib/standard//kernel.nit:335 */
7830 while(1) {
7831 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
7832 if (UNTAG_Bool(REGB3)) {
7833 } else {
7834 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7835 }
7836 /* ./../lib/standard//kernel.nit:215 */
7837 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
7838 /* ./../lib/standard//kernel.nit:335 */
7839 if (UNTAG_Bool(REGB3)) {
7840 /* ./syntax//typing.nit:1322 */
7841 REGB3 = REGB2;
7842 /* ./syntax//typing.nit:1323 */
7843 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7844 if (UNTAG_Bool(REGB4)) {
7845 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1323);
7846 }
7847 /* ./../lib/standard//collection//array.nit:241 */
7848 fra.me.REG[9] = fra.me.REG[4];
7849 /* ./../lib/standard//collection//array.nit:243 */
7850 REGB4 = TAG_Int(0);
7851 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
7852 if (UNTAG_Bool(REGB5)) {
7853 } else {
7854 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7855 }
7856 /* ./../lib/standard//kernel.nit:216 */
7857 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
7858 /* ./../lib/standard//collection//array.nit:243 */
7859 if (UNTAG_Bool(REGB4)) {
7860 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
7861 if (UNTAG_Bool(REGB4)) {
7862 } else {
7863 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
7864 }
7865 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
7866 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
7867 if (UNTAG_Bool(REGB5)) {
7868 } else {
7869 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7870 }
7871 /* ./../lib/standard//kernel.nit:215 */
7872 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
7873 } else {
7874 /* ./../lib/standard//collection//array.nit:243 */
7875 REGB5 = TAG_Bool(false);
7876 REGB4 = REGB5;
7877 }
7878 if (UNTAG_Bool(REGB4)) {
7879 } else {
7880 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 243);
7881 }
7882 /* ./../lib/standard//collection//array.nit:244 */
7883 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
7884 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
7885 if (UNTAG_Bool(REGB4)) {
7886 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
7887 }
7888 /* ./../lib/standard//collection//array.nit:652 */
7889 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
7890 /* ./../lib/standard//collection//array.nit:244 */
7891 goto label10;
7892 label10: while(0);
7893 /* ./syntax//typing.nit:1324 */
7894 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7895 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
7896 /* ./syntax//typing.nit:1325 */
7897 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
7898 /* ./syntax//typing.nit:1326 */
7899 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7900 if (UNTAG_Bool(REGB3)) {
7901 } else {
7902 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
7903 if (UNTAG_Bool(REGB4)) {
7904 REGB4 = TAG_Bool(false);
7905 REGB3 = REGB4;
7906 } else {
7907 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
7908 REGB3 = REGB4;
7909 }
7910 }
7911 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
7912 if (UNTAG_Bool(REGB3)) {
7913 /* ./syntax//typing.nit:1327 */
7914 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
7915 /* ./syntax//typing.nit:1328 */
7916 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7917 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
7918 /* ./syntax//typing.nit:1329 */
7919 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
7920 /* ./syntax//typing.nit:1330 */
7921 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
7922 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
7923 } else {
7924 /* ./../lib/standard//collection//array.nit:23 */
7925 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
7926 if (UNTAG_Bool(REGB3)) {
7927 } else {
7928 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
7929 }
7930 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
7931 /* ./syntax//typing.nit:1331 */
7932 REGB4 = TAG_Int(1);
7933 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
7934 if (UNTAG_Bool(REGB5)) {
7935 } else {
7936 /* ./../lib/standard//kernel.nit:210 */
7937 REGB4 = TAG_Bool((REGB3)==(REGB4));
7938 /* ./syntax//typing.nit:1331 */
7939 REGB5 = REGB4;
7940 }
7941 if (UNTAG_Bool(REGB5)) {
7942 /* ./syntax//typing.nit:1332 */
7943 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
7944 REGB5 = TAG_Int(7);
7945 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
7946 if (!once_value_11) {
7947 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
7948 REGB5 = TAG_Int(26);
7949 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
7950 once_value_11 = fra.me.REG[13];
7951 register_static_object(&once_value_11);
7952 } else fra.me.REG[13] = once_value_11;
7953 fra.me.REG[13] = fra.me.REG[13];
7954 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7955 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
7956 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7957 if (!once_value_12) {
7958 fra.me.REG[13] = BOX_NativeString("' in ");
7959 REGB5 = TAG_Int(5);
7960 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
7961 once_value_12 = fra.me.REG[13];
7962 register_static_object(&once_value_12);
7963 } else fra.me.REG[13] = once_value_12;
7964 fra.me.REG[13] = fra.me.REG[13];
7965 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7966 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7967 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7968 if (!once_value_13) {
7969 fra.me.REG[13] = BOX_NativeString("; only closure is !");
7970 REGB5 = TAG_Int(19);
7971 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
7972 once_value_13 = fra.me.REG[13];
7973 register_static_object(&once_value_13);
7974 } else fra.me.REG[13] = once_value_13;
7975 fra.me.REG[13] = fra.me.REG[13];
7976 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7977 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
7978 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
7979 if (UNTAG_Bool(REGB5)) {
7980 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1332);
7981 }
7982 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
7983 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
7984 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7985 if (!once_value_14) {
7986 fra.me.REG[13] = BOX_NativeString(".");
7987 REGB5 = TAG_Int(1);
7988 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
7989 once_value_14 = fra.me.REG[13];
7990 register_static_object(&once_value_14);
7991 } else fra.me.REG[13] = once_value_14;
7992 fra.me.REG[13] = fra.me.REG[13];
7993 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
7994 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
7995 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
7996 } else {
7997 /* ./syntax//typing.nit:1334 */
7998 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
7999 /* ./../lib/standard//collection//array.nit:229 */
8000 fra.me.REG[11] = fra.me.REG[6];
8001 /* ./../lib/standard//collection//array.nit:232 */
8002 REGB5 = TAG_Int(0);
8003 /* ./../lib/standard//collection//array.nit:233 */
8004 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8005 if (UNTAG_Bool(REGB4)) {
8006 } else {
8007 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
8008 }
8009 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8010 /* ./../lib/standard//collection//array.nit:234 */
8011 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
8012 /* ./../lib/standard//collection//array.nit:235 */
8013 while(1) {
8014 /* ./../lib/standard//collection//array.nit:23 */
8015 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8016 if (UNTAG_Bool(REGB4)) {
8017 } else {
8018 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8019 }
8020 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8021 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
8022 if (UNTAG_Bool(REGB3)) {
8023 } else {
8024 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8025 }
8026 /* ./../lib/standard//kernel.nit:215 */
8027 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
8028 /* ./../lib/standard//collection//array.nit:235 */
8029 if (UNTAG_Bool(REGB4)) {
8030 /* ./../lib/standard//collection//array.nit:236 */
8031 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8032 if (UNTAG_Bool(REGB4)) {
8033 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
8034 }
8035 /* ./../lib/standard//collection//array.nit:652 */
8036 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
8037 /* ./syntax//typing.nit:1336 */
8038 REGB4 = TAG_Int(3);
8039 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
8040 if (!once_value_15) {
8041 fra.me.REG[16] = BOX_NativeString("!");
8042 REGB4 = TAG_Int(1);
8043 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
8044 once_value_15 = fra.me.REG[16];
8045 register_static_object(&once_value_15);
8046 } else fra.me.REG[16] = once_value_15;
8047 fra.me.REG[16] = fra.me.REG[16];
8048 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
8049 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
8050 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
8051 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8052 if (!once_value_16) {
8053 fra.me.REG[14] = BOX_NativeString("");
8054 REGB4 = TAG_Int(0);
8055 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
8056 once_value_16 = fra.me.REG[14];
8057 register_static_object(&once_value_16);
8058 } else fra.me.REG[14] = once_value_16;
8059 fra.me.REG[14] = fra.me.REG[14];
8060 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8061 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
8062 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
8063 /* ./../lib/standard//collection//array.nit:237 */
8064 REGB4 = TAG_Int(1);
8065 /* ./../lib/standard//kernel.nit:218 */
8066 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
8067 /* ./../lib/standard//collection//array.nit:237 */
8068 REGB5 = REGB4;
8069 } else {
8070 /* ./../lib/standard//collection//array.nit:235 */
8071 goto label17;
8072 }
8073 }
8074 label17: while(0);
8075 /* ./syntax//typing.nit:1338 */
8076 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8077 REGB5 = TAG_Int(7);
8078 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8079 if (!once_value_18) {
8080 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
8081 REGB5 = TAG_Int(26);
8082 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
8083 once_value_18 = fra.me.REG[11];
8084 register_static_object(&once_value_18);
8085 } else fra.me.REG[11] = once_value_18;
8086 fra.me.REG[11] = fra.me.REG[11];
8087 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
8088 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8090 if (!once_value_19) {
8091 fra.me.REG[10] = BOX_NativeString("' in ");
8092 REGB5 = TAG_Int(5);
8093 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8094 once_value_19 = fra.me.REG[10];
8095 register_static_object(&once_value_19);
8096 } else fra.me.REG[10] = once_value_19;
8097 fra.me.REG[10] = fra.me.REG[10];
8098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8099 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8100 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8101 if (!once_value_20) {
8102 fra.me.REG[10] = BOX_NativeString("; only closures are ");
8103 REGB5 = TAG_Int(20);
8104 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8105 once_value_20 = fra.me.REG[10];
8106 register_static_object(&once_value_20);
8107 } else fra.me.REG[10] = once_value_20;
8108 fra.me.REG[10] = fra.me.REG[10];
8109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8110 if (!once_value_21) {
8111 fra.me.REG[10] = BOX_NativeString(",");
8112 REGB5 = TAG_Int(1);
8113 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8114 once_value_21 = fra.me.REG[10];
8115 register_static_object(&once_value_21);
8116 } else fra.me.REG[10] = once_value_21;
8117 fra.me.REG[10] = fra.me.REG[10];
8118 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
8119 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8120 if (!once_value_22) {
8121 fra.me.REG[10] = BOX_NativeString(".");
8122 REGB5 = TAG_Int(1);
8123 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8124 once_value_22 = fra.me.REG[10];
8125 register_static_object(&once_value_22);
8126 } else fra.me.REG[10] = once_value_22;
8127 fra.me.REG[10] = fra.me.REG[10];
8128 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8129 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8130 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
8131 }
8132 }
8133 /* ./../lib/standard//kernel.nit:337 */
8134 REGB5 = TAG_Int(1);
8135 /* ./../lib/standard//kernel.nit:218 */
8136 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
8137 /* ./../lib/standard//kernel.nit:337 */
8138 REGB2 = REGB5;
8139 } else {
8140 /* ./../lib/standard//kernel.nit:335 */
8141 goto label23;
8142 }
8143 }
8144 label23: while(0);
8145 /* ./syntax//typing.nit:1343 */
8146 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8147 if (UNTAG_Bool(REGB2)) {
8148 } else {
8149 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8150 if (UNTAG_Bool(REGB0)) {
8151 REGB0 = TAG_Bool(false);
8152 REGB2 = REGB0;
8153 } else {
8154 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
8155 REGB2 = REGB0;
8156 }
8157 }
8158 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8159 if (UNTAG_Bool(REGB2)) {
8160 /* ./syntax//typing.nit:1344 */
8161 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]);
8162 fra.me.REG[5] = fra.me.REG[8];
8163 }
8164 }
8165 }
8166 } else {
8167 /* ./syntax//typing.nit:1347 */
8168 REGB2 = TAG_Int(0);
8169 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8170 if (UNTAG_Bool(REGB0)) {
8171 } else {
8172 /* ./../lib/standard//kernel.nit:210 */
8173 REGB2 = TAG_Bool((REGB1)==(REGB2));
8174 /* ./syntax//typing.nit:1347 */
8175 REGB0 = REGB2;
8176 }
8177 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8178 if (UNTAG_Bool(REGB0)) {
8179 /* ./syntax//typing.nit:1348 */
8180 REGB0 = TAG_Int(3);
8181 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8182 if (!once_value_24) {
8183 fra.me.REG[6] = BOX_NativeString("Error: ");
8184 REGB0 = TAG_Int(7);
8185 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
8186 once_value_24 = fra.me.REG[6];
8187 register_static_object(&once_value_24);
8188 } else fra.me.REG[6] = once_value_24;
8189 fra.me.REG[6] = fra.me.REG[6];
8190 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
8191 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8192 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8193 if (!once_value_25) {
8194 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
8195 REGB0 = TAG_Int(25);
8196 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
8197 once_value_25 = fra.me.REG[3];
8198 register_static_object(&once_value_25);
8199 } else fra.me.REG[3] = once_value_25;
8200 fra.me.REG[3] = fra.me.REG[3];
8201 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8202 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8203 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8204 }
8205 }
8206 /* ./syntax//typing.nit:1350 */
8207 goto label26;
8208 label26: while(0);
8209 stack_frame_head = fra.me.prev;
8210 return fra.me.REG[5];
8211 }
8212 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){
8213 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8214 val_t REGB0;
8215 val_t REGB1;
8216 val_t REGB2;
8217 val_t tmp;
8218 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8219 fra.me.file = LOCATE_syntax___typing;
8220 fra.me.line = 1355;
8221 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
8222 fra.me.has_broke = 0;
8223 fra.me.REG_size = 7;
8224 fra.me.REG[0] = NIT_NULL;
8225 fra.me.REG[1] = NIT_NULL;
8226 fra.me.REG[2] = NIT_NULL;
8227 fra.me.REG[3] = NIT_NULL;
8228 fra.me.REG[4] = NIT_NULL;
8229 fra.me.REG[5] = NIT_NULL;
8230 fra.me.REG[6] = NIT_NULL;
8231 fra.me.REG[0] = p0;
8232 fra.me.REG[1] = p1;
8233 fra.me.REG[2] = p2;
8234 REGB0 = p3;
8235 REGB1 = p4;
8236 fra.me.REG[3] = p5;
8237 fra.me.REG[4] = p6;
8238 fra.me.REG[5] = p7;
8239 /* ./syntax//typing.nit:1358 */
8240 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]);
8241 /* ./syntax//typing.nit:1359 */
8242 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8243 if (UNTAG_Bool(REGB0)) {
8244 } else {
8245 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8246 if (UNTAG_Bool(REGB2)) {
8247 REGB2 = TAG_Bool(false);
8248 REGB0 = REGB2;
8249 } else {
8250 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8251 REGB0 = REGB2;
8252 }
8253 }
8254 if (UNTAG_Bool(REGB0)) {
8255 goto label1;
8256 }
8257 /* ./syntax//typing.nit:1360 */
8258 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);
8259 /* ./syntax//typing.nit:1361 */
8260 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8261 if (UNTAG_Bool(REGB1)) {
8262 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1361);
8263 }
8264 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8265 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]);
8266 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8267 if (UNTAG_Bool(REGB1)) {
8268 goto label1;
8269 }
8270 /* ./syntax//typing.nit:1362 */
8271 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8272 if (UNTAG_Bool(REGB1)) {
8273 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1362);
8274 }
8275 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8276 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]);
8277 /* ./syntax//typing.nit:1363 */
8278 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8279 if (UNTAG_Bool(REGB1)) {
8280 } else {
8281 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8282 if (UNTAG_Bool(REGB0)) {
8283 REGB0 = TAG_Bool(false);
8284 REGB1 = REGB0;
8285 } else {
8286 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8287 REGB1 = REGB0;
8288 }
8289 }
8290 if (UNTAG_Bool(REGB1)) {
8291 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8292 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8293 if (UNTAG_Bool(REGB1)) {
8294 } else {
8295 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8296 if (UNTAG_Bool(REGB0)) {
8297 REGB0 = TAG_Bool(false);
8298 REGB1 = REGB0;
8299 } else {
8300 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8301 REGB1 = REGB0;
8302 }
8303 }
8304 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8305 } else {
8306 REGB0 = TAG_Bool(false);
8307 REGB1 = REGB0;
8308 }
8309 if (UNTAG_Bool(REGB1)) {
8310 goto label1;
8311 }
8312 /* ./syntax//typing.nit:1364 */
8313 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
8314 /* ./syntax//typing.nit:1365 */
8315 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
8316 /* ./syntax//typing.nit:1366 */
8317 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
8318 label1: while(0);
8319 stack_frame_head = fra.me.prev;
8320 return;
8321 }
8322 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8323 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
8324 val_t REGB0;
8325 val_t REGB1;
8326 val_t REGB2;
8327 val_t REGB3;
8328 val_t tmp;
8329 static val_t once_value_1; /* Once value */
8330 static val_t once_value_2; /* Once value */
8331 static val_t once_value_3; /* Once value */
8332 static val_t once_value_4; /* Once value */
8333 static val_t once_value_5; /* Once value */
8334 static val_t once_value_6; /* Once value */
8335 static val_t once_value_8; /* Once value */
8336 static val_t once_value_9; /* Once value */
8337 static val_t once_value_10; /* Once value */
8338 static val_t once_value_11; /* Once value */
8339 static val_t once_value_12; /* Once value */
8340 static val_t once_value_13; /* Once value */
8341 static val_t once_value_14; /* Once value */
8342 static val_t once_value_15; /* Once value */
8343 static val_t once_value_16; /* Once value */
8344 static val_t once_value_17; /* Once value */
8345 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8346 fra.me.file = LOCATE_syntax___typing;
8347 fra.me.line = 1369;
8348 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
8349 fra.me.has_broke = 0;
8350 fra.me.REG_size = 10;
8351 fra.me.REG[0] = NIT_NULL;
8352 fra.me.REG[1] = NIT_NULL;
8353 fra.me.REG[2] = NIT_NULL;
8354 fra.me.REG[3] = NIT_NULL;
8355 fra.me.REG[4] = NIT_NULL;
8356 fra.me.REG[5] = NIT_NULL;
8357 fra.me.REG[6] = NIT_NULL;
8358 fra.me.REG[7] = NIT_NULL;
8359 fra.me.REG[8] = NIT_NULL;
8360 fra.me.REG[9] = NIT_NULL;
8361 fra.me.REG[0] = p0;
8362 fra.me.REG[1] = p1;
8363 fra.me.REG[2] = p2;
8364 REGB0 = p3;
8365 fra.me.REG[3] = p4;
8366 /* ./syntax//typing.nit:1371 */
8367 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
8368 if (UNTAG_Bool(REGB1)) {
8369 /* ./syntax//typing.nit:1372 */
8370 if (!once_value_1) {
8371 if (!once_value_2) {
8372 fra.me.REG[4] = BOX_NativeString("==");
8373 REGB1 = TAG_Int(2);
8374 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
8375 once_value_2 = fra.me.REG[4];
8376 register_static_object(&once_value_2);
8377 } else fra.me.REG[4] = once_value_2;
8378 fra.me.REG[4] = fra.me.REG[4];
8379 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8380 once_value_1 = fra.me.REG[4];
8381 register_static_object(&once_value_1);
8382 } else fra.me.REG[4] = once_value_1;
8383 fra.me.REG[4] = fra.me.REG[4];
8384 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8385 if (UNTAG_Bool(REGB1)) {
8386 } else {
8387 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8388 REGB1 = REGB2;
8389 }
8390 if (UNTAG_Bool(REGB1)) {
8391 REGB1 = TAG_Bool(true);
8392 } else {
8393 if (!once_value_3) {
8394 if (!once_value_4) {
8395 fra.me.REG[4] = BOX_NativeString("!=");
8396 REGB2 = TAG_Int(2);
8397 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
8398 once_value_4 = fra.me.REG[4];
8399 register_static_object(&once_value_4);
8400 } else fra.me.REG[4] = once_value_4;
8401 fra.me.REG[4] = fra.me.REG[4];
8402 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
8403 once_value_3 = fra.me.REG[4];
8404 register_static_object(&once_value_3);
8405 } else fra.me.REG[4] = once_value_3;
8406 fra.me.REG[4] = fra.me.REG[4];
8407 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
8408 if (UNTAG_Bool(REGB2)) {
8409 } else {
8410 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
8411 REGB2 = REGB3;
8412 }
8413 REGB1 = REGB2;
8414 }
8415 if (UNTAG_Bool(REGB1)) {
8416 /* ./syntax//typing.nit:1374 */
8417 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
8418 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
8419 fra.me.REG[2] = fra.me.REG[4];
8420 } else {
8421 /* ./syntax//typing.nit:1376 */
8422 REGB1 = TAG_Int(3);
8423 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
8424 if (!once_value_5) {
8425 fra.me.REG[5] = BOX_NativeString("Error: Method '");
8426 REGB1 = TAG_Int(15);
8427 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
8428 once_value_5 = fra.me.REG[5];
8429 register_static_object(&once_value_5);
8430 } else fra.me.REG[5] = once_value_5;
8431 fra.me.REG[5] = fra.me.REG[5];
8432 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8433 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8434 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8435 if (!once_value_6) {
8436 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
8437 REGB1 = TAG_Int(17);
8438 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
8439 once_value_6 = fra.me.REG[5];
8440 register_static_object(&once_value_6);
8441 } else fra.me.REG[5] = once_value_6;
8442 fra.me.REG[5] = fra.me.REG[5];
8443 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8444 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8445 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
8446 /* ./syntax//typing.nit:1377 */
8447 fra.me.REG[4] = NIT_NULL;
8448 goto label7;
8449 }
8450 }
8451 /* ./syntax//typing.nit:1380 */
8452 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
8453 /* ./syntax//typing.nit:1381 */
8454 fra.me.REG[6] = NIT_NULL;
8455 /* ./syntax//typing.nit:1382 */
8456 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8457 if (UNTAG_Bool(REGB1)) {
8458 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8459 fra.me.REG[6] = fra.me.REG[7];
8460 }
8461 /* ./syntax//typing.nit:1383 */
8462 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8463 if (UNTAG_Bool(REGB1)) {
8464 } else {
8465 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8466 if (UNTAG_Bool(REGB2)) {
8467 REGB2 = TAG_Bool(false);
8468 REGB1 = REGB2;
8469 } else {
8470 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
8471 REGB1 = REGB2;
8472 }
8473 }
8474 if (UNTAG_Bool(REGB1)) {
8475 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
8476 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8477 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
8478 } else {
8479 REGB2 = TAG_Bool(false);
8480 REGB1 = REGB2;
8481 }
8482 if (UNTAG_Bool(REGB1)) {
8483 /* ./syntax//typing.nit:1384 */
8484 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8485 /* ./../lib/standard//collection//array.nit:23 */
8486 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8487 if (UNTAG_Bool(REGB1)) {
8488 } else {
8489 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8490 }
8491 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8492 /* ./syntax//typing.nit:1385 */
8493 REGB2 = TAG_Int(1);
8494 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8495 if (UNTAG_Bool(REGB3)) {
8496 } else {
8497 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8498 }
8499 /* ./../lib/standard//kernel.nit:217 */
8500 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8501 /* ./syntax//typing.nit:1385 */
8502 if (UNTAG_Bool(REGB2)) {
8503 /* ./syntax//typing.nit:1386 */
8504 REGB2 = TAG_Int(5);
8505 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8506 if (!once_value_8) {
8507 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
8508 REGB2 = TAG_Int(29);
8509 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8510 once_value_8 = fra.me.REG[9];
8511 register_static_object(&once_value_8);
8512 } else fra.me.REG[9] = once_value_8;
8513 fra.me.REG[9] = fra.me.REG[9];
8514 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8515 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8516 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8517 if (!once_value_9) {
8518 fra.me.REG[9] = BOX_NativeString("' for ");
8519 REGB2 = TAG_Int(6);
8520 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8521 once_value_9 = fra.me.REG[9];
8522 register_static_object(&once_value_9);
8523 } else fra.me.REG[9] = once_value_9;
8524 fra.me.REG[9] = fra.me.REG[9];
8525 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8526 if (!once_value_10) {
8527 fra.me.REG[9] = BOX_NativeString(", ");
8528 REGB2 = TAG_Int(2);
8529 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8530 once_value_10 = fra.me.REG[9];
8531 register_static_object(&once_value_10);
8532 } else fra.me.REG[9] = once_value_10;
8533 fra.me.REG[9] = fra.me.REG[9];
8534 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
8535 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8536 if (!once_value_11) {
8537 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
8538 REGB2 = TAG_Int(27);
8539 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
8540 once_value_11 = fra.me.REG[9];
8541 register_static_object(&once_value_11);
8542 } else fra.me.REG[9] = once_value_11;
8543 fra.me.REG[9] = fra.me.REG[9];
8544 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
8545 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8546 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8547 /* ./syntax//typing.nit:1387 */
8548 fra.me.REG[4] = NIT_NULL;
8549 goto label7;
8550 } else {
8551 /* ./../lib/standard//collection//array.nit:23 */
8552 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8553 if (UNTAG_Bool(REGB2)) {
8554 } else {
8555 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
8556 }
8557 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8558 /* ./syntax//typing.nit:1388 */
8559 REGB1 = TAG_Int(1);
8560 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
8561 if (UNTAG_Bool(REGB3)) {
8562 } else {
8563 /* ./../lib/standard//kernel.nit:210 */
8564 REGB1 = TAG_Bool((REGB2)==(REGB1));
8565 /* ./syntax//typing.nit:1388 */
8566 REGB3 = REGB1;
8567 }
8568 if (UNTAG_Bool(REGB3)) {
8569 /* ./syntax//typing.nit:1389 */
8570 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
8571 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8572 if (UNTAG_Bool(REGB3)) {
8573 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1389);
8574 }
8575 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
8576 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
8577 /* ./syntax//typing.nit:1390 */
8578 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
8579 if (UNTAG_Bool(REGB3)) {
8580 } else {
8581 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1390);
8582 }
8583 /* ./syntax//typing.nit:1391 */
8584 fra.me.REG[6] = fra.me.REG[7];
8585 }
8586 }
8587 }
8588 /* ./syntax//typing.nit:1395 */
8589 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8590 if (UNTAG_Bool(REGB3)) {
8591 } else {
8592 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
8593 if (UNTAG_Bool(REGB1)) {
8594 REGB1 = TAG_Bool(false);
8595 REGB3 = REGB1;
8596 } else {
8597 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
8598 REGB3 = REGB1;
8599 }
8600 }
8601 if (UNTAG_Bool(REGB3)) {
8602 /* ./syntax//typing.nit:1396 */
8603 if (UNTAG_Bool(REGB0)) {
8604 /* ./syntax//typing.nit:1397 */
8605 REGB0 = TAG_Int(5);
8606 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8607 if (!once_value_12) {
8608 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
8609 REGB0 = TAG_Int(27);
8610 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
8611 once_value_12 = fra.me.REG[5];
8612 register_static_object(&once_value_12);
8613 } else fra.me.REG[5] = once_value_12;
8614 fra.me.REG[5] = fra.me.REG[5];
8615 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8616 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8617 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8618 if (!once_value_13) {
8619 fra.me.REG[5] = BOX_NativeString("' unknown in ");
8620 REGB0 = TAG_Int(13);
8621 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
8622 once_value_13 = fra.me.REG[5];
8623 register_static_object(&once_value_13);
8624 } else fra.me.REG[5] = once_value_13;
8625 fra.me.REG[5] = fra.me.REG[5];
8626 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8627 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8628 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8629 if (!once_value_14) {
8630 fra.me.REG[5] = BOX_NativeString(".");
8631 REGB0 = TAG_Int(1);
8632 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
8633 once_value_14 = fra.me.REG[5];
8634 register_static_object(&once_value_14);
8635 } else fra.me.REG[5] = once_value_14;
8636 fra.me.REG[5] = fra.me.REG[5];
8637 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8638 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8639 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8640 } else {
8641 /* ./syntax//typing.nit:1399 */
8642 REGB0 = TAG_Int(5);
8643 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8644 if (!once_value_15) {
8645 fra.me.REG[5] = BOX_NativeString("Error: Method '");
8646 REGB0 = TAG_Int(15);
8647 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
8648 once_value_15 = fra.me.REG[5];
8649 register_static_object(&once_value_15);
8650 } else fra.me.REG[5] = once_value_15;
8651 fra.me.REG[5] = fra.me.REG[5];
8652 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
8653 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8654 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
8655 if (!once_value_16) {
8656 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
8657 REGB0 = TAG_Int(20);
8658 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
8659 once_value_16 = fra.me.REG[3];
8660 register_static_object(&once_value_16);
8661 } else fra.me.REG[3] = once_value_16;
8662 fra.me.REG[3] = fra.me.REG[3];
8663 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
8664 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8665 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
8666 if (!once_value_17) {
8667 fra.me.REG[2] = BOX_NativeString(".");
8668 REGB0 = TAG_Int(1);
8669 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8670 once_value_17 = fra.me.REG[2];
8671 register_static_object(&once_value_17);
8672 } else fra.me.REG[2] = once_value_17;
8673 fra.me.REG[2] = fra.me.REG[2];
8674 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
8675 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8676 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
8677 }
8678 /* ./syntax//typing.nit:1401 */
8679 fra.me.REG[4] = NIT_NULL;
8680 goto label7;
8681 }
8682 /* ./syntax//typing.nit:1403 */
8683 fra.me.REG[4] = fra.me.REG[6];
8684 goto label7;
8685 label7: while(0);
8686 stack_frame_head = fra.me.prev;
8687 return fra.me.REG[4];
8688 }
8689 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8690 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
8691 val_t REGB0;
8692 val_t tmp;
8693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8694 fra.me.file = LOCATE_syntax___typing;
8695 fra.me.line = 1406;
8696 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
8697 fra.me.has_broke = 0;
8698 fra.me.REG_size = 6;
8699 fra.me.REG[0] = NIT_NULL;
8700 fra.me.REG[1] = NIT_NULL;
8701 fra.me.REG[2] = NIT_NULL;
8702 fra.me.REG[3] = NIT_NULL;
8703 fra.me.REG[4] = NIT_NULL;
8704 fra.me.REG[5] = NIT_NULL;
8705 fra.me.REG[0] = p0;
8706 fra.me.REG[1] = p1;
8707 fra.me.REG[2] = p2;
8708 fra.me.REG[3] = p3;
8709 REGB0 = p4;
8710 /* ./syntax//typing.nit:1409 */
8711 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
8712 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8713 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);
8714 /* ./syntax//typing.nit:1410 */
8715 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
8716 /* ./syntax//typing.nit:1411 */
8717 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8718 if (UNTAG_Bool(REGB0)) {
8719 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
8720 fra.me.REG[2] = fra.me.REG[3];
8721 }
8722 /* ./syntax//typing.nit:1412 */
8723 goto label1;
8724 label1: while(0);
8725 stack_frame_head = fra.me.prev;
8726 return fra.me.REG[2];
8727 }
8728 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
8729 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8730 val_t REGB0;
8731 val_t tmp;
8732 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8733 fra.me.file = LOCATE_syntax___typing;
8734 fra.me.line = 1415;
8735 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
8736 fra.me.has_broke = 0;
8737 fra.me.REG_size = 2;
8738 fra.me.REG[0] = NIT_NULL;
8739 fra.me.REG[1] = NIT_NULL;
8740 fra.me.REG[0] = p0;
8741 /* ./syntax//typing.nit:1415 */
8742 fra.me.REG[1] = fra.me.REG[0];
8743 /* ./syntax//typing.nit:1416 */
8744 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
8745 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
8746 if (UNTAG_Bool(REGB0)) {
8747 } else {
8748 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1416);
8749 }
8750 goto label1;
8751 label1: while(0);
8752 stack_frame_head = fra.me.prev;
8753 return fra.me.REG[1];
8754 }
8755 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
8756 struct {struct stack_frame_t me;} fra;
8757 val_t tmp;
8758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8759 fra.me.file = LOCATE_syntax___typing;
8760 fra.me.line = 1419;
8761 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
8762 fra.me.has_broke = 0;
8763 fra.me.REG_size = 1;
8764 fra.me.REG[0] = NIT_NULL;
8765 fra.me.REG[0] = p0;
8766 /* ./syntax//typing.nit:1419 */
8767 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
8768 stack_frame_head = fra.me.prev;
8769 return fra.me.REG[0];
8770 }
8771 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
8772 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
8773 val_t REGB0;
8774 val_t REGB1;
8775 val_t REGB2;
8776 val_t tmp;
8777 static val_t once_value_1; /* Once value */
8778 static val_t once_value_2; /* Once value */
8779 static val_t once_value_3; /* Once value */
8780 static val_t once_value_4; /* Once value */
8781 static val_t once_value_5; /* Once value */
8782 static val_t once_value_6; /* Once value */
8783 static val_t once_value_7; /* Once value */
8784 static val_t once_value_8; /* Once value */
8785 static val_t once_value_9; /* Once value */
8786 static val_t once_value_10; /* Once value */
8787 static val_t once_value_11; /* Once value */
8788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8789 fra.me.file = LOCATE_syntax___typing;
8790 fra.me.line = 1426;
8791 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
8792 fra.me.has_broke = 0;
8793 fra.me.REG_size = 11;
8794 fra.me.REG[0] = NIT_NULL;
8795 fra.me.REG[1] = NIT_NULL;
8796 fra.me.REG[2] = NIT_NULL;
8797 fra.me.REG[3] = NIT_NULL;
8798 fra.me.REG[4] = NIT_NULL;
8799 fra.me.REG[5] = NIT_NULL;
8800 fra.me.REG[6] = NIT_NULL;
8801 fra.me.REG[7] = NIT_NULL;
8802 fra.me.REG[8] = NIT_NULL;
8803 fra.me.REG[9] = NIT_NULL;
8804 fra.me.REG[10] = NIT_NULL;
8805 fra.me.REG[0] = p0;
8806 fra.me.REG[1] = p1;
8807 fra.me.REG[2] = p2;
8808 /* ./syntax//typing.nit:1426 */
8809 fra.me.REG[3] = fra.me.REG[0];
8810 /* ./syntax//typing.nit:1428 */
8811 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
8812 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8813 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
8814 if (UNTAG_Bool(REGB0)) {
8815 } else {
8816 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8817 if (UNTAG_Bool(REGB1)) {
8818 REGB1 = TAG_Bool(false);
8819 REGB0 = REGB1;
8820 } else {
8821 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8822 REGB0 = REGB1;
8823 }
8824 }
8825 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8826 if (UNTAG_Bool(REGB0)) {
8827 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
8828 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
8829 if (UNTAG_Bool(REGB0)) {
8830 } else {
8831 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
8832 REGB0 = REGB1;
8833 }
8834 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8835 } else {
8836 REGB1 = TAG_Bool(false);
8837 REGB0 = REGB1;
8838 }
8839 if (UNTAG_Bool(REGB0)) {
8840 /* ./syntax//typing.nit:1429 */
8841 REGB0 = TAG_Int(3);
8842 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8843 if (!once_value_1) {
8844 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
8845 REGB0 = TAG_Int(30);
8846 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
8847 once_value_1 = fra.me.REG[4];
8848 register_static_object(&once_value_1);
8849 } else fra.me.REG[4] = once_value_1;
8850 fra.me.REG[4] = fra.me.REG[4];
8851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
8852 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
8854 if (!once_value_2) {
8855 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
8856 REGB0 = TAG_Int(29);
8857 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
8858 once_value_2 = fra.me.REG[4];
8859 register_static_object(&once_value_2);
8860 } else fra.me.REG[4] = once_value_2;
8861 fra.me.REG[4] = fra.me.REG[4];
8862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
8863 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8864 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
8865 }
8866 /* ./syntax//typing.nit:1431 */
8867 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
8868 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
8869 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
8870 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
8871 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
8872 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
8873 /* ./syntax//typing.nit:1432 */
8874 fra.me.REG[5] = NIT_NULL;
8875 /* ./syntax//typing.nit:1433 */
8876 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
8877 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
8878 if (UNTAG_Bool(REGB0)) {
8879 } else {
8880 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1433);
8881 }
8882 /* ./syntax//typing.nit:1434 */
8883 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
8884 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8885 if (UNTAG_Bool(REGB0)) {
8886 /* ./syntax//typing.nit:1435 */
8887 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
8888 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8889 if (UNTAG_Bool(REGB0)) {
8890 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1435);
8891 }
8892 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
8893 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
8894 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
8895 fra.me.REG[5] = fra.me.REG[0];
8896 }
8897 /* ./syntax//typing.nit:1437 */
8898 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8899 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
8900 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
8901 /* ./syntax//typing.nit:1438 */
8902 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
8903 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
8904 if (UNTAG_Bool(REGB0)) {
8905 } else {
8906 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
8907 REGB0 = REGB1;
8908 }
8909 if (UNTAG_Bool(REGB0)) {
8910 /* ./syntax//typing.nit:1439 */
8911 REGB0 = TAG_Bool(true);
8912 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
8913 } else {
8914 /* ./syntax//typing.nit:1440 */
8915 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
8916 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8917 if (UNTAG_Bool(REGB0)) {
8918 /* ./syntax//typing.nit:1441 */
8919 REGB0 = TAG_Int(5);
8920 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8921 if (!once_value_3) {
8922 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
8923 REGB0 = TAG_Int(28);
8924 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8925 once_value_3 = fra.me.REG[8];
8926 register_static_object(&once_value_3);
8927 } else fra.me.REG[8] = once_value_3;
8928 fra.me.REG[8] = fra.me.REG[8];
8929 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8930 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8931 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8932 if (!once_value_4) {
8933 fra.me.REG[8] = BOX_NativeString(" must be one in ");
8934 REGB0 = TAG_Int(16);
8935 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8936 once_value_4 = fra.me.REG[8];
8937 register_static_object(&once_value_4);
8938 } else fra.me.REG[8] = once_value_4;
8939 fra.me.REG[8] = fra.me.REG[8];
8940 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8941 if (!once_value_5) {
8942 fra.me.REG[8] = BOX_NativeString(", ");
8943 REGB0 = TAG_Int(2);
8944 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8945 once_value_5 = fra.me.REG[8];
8946 register_static_object(&once_value_5);
8947 } else fra.me.REG[8] = once_value_5;
8948 fra.me.REG[8] = fra.me.REG[8];
8949 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
8950 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8951 if (!once_value_6) {
8952 fra.me.REG[8] = BOX_NativeString(".");
8953 REGB0 = TAG_Int(1);
8954 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8955 once_value_6 = fra.me.REG[8];
8956 register_static_object(&once_value_6);
8957 } else fra.me.REG[8] = once_value_6;
8958 fra.me.REG[8] = fra.me.REG[8];
8959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8960 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8961 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
8962 } else {
8963 /* ./syntax//typing.nit:1442 */
8964 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
8965 if (UNTAG_Bool(REGB0)) {
8966 } else {
8967 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
8968 REGB0 = REGB1;
8969 }
8970 if (UNTAG_Bool(REGB0)) {
8971 /* ./syntax//typing.nit:1443 */
8972 REGB0 = TAG_Int(3);
8973 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8974 if (!once_value_7) {
8975 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
8976 REGB0 = TAG_Int(54);
8977 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8978 once_value_7 = fra.me.REG[8];
8979 register_static_object(&once_value_7);
8980 } else fra.me.REG[8] = once_value_7;
8981 fra.me.REG[8] = fra.me.REG[8];
8982 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8983 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
8984 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8985 if (!once_value_8) {
8986 fra.me.REG[8] = BOX_NativeString(" is allowed.");
8987 REGB0 = TAG_Int(12);
8988 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
8989 once_value_8 = fra.me.REG[8];
8990 register_static_object(&once_value_8);
8991 } else fra.me.REG[8] = once_value_8;
8992 fra.me.REG[8] = fra.me.REG[8];
8993 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
8994 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
8995 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
8996 } else {
8997 /* ./../lib/standard//collection//array.nit:232 */
8998 REGB0 = TAG_Int(0);
8999 /* ./../lib/standard//collection//array.nit:233 */
9000 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9001 if (UNTAG_Bool(REGB1)) {
9002 } else {
9003 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
9004 }
9005 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9006 /* ./../lib/standard//collection//array.nit:234 */
9007 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
9008 /* ./../lib/standard//collection//array.nit:235 */
9009 while(1) {
9010 /* ./../lib/standard//collection//array.nit:23 */
9011 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9012 if (UNTAG_Bool(REGB1)) {
9013 } else {
9014 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
9015 }
9016 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9017 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
9018 if (UNTAG_Bool(REGB2)) {
9019 } else {
9020 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9021 }
9022 /* ./../lib/standard//kernel.nit:215 */
9023 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
9024 /* ./../lib/standard//collection//array.nit:235 */
9025 if (UNTAG_Bool(REGB1)) {
9026 /* ./../lib/standard//collection//array.nit:236 */
9027 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9028 if (UNTAG_Bool(REGB1)) {
9029 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
9030 }
9031 /* ./../lib/standard//collection//array.nit:652 */
9032 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
9033 /* ./syntax//typing.nit:1446 */
9034 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[5]));
9035 if (UNTAG_Bool(REGB1)) {
9036 } else {
9037 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
9038 REGB1 = REGB2;
9039 }
9040 if (UNTAG_Bool(REGB1)) {
9041 /* ./syntax//typing.nit:1447 */
9042 fra.me.REG[5] = NIT_NULL;
9043 } else {
9044 /* ./syntax//typing.nit:1448 */
9045 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[4]));
9046 if (UNTAG_Bool(REGB1)) {
9047 } else {
9048 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
9049 REGB1 = REGB2;
9050 }
9051 if (UNTAG_Bool(REGB1)) {
9052 /* ./syntax//typing.nit:1449 */
9053 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9054 if (UNTAG_Bool(REGB1)) {
9055 } else {
9056 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9057 if (UNTAG_Bool(REGB2)) {
9058 REGB2 = TAG_Bool(false);
9059 REGB1 = REGB2;
9060 } else {
9061 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9062 REGB1 = REGB2;
9063 }
9064 }
9065 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9066 if (UNTAG_Bool(REGB1)) {
9067 /* ./syntax//typing.nit:1450 */
9068 REGB1 = TAG_Int(5);
9069 fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9070 if (!once_value_9) {
9071 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
9072 REGB1 = TAG_Int(22);
9073 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
9074 once_value_9 = fra.me.REG[10];
9075 register_static_object(&once_value_9);
9076 } else fra.me.REG[10] = once_value_9;
9077 fra.me.REG[10] = fra.me.REG[10];
9078 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
9079 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9080 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9081 if (!once_value_10) {
9082 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
9083 REGB1 = TAG_Int(39);
9084 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9085 once_value_10 = fra.me.REG[8];
9086 register_static_object(&once_value_10);
9087 } else fra.me.REG[8] = once_value_10;
9088 fra.me.REG[8] = fra.me.REG[8];
9089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9090 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9091 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9092 if (!once_value_11) {
9093 fra.me.REG[8] = BOX_NativeString("");
9094 REGB1 = TAG_Int(0);
9095 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9096 once_value_11 = fra.me.REG[8];
9097 register_static_object(&once_value_11);
9098 } else fra.me.REG[8] = once_value_11;
9099 fra.me.REG[8] = fra.me.REG[8];
9100 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9101 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
9102 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[9]);
9103 }
9104 /* ./syntax//typing.nit:1452 */
9105 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
9106 /* ./syntax//typing.nit:1453 */
9107 goto label12;
9108 }
9109 }
9110 /* ./../lib/standard//collection//array.nit:237 */
9111 REGB1 = TAG_Int(1);
9112 /* ./../lib/standard//kernel.nit:218 */
9113 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
9114 /* ./../lib/standard//collection//array.nit:237 */
9115 REGB0 = REGB1;
9116 } else {
9117 /* ./../lib/standard//collection//array.nit:235 */
9118 goto label13;
9119 }
9120 }
9121 label13: while(0);
9122 label12: while(0);
9123 }
9124 }
9125 }
9126 stack_frame_head = fra.me.prev;
9127 return;
9128 }
9129 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
9130 struct {struct stack_frame_t me;} fra;
9131 val_t tmp;
9132 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9133 fra.me.file = LOCATE_syntax___typing;
9134 fra.me.line = 1462;
9135 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
9136 fra.me.has_broke = 0;
9137 fra.me.REG_size = 1;
9138 fra.me.REG[0] = NIT_NULL;
9139 fra.me.REG[0] = p0;
9140 /* ./syntax//typing.nit:1462 */
9141 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9142 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9143 goto label1;
9144 label1: while(0);
9145 stack_frame_head = fra.me.prev;
9146 return fra.me.REG[0];
9147 }
9148 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
9149 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9150 val_t REGB0;
9151 val_t REGB1;
9152 val_t tmp;
9153 static val_t once_value_2; /* Once value */
9154 static val_t once_value_3; /* Once value */
9155 static val_t once_value_4; /* Once value */
9156 static val_t once_value_5; /* Once value */
9157 static val_t once_value_6; /* Once value */
9158 static val_t once_value_7; /* Once value */
9159 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9160 fra.me.file = LOCATE_syntax___typing;
9161 fra.me.line = 1463;
9162 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
9163 fra.me.has_broke = 0;
9164 fra.me.REG_size = 5;
9165 fra.me.REG[0] = NIT_NULL;
9166 fra.me.REG[1] = NIT_NULL;
9167 fra.me.REG[2] = NIT_NULL;
9168 fra.me.REG[3] = NIT_NULL;
9169 fra.me.REG[4] = NIT_NULL;
9170 fra.me.REG[0] = p0;
9171 fra.me.REG[1] = p1;
9172 /* ./syntax//typing.nit:1465 */
9173 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9174 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
9175 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9176 if (UNTAG_Bool(REGB0)) {
9177 goto label1;
9178 }
9179 /* ./syntax//typing.nit:1466 */
9180 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9181 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
9182 /* ./syntax//typing.nit:1467 */
9183 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9184 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
9185 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
9186 if (UNTAG_Bool(REGB0)) {
9187 /* ./syntax//typing.nit:1468 */
9188 REGB0 = TAG_Int(3);
9189 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9190 if (!once_value_2) {
9191 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
9192 REGB0 = TAG_Int(41);
9193 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9194 once_value_2 = fra.me.REG[4];
9195 register_static_object(&once_value_2);
9196 } else fra.me.REG[4] = once_value_2;
9197 fra.me.REG[4] = fra.me.REG[4];
9198 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9199 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9200 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9201 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9202 if (!once_value_3) {
9203 fra.me.REG[4] = BOX_NativeString(".");
9204 REGB0 = TAG_Int(1);
9205 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9206 once_value_3 = fra.me.REG[4];
9207 register_static_object(&once_value_3);
9208 } else fra.me.REG[4] = once_value_3;
9209 fra.me.REG[4] = fra.me.REG[4];
9210 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9211 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9212 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9213 /* ./syntax//typing.nit:1469 */
9214 goto label1;
9215 }
9216 /* ./syntax//typing.nit:1472 */
9217 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9218 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9219 if (UNTAG_Bool(REGB0)) {
9220 } else {
9221 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9222 if (UNTAG_Bool(REGB1)) {
9223 REGB1 = TAG_Bool(false);
9224 REGB0 = REGB1;
9225 } else {
9226 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9227 REGB0 = REGB1;
9228 }
9229 }
9230 if (UNTAG_Bool(REGB0)) {
9231 /* ./syntax//typing.nit:1473 */
9232 if (!once_value_4) {
9233 if (!once_value_5) {
9234 fra.me.REG[3] = BOX_NativeString("init");
9235 REGB0 = TAG_Int(4);
9236 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9237 once_value_5 = fra.me.REG[3];
9238 register_static_object(&once_value_5);
9239 } else fra.me.REG[3] = once_value_5;
9240 fra.me.REG[3] = fra.me.REG[3];
9241 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9242 once_value_4 = fra.me.REG[3];
9243 register_static_object(&once_value_4);
9244 } else fra.me.REG[3] = once_value_4;
9245 fra.me.REG[3] = fra.me.REG[3];
9246 } else {
9247 /* ./syntax//typing.nit:1475 */
9248 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9249 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9250 if (UNTAG_Bool(REGB0)) {
9251 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1475);
9252 }
9253 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9254 fra.me.REG[3] = fra.me.REG[4];
9255 }
9256 /* ./syntax//typing.nit:1478 */
9257 REGB0 = TAG_Bool(false);
9258 REGB1 = TAG_Bool(false);
9259 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9260 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);
9261 /* ./syntax//typing.nit:1479 */
9262 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9263 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9264 if (UNTAG_Bool(REGB1)) {
9265 } else {
9266 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9267 if (UNTAG_Bool(REGB0)) {
9268 REGB0 = TAG_Bool(false);
9269 REGB1 = REGB0;
9270 } else {
9271 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9272 REGB1 = REGB0;
9273 }
9274 }
9275 if (UNTAG_Bool(REGB1)) {
9276 goto label1;
9277 }
9278 /* ./syntax//typing.nit:1481 */
9279 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9280 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9281 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9282 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9283 if (UNTAG_Bool(REGB1)) {
9284 /* ./syntax//typing.nit:1482 */
9285 REGB1 = TAG_Int(3);
9286 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9287 if (!once_value_6) {
9288 fra.me.REG[3] = BOX_NativeString("Error: ");
9289 REGB1 = TAG_Int(7);
9290 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9291 once_value_6 = fra.me.REG[3];
9292 register_static_object(&once_value_6);
9293 } else fra.me.REG[3] = once_value_6;
9294 fra.me.REG[3] = fra.me.REG[3];
9295 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9296 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9297 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9299 if (!once_value_7) {
9300 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
9301 REGB1 = TAG_Int(22);
9302 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9303 once_value_7 = fra.me.REG[3];
9304 register_static_object(&once_value_7);
9305 } else fra.me.REG[3] = once_value_7;
9306 fra.me.REG[3] = fra.me.REG[3];
9307 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9308 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9309 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9310 /* ./syntax//typing.nit:1483 */
9311 goto label1;
9312 }
9313 /* ./syntax//typing.nit:1485 */
9314 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
9315 /* ./syntax//typing.nit:1486 */
9316 REGB1 = TAG_Bool(true);
9317 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9318 label1: while(0);
9319 stack_frame_head = fra.me.prev;
9320 return;
9321 }
9322 val_t syntax___typing___ASendExpr___name(val_t p0){
9323 struct {struct stack_frame_t me;} fra;
9324 val_t tmp;
9325 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9326 fra.me.file = LOCATE_syntax___typing;
9327 fra.me.line = 1492;
9328 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
9329 fra.me.has_broke = 0;
9330 fra.me.REG_size = 0;
9331 /* ./syntax//typing.nit:1492 */
9332 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1492);
9333 stack_frame_head = fra.me.prev;
9334 return NIT_NULL;
9335 }
9336 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
9337 struct {struct stack_frame_t me;} fra;
9338 val_t tmp;
9339 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9340 fra.me.file = LOCATE_syntax___typing;
9341 fra.me.line = 1495;
9342 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
9343 fra.me.has_broke = 0;
9344 fra.me.REG_size = 1;
9345 fra.me.REG[0] = NIT_NULL;
9346 fra.me.REG[0] = p0;
9347 /* ./syntax//typing.nit:1496 */
9348 fra.me.REG[0] = NIT_NULL;
9349 goto label1;
9350 label1: while(0);
9351 stack_frame_head = fra.me.prev;
9352 return fra.me.REG[0];
9353 }
9354 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
9355 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9356 val_t tmp;
9357 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9358 fra.me.file = LOCATE_syntax___typing;
9359 fra.me.line = 1498;
9360 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
9361 fra.me.has_broke = 0;
9362 fra.me.REG_size = 2;
9363 fra.me.REG[0] = NIT_NULL;
9364 fra.me.REG[1] = NIT_NULL;
9365 fra.me.REG[0] = p0;
9366 fra.me.REG[1] = p1;
9367 /* ./syntax//typing.nit:1500 */
9368 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9369 stack_frame_head = fra.me.prev;
9370 return;
9371 }
9372 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
9373 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9374 val_t REGB0;
9375 val_t REGB1;
9376 val_t tmp;
9377 static val_t once_value_2; /* Once value */
9378 static val_t once_value_3; /* Once value */
9379 static val_t once_value_4; /* Once value */
9380 static val_t once_value_5; /* Once value */
9381 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9382 fra.me.file = LOCATE_syntax___typing;
9383 fra.me.line = 1503;
9384 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
9385 fra.me.has_broke = 0;
9386 fra.me.REG_size = 7;
9387 fra.me.REG[0] = NIT_NULL;
9388 fra.me.REG[1] = NIT_NULL;
9389 fra.me.REG[2] = NIT_NULL;
9390 fra.me.REG[3] = NIT_NULL;
9391 fra.me.REG[4] = NIT_NULL;
9392 fra.me.REG[5] = NIT_NULL;
9393 fra.me.REG[6] = NIT_NULL;
9394 fra.me.REG[0] = p0;
9395 fra.me.REG[1] = p1;
9396 /* ./syntax//typing.nit:1503 */
9397 fra.me.REG[2] = fra.me.REG[0];
9398 /* ./syntax//typing.nit:1505 */
9399 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9400 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
9401 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9402 if (UNTAG_Bool(REGB0)) {
9403 goto label1;
9404 }
9405 /* ./syntax//typing.nit:1506 */
9406 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9407 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
9408 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9409 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
9410 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9411 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9412 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
9413 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
9414 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
9415 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3], REGB0, REGB1, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
9416 /* ./syntax//typing.nit:1507 */
9417 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
9418 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9419 if (UNTAG_Bool(REGB1)) {
9420 } else {
9421 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9422 if (UNTAG_Bool(REGB0)) {
9423 REGB0 = TAG_Bool(false);
9424 REGB1 = REGB0;
9425 } else {
9426 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9427 REGB1 = REGB0;
9428 }
9429 }
9430 if (UNTAG_Bool(REGB1)) {
9431 goto label1;
9432 }
9433 /* ./syntax//typing.nit:1508 */
9434 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
9435 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
9436 if (UNTAG_Bool(REGB1)) {
9437 } else {
9438 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1508);
9439 }
9440 /* ./syntax//typing.nit:1510 */
9441 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
9442 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
9443 if (UNTAG_Bool(REGB1)) {
9444 /* ./syntax//typing.nit:1511 */
9445 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9446 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
9447 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
9448 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9449 if (UNTAG_Bool(REGB1)) {
9450 /* ./syntax//typing.nit:1512 */
9451 REGB1 = TAG_Int(3);
9452 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9453 if (!once_value_2) {
9454 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
9455 REGB1 = TAG_Int(33);
9456 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9457 once_value_2 = fra.me.REG[5];
9458 register_static_object(&once_value_2);
9459 } else fra.me.REG[5] = once_value_2;
9460 fra.me.REG[5] = fra.me.REG[5];
9461 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9462 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
9463 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9464 if (!once_value_3) {
9465 fra.me.REG[5] = BOX_NativeString(" in a method.");
9466 REGB1 = TAG_Int(13);
9467 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9468 once_value_3 = fra.me.REG[5];
9469 register_static_object(&once_value_3);
9470 } else fra.me.REG[5] = once_value_3;
9471 fra.me.REG[5] = fra.me.REG[5];
9472 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9473 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
9474 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
9475 } else {
9476 /* ./syntax//typing.nit:1513 */
9477 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9478 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
9479 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9480 if (UNTAG_Bool(REGB1)) {
9481 /* ./syntax//typing.nit:1514 */
9482 REGB1 = TAG_Int(3);
9483 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9484 if (!once_value_4) {
9485 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
9486 REGB1 = TAG_Int(19);
9487 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9488 once_value_4 = fra.me.REG[5];
9489 register_static_object(&once_value_4);
9490 } else fra.me.REG[5] = once_value_4;
9491 fra.me.REG[5] = fra.me.REG[5];
9492 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9493 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
9494 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9495 if (!once_value_5) {
9496 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
9497 REGB1 = TAG_Int(26);
9498 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9499 once_value_5 = fra.me.REG[5];
9500 register_static_object(&once_value_5);
9501 } else fra.me.REG[5] = once_value_5;
9502 fra.me.REG[5] = fra.me.REG[5];
9503 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
9504 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
9505 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
9506 } else {
9507 /* ./syntax//typing.nit:1516 */
9508 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
9509 }
9510 }
9511 }
9512 /* ./syntax//typing.nit:1520 */
9513 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
9514 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
9515 /* ./syntax//typing.nit:1521 */
9516 REGB1 = TAG_Bool(true);
9517 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
9518 label1: while(0);
9519 stack_frame_head = fra.me.prev;
9520 return;
9521 }
9522 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
9523 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9524 val_t REGB0;
9525 val_t tmp;
9526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9527 fra.me.file = LOCATE_syntax___typing;
9528 fra.me.line = 1526;
9529 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
9530 fra.me.has_broke = 0;
9531 fra.me.REG_size = 2;
9532 fra.me.REG[0] = NIT_NULL;
9533 fra.me.REG[1] = NIT_NULL;
9534 fra.me.REG[0] = p0;
9535 /* ./syntax//typing.nit:1526 */
9536 fra.me.REG[1] = fra.me.REG[0];
9537 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
9538 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9539 if (UNTAG_Bool(REGB0)) {
9540 } else {
9541 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1526);
9542 }
9543 goto label1;
9544 label1: while(0);
9545 stack_frame_head = fra.me.prev;
9546 return fra.me.REG[1];
9547 }
9548 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
9549 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9550 val_t REGB0;
9551 val_t REGB1;
9552 val_t REGB2;
9553 val_t tmp;
9554 static val_t once_value_2; /* Once value */
9555 static val_t once_value_3; /* Once value */
9556 static val_t once_value_4; /* Once value */
9557 static val_t once_value_5; /* Once value */
9558 static val_t once_value_6; /* Once value */
9559 static val_t once_value_7; /* Once value */
9560 static val_t once_value_8; /* Once value */
9561 static val_t once_value_9; /* Once value */
9562 static val_t once_value_10; /* Once value */
9563 static val_t once_value_11; /* Once value */
9564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9565 fra.me.file = LOCATE_syntax___typing;
9566 fra.me.line = 1528;
9567 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
9568 fra.me.has_broke = 0;
9569 fra.me.REG_size = 7;
9570 fra.me.REG[0] = NIT_NULL;
9571 fra.me.REG[1] = NIT_NULL;
9572 fra.me.REG[2] = NIT_NULL;
9573 fra.me.REG[3] = NIT_NULL;
9574 fra.me.REG[4] = NIT_NULL;
9575 fra.me.REG[5] = NIT_NULL;
9576 fra.me.REG[6] = NIT_NULL;
9577 fra.me.REG[0] = p0;
9578 fra.me.REG[1] = p1;
9579 /* ./syntax//typing.nit:1528 */
9580 fra.me.REG[2] = fra.me.REG[0];
9581 /* ./syntax//typing.nit:1530 */
9582 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9583 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
9584 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9585 if (UNTAG_Bool(REGB0)) {
9586 goto label1;
9587 }
9588 /* ./syntax//typing.nit:1531 */
9589 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
9590 /* ./syntax//typing.nit:1532 */
9591 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9592 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
9593 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9594 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
9595 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9596 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
9597 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
9598 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], REGB0, REGB1, fra.me.REG[5], fra.me.REG[3], NIT_NULL);
9599 /* ./syntax//typing.nit:1533 */
9600 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
9601 /* ./syntax//typing.nit:1534 */
9602 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9603 if (UNTAG_Bool(REGB1)) {
9604 } else {
9605 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9606 if (UNTAG_Bool(REGB0)) {
9607 REGB0 = TAG_Bool(false);
9608 REGB1 = REGB0;
9609 } else {
9610 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9611 REGB1 = REGB0;
9612 }
9613 }
9614 if (UNTAG_Bool(REGB1)) {
9615 goto label1;
9616 }
9617 /* ./syntax//typing.nit:1535 */
9618 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9619 if (UNTAG_Bool(REGB1)) {
9620 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1535);
9621 }
9622 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
9623 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9624 if (UNTAG_Bool(REGB1)) {
9625 /* ./syntax//typing.nit:1536 */
9626 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9627 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9628 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9629 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9630 if (UNTAG_Bool(REGB1)) {
9631 /* ./syntax//typing.nit:1537 */
9632 REGB1 = TAG_Int(3);
9633 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9634 if (!once_value_2) {
9635 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
9636 REGB1 = TAG_Int(33);
9637 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
9638 once_value_2 = fra.me.REG[6];
9639 register_static_object(&once_value_2);
9640 } else fra.me.REG[6] = once_value_2;
9641 fra.me.REG[6] = fra.me.REG[6];
9642 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9643 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9644 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9645 if (!once_value_3) {
9646 fra.me.REG[6] = BOX_NativeString(" in a method.");
9647 REGB1 = TAG_Int(13);
9648 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
9649 once_value_3 = fra.me.REG[6];
9650 register_static_object(&once_value_3);
9651 } else fra.me.REG[6] = once_value_3;
9652 fra.me.REG[6] = fra.me.REG[6];
9653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9654 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9655 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
9656 } else {
9657 /* ./syntax//typing.nit:1538 */
9658 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9659 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9660 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9661 if (UNTAG_Bool(REGB1)) {
9662 /* ./syntax//typing.nit:1539 */
9663 REGB1 = TAG_Int(3);
9664 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9665 if (!once_value_4) {
9666 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
9667 REGB1 = TAG_Int(19);
9668 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
9669 once_value_4 = fra.me.REG[6];
9670 register_static_object(&once_value_4);
9671 } else fra.me.REG[6] = once_value_4;
9672 fra.me.REG[6] = fra.me.REG[6];
9673 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9674 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9675 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9676 if (!once_value_5) {
9677 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
9678 REGB1 = TAG_Int(26);
9679 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
9680 once_value_5 = fra.me.REG[6];
9681 register_static_object(&once_value_5);
9682 } else fra.me.REG[6] = once_value_5;
9683 fra.me.REG[6] = fra.me.REG[6];
9684 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9685 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9686 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
9687 }
9688 }
9689 }
9690 /* ./syntax//typing.nit:1542 */
9691 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9692 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
9693 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9694 if (UNTAG_Bool(REGB1)) {
9695 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1542);
9696 }
9697 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9698 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
9699 REGB1 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
9700 if (UNTAG_Bool(REGB1)) {
9701 } else {
9702 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1542);
9703 }
9704 /* ./syntax//typing.nit:1543 */
9705 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9706 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
9707 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9708 if (UNTAG_Bool(REGB1)) {
9709 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
9710 fra.me.REG[4] = fra.me.REG[0];
9711 }
9712 /* ./syntax//typing.nit:1545 */
9713 fra.me.REG[4] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4]);
9714 /* ./syntax//typing.nit:1546 */
9715 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9716 if (UNTAG_Bool(REGB1)) {
9717 } else {
9718 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9719 if (UNTAG_Bool(REGB0)) {
9720 REGB0 = TAG_Bool(false);
9721 REGB1 = REGB0;
9722 } else {
9723 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9724 REGB1 = REGB0;
9725 }
9726 }
9727 if (UNTAG_Bool(REGB1)) {
9728 goto label1;
9729 }
9730 /* ./syntax//typing.nit:1547 */
9731 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
9732 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
9733 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[0]);
9734 /* ./syntax//typing.nit:1549 */
9735 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
9736 /* ./syntax//typing.nit:1550 */
9737 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
9738 fra.me.REG[3] = fra.me.REG[0];
9739 /* ./syntax//typing.nit:1551 */
9740 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
9741 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
9742 /* ./syntax//typing.nit:1553 */
9743 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9744 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
9745 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9746 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
9747 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9748 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
9749 REGB2 = TAG_Int(3);
9750 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9751 if (!once_value_6) {
9752 fra.me.REG[6] = BOX_NativeString("");
9753 REGB2 = TAG_Int(0);
9754 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
9755 once_value_6 = fra.me.REG[6];
9756 register_static_object(&once_value_6);
9757 } else fra.me.REG[6] = once_value_6;
9758 fra.me.REG[6] = fra.me.REG[6];
9759 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9760 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
9761 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
9762 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9763 if (!once_value_7) {
9764 fra.me.REG[6] = BOX_NativeString("=");
9765 REGB2 = TAG_Int(1);
9766 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
9767 once_value_7 = fra.me.REG[6];
9768 register_static_object(&once_value_7);
9769 } else fra.me.REG[6] = once_value_7;
9770 fra.me.REG[6] = fra.me.REG[6];
9771 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
9772 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9773 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9774 CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], REGB1, REGB0, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
9775 /* ./syntax//typing.nit:1554 */
9776 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9777 if (UNTAG_Bool(REGB0)) {
9778 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1554);
9779 }
9780 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
9781 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
9782 if (UNTAG_Bool(REGB0)) {
9783 /* ./syntax//typing.nit:1555 */
9784 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9785 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9786 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
9787 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9788 if (UNTAG_Bool(REGB0)) {
9789 /* ./syntax//typing.nit:1556 */
9790 REGB0 = TAG_Int(3);
9791 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9792 if (!once_value_8) {
9793 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
9794 REGB0 = TAG_Int(33);
9795 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9796 once_value_8 = fra.me.REG[4];
9797 register_static_object(&once_value_8);
9798 } else fra.me.REG[4] = once_value_8;
9799 fra.me.REG[4] = fra.me.REG[4];
9800 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9801 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9802 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9803 if (!once_value_9) {
9804 fra.me.REG[4] = BOX_NativeString(" in a method.");
9805 REGB0 = TAG_Int(13);
9806 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9807 once_value_9 = fra.me.REG[4];
9808 register_static_object(&once_value_9);
9809 } else fra.me.REG[4] = once_value_9;
9810 fra.me.REG[4] = fra.me.REG[4];
9811 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9812 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9813 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
9814 } else {
9815 /* ./syntax//typing.nit:1557 */
9816 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9817 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
9818 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9819 if (UNTAG_Bool(REGB0)) {
9820 /* ./syntax//typing.nit:1558 */
9821 REGB0 = TAG_Int(3);
9822 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9823 if (!once_value_10) {
9824 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
9825 REGB0 = TAG_Int(19);
9826 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9827 once_value_10 = fra.me.REG[4];
9828 register_static_object(&once_value_10);
9829 } else fra.me.REG[4] = once_value_10;
9830 fra.me.REG[4] = fra.me.REG[4];
9831 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9832 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9833 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9834 if (!once_value_11) {
9835 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
9836 REGB0 = TAG_Int(26);
9837 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9838 once_value_11 = fra.me.REG[5];
9839 register_static_object(&once_value_11);
9840 } else fra.me.REG[5] = once_value_11;
9841 fra.me.REG[5] = fra.me.REG[5];
9842 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9843 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9844 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
9845 }
9846 }
9847 }
9848 /* ./syntax//typing.nit:1562 */
9849 REGB0 = TAG_Bool(true);
9850 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
9851 label1: while(0);
9852 stack_frame_head = fra.me.prev;
9853 return;
9854 }
9855 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
9856 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9857 val_t REGB0;
9858 val_t tmp;
9859 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9860 fra.me.file = LOCATE_syntax___typing;
9861 fra.me.line = 1567;
9862 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
9863 fra.me.has_broke = 0;
9864 fra.me.REG_size = 2;
9865 fra.me.REG[0] = NIT_NULL;
9866 fra.me.REG[1] = NIT_NULL;
9867 fra.me.REG[0] = p0;
9868 /* ./syntax//typing.nit:1567 */
9869 REGB0 = TAG_Int(1);
9870 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9871 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
9872 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
9873 goto label1;
9874 label1: while(0);
9875 stack_frame_head = fra.me.prev;
9876 return fra.me.REG[1];
9877 }
9878 val_t syntax___typing___AEqExpr___name(val_t p0){
9879 struct {struct stack_frame_t me;} fra;
9880 val_t REGB0;
9881 val_t tmp;
9882 static val_t once_value_1; /* Once value */
9883 static val_t once_value_2; /* Once value */
9884 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9885 fra.me.file = LOCATE_syntax___typing;
9886 fra.me.line = 1570;
9887 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
9888 fra.me.has_broke = 0;
9889 fra.me.REG_size = 1;
9890 fra.me.REG[0] = NIT_NULL;
9891 fra.me.REG[0] = p0;
9892 /* ./syntax//typing.nit:1570 */
9893 if (!once_value_1) {
9894 if (!once_value_2) {
9895 fra.me.REG[0] = BOX_NativeString("==");
9896 REGB0 = TAG_Int(2);
9897 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
9898 once_value_2 = fra.me.REG[0];
9899 register_static_object(&once_value_2);
9900 } else fra.me.REG[0] = once_value_2;
9901 fra.me.REG[0] = fra.me.REG[0];
9902 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
9903 once_value_1 = fra.me.REG[0];
9904 register_static_object(&once_value_1);
9905 } else fra.me.REG[0] = once_value_1;
9906 fra.me.REG[0] = fra.me.REG[0];
9907 goto label3;
9908 label3: while(0);
9909 stack_frame_head = fra.me.prev;
9910 return fra.me.REG[0];
9911 }
9912 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
9913 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
9914 val_t REGB0;
9915 val_t REGB1;
9916 val_t tmp;
9917 static val_t once_value_2; /* Once value */
9918 static val_t once_value_3; /* Once value */
9919 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9920 fra.me.file = LOCATE_syntax___typing;
9921 fra.me.line = 1571;
9922 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
9923 fra.me.has_broke = 0;
9924 fra.me.REG_size = 4;
9925 fra.me.REG[0] = NIT_NULL;
9926 fra.me.REG[1] = NIT_NULL;
9927 fra.me.REG[2] = NIT_NULL;
9928 fra.me.REG[3] = NIT_NULL;
9929 fra.me.REG[0] = p0;
9930 fra.me.REG[1] = p1;
9931 /* ./syntax//typing.nit:1571 */
9932 fra.me.REG[2] = fra.me.REG[0];
9933 fra.me.REG[3] = fra.me.REG[1];
9934 /* ./syntax//typing.nit:1573 */
9935 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
9936 /* ./syntax//typing.nit:1574 */
9937 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9938 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9939 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9940 if (UNTAG_Bool(REGB0)) {
9941 REGB0 = TAG_Bool(true);
9942 } else {
9943 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9944 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
9945 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9946 REGB0 = REGB1;
9947 }
9948 if (UNTAG_Bool(REGB0)) {
9949 goto label1;
9950 }
9951 /* ./syntax//typing.nit:1575 */
9952 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9953 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9954 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9955 if (UNTAG_Bool(REGB0)) {
9956 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9957 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9958 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9959 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9960 } else {
9961 REGB1 = TAG_Bool(false);
9962 REGB0 = REGB1;
9963 }
9964 if (UNTAG_Bool(REGB0)) {
9965 REGB0 = TAG_Bool(true);
9966 } else {
9967 /* ./syntax//typing.nit:1576 */
9968 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
9969 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9970 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9971 /* ./syntax//typing.nit:1575 */
9972 REGB0 = REGB1;
9973 }
9974 if (UNTAG_Bool(REGB0)) {
9975 /* ./syntax//typing.nit:1576 */
9976 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9977 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
9978 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
9979 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9980 } else {
9981 /* ./syntax//typing.nit:1575 */
9982 REGB1 = TAG_Bool(false);
9983 REGB0 = REGB1;
9984 }
9985 if (UNTAG_Bool(REGB0)) {
9986 /* ./syntax//typing.nit:1577 */
9987 if (!once_value_2) {
9988 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
9989 REGB0 = TAG_Int(59);
9990 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
9991 once_value_2 = fra.me.REG[1];
9992 register_static_object(&once_value_2);
9993 } else fra.me.REG[1] = once_value_2;
9994 fra.me.REG[1] = fra.me.REG[1];
9995 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
9996 }
9997 /* ./syntax//typing.nit:1580 */
9998 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
9999 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10000 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10001 if (UNTAG_Bool(REGB0)) {
10002 /* ./syntax//typing.nit:1581 */
10003 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10004 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10005 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10006 if (UNTAG_Bool(REGB0)) {
10007 /* ./syntax//typing.nit:1582 */
10008 if (!once_value_3) {
10009 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10010 REGB0 = TAG_Int(43);
10011 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10012 once_value_3 = fra.me.REG[1];
10013 register_static_object(&once_value_3);
10014 } else fra.me.REG[1] = once_value_3;
10015 fra.me.REG[1] = fra.me.REG[1];
10016 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10017 } else {
10018 /* ./syntax//typing.nit:1584 */
10019 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10020 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10021 }
10022 } else {
10023 /* ./syntax//typing.nit:1586 */
10024 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10025 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10026 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10027 if (UNTAG_Bool(REGB0)) {
10028 /* ./syntax//typing.nit:1587 */
10029 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10030 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10031 }
10032 }
10033 label1: while(0);
10034 stack_frame_head = fra.me.prev;
10035 return;
10036 }
10037 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10038 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10039 val_t REGB0;
10040 val_t REGB1;
10041 val_t tmp;
10042 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10043 fra.me.file = LOCATE_syntax___typing;
10044 fra.me.line = 1591;
10045 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
10046 fra.me.has_broke = 0;
10047 fra.me.REG_size = 5;
10048 fra.me.REG[0] = NIT_NULL;
10049 fra.me.REG[1] = NIT_NULL;
10050 fra.me.REG[2] = NIT_NULL;
10051 fra.me.REG[3] = NIT_NULL;
10052 fra.me.REG[4] = NIT_NULL;
10053 fra.me.REG[0] = p0;
10054 fra.me.REG[1] = p1;
10055 fra.me.REG[2] = p2;
10056 /* ./syntax//typing.nit:1593 */
10057 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10058 /* ./syntax//typing.nit:1594 */
10059 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10060 if (UNTAG_Bool(REGB0)) {
10061 } else {
10062 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10063 if (UNTAG_Bool(REGB1)) {
10064 REGB1 = TAG_Bool(false);
10065 REGB0 = REGB1;
10066 } else {
10067 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10068 REGB0 = REGB1;
10069 }
10070 }
10071 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10072 if (UNTAG_Bool(REGB0)) {
10073 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10074 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10075 } else {
10076 REGB1 = TAG_Bool(false);
10077 REGB0 = REGB1;
10078 }
10079 if (UNTAG_Bool(REGB0)) {
10080 /* ./syntax//typing.nit:1595 */
10081 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10082 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10083 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10084 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]);
10085 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10086 /* ./syntax//typing.nit:1596 */
10087 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10088 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10089 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]);
10090 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10091 }
10092 stack_frame_head = fra.me.prev;
10093 return;
10094 }
10095 val_t syntax___typing___ANeExpr___name(val_t p0){
10096 struct {struct stack_frame_t me;} fra;
10097 val_t REGB0;
10098 val_t tmp;
10099 static val_t once_value_1; /* Once value */
10100 static val_t once_value_2; /* Once value */
10101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10102 fra.me.file = LOCATE_syntax___typing;
10103 fra.me.line = 1601;
10104 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
10105 fra.me.has_broke = 0;
10106 fra.me.REG_size = 1;
10107 fra.me.REG[0] = NIT_NULL;
10108 fra.me.REG[0] = p0;
10109 /* ./syntax//typing.nit:1601 */
10110 if (!once_value_1) {
10111 if (!once_value_2) {
10112 fra.me.REG[0] = BOX_NativeString("!=");
10113 REGB0 = TAG_Int(2);
10114 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10115 once_value_2 = fra.me.REG[0];
10116 register_static_object(&once_value_2);
10117 } else fra.me.REG[0] = once_value_2;
10118 fra.me.REG[0] = fra.me.REG[0];
10119 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10120 once_value_1 = fra.me.REG[0];
10121 register_static_object(&once_value_1);
10122 } else fra.me.REG[0] = once_value_1;
10123 fra.me.REG[0] = fra.me.REG[0];
10124 goto label3;
10125 label3: while(0);
10126 stack_frame_head = fra.me.prev;
10127 return fra.me.REG[0];
10128 }
10129 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
10130 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10131 val_t REGB0;
10132 val_t REGB1;
10133 val_t tmp;
10134 static val_t once_value_2; /* Once value */
10135 static val_t once_value_3; /* Once value */
10136 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10137 fra.me.file = LOCATE_syntax___typing;
10138 fra.me.line = 1602;
10139 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
10140 fra.me.has_broke = 0;
10141 fra.me.REG_size = 4;
10142 fra.me.REG[0] = NIT_NULL;
10143 fra.me.REG[1] = NIT_NULL;
10144 fra.me.REG[2] = NIT_NULL;
10145 fra.me.REG[3] = NIT_NULL;
10146 fra.me.REG[0] = p0;
10147 fra.me.REG[1] = p1;
10148 /* ./syntax//typing.nit:1602 */
10149 fra.me.REG[2] = fra.me.REG[0];
10150 fra.me.REG[3] = fra.me.REG[1];
10151 /* ./syntax//typing.nit:1604 */
10152 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10153 /* ./syntax//typing.nit:1605 */
10154 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10155 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10156 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10157 if (UNTAG_Bool(REGB0)) {
10158 REGB0 = TAG_Bool(true);
10159 } else {
10160 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10161 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10162 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10163 REGB0 = REGB1;
10164 }
10165 if (UNTAG_Bool(REGB0)) {
10166 goto label1;
10167 }
10168 /* ./syntax//typing.nit:1606 */
10169 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10170 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10171 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10172 if (UNTAG_Bool(REGB0)) {
10173 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10174 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10175 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10176 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10177 } else {
10178 REGB1 = TAG_Bool(false);
10179 REGB0 = REGB1;
10180 }
10181 if (UNTAG_Bool(REGB0)) {
10182 REGB0 = TAG_Bool(true);
10183 } else {
10184 /* ./syntax//typing.nit:1607 */
10185 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10186 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10187 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10188 /* ./syntax//typing.nit:1606 */
10189 REGB0 = REGB1;
10190 }
10191 if (UNTAG_Bool(REGB0)) {
10192 /* ./syntax//typing.nit:1607 */
10193 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10194 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10195 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10196 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10197 } else {
10198 /* ./syntax//typing.nit:1606 */
10199 REGB1 = TAG_Bool(false);
10200 REGB0 = REGB1;
10201 }
10202 if (UNTAG_Bool(REGB0)) {
10203 /* ./syntax//typing.nit:1608 */
10204 if (!once_value_2) {
10205 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10206 REGB0 = TAG_Int(59);
10207 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10208 once_value_2 = fra.me.REG[1];
10209 register_static_object(&once_value_2);
10210 } else fra.me.REG[1] = once_value_2;
10211 fra.me.REG[1] = fra.me.REG[1];
10212 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10213 }
10214 /* ./syntax//typing.nit:1611 */
10215 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10216 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10217 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10218 if (UNTAG_Bool(REGB0)) {
10219 /* ./syntax//typing.nit:1612 */
10220 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10221 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10222 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10223 if (UNTAG_Bool(REGB0)) {
10224 /* ./syntax//typing.nit:1613 */
10225 if (!once_value_3) {
10226 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10227 REGB0 = TAG_Int(43);
10228 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10229 once_value_3 = fra.me.REG[1];
10230 register_static_object(&once_value_3);
10231 } else fra.me.REG[1] = once_value_3;
10232 fra.me.REG[1] = fra.me.REG[1];
10233 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10234 } else {
10235 /* ./syntax//typing.nit:1615 */
10236 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10237 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10238 }
10239 } else {
10240 /* ./syntax//typing.nit:1617 */
10241 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10242 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10243 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10244 if (UNTAG_Bool(REGB0)) {
10245 /* ./syntax//typing.nit:1618 */
10246 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10247 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10248 }
10249 }
10250 label1: while(0);
10251 stack_frame_head = fra.me.prev;
10252 return;
10253 }
10254 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10255 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10256 val_t REGB0;
10257 val_t REGB1;
10258 val_t tmp;
10259 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10260 fra.me.file = LOCATE_syntax___typing;
10261 fra.me.line = 1622;
10262 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
10263 fra.me.has_broke = 0;
10264 fra.me.REG_size = 5;
10265 fra.me.REG[0] = NIT_NULL;
10266 fra.me.REG[1] = NIT_NULL;
10267 fra.me.REG[2] = NIT_NULL;
10268 fra.me.REG[3] = NIT_NULL;
10269 fra.me.REG[4] = NIT_NULL;
10270 fra.me.REG[0] = p0;
10271 fra.me.REG[1] = p1;
10272 fra.me.REG[2] = p2;
10273 /* ./syntax//typing.nit:1624 */
10274 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10275 /* ./syntax//typing.nit:1625 */
10276 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10277 if (UNTAG_Bool(REGB0)) {
10278 } else {
10279 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10280 if (UNTAG_Bool(REGB1)) {
10281 REGB1 = TAG_Bool(false);
10282 REGB0 = REGB1;
10283 } else {
10284 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10285 REGB0 = REGB1;
10286 }
10287 }
10288 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10289 if (UNTAG_Bool(REGB0)) {
10290 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10291 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10292 } else {
10293 REGB1 = TAG_Bool(false);
10294 REGB0 = REGB1;
10295 }
10296 if (UNTAG_Bool(REGB0)) {
10297 /* ./syntax//typing.nit:1626 */
10298 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10299 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10300 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10301 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]);
10302 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10303 /* ./syntax//typing.nit:1627 */
10304 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10305 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10306 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]);
10307 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10308 }
10309 stack_frame_head = fra.me.prev;
10310 return;
10311 }
10312 val_t syntax___typing___ALtExpr___name(val_t p0){
10313 struct {struct stack_frame_t me;} fra;
10314 val_t REGB0;
10315 val_t tmp;
10316 static val_t once_value_1; /* Once value */
10317 static val_t once_value_2; /* Once value */
10318 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10319 fra.me.file = LOCATE_syntax___typing;
10320 fra.me.line = 1632;
10321 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
10322 fra.me.has_broke = 0;
10323 fra.me.REG_size = 1;
10324 fra.me.REG[0] = NIT_NULL;
10325 fra.me.REG[0] = p0;
10326 /* ./syntax//typing.nit:1632 */
10327 if (!once_value_1) {
10328 if (!once_value_2) {
10329 fra.me.REG[0] = BOX_NativeString("<");
10330 REGB0 = TAG_Int(1);
10331 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10332 once_value_2 = fra.me.REG[0];
10333 register_static_object(&once_value_2);
10334 } else fra.me.REG[0] = once_value_2;
10335 fra.me.REG[0] = fra.me.REG[0];
10336 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10337 once_value_1 = fra.me.REG[0];
10338 register_static_object(&once_value_1);
10339 } else fra.me.REG[0] = once_value_1;
10340 fra.me.REG[0] = fra.me.REG[0];
10341 goto label3;
10342 label3: while(0);
10343 stack_frame_head = fra.me.prev;
10344 return fra.me.REG[0];
10345 }
10346 val_t syntax___typing___ALeExpr___name(val_t p0){
10347 struct {struct stack_frame_t me;} fra;
10348 val_t REGB0;
10349 val_t tmp;
10350 static val_t once_value_1; /* Once value */
10351 static val_t once_value_2; /* Once value */
10352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10353 fra.me.file = LOCATE_syntax___typing;
10354 fra.me.line = 1635;
10355 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
10356 fra.me.has_broke = 0;
10357 fra.me.REG_size = 1;
10358 fra.me.REG[0] = NIT_NULL;
10359 fra.me.REG[0] = p0;
10360 /* ./syntax//typing.nit:1635 */
10361 if (!once_value_1) {
10362 if (!once_value_2) {
10363 fra.me.REG[0] = BOX_NativeString("<=");
10364 REGB0 = TAG_Int(2);
10365 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10366 once_value_2 = fra.me.REG[0];
10367 register_static_object(&once_value_2);
10368 } else fra.me.REG[0] = once_value_2;
10369 fra.me.REG[0] = fra.me.REG[0];
10370 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10371 once_value_1 = fra.me.REG[0];
10372 register_static_object(&once_value_1);
10373 } else fra.me.REG[0] = once_value_1;
10374 fra.me.REG[0] = fra.me.REG[0];
10375 goto label3;
10376 label3: while(0);
10377 stack_frame_head = fra.me.prev;
10378 return fra.me.REG[0];
10379 }
10380 val_t syntax___typing___ALlExpr___name(val_t p0){
10381 struct {struct stack_frame_t me;} fra;
10382 val_t REGB0;
10383 val_t tmp;
10384 static val_t once_value_1; /* Once value */
10385 static val_t once_value_2; /* Once value */
10386 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10387 fra.me.file = LOCATE_syntax___typing;
10388 fra.me.line = 1638;
10389 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
10390 fra.me.has_broke = 0;
10391 fra.me.REG_size = 1;
10392 fra.me.REG[0] = NIT_NULL;
10393 fra.me.REG[0] = p0;
10394 /* ./syntax//typing.nit:1638 */
10395 if (!once_value_1) {
10396 if (!once_value_2) {
10397 fra.me.REG[0] = BOX_NativeString("<<");
10398 REGB0 = TAG_Int(2);
10399 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10400 once_value_2 = fra.me.REG[0];
10401 register_static_object(&once_value_2);
10402 } else fra.me.REG[0] = once_value_2;
10403 fra.me.REG[0] = fra.me.REG[0];
10404 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10405 once_value_1 = fra.me.REG[0];
10406 register_static_object(&once_value_1);
10407 } else fra.me.REG[0] = once_value_1;
10408 fra.me.REG[0] = fra.me.REG[0];
10409 goto label3;
10410 label3: while(0);
10411 stack_frame_head = fra.me.prev;
10412 return fra.me.REG[0];
10413 }
10414 val_t syntax___typing___AGtExpr___name(val_t p0){
10415 struct {struct stack_frame_t me;} fra;
10416 val_t REGB0;
10417 val_t tmp;
10418 static val_t once_value_1; /* Once value */
10419 static val_t once_value_2; /* Once value */
10420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10421 fra.me.file = LOCATE_syntax___typing;
10422 fra.me.line = 1641;
10423 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
10424 fra.me.has_broke = 0;
10425 fra.me.REG_size = 1;
10426 fra.me.REG[0] = NIT_NULL;
10427 fra.me.REG[0] = p0;
10428 /* ./syntax//typing.nit:1641 */
10429 if (!once_value_1) {
10430 if (!once_value_2) {
10431 fra.me.REG[0] = BOX_NativeString(">");
10432 REGB0 = TAG_Int(1);
10433 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10434 once_value_2 = fra.me.REG[0];
10435 register_static_object(&once_value_2);
10436 } else fra.me.REG[0] = once_value_2;
10437 fra.me.REG[0] = fra.me.REG[0];
10438 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10439 once_value_1 = fra.me.REG[0];
10440 register_static_object(&once_value_1);
10441 } else fra.me.REG[0] = once_value_1;
10442 fra.me.REG[0] = fra.me.REG[0];
10443 goto label3;
10444 label3: while(0);
10445 stack_frame_head = fra.me.prev;
10446 return fra.me.REG[0];
10447 }
10448 val_t syntax___typing___AGeExpr___name(val_t p0){
10449 struct {struct stack_frame_t me;} fra;
10450 val_t REGB0;
10451 val_t tmp;
10452 static val_t once_value_1; /* Once value */
10453 static val_t once_value_2; /* Once value */
10454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10455 fra.me.file = LOCATE_syntax___typing;
10456 fra.me.line = 1644;
10457 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
10458 fra.me.has_broke = 0;
10459 fra.me.REG_size = 1;
10460 fra.me.REG[0] = NIT_NULL;
10461 fra.me.REG[0] = p0;
10462 /* ./syntax//typing.nit:1644 */
10463 if (!once_value_1) {
10464 if (!once_value_2) {
10465 fra.me.REG[0] = BOX_NativeString(">=");
10466 REGB0 = TAG_Int(2);
10467 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10468 once_value_2 = fra.me.REG[0];
10469 register_static_object(&once_value_2);
10470 } else fra.me.REG[0] = once_value_2;
10471 fra.me.REG[0] = fra.me.REG[0];
10472 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10473 once_value_1 = fra.me.REG[0];
10474 register_static_object(&once_value_1);
10475 } else fra.me.REG[0] = once_value_1;
10476 fra.me.REG[0] = fra.me.REG[0];
10477 goto label3;
10478 label3: while(0);
10479 stack_frame_head = fra.me.prev;
10480 return fra.me.REG[0];
10481 }
10482 val_t syntax___typing___AGgExpr___name(val_t p0){
10483 struct {struct stack_frame_t me;} fra;
10484 val_t REGB0;
10485 val_t tmp;
10486 static val_t once_value_1; /* Once value */
10487 static val_t once_value_2; /* Once value */
10488 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10489 fra.me.file = LOCATE_syntax___typing;
10490 fra.me.line = 1647;
10491 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
10492 fra.me.has_broke = 0;
10493 fra.me.REG_size = 1;
10494 fra.me.REG[0] = NIT_NULL;
10495 fra.me.REG[0] = p0;
10496 /* ./syntax//typing.nit:1647 */
10497 if (!once_value_1) {
10498 if (!once_value_2) {
10499 fra.me.REG[0] = BOX_NativeString(">>");
10500 REGB0 = TAG_Int(2);
10501 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10502 once_value_2 = fra.me.REG[0];
10503 register_static_object(&once_value_2);
10504 } else fra.me.REG[0] = once_value_2;
10505 fra.me.REG[0] = fra.me.REG[0];
10506 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10507 once_value_1 = fra.me.REG[0];
10508 register_static_object(&once_value_1);
10509 } else fra.me.REG[0] = once_value_1;
10510 fra.me.REG[0] = fra.me.REG[0];
10511 goto label3;
10512 label3: while(0);
10513 stack_frame_head = fra.me.prev;
10514 return fra.me.REG[0];
10515 }
10516 val_t syntax___typing___APlusExpr___name(val_t p0){
10517 struct {struct stack_frame_t me;} fra;
10518 val_t REGB0;
10519 val_t tmp;
10520 static val_t once_value_1; /* Once value */
10521 static val_t once_value_2; /* Once value */
10522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10523 fra.me.file = LOCATE_syntax___typing;
10524 fra.me.line = 1650;
10525 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
10526 fra.me.has_broke = 0;
10527 fra.me.REG_size = 1;
10528 fra.me.REG[0] = NIT_NULL;
10529 fra.me.REG[0] = p0;
10530 /* ./syntax//typing.nit:1650 */
10531 if (!once_value_1) {
10532 if (!once_value_2) {
10533 fra.me.REG[0] = BOX_NativeString("+");
10534 REGB0 = TAG_Int(1);
10535 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10536 once_value_2 = fra.me.REG[0];
10537 register_static_object(&once_value_2);
10538 } else fra.me.REG[0] = once_value_2;
10539 fra.me.REG[0] = fra.me.REG[0];
10540 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10541 once_value_1 = fra.me.REG[0];
10542 register_static_object(&once_value_1);
10543 } else fra.me.REG[0] = once_value_1;
10544 fra.me.REG[0] = fra.me.REG[0];
10545 goto label3;
10546 label3: while(0);
10547 stack_frame_head = fra.me.prev;
10548 return fra.me.REG[0];
10549 }
10550 val_t syntax___typing___AMinusExpr___name(val_t p0){
10551 struct {struct stack_frame_t me;} fra;
10552 val_t REGB0;
10553 val_t tmp;
10554 static val_t once_value_1; /* Once value */
10555 static val_t once_value_2; /* Once value */
10556 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10557 fra.me.file = LOCATE_syntax___typing;
10558 fra.me.line = 1653;
10559 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
10560 fra.me.has_broke = 0;
10561 fra.me.REG_size = 1;
10562 fra.me.REG[0] = NIT_NULL;
10563 fra.me.REG[0] = p0;
10564 /* ./syntax//typing.nit:1653 */
10565 if (!once_value_1) {
10566 if (!once_value_2) {
10567 fra.me.REG[0] = BOX_NativeString("-");
10568 REGB0 = TAG_Int(1);
10569 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10570 once_value_2 = fra.me.REG[0];
10571 register_static_object(&once_value_2);
10572 } else fra.me.REG[0] = once_value_2;
10573 fra.me.REG[0] = fra.me.REG[0];
10574 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10575 once_value_1 = fra.me.REG[0];
10576 register_static_object(&once_value_1);
10577 } else fra.me.REG[0] = once_value_1;
10578 fra.me.REG[0] = fra.me.REG[0];
10579 goto label3;
10580 label3: while(0);
10581 stack_frame_head = fra.me.prev;
10582 return fra.me.REG[0];
10583 }
10584 val_t syntax___typing___AStarshipExpr___name(val_t p0){
10585 struct {struct stack_frame_t me;} fra;
10586 val_t REGB0;
10587 val_t tmp;
10588 static val_t once_value_1; /* Once value */
10589 static val_t once_value_2; /* Once value */
10590 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10591 fra.me.file = LOCATE_syntax___typing;
10592 fra.me.line = 1656;
10593 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
10594 fra.me.has_broke = 0;
10595 fra.me.REG_size = 1;
10596 fra.me.REG[0] = NIT_NULL;
10597 fra.me.REG[0] = p0;
10598 /* ./syntax//typing.nit:1656 */
10599 if (!once_value_1) {
10600 if (!once_value_2) {
10601 fra.me.REG[0] = BOX_NativeString("<=>");
10602 REGB0 = TAG_Int(3);
10603 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10604 once_value_2 = fra.me.REG[0];
10605 register_static_object(&once_value_2);
10606 } else fra.me.REG[0] = once_value_2;
10607 fra.me.REG[0] = fra.me.REG[0];
10608 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10609 once_value_1 = fra.me.REG[0];
10610 register_static_object(&once_value_1);
10611 } else fra.me.REG[0] = once_value_1;
10612 fra.me.REG[0] = fra.me.REG[0];
10613 goto label3;
10614 label3: while(0);
10615 stack_frame_head = fra.me.prev;
10616 return fra.me.REG[0];
10617 }
10618 val_t syntax___typing___AStarExpr___name(val_t p0){
10619 struct {struct stack_frame_t me;} fra;
10620 val_t REGB0;
10621 val_t tmp;
10622 static val_t once_value_1; /* Once value */
10623 static val_t once_value_2; /* Once value */
10624 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10625 fra.me.file = LOCATE_syntax___typing;
10626 fra.me.line = 1659;
10627 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
10628 fra.me.has_broke = 0;
10629 fra.me.REG_size = 1;
10630 fra.me.REG[0] = NIT_NULL;
10631 fra.me.REG[0] = p0;
10632 /* ./syntax//typing.nit:1659 */
10633 if (!once_value_1) {
10634 if (!once_value_2) {
10635 fra.me.REG[0] = BOX_NativeString("*");
10636 REGB0 = TAG_Int(1);
10637 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10638 once_value_2 = fra.me.REG[0];
10639 register_static_object(&once_value_2);
10640 } else fra.me.REG[0] = once_value_2;
10641 fra.me.REG[0] = fra.me.REG[0];
10642 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10643 once_value_1 = fra.me.REG[0];
10644 register_static_object(&once_value_1);
10645 } else fra.me.REG[0] = once_value_1;
10646 fra.me.REG[0] = fra.me.REG[0];
10647 goto label3;
10648 label3: while(0);
10649 stack_frame_head = fra.me.prev;
10650 return fra.me.REG[0];
10651 }
10652 val_t syntax___typing___ASlashExpr___name(val_t p0){
10653 struct {struct stack_frame_t me;} fra;
10654 val_t REGB0;
10655 val_t tmp;
10656 static val_t once_value_1; /* Once value */
10657 static val_t once_value_2; /* Once value */
10658 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10659 fra.me.file = LOCATE_syntax___typing;
10660 fra.me.line = 1662;
10661 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
10662 fra.me.has_broke = 0;
10663 fra.me.REG_size = 1;
10664 fra.me.REG[0] = NIT_NULL;
10665 fra.me.REG[0] = p0;
10666 /* ./syntax//typing.nit:1662 */
10667 if (!once_value_1) {
10668 if (!once_value_2) {
10669 fra.me.REG[0] = BOX_NativeString("/");
10670 REGB0 = TAG_Int(1);
10671 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10672 once_value_2 = fra.me.REG[0];
10673 register_static_object(&once_value_2);
10674 } else fra.me.REG[0] = once_value_2;
10675 fra.me.REG[0] = fra.me.REG[0];
10676 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10677 once_value_1 = fra.me.REG[0];
10678 register_static_object(&once_value_1);
10679 } else fra.me.REG[0] = once_value_1;
10680 fra.me.REG[0] = fra.me.REG[0];
10681 goto label3;
10682 label3: while(0);
10683 stack_frame_head = fra.me.prev;
10684 return fra.me.REG[0];
10685 }
10686 val_t syntax___typing___APercentExpr___name(val_t p0){
10687 struct {struct stack_frame_t me;} fra;
10688 val_t REGB0;
10689 val_t tmp;
10690 static val_t once_value_1; /* Once value */
10691 static val_t once_value_2; /* Once value */
10692 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10693 fra.me.file = LOCATE_syntax___typing;
10694 fra.me.line = 1665;
10695 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
10696 fra.me.has_broke = 0;
10697 fra.me.REG_size = 1;
10698 fra.me.REG[0] = NIT_NULL;
10699 fra.me.REG[0] = p0;
10700 /* ./syntax//typing.nit:1665 */
10701 if (!once_value_1) {
10702 if (!once_value_2) {
10703 fra.me.REG[0] = BOX_NativeString("%");
10704 REGB0 = TAG_Int(1);
10705 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10706 once_value_2 = fra.me.REG[0];
10707 register_static_object(&once_value_2);
10708 } else fra.me.REG[0] = once_value_2;
10709 fra.me.REG[0] = fra.me.REG[0];
10710 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10711 once_value_1 = fra.me.REG[0];
10712 register_static_object(&once_value_1);
10713 } else fra.me.REG[0] = once_value_1;
10714 fra.me.REG[0] = fra.me.REG[0];
10715 goto label3;
10716 label3: while(0);
10717 stack_frame_head = fra.me.prev;
10718 return fra.me.REG[0];
10719 }
10720 val_t syntax___typing___AUminusExpr___name(val_t p0){
10721 struct {struct stack_frame_t me;} fra;
10722 val_t REGB0;
10723 val_t tmp;
10724 static val_t once_value_1; /* Once value */
10725 static val_t once_value_2; /* Once value */
10726 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10727 fra.me.file = LOCATE_syntax___typing;
10728 fra.me.line = 1669;
10729 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
10730 fra.me.has_broke = 0;
10731 fra.me.REG_size = 1;
10732 fra.me.REG[0] = NIT_NULL;
10733 fra.me.REG[0] = p0;
10734 /* ./syntax//typing.nit:1669 */
10735 if (!once_value_1) {
10736 if (!once_value_2) {
10737 fra.me.REG[0] = BOX_NativeString("unary -");
10738 REGB0 = TAG_Int(7);
10739 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10740 once_value_2 = fra.me.REG[0];
10741 register_static_object(&once_value_2);
10742 } else fra.me.REG[0] = once_value_2;
10743 fra.me.REG[0] = fra.me.REG[0];
10744 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10745 once_value_1 = fra.me.REG[0];
10746 register_static_object(&once_value_1);
10747 } else fra.me.REG[0] = once_value_1;
10748 fra.me.REG[0] = fra.me.REG[0];
10749 goto label3;
10750 label3: while(0);
10751 stack_frame_head = fra.me.prev;
10752 return fra.me.REG[0];
10753 }
10754 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
10755 struct {struct stack_frame_t me;} fra;
10756 val_t tmp;
10757 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10758 fra.me.file = LOCATE_syntax___typing;
10759 fra.me.line = 1670;
10760 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
10761 fra.me.has_broke = 0;
10762 fra.me.REG_size = 1;
10763 fra.me.REG[0] = NIT_NULL;
10764 fra.me.REG[0] = p0;
10765 /* ./syntax//typing.nit:1670 */
10766 fra.me.REG[0] = NIT_NULL;
10767 goto label1;
10768 label1: while(0);
10769 stack_frame_head = fra.me.prev;
10770 return fra.me.REG[0];
10771 }
10772 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
10773 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
10774 val_t REGB0;
10775 val_t REGB1;
10776 val_t tmp;
10777 static val_t once_value_1; /* Once value */
10778 static val_t once_value_2; /* Once value */
10779 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10780 fra.me.file = LOCATE_syntax___typing;
10781 fra.me.line = 1674;
10782 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
10783 fra.me.has_broke = 0;
10784 fra.me.REG_size = 9;
10785 fra.me.REG[0] = NIT_NULL;
10786 fra.me.REG[1] = NIT_NULL;
10787 fra.me.REG[2] = NIT_NULL;
10788 fra.me.REG[3] = NIT_NULL;
10789 fra.me.REG[4] = NIT_NULL;
10790 fra.me.REG[5] = NIT_NULL;
10791 fra.me.REG[6] = NIT_NULL;
10792 fra.me.REG[7] = NIT_NULL;
10793 fra.me.REG[8] = NIT_NULL;
10794 fra.me.REG[0] = p0;
10795 fra.me.REG[1] = p1;
10796 /* ./syntax//typing.nit:1674 */
10797 fra.me.REG[2] = fra.me.REG[0];
10798 fra.me.REG[3] = fra.me.REG[1];
10799 /* ./syntax//typing.nit:1676 */
10800 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10801 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10802 if (UNTAG_Bool(REGB0)) {
10803 /* ./syntax//typing.nit:1677 */
10804 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10805 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10806 /* ./syntax//typing.nit:1678 */
10807 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
10808 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10809 /* ./syntax//typing.nit:1679 */
10810 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10811 if (UNTAG_Bool(REGB0)) {
10812 } else {
10813 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10814 if (UNTAG_Bool(REGB1)) {
10815 REGB1 = TAG_Bool(false);
10816 REGB0 = REGB1;
10817 } else {
10818 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10819 REGB0 = REGB1;
10820 }
10821 }
10822 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10823 if (UNTAG_Bool(REGB0)) {
10824 /* ./syntax//typing.nit:1681 */
10825 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*/;
10826 if (UNTAG_Bool(REGB0)) {
10827 /* ./syntax//typing.nit:1682 */
10828 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
10829 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10830 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10831 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
10832 /* ./syntax//typing.nit:1683 */
10833 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10834 } else {
10835 /* ./syntax//typing.nit:1685 */
10836 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
10837 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
10838 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10839 if (UNTAG_Bool(REGB0)) {
10840 /* ./syntax//typing.nit:1686 */
10841 REGB0 = TAG_Int(3);
10842 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10843 if (!once_value_1) {
10844 fra.me.REG[6] = BOX_NativeString("Error: ");
10845 REGB0 = TAG_Int(7);
10846 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
10847 once_value_1 = fra.me.REG[6];
10848 register_static_object(&once_value_1);
10849 } else fra.me.REG[6] = once_value_1;
10850 fra.me.REG[6] = fra.me.REG[6];
10851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
10852 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10854 if (!once_value_2) {
10855 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
10856 REGB0 = TAG_Int(29);
10857 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10858 once_value_2 = fra.me.REG[4];
10859 register_static_object(&once_value_2);
10860 } else fra.me.REG[4] = once_value_2;
10861 fra.me.REG[4] = fra.me.REG[4];
10862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
10863 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10864 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
10865 /* ./syntax//typing.nit:1687 */
10866 goto label3;
10867 }
10868 /* ./syntax//typing.nit:1689 */
10869 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
10870 fra.me.REG[8] = fra.me.REG[7];
10871 /* ./syntax//typing.nit:1690 */
10872 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
10873 }
10874 /* ./syntax//typing.nit:1692 */
10875 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
10876 /* ./syntax//typing.nit:1693 */
10877 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
10878 /* ./syntax//typing.nit:1694 */
10879 goto label3;
10880 }
10881 }
10882 /* ./syntax//typing.nit:1698 */
10883 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10884 label3: while(0);
10885 stack_frame_head = fra.me.prev;
10886 return;
10887 }
10888 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
10889 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10890 val_t REGB0;
10891 val_t tmp;
10892 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10893 fra.me.file = LOCATE_syntax___typing;
10894 fra.me.line = 1701;
10895 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
10896 fra.me.has_broke = 0;
10897 fra.me.REG_size = 2;
10898 fra.me.REG[0] = NIT_NULL;
10899 fra.me.REG[1] = NIT_NULL;
10900 fra.me.REG[0] = p0;
10901 /* ./syntax//typing.nit:1703 */
10902 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10903 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
10904 if (UNTAG_Bool(REGB0)) {
10905 /* ./syntax//typing.nit:1704 */
10906 fra.me.REG[1] = NIT_NULL;
10907 goto label1;
10908 } else {
10909 /* ./syntax//typing.nit:1706 */
10910 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
10911 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10912 fra.me.REG[1] = fra.me.REG[0];
10913 goto label1;
10914 }
10915 label1: while(0);
10916 stack_frame_head = fra.me.prev;
10917 return fra.me.REG[1];
10918 }
10919 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
10920 struct {struct stack_frame_t me;} fra;
10921 val_t tmp;
10922 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10923 fra.me.file = LOCATE_syntax___typing;
10924 fra.me.line = 1710;
10925 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
10926 fra.me.has_broke = 0;
10927 fra.me.REG_size = 0;
10928 /* ./syntax//typing.nit:1710 */
10929 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1710);
10930 stack_frame_head = fra.me.prev;
10931 return NIT_NULL;
10932 }
10933 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
10934 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10935 val_t tmp;
10936 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10937 fra.me.file = LOCATE_syntax___typing;
10938 fra.me.line = 1715;
10939 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
10940 fra.me.has_broke = 0;
10941 fra.me.REG_size = 2;
10942 fra.me.REG[0] = NIT_NULL;
10943 fra.me.REG[1] = NIT_NULL;
10944 fra.me.REG[0] = p0;
10945 fra.me.REG[1] = p1;
10946 /* ./syntax//typing.nit:1717 */
10947 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10948 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
10949 goto label1;
10950 label1: while(0);
10951 stack_frame_head = fra.me.prev;
10952 return fra.me.REG[0];
10953 }
10954 val_t syntax___typing___ACallExpr___name(val_t p0){
10955 struct {struct stack_frame_t me;} fra;
10956 val_t tmp;
10957 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10958 fra.me.file = LOCATE_syntax___typing;
10959 fra.me.line = 1720;
10960 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
10961 fra.me.has_broke = 0;
10962 fra.me.REG_size = 1;
10963 fra.me.REG[0] = NIT_NULL;
10964 fra.me.REG[0] = p0;
10965 /* ./syntax//typing.nit:1720 */
10966 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10967 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10968 goto label1;
10969 label1: while(0);
10970 stack_frame_head = fra.me.prev;
10971 return fra.me.REG[0];
10972 }
10973 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
10974 struct {struct stack_frame_t me;} fra;
10975 val_t tmp;
10976 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10977 fra.me.file = LOCATE_syntax___typing;
10978 fra.me.line = 1721;
10979 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
10980 fra.me.has_broke = 0;
10981 fra.me.REG_size = 1;
10982 fra.me.REG[0] = NIT_NULL;
10983 fra.me.REG[0] = p0;
10984 /* ./syntax//typing.nit:1721 */
10985 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10986 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
10987 goto label1;
10988 label1: while(0);
10989 stack_frame_head = fra.me.prev;
10990 return fra.me.REG[0];
10991 }
10992 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
10993 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
10994 val_t tmp;
10995 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10996 fra.me.file = LOCATE_syntax___typing;
10997 fra.me.line = 1725;
10998 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
10999 fra.me.has_broke = 0;
11000 fra.me.REG_size = 3;
11001 fra.me.REG[0] = NIT_NULL;
11002 fra.me.REG[1] = NIT_NULL;
11003 fra.me.REG[2] = NIT_NULL;
11004 fra.me.REG[0] = p0;
11005 fra.me.REG[1] = p1;
11006 /* ./syntax//typing.nit:1727 */
11007 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11008 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
11009 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11010 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11011 goto label1;
11012 label1: while(0);
11013 stack_frame_head = fra.me.prev;
11014 return fra.me.REG[0];
11015 }
11016 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
11017 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11018 val_t REGB0;
11019 val_t tmp;
11020 static val_t once_value_1; /* Once value */
11021 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11022 fra.me.file = LOCATE_syntax___typing;
11023 fra.me.line = 1730;
11024 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
11025 fra.me.has_broke = 0;
11026 fra.me.REG_size = 2;
11027 fra.me.REG[0] = NIT_NULL;
11028 fra.me.REG[1] = NIT_NULL;
11029 fra.me.REG[0] = p0;
11030 /* ./syntax//typing.nit:1730 */
11031 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11032 fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
11033 if (!once_value_1) {
11034 fra.me.REG[1] = BOX_NativeString("=");
11035 REGB0 = TAG_Int(1);
11036 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11037 once_value_1 = fra.me.REG[1];
11038 register_static_object(&once_value_1);
11039 } else fra.me.REG[1] = once_value_1;
11040 fra.me.REG[1] = fra.me.REG[1];
11041 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11042 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
11043 goto label2;
11044 label2: while(0);
11045 stack_frame_head = fra.me.prev;
11046 return fra.me.REG[1];
11047 }
11048 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
11049 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11050 val_t tmp;
11051 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11052 fra.me.file = LOCATE_syntax___typing;
11053 fra.me.line = 1731;
11054 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
11055 fra.me.has_broke = 0;
11056 fra.me.REG_size = 2;
11057 fra.me.REG[0] = NIT_NULL;
11058 fra.me.REG[1] = NIT_NULL;
11059 fra.me.REG[0] = p0;
11060 /* ./syntax//typing.nit:1732 */
11061 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11062 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11063 /* ./syntax//typing.nit:1733 */
11064 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11065 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11066 /* ./syntax//typing.nit:1734 */
11067 goto label1;
11068 label1: while(0);
11069 stack_frame_head = fra.me.prev;
11070 return fra.me.REG[1];
11071 }
11072 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
11073 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11074 val_t tmp;
11075 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11076 fra.me.file = LOCATE_syntax___typing;
11077 fra.me.line = 1739;
11078 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
11079 fra.me.has_broke = 0;
11080 fra.me.REG_size = 3;
11081 fra.me.REG[0] = NIT_NULL;
11082 fra.me.REG[1] = NIT_NULL;
11083 fra.me.REG[2] = NIT_NULL;
11084 fra.me.REG[0] = p0;
11085 fra.me.REG[1] = p1;
11086 /* ./syntax//typing.nit:1741 */
11087 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11088 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
11089 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11090 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11091 goto label1;
11092 label1: while(0);
11093 stack_frame_head = fra.me.prev;
11094 return fra.me.REG[0];
11095 }
11096 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
11097 struct {struct stack_frame_t me;} fra;
11098 val_t tmp;
11099 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11100 fra.me.file = LOCATE_syntax___typing;
11101 fra.me.line = 1744;
11102 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
11103 fra.me.has_broke = 0;
11104 fra.me.REG_size = 1;
11105 fra.me.REG[0] = NIT_NULL;
11106 fra.me.REG[0] = p0;
11107 /* ./syntax//typing.nit:1744 */
11108 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11109 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11110 goto label1;
11111 label1: while(0);
11112 stack_frame_head = fra.me.prev;
11113 return fra.me.REG[0];
11114 }
11115 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
11116 struct {struct stack_frame_t me;} fra;
11117 val_t tmp;
11118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11119 fra.me.file = LOCATE_syntax___typing;
11120 fra.me.line = 1745;
11121 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
11122 fra.me.has_broke = 0;
11123 fra.me.REG_size = 1;
11124 fra.me.REG[0] = NIT_NULL;
11125 fra.me.REG[0] = p0;
11126 /* ./syntax//typing.nit:1745 */
11127 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11128 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11129 goto label1;
11130 label1: while(0);
11131 stack_frame_head = fra.me.prev;
11132 return fra.me.REG[0];
11133 }
11134 val_t syntax___typing___ABraExpr___name(val_t p0){
11135 struct {struct stack_frame_t me;} fra;
11136 val_t REGB0;
11137 val_t tmp;
11138 static val_t once_value_1; /* Once value */
11139 static val_t once_value_2; /* Once value */
11140 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11141 fra.me.file = LOCATE_syntax___typing;
11142 fra.me.line = 1749;
11143 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
11144 fra.me.has_broke = 0;
11145 fra.me.REG_size = 1;
11146 fra.me.REG[0] = NIT_NULL;
11147 fra.me.REG[0] = p0;
11148 /* ./syntax//typing.nit:1749 */
11149 if (!once_value_1) {
11150 if (!once_value_2) {
11151 fra.me.REG[0] = BOX_NativeString("[]");
11152 REGB0 = TAG_Int(2);
11153 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11154 once_value_2 = fra.me.REG[0];
11155 register_static_object(&once_value_2);
11156 } else fra.me.REG[0] = once_value_2;
11157 fra.me.REG[0] = fra.me.REG[0];
11158 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11159 once_value_1 = fra.me.REG[0];
11160 register_static_object(&once_value_1);
11161 } else fra.me.REG[0] = once_value_1;
11162 fra.me.REG[0] = fra.me.REG[0];
11163 goto label3;
11164 label3: while(0);
11165 stack_frame_head = fra.me.prev;
11166 return fra.me.REG[0];
11167 }
11168 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
11169 struct {struct stack_frame_t me;} fra;
11170 val_t tmp;
11171 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11172 fra.me.file = LOCATE_syntax___typing;
11173 fra.me.line = 1750;
11174 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
11175 fra.me.has_broke = 0;
11176 fra.me.REG_size = 1;
11177 fra.me.REG[0] = NIT_NULL;
11178 fra.me.REG[0] = p0;
11179 /* ./syntax//typing.nit:1750 */
11180 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11181 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11182 goto label1;
11183 label1: while(0);
11184 stack_frame_head = fra.me.prev;
11185 return fra.me.REG[0];
11186 }
11187 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
11188 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11189 val_t REGB0;
11190 val_t tmp;
11191 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11192 fra.me.file = LOCATE_syntax___typing;
11193 fra.me.line = 1751;
11194 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
11195 fra.me.has_broke = 0;
11196 fra.me.REG_size = 2;
11197 fra.me.REG[0] = NIT_NULL;
11198 fra.me.REG[1] = NIT_NULL;
11199 fra.me.REG[0] = p0;
11200 /* ./syntax//typing.nit:1753 */
11201 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11202 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11203 if (UNTAG_Bool(REGB0)) {
11204 /* ./syntax//typing.nit:1754 */
11205 fra.me.REG[1] = NIT_NULL;
11206 goto label1;
11207 } else {
11208 /* ./syntax//typing.nit:1756 */
11209 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11210 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11211 fra.me.REG[1] = fra.me.REG[0];
11212 goto label1;
11213 }
11214 label1: while(0);
11215 stack_frame_head = fra.me.prev;
11216 return fra.me.REG[1];
11217 }
11218 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
11219 struct {struct stack_frame_t me;} fra;
11220 val_t REGB0;
11221 val_t tmp;
11222 static val_t once_value_1; /* Once value */
11223 static val_t once_value_2; /* Once value */
11224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11225 fra.me.file = LOCATE_syntax___typing;
11226 fra.me.line = 1762;
11227 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
11228 fra.me.has_broke = 0;
11229 fra.me.REG_size = 1;
11230 fra.me.REG[0] = NIT_NULL;
11231 fra.me.REG[0] = p0;
11232 /* ./syntax//typing.nit:1762 */
11233 if (!once_value_1) {
11234 if (!once_value_2) {
11235 fra.me.REG[0] = BOX_NativeString("[]=");
11236 REGB0 = TAG_Int(3);
11237 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11238 once_value_2 = fra.me.REG[0];
11239 register_static_object(&once_value_2);
11240 } else fra.me.REG[0] = once_value_2;
11241 fra.me.REG[0] = fra.me.REG[0];
11242 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11243 once_value_1 = fra.me.REG[0];
11244 register_static_object(&once_value_1);
11245 } else fra.me.REG[0] = once_value_1;
11246 fra.me.REG[0] = fra.me.REG[0];
11247 goto label3;
11248 label3: while(0);
11249 stack_frame_head = fra.me.prev;
11250 return fra.me.REG[0];
11251 }
11252 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
11253 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11254 val_t tmp;
11255 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11256 fra.me.file = LOCATE_syntax___typing;
11257 fra.me.line = 1763;
11258 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
11259 fra.me.has_broke = 0;
11260 fra.me.REG_size = 2;
11261 fra.me.REG[0] = NIT_NULL;
11262 fra.me.REG[1] = NIT_NULL;
11263 fra.me.REG[0] = p0;
11264 /* ./syntax//typing.nit:1764 */
11265 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11266 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11267 /* ./syntax//typing.nit:1765 */
11268 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11269 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11270 /* ./syntax//typing.nit:1766 */
11271 goto label1;
11272 label1: while(0);
11273 stack_frame_head = fra.me.prev;
11274 return fra.me.REG[1];
11275 }
11276 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
11277 struct {struct stack_frame_t me;} fra;
11278 val_t REGB0;
11279 val_t tmp;
11280 static val_t once_value_1; /* Once value */
11281 static val_t once_value_2; /* Once value */
11282 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11283 fra.me.file = LOCATE_syntax___typing;
11284 fra.me.line = 1771;
11285 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
11286 fra.me.has_broke = 0;
11287 fra.me.REG_size = 1;
11288 fra.me.REG[0] = NIT_NULL;
11289 fra.me.REG[0] = p0;
11290 /* ./syntax//typing.nit:1771 */
11291 if (!once_value_1) {
11292 if (!once_value_2) {
11293 fra.me.REG[0] = BOX_NativeString("[]");
11294 REGB0 = TAG_Int(2);
11295 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11296 once_value_2 = fra.me.REG[0];
11297 register_static_object(&once_value_2);
11298 } else fra.me.REG[0] = once_value_2;
11299 fra.me.REG[0] = fra.me.REG[0];
11300 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11301 once_value_1 = fra.me.REG[0];
11302 register_static_object(&once_value_1);
11303 } else fra.me.REG[0] = once_value_1;
11304 fra.me.REG[0] = fra.me.REG[0];
11305 goto label3;
11306 label3: while(0);
11307 stack_frame_head = fra.me.prev;
11308 return fra.me.REG[0];
11309 }
11310 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
11311 struct {struct stack_frame_t me;} fra;
11312 val_t tmp;
11313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11314 fra.me.file = LOCATE_syntax___typing;
11315 fra.me.line = 1772;
11316 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
11317 fra.me.has_broke = 0;
11318 fra.me.REG_size = 1;
11319 fra.me.REG[0] = NIT_NULL;
11320 fra.me.REG[0] = p0;
11321 /* ./syntax//typing.nit:1772 */
11322 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11323 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11324 goto label1;
11325 label1: while(0);
11326 stack_frame_head = fra.me.prev;
11327 return fra.me.REG[0];
11328 }
11329 val_t syntax___typing___AInitExpr___name(val_t p0){
11330 struct {struct stack_frame_t me;} fra;
11331 val_t REGB0;
11332 val_t tmp;
11333 static val_t once_value_1; /* Once value */
11334 static val_t once_value_2; /* Once value */
11335 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11336 fra.me.file = LOCATE_syntax___typing;
11337 fra.me.line = 1776;
11338 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
11339 fra.me.has_broke = 0;
11340 fra.me.REG_size = 1;
11341 fra.me.REG[0] = NIT_NULL;
11342 fra.me.REG[0] = p0;
11343 /* ./syntax//typing.nit:1776 */
11344 if (!once_value_1) {
11345 if (!once_value_2) {
11346 fra.me.REG[0] = BOX_NativeString("init");
11347 REGB0 = TAG_Int(4);
11348 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11349 once_value_2 = fra.me.REG[0];
11350 register_static_object(&once_value_2);
11351 } else fra.me.REG[0] = once_value_2;
11352 fra.me.REG[0] = fra.me.REG[0];
11353 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11354 once_value_1 = fra.me.REG[0];
11355 register_static_object(&once_value_1);
11356 } else fra.me.REG[0] = once_value_1;
11357 fra.me.REG[0] = fra.me.REG[0];
11358 goto label3;
11359 label3: while(0);
11360 stack_frame_head = fra.me.prev;
11361 return fra.me.REG[0];
11362 }
11363 val_t syntax___typing___AInitExpr___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 = 1777;
11369 fra.me.meth = LOCATE_syntax___typing___AInitExpr___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:1777 */
11375 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___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___AClosureCallExpr___variable(val_t p0){
11383 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11384 val_t REGB0;
11385 val_t tmp;
11386 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11387 fra.me.file = LOCATE_syntax___typing;
11388 fra.me.line = 1782;
11389 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
11390 fra.me.has_broke = 0;
11391 fra.me.REG_size = 2;
11392 fra.me.REG[0] = NIT_NULL;
11393 fra.me.REG[1] = NIT_NULL;
11394 fra.me.REG[0] = p0;
11395 /* ./syntax//typing.nit:1782 */
11396 fra.me.REG[1] = fra.me.REG[0];
11397 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
11398 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
11399 if (UNTAG_Bool(REGB0)) {
11400 } else {
11401 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1782);
11402 }
11403 goto label1;
11404 label1: while(0);
11405 stack_frame_head = fra.me.prev;
11406 return fra.me.REG[1];
11407 }
11408 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
11409 struct {struct stack_frame_t me;} fra;
11410 val_t tmp;
11411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11412 fra.me.file = LOCATE_syntax___typing;
11413 fra.me.line = 1783;
11414 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
11415 fra.me.has_broke = 0;
11416 fra.me.REG_size = 1;
11417 fra.me.REG[0] = NIT_NULL;
11418 fra.me.REG[0] = p0;
11419 /* ./syntax//typing.nit:1783 */
11420 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11421 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11422 goto label1;
11423 label1: while(0);
11424 stack_frame_head = fra.me.prev;
11425 return fra.me.REG[0];
11426 }
11427 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
11428 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11429 val_t REGB0;
11430 val_t REGB1;
11431 val_t tmp;
11432 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11433 fra.me.file = LOCATE_syntax___typing;
11434 fra.me.line = 1785;
11435 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
11436 fra.me.has_broke = 0;
11437 fra.me.REG_size = 5;
11438 fra.me.REG[0] = NIT_NULL;
11439 fra.me.REG[1] = NIT_NULL;
11440 fra.me.REG[2] = NIT_NULL;
11441 fra.me.REG[3] = NIT_NULL;
11442 fra.me.REG[4] = NIT_NULL;
11443 fra.me.REG[0] = p0;
11444 fra.me.REG[1] = p1;
11445 /* ./syntax//typing.nit:1787 */
11446 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
11447 /* ./syntax//typing.nit:1788 */
11448 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11449 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11450 if (UNTAG_Bool(REGB0)) {
11451 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11452 }
11453 /* ./syntax//typing.nit:1789 */
11454 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
11455 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
11456 /* ./syntax//typing.nit:1790 */
11457 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11458 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
11459 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
11460 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]);
11461 /* ./syntax//typing.nit:1791 */
11462 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11463 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
11464 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11465 if (UNTAG_Bool(REGB1)) {
11466 /* ./syntax//typing.nit:1792 */
11467 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11468 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11469 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11470 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
11471 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]);
11472 }
11473 /* ./syntax//typing.nit:1794 */
11474 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11475 if (UNTAG_Bool(REGB0)) {
11476 goto label1;
11477 }
11478 /* ./syntax//typing.nit:1795 */
11479 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
11480 /* ./syntax//typing.nit:1796 */
11481 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
11482 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
11483 /* ./syntax//typing.nit:1797 */
11484 REGB0 = TAG_Bool(true);
11485 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
11486 label1: while(0);
11487 stack_frame_head = fra.me.prev;
11488 return;
11489 }
11490 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
11491 struct {struct stack_frame_t me;} fra;
11492 val_t tmp;
11493 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11494 fra.me.file = LOCATE_syntax___typing;
11495 fra.me.line = 1802;
11496 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
11497 fra.me.has_broke = 0;
11498 fra.me.REG_size = 0;
11499 /* ./syntax//typing.nit:1802 */
11500 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1802);
11501 stack_frame_head = fra.me.prev;
11502 return NIT_NULL;
11503 }
11504 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
11505 struct {struct stack_frame_t me;} fra;
11506 val_t tmp;
11507 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11508 fra.me.file = LOCATE_syntax___typing;
11509 fra.me.line = 1805;
11510 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
11511 fra.me.has_broke = 0;
11512 fra.me.REG_size = 1;
11513 fra.me.REG[0] = NIT_NULL;
11514 fra.me.REG[0] = p0;
11515 /* ./syntax//typing.nit:1805 */
11516 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
11517 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11518 goto label1;
11519 label1: while(0);
11520 stack_frame_head = fra.me.prev;
11521 return fra.me.REG[0];
11522 }
11523 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
11524 struct {struct stack_frame_t me;} fra;
11525 val_t tmp;
11526 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11527 fra.me.file = LOCATE_syntax___typing;
11528 fra.me.line = 1808;
11529 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
11530 fra.me.has_broke = 0;
11531 fra.me.REG_size = 1;
11532 fra.me.REG[0] = NIT_NULL;
11533 fra.me.REG[0] = p0;
11534 /* ./syntax//typing.nit:1808 */
11535 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
11536 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11537 goto label1;
11538 label1: while(0);
11539 stack_frame_head = fra.me.prev;
11540 return fra.me.REG[0];
11541 }
11542 val_t syntax___typing___AClosureDef___closure(val_t p0){
11543 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11544 val_t REGB0;
11545 val_t tmp;
11546 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11547 fra.me.file = LOCATE_syntax___typing;
11548 fra.me.line = 1813;
11549 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
11550 fra.me.has_broke = 0;
11551 fra.me.REG_size = 2;
11552 fra.me.REG[0] = NIT_NULL;
11553 fra.me.REG[1] = NIT_NULL;
11554 fra.me.REG[0] = p0;
11555 /* ./syntax//typing.nit:1813 */
11556 fra.me.REG[1] = fra.me.REG[0];
11557 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
11558 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
11559 if (UNTAG_Bool(REGB0)) {
11560 } else {
11561 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1813);
11562 }
11563 goto label1;
11564 label1: while(0);
11565 stack_frame_head = fra.me.prev;
11566 return fra.me.REG[1];
11567 }
11568 val_t syntax___typing___AClosureDef___escapable(val_t p0){
11569 struct {struct stack_frame_t me;} fra;
11570 val_t tmp;
11571 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11572 fra.me.file = LOCATE_syntax___typing;
11573 fra.me.line = 1815;
11574 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
11575 fra.me.has_broke = 0;
11576 fra.me.REG_size = 1;
11577 fra.me.REG[0] = NIT_NULL;
11578 fra.me.REG[0] = p0;
11579 /* ./syntax//typing.nit:1815 */
11580 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
11581 stack_frame_head = fra.me.prev;
11582 return fra.me.REG[0];
11583 }
11584 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
11585 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11586 val_t REGB0;
11587 val_t tmp;
11588 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11589 fra.me.file = LOCATE_syntax___typing;
11590 fra.me.line = 1819;
11591 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
11592 fra.me.has_broke = 0;
11593 fra.me.REG_size = 3;
11594 fra.me.REG[0] = NIT_NULL;
11595 fra.me.REG[1] = NIT_NULL;
11596 fra.me.REG[2] = NIT_NULL;
11597 fra.me.REG[0] = p0;
11598 fra.me.REG[1] = p1;
11599 /* ./syntax//typing.nit:1819 */
11600 fra.me.REG[2] = fra.me.REG[0];
11601 /* ./syntax//typing.nit:1822 */
11602 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
11603 if (UNTAG_Bool(REGB0)) {
11604 } else {
11605 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1822);
11606 }
11607 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
11608 if (UNTAG_Bool(REGB0)) {
11609 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11610 }
11611 stack_frame_head = fra.me.prev;
11612 return;
11613 }
11614 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
11615 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
11616 val_t REGB0;
11617 val_t REGB1;
11618 val_t REGB2;
11619 val_t REGB3;
11620 val_t tmp;
11621 static val_t once_value_1; /* Once value */
11622 static val_t once_value_2; /* Once value */
11623 static val_t once_value_3; /* Once value */
11624 static val_t once_value_6; /* Once value */
11625 static val_t once_value_7; /* Once value */
11626 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11627 fra.me.file = LOCATE_syntax___typing;
11628 fra.me.line = 1825;
11629 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
11630 fra.me.has_broke = 0;
11631 fra.me.REG_size = 8;
11632 fra.me.REG[0] = NIT_NULL;
11633 fra.me.REG[1] = NIT_NULL;
11634 fra.me.REG[2] = NIT_NULL;
11635 fra.me.REG[3] = NIT_NULL;
11636 fra.me.REG[4] = NIT_NULL;
11637 fra.me.REG[5] = NIT_NULL;
11638 fra.me.REG[6] = NIT_NULL;
11639 fra.me.REG[7] = NIT_NULL;
11640 fra.me.REG[0] = p0;
11641 fra.me.REG[1] = p1;
11642 fra.me.REG[2] = p2;
11643 /* ./syntax//typing.nit:1827 */
11644 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
11645 /* ./syntax//typing.nit:1829 */
11646 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
11647 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
11648 /* ./syntax//typing.nit:1830 */
11649 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
11650 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11651 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
11652 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
11653 if (UNTAG_Bool(REGB2)) {
11654 } else {
11655 /* ./../lib/standard//kernel.nit:210 */
11656 REGB1 = TAG_Bool((REGB0)==(REGB1));
11657 /* ./syntax//typing.nit:1830 */
11658 REGB2 = REGB1;
11659 }
11660 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
11661 if (UNTAG_Bool(REGB2)) {
11662 /* ./syntax//typing.nit:1831 */
11663 REGB2 = TAG_Int(5);
11664 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
11665 if (!once_value_1) {
11666 fra.me.REG[5] = BOX_NativeString("Error: ");
11667 REGB2 = TAG_Int(7);
11668 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
11669 once_value_1 = fra.me.REG[5];
11670 register_static_object(&once_value_1);
11671 } else fra.me.REG[5] = once_value_1;
11672 fra.me.REG[5] = fra.me.REG[5];
11673 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11674 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
11675 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
11676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11677 if (!once_value_2) {
11678 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
11679 REGB2 = TAG_Int(36);
11680 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
11681 once_value_2 = fra.me.REG[5];
11682 register_static_object(&once_value_2);
11683 } else fra.me.REG[5] = once_value_2;
11684 fra.me.REG[5] = fra.me.REG[5];
11685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11686 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11687 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
11688 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
11689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11690 if (!once_value_3) {
11691 fra.me.REG[5] = BOX_NativeString(" found.");
11692 REGB2 = TAG_Int(7);
11693 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
11694 once_value_3 = fra.me.REG[5];
11695 register_static_object(&once_value_3);
11696 } else fra.me.REG[5] = once_value_3;
11697 fra.me.REG[5] = fra.me.REG[5];
11698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11699 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11700 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11701 /* ./syntax//typing.nit:1832 */
11702 goto label4;
11703 }
11704 /* ./syntax//typing.nit:1835 */
11705 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
11706 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
11707 /* ./syntax//typing.nit:1837 */
11708 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11709 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
11710 /* ./syntax//typing.nit:1838 */
11711 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11712 /* ./syntax//typing.nit:1839 */
11713 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11714 /* ./syntax//typing.nit:1840 */
11715 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11716 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
11717 /* ./syntax//typing.nit:1841 */
11718 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
11719 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
11720 /* ./syntax//typing.nit:1842 */
11721 REGB2 = TAG_Int(0);
11722 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11723 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
11724 /* ./../lib/standard//kernel.nit:335 */
11725 while(1) {
11726 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
11727 if (UNTAG_Bool(REGB0)) {
11728 } else {
11729 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
11730 }
11731 /* ./../lib/standard//kernel.nit:215 */
11732 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
11733 /* ./../lib/standard//kernel.nit:335 */
11734 if (UNTAG_Bool(REGB0)) {
11735 /* ./syntax//typing.nit:1842 */
11736 REGB0 = REGB2;
11737 /* ./syntax//typing.nit:1843 */
11738 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11739 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
11740 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11741 if (UNTAG_Bool(REGB3)) {
11742 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1843);
11743 }
11744 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
11745 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
11746 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
11747 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
11748 /* ./syntax//typing.nit:1844 */
11749 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
11750 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
11751 if (UNTAG_Bool(REGB3)) {
11752 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1844);
11753 }
11754 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11755 /* ./syntax//typing.nit:1845 */
11756 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
11757 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11758 /* ./syntax//typing.nit:1846 */
11759 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11760 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
11761 /* ./../lib/standard//kernel.nit:337 */
11762 REGB0 = TAG_Int(1);
11763 /* ./../lib/standard//kernel.nit:218 */
11764 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
11765 /* ./../lib/standard//kernel.nit:337 */
11766 REGB2 = REGB0;
11767 } else {
11768 /* ./../lib/standard//kernel.nit:335 */
11769 goto label5;
11770 }
11771 }
11772 label5: while(0);
11773 /* ./syntax//typing.nit:1849 */
11774 REGB2 = TAG_Bool(true);
11775 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
11776 /* ./syntax//typing.nit:1850 */
11777 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11778 /* ./syntax//typing.nit:1852 */
11779 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11780 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
11781 REGB1 = TAG_Bool(false);
11782 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
11783 if (UNTAG_Bool(REGB0)) {
11784 } else {
11785 /* ./../lib/standard//kernel.nit:178 */
11786 REGB1 = TAG_Bool((REGB2)==(REGB1));
11787 /* ./syntax//typing.nit:1852 */
11788 REGB0 = REGB1;
11789 }
11790 if (UNTAG_Bool(REGB0)) {
11791 /* ./syntax//typing.nit:1853 */
11792 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11793 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
11794 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
11795 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11796 if (UNTAG_Bool(REGB0)) {
11797 } else {
11798 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11799 if (UNTAG_Bool(REGB1)) {
11800 REGB1 = TAG_Bool(false);
11801 REGB0 = REGB1;
11802 } else {
11803 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11804 REGB0 = REGB1;
11805 }
11806 }
11807 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11808 if (UNTAG_Bool(REGB0)) {
11809 /* ./syntax//typing.nit:1854 */
11810 if (!once_value_6) {
11811 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
11812 REGB0 = TAG_Int(77);
11813 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
11814 once_value_6 = fra.me.REG[3];
11815 register_static_object(&once_value_6);
11816 } else fra.me.REG[3] = once_value_6;
11817 fra.me.REG[3] = fra.me.REG[3];
11818 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
11819 } else {
11820 /* ./syntax//typing.nit:1855 */
11821 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
11822 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
11823 if (UNTAG_Bool(REGB0)) {
11824 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
11825 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11826 if (UNTAG_Bool(REGB0)) {
11827 } else {
11828 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
11829 if (UNTAG_Bool(REGB1)) {
11830 REGB1 = TAG_Bool(false);
11831 REGB0 = REGB1;
11832 } else {
11833 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
11834 REGB0 = REGB1;
11835 }
11836 }
11837 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11838 } else {
11839 REGB1 = TAG_Bool(false);
11840 REGB0 = REGB1;
11841 }
11842 if (UNTAG_Bool(REGB0)) {
11843 /* ./syntax//typing.nit:1856 */
11844 if (!once_value_7) {
11845 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
11846 REGB0 = TAG_Int(80);
11847 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
11848 once_value_7 = fra.me.REG[2];
11849 register_static_object(&once_value_7);
11850 } else fra.me.REG[2] = once_value_7;
11851 fra.me.REG[2] = fra.me.REG[2];
11852 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
11853 }
11854 }
11855 }
11856 /* ./syntax//typing.nit:1859 */
11857 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
11858 /* ./syntax//typing.nit:1860 */
11859 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
11860 /* ./syntax//typing.nit:1861 */
11861 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
11862 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
11863 label4: while(0);
11864 stack_frame_head = fra.me.prev;
11865 return;
11866 }
11867 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
11868 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
11869 val_t REGB0;
11870 val_t REGB1;
11871 val_t tmp;
11872 static val_t once_value_2; /* Once value */
11873 static val_t once_value_3; /* Once value */
11874 static val_t once_value_4; /* Once value */
11875 static val_t once_value_5; /* Once value */
11876 static val_t once_value_6; /* Once value */
11877 static val_t once_value_7; /* Once value */
11878 static val_t once_value_8; /* Once value */
11879 static val_t once_value_9; /* Once value */
11880 static val_t once_value_10; /* Once value */
11881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11882 fra.me.file = LOCATE_syntax___typing;
11883 fra.me.line = 1867;
11884 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
11885 fra.me.has_broke = 0;
11886 fra.me.REG_size = 6;
11887 fra.me.REG[0] = NIT_NULL;
11888 fra.me.REG[1] = NIT_NULL;
11889 fra.me.REG[2] = NIT_NULL;
11890 fra.me.REG[3] = NIT_NULL;
11891 fra.me.REG[4] = NIT_NULL;
11892 fra.me.REG[5] = NIT_NULL;
11893 fra.me.REG[0] = p0;
11894 fra.me.REG[1] = p1;
11895 fra.me.REG[2] = p2;
11896 fra.me.REG[3] = p3;
11897 /* ./syntax//typing.nit:1869 */
11898 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
11899 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11900 if (UNTAG_Bool(REGB0)) {
11901 goto label1;
11902 }
11903 /* ./syntax//typing.nit:1870 */
11904 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
11905 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11906 if (UNTAG_Bool(REGB0)) {
11907 goto label1;
11908 }
11909 /* ./syntax//typing.nit:1871 */
11910 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11911 /* ./syntax//typing.nit:1872 */
11912 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
11913 /* ./syntax//typing.nit:1873 */
11914 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
11915 if (UNTAG_Bool(REGB0)) {
11916 } else {
11917 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11918 REGB0 = REGB1;
11919 }
11920 if (UNTAG_Bool(REGB0)) {
11921 /* ./syntax//typing.nit:1874 */
11922 REGB0 = TAG_Int(3);
11923 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11924 if (!once_value_2) {
11925 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11926 REGB0 = TAG_Int(33);
11927 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11928 once_value_2 = fra.me.REG[5];
11929 register_static_object(&once_value_2);
11930 } else fra.me.REG[5] = once_value_2;
11931 fra.me.REG[5] = fra.me.REG[5];
11932 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11933 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11934 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11935 if (!once_value_3) {
11936 fra.me.REG[5] = BOX_NativeString(".");
11937 REGB0 = TAG_Int(1);
11938 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11939 once_value_3 = fra.me.REG[5];
11940 register_static_object(&once_value_3);
11941 } else fra.me.REG[5] = once_value_3;
11942 fra.me.REG[5] = fra.me.REG[5];
11943 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11944 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11945 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11946 } else {
11947 /* ./syntax//typing.nit:1875 */
11948 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
11949 if (UNTAG_Bool(REGB0)) {
11950 /* ./syntax//typing.nit:1876 */
11951 REGB0 = TAG_Int(5);
11952 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11953 if (!once_value_4) {
11954 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
11955 REGB0 = TAG_Int(33);
11956 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11957 once_value_4 = fra.me.REG[5];
11958 register_static_object(&once_value_4);
11959 } else fra.me.REG[5] = once_value_4;
11960 fra.me.REG[5] = fra.me.REG[5];
11961 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11962 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11963 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11964 if (!once_value_5) {
11965 fra.me.REG[5] = BOX_NativeString(" since it is a ");
11966 REGB0 = TAG_Int(15);
11967 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11968 once_value_5 = fra.me.REG[5];
11969 register_static_object(&once_value_5);
11970 } else fra.me.REG[5] = once_value_5;
11971 fra.me.REG[5] = fra.me.REG[5];
11972 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11973 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
11974 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11975 if (!once_value_6) {
11976 fra.me.REG[5] = BOX_NativeString(".");
11977 REGB0 = TAG_Int(1);
11978 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11979 once_value_6 = fra.me.REG[5];
11980 register_static_object(&once_value_6);
11981 } else fra.me.REG[5] = once_value_6;
11982 fra.me.REG[5] = fra.me.REG[5];
11983 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
11984 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11985 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
11986 } else {
11987 /* ./syntax//typing.nit:1877 */
11988 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11989 if (UNTAG_Bool(REGB0)) {
11990 /* ./syntax//typing.nit:1879 */
11991 REGB0 = TAG_Int(3);
11992 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11993 if (!once_value_7) {
11994 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
11995 REGB0 = TAG_Int(50);
11996 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11997 once_value_7 = fra.me.REG[5];
11998 register_static_object(&once_value_7);
11999 } else fra.me.REG[5] = once_value_7;
12000 fra.me.REG[5] = fra.me.REG[5];
12001 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12002 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12003 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12004 if (!once_value_8) {
12005 fra.me.REG[5] = BOX_NativeString(".");
12006 REGB0 = TAG_Int(1);
12007 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12008 once_value_8 = fra.me.REG[5];
12009 register_static_object(&once_value_8);
12010 } else fra.me.REG[5] = once_value_8;
12011 fra.me.REG[5] = fra.me.REG[5];
12012 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12013 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12014 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12015 } else {
12016 /* ./syntax//typing.nit:1880 */
12017 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12018 if (UNTAG_Bool(REGB0)) {
12019 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
12020 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12021 if (UNTAG_Bool(REGB0)) {
12022 } else {
12023 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12024 REGB0 = REGB1;
12025 }
12026 } else {
12027 REGB1 = TAG_Bool(false);
12028 REGB0 = REGB1;
12029 }
12030 if (UNTAG_Bool(REGB0)) {
12031 /* ./syntax//typing.nit:1881 */
12032 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
12033 if (UNTAG_Bool(REGB0)) {
12034 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
12035 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
12036 } else {
12037 REGB1 = TAG_Bool(false);
12038 REGB0 = REGB1;
12039 }
12040 if (UNTAG_Bool(REGB0)) {
12041 } else {
12042 /* ./syntax//typing.nit:1887 */
12043 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
12044 if (UNTAG_Bool(REGB0)) {
12045 /* ./syntax//typing.nit:1888 */
12046 if (!once_value_9) {
12047 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
12048 REGB0 = TAG_Int(26);
12049 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12050 once_value_9 = fra.me.REG[3];
12051 register_static_object(&once_value_9);
12052 } else fra.me.REG[3] = once_value_9;
12053 fra.me.REG[3] = fra.me.REG[3];
12054 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12055 } else {
12056 /* ./syntax//typing.nit:1890 */
12057 if (!once_value_10) {
12058 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
12059 REGB0 = TAG_Int(32);
12060 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12061 once_value_10 = fra.me.REG[3];
12062 register_static_object(&once_value_10);
12063 } else fra.me.REG[3] = once_value_10;
12064 fra.me.REG[3] = fra.me.REG[3];
12065 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12066 }
12067 }
12068 }
12069 }
12070 }
12071 }
12072 label1: while(0);
12073 stack_frame_head = fra.me.prev;
12074 return;
12075 }
12076 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
12077 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12078 val_t REGB0;
12079 val_t REGB1;
12080 val_t tmp;
12081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12082 fra.me.file = LOCATE_syntax___typing;
12083 fra.me.line = 1898;
12084 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
12085 fra.me.has_broke = 0;
12086 fra.me.REG_size = 5;
12087 fra.me.REG[0] = NIT_NULL;
12088 fra.me.REG[1] = NIT_NULL;
12089 fra.me.REG[2] = NIT_NULL;
12090 fra.me.REG[3] = NIT_NULL;
12091 fra.me.REG[4] = NIT_NULL;
12092 fra.me.REG[0] = p0;
12093 fra.me.REG[1] = p1;
12094 /* ./syntax//typing.nit:1900 */
12095 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12096 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12097 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]);
12098 /* ./syntax//typing.nit:1901 */
12099 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12100 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12101 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12102 if (UNTAG_Bool(REGB0)) {
12103 goto label1;
12104 }
12105 /* ./syntax//typing.nit:1902 */
12106 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12107 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
12108 /* ./syntax//typing.nit:1903 */
12109 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12110 if (UNTAG_Bool(REGB0)) {
12111 } else {
12112 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12113 if (UNTAG_Bool(REGB1)) {
12114 REGB1 = TAG_Bool(false);
12115 REGB0 = REGB1;
12116 } else {
12117 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12118 REGB0 = REGB1;
12119 }
12120 }
12121 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12122 if (UNTAG_Bool(REGB0)) {
12123 /* ./syntax//typing.nit:1904 */
12124 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12125 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12126 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
12127 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]);
12128 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
12129 }
12130 /* ./syntax//typing.nit:1906 */
12131 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
12132 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12133 /* ./syntax//typing.nit:1907 */
12134 REGB0 = TAG_Bool(true);
12135 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12136 label1: while(0);
12137 stack_frame_head = fra.me.prev;
12138 return;
12139 }
12140 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
12141 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
12142 val_t REGB0;
12143 val_t REGB1;
12144 val_t tmp;
12145 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12146 fra.me.file = LOCATE_syntax___typing;
12147 fra.me.line = 1913;
12148 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
12149 fra.me.has_broke = 0;
12150 fra.me.REG_size = 4;
12151 fra.me.REG[0] = NIT_NULL;
12152 fra.me.REG[1] = NIT_NULL;
12153 fra.me.REG[2] = NIT_NULL;
12154 fra.me.REG[3] = NIT_NULL;
12155 fra.me.REG[0] = p0;
12156 fra.me.REG[1] = p1;
12157 /* ./syntax//typing.nit:1915 */
12158 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12159 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12160 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]);
12161 /* ./syntax//typing.nit:1916 */
12162 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12163 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12164 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12165 if (UNTAG_Bool(REGB0)) {
12166 goto label1;
12167 }
12168 /* ./syntax//typing.nit:1917 */
12169 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12170 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12171 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
12172 /* ./syntax//typing.nit:1918 */
12173 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
12174 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12175 if (UNTAG_Bool(REGB0)) {
12176 } else {
12177 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12178 if (UNTAG_Bool(REGB1)) {
12179 REGB1 = TAG_Bool(false);
12180 REGB0 = REGB1;
12181 } else {
12182 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12183 REGB0 = REGB1;
12184 }
12185 }
12186 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12187 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12188 label1: while(0);
12189 stack_frame_head = fra.me.prev;
12190 return;
12191 }
12192 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
12193 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12194 val_t REGB0;
12195 val_t tmp;
12196 static val_t once_value_2; /* Once value */
12197 static val_t once_value_3; /* Once value */
12198 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12199 fra.me.file = LOCATE_syntax___typing;
12200 fra.me.line = 1923;
12201 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
12202 fra.me.has_broke = 0;
12203 fra.me.REG_size = 5;
12204 fra.me.REG[0] = NIT_NULL;
12205 fra.me.REG[1] = NIT_NULL;
12206 fra.me.REG[2] = NIT_NULL;
12207 fra.me.REG[3] = NIT_NULL;
12208 fra.me.REG[4] = NIT_NULL;
12209 fra.me.REG[0] = p0;
12210 fra.me.REG[1] = p1;
12211 /* ./syntax//typing.nit:1925 */
12212 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12213 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12214 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12215 if (UNTAG_Bool(REGB0)) {
12216 goto label1;
12217 }
12218 /* ./syntax//typing.nit:1926 */
12219 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12220 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12221 /* ./syntax//typing.nit:1927 */
12222 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12223 if (UNTAG_Bool(REGB0)) {
12224 /* ./syntax//typing.nit:1928 */
12225 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12226 if (!once_value_2) {
12227 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
12228 REGB0 = TAG_Int(43);
12229 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12230 once_value_2 = fra.me.REG[4];
12231 register_static_object(&once_value_2);
12232 } else fra.me.REG[4] = once_value_2;
12233 fra.me.REG[4] = fra.me.REG[4];
12234 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
12235 /* ./syntax//typing.nit:1929 */
12236 goto label1;
12237 } else {
12238 /* ./syntax//typing.nit:1930 */
12239 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12240 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12241 if (UNTAG_Bool(REGB0)) {
12242 /* ./syntax//typing.nit:1931 */
12243 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12244 if (!once_value_3) {
12245 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
12246 REGB0 = TAG_Int(45);
12247 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12248 once_value_3 = fra.me.REG[4];
12249 register_static_object(&once_value_3);
12250 } else fra.me.REG[4] = once_value_3;
12251 fra.me.REG[4] = fra.me.REG[4];
12252 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
12253 }
12254 }
12255 /* ./syntax//typing.nit:1933 */
12256 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12257 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
12258 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
12259 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
12260 /* ./syntax//typing.nit:1934 */
12261 REGB0 = TAG_Bool(true);
12262 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12263 label1: while(0);
12264 stack_frame_head = fra.me.prev;
12265 return;
12266 }
12267 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
12268 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12269 val_t REGB0;
12270 val_t tmp;
12271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12272 fra.me.file = LOCATE_syntax___typing;
12273 fra.me.line = 1939;
12274 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
12275 fra.me.has_broke = 0;
12276 fra.me.REG_size = 2;
12277 fra.me.REG[0] = NIT_NULL;
12278 fra.me.REG[1] = NIT_NULL;
12279 fra.me.REG[0] = p0;
12280 fra.me.REG[1] = p1;
12281 /* ./syntax//typing.nit:1941 */
12282 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12283 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
12284 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12285 if (UNTAG_Bool(REGB0)) {
12286 goto label1;
12287 }
12288 /* ./syntax//typing.nit:1942 */
12289 REGB0 = TAG_Bool(true);
12290 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12291 /* ./syntax//typing.nit:1943 */
12292 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12293 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
12294 if (UNTAG_Bool(REGB0)) {
12295 goto label1;
12296 }
12297 /* ./syntax//typing.nit:1944 */
12298 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12299 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
12300 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12301 label1: while(0);
12302 stack_frame_head = fra.me.prev;
12303 return;
12304 }
12305 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
12306 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12307 val_t REGB0;
12308 val_t REGB1;
12309 val_t REGB2;
12310 val_t tmp;
12311 static val_t once_value_1; /* Once value */
12312 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12313 fra.me.file = LOCATE_syntax___typing;
12314 fra.me.line = 1949;
12315 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
12316 fra.me.has_broke = 0;
12317 fra.me.REG_size = 5;
12318 fra.me.REG[0] = NIT_NULL;
12319 fra.me.REG[1] = NIT_NULL;
12320 fra.me.REG[2] = NIT_NULL;
12321 fra.me.REG[3] = NIT_NULL;
12322 fra.me.REG[4] = NIT_NULL;
12323 fra.me.REG[0] = p0;
12324 fra.me.REG[1] = p1;
12325 /* ./syntax//typing.nit:1949 */
12326 fra.me.REG[2] = fra.me.REG[0];
12327 fra.me.REG[3] = fra.me.REG[1];
12328 /* ./syntax//typing.nit:1951 */
12329 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12330 REGB1 = TAG_Int(0);
12331 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
12332 if (UNTAG_Bool(REGB2)) {
12333 } else {
12334 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
12335 }
12336 /* ./../lib/standard//kernel.nit:217 */
12337 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
12338 /* ./syntax//typing.nit:1951 */
12339 if (UNTAG_Bool(REGB1)) {
12340 /* ./syntax//typing.nit:1952 */
12341 if (!once_value_1) {
12342 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
12343 REGB1 = TAG_Int(34);
12344 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
12345 once_value_1 = fra.me.REG[4];
12346 register_static_object(&once_value_1);
12347 } else fra.me.REG[4] = once_value_1;
12348 fra.me.REG[4] = fra.me.REG[4];
12349 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
12350 }
12351 /* ./syntax//typing.nit:1954 */
12352 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12353 REGB0 = TAG_Int(1);
12354 /* ./../lib/standard//kernel.nit:218 */
12355 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
12356 /* ./syntax//typing.nit:1954 */
12357 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
12358 /* ./syntax//typing.nit:1956 */
12359 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12360 /* ./syntax//typing.nit:1958 */
12361 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
12362 REGB1 = TAG_Int(1);
12363 /* ./../lib/standard//kernel.nit:220 */
12364 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
12365 /* ./syntax//typing.nit:1958 */
12366 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
12367 stack_frame_head = fra.me.prev;
12368 return;
12369 }