8a13e10cbceb9ed16b01633631e7c5dcf9dbb58f
[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.nitni_local_ref_head = NULL;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[1] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 fra.me.REG[1] = p1;
17 /* ./syntax//typing.nit:29 */
18 fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
19 /* ./syntax//typing.nit:30 */
20 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
21 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return;
24 }
25 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
26 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
27 val_t REGB0;
28 val_t REGB1;
29 val_t tmp;
30 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
31 fra.me.file = LOCATE_syntax___typing;
32 fra.me.line = 41;
33 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___visit;
34 fra.me.has_broke = 0;
35 fra.me.REG_size = 2;
36 fra.me.nitni_local_ref_head = NULL;
37 fra.me.REG[0] = NIT_NULL;
38 fra.me.REG[1] = NIT_NULL;
39 fra.me.REG[0] = p0;
40 fra.me.REG[1] = p1;
41 /* ./syntax//typing.nit:43 */
42 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
43 if (UNTAG_Bool(REGB0)) {
44 } else {
45 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
46 if (UNTAG_Bool(REGB1)) {
47 REGB1 = TAG_Bool(false);
48 REGB0 = REGB1;
49 } else {
50 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
51 REGB0 = REGB1;
52 }
53 }
54 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
55 if (UNTAG_Bool(REGB0)) {
56 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
57 if (UNTAG_Bool(REGB0)) {
58 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 43);
59 }
60 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
61 }
62 stack_frame_head = fra.me.prev;
63 return;
64 }
65 val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
66 struct {struct stack_frame_t me;} fra;
67 val_t REGB0;
68 val_t tmp;
69 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
70 fra.me.file = LOCATE_syntax___typing;
71 fra.me.line = 46;
72 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___scope_ctx;
73 fra.me.has_broke = 0;
74 fra.me.REG_size = 1;
75 fra.me.nitni_local_ref_head = NULL;
76 fra.me.REG[0] = NIT_NULL;
77 fra.me.REG[0] = p0;
78 /* ./syntax//typing.nit:46 */
79 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
80 if (UNTAG_Bool(REGB0)) {
81 } else {
82 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_syntax___typing, 46);
83 }
84 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
85 stack_frame_head = fra.me.prev;
86 return fra.me.REG[0];
87 }
88 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
89 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
90 val_t REGB0;
91 val_t tmp;
92 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
93 fra.me.file = LOCATE_syntax___typing;
94 fra.me.line = 49;
95 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
96 fra.me.has_broke = 0;
97 fra.me.REG_size = 2;
98 fra.me.nitni_local_ref_head = NULL;
99 fra.me.REG[0] = NIT_NULL;
100 fra.me.REG[1] = NIT_NULL;
101 fra.me.REG[0] = p0;
102 /* ./syntax//typing.nit:49 */
103 fra.me.REG[1] = fra.me.REG[0];
104 /* ./syntax//typing.nit:50 */
105 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
106 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
107 if (UNTAG_Bool(REGB0)) {
108 } else {
109 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
110 }
111 goto label1;
112 label1: while(0);
113 stack_frame_head = fra.me.prev;
114 return fra.me.REG[1];
115 }
116 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
117 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
118 val_t tmp;
119 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
120 fra.me.file = LOCATE_syntax___typing;
121 fra.me.line = 51;
122 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
123 fra.me.has_broke = 0;
124 fra.me.REG_size = 2;
125 fra.me.nitni_local_ref_head = NULL;
126 fra.me.REG[0] = NIT_NULL;
127 fra.me.REG[1] = NIT_NULL;
128 fra.me.REG[0] = p0;
129 fra.me.REG[1] = p1;
130 /* ./syntax//typing.nit:51 */
131 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
132 stack_frame_head = fra.me.prev;
133 return;
134 }
135 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
136 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
137 val_t REGB0;
138 val_t tmp;
139 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
140 fra.me.file = LOCATE_syntax___typing;
141 fra.me.line = 53;
142 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
143 fra.me.has_broke = 0;
144 fra.me.REG_size = 3;
145 fra.me.nitni_local_ref_head = NULL;
146 fra.me.REG[0] = NIT_NULL;
147 fra.me.REG[1] = NIT_NULL;
148 fra.me.REG[2] = NIT_NULL;
149 fra.me.REG[0] = p0;
150 fra.me.REG[1] = p1;
151 /* ./syntax//typing.nit:56 */
152 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
153 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
154 if (UNTAG_Bool(REGB0)) {
155 goto label1;
156 }
157 /* ./syntax//typing.nit:57 */
158 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
159 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
160 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
161 label1: while(0);
162 stack_frame_head = fra.me.prev;
163 return;
164 }
165 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
166 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
167 val_t tmp;
168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
169 fra.me.file = LOCATE_syntax___typing;
170 fra.me.line = 60;
171 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
172 fra.me.has_broke = 0;
173 fra.me.REG_size = 3;
174 fra.me.nitni_local_ref_head = NULL;
175 fra.me.REG[0] = NIT_NULL;
176 fra.me.REG[1] = NIT_NULL;
177 fra.me.REG[2] = NIT_NULL;
178 fra.me.REG[0] = p0;
179 fra.me.REG[1] = p1;
180 /* ./syntax//typing.nit:63 */
181 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
182 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
183 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
184 stack_frame_head = fra.me.prev;
185 return;
186 }
187 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
188 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
189 val_t REGB0;
190 val_t REGB1;
191 val_t tmp;
192 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
193 fra.me.file = LOCATE_syntax___typing;
194 fra.me.line = 66;
195 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
196 fra.me.has_broke = 0;
197 fra.me.REG_size = 3;
198 fra.me.nitni_local_ref_head = NULL;
199 fra.me.REG[0] = NIT_NULL;
200 fra.me.REG[1] = NIT_NULL;
201 fra.me.REG[2] = NIT_NULL;
202 fra.me.REG[0] = p0;
203 fra.me.REG[1] = p1;
204 /* ./syntax//typing.nit:69 */
205 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
206 if (UNTAG_Bool(REGB0)) {
207 } else {
208 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
209 if (UNTAG_Bool(REGB1)) {
210 REGB1 = TAG_Bool(false);
211 REGB0 = REGB1;
212 } else {
213 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
214 REGB0 = REGB1;
215 }
216 }
217 if (UNTAG_Bool(REGB0)) {
218 goto label1;
219 }
220 /* ./syntax//typing.nit:70 */
221 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
222 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
223 /* ./syntax//typing.nit:71 */
224 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
225 /* ./syntax//typing.nit:72 */
226 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
227 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
228 label1: while(0);
229 stack_frame_head = fra.me.prev;
230 return;
231 }
232 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
233 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
234 val_t REGB0;
235 val_t tmp;
236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
237 fra.me.file = LOCATE_syntax___typing;
238 fra.me.line = 75;
239 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
240 fra.me.has_broke = 0;
241 fra.me.REG_size = 2;
242 fra.me.nitni_local_ref_head = NULL;
243 fra.me.REG[0] = NIT_NULL;
244 fra.me.REG[1] = NIT_NULL;
245 fra.me.REG[0] = p0;
246 /* ./syntax//typing.nit:75 */
247 fra.me.REG[1] = fra.me.REG[0];
248 /* ./syntax//typing.nit:76 */
249 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
250 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
251 if (UNTAG_Bool(REGB0)) {
252 } else {
253 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
254 }
255 goto label1;
256 label1: while(0);
257 stack_frame_head = fra.me.prev;
258 return fra.me.REG[1];
259 }
260 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
261 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
262 val_t tmp;
263 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
264 fra.me.file = LOCATE_syntax___typing;
265 fra.me.line = 77;
266 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
267 fra.me.has_broke = 0;
268 fra.me.REG_size = 2;
269 fra.me.nitni_local_ref_head = NULL;
270 fra.me.REG[0] = NIT_NULL;
271 fra.me.REG[1] = NIT_NULL;
272 fra.me.REG[0] = p0;
273 fra.me.REG[1] = p1;
274 /* ./syntax//typing.nit:77 */
275 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
276 stack_frame_head = fra.me.prev;
277 return;
278 }
279 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
280 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
281 val_t REGB0;
282 val_t tmp;
283 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
284 fra.me.file = LOCATE_syntax___typing;
285 fra.me.line = 79;
286 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
287 fra.me.has_broke = 0;
288 fra.me.REG_size = 2;
289 fra.me.nitni_local_ref_head = NULL;
290 fra.me.REG[0] = NIT_NULL;
291 fra.me.REG[1] = NIT_NULL;
292 fra.me.REG[0] = p0;
293 /* ./syntax//typing.nit:79 */
294 fra.me.REG[1] = fra.me.REG[0];
295 /* ./syntax//typing.nit:80 */
296 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
297 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
298 if (UNTAG_Bool(REGB0)) {
299 } else {
300 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
301 }
302 goto label1;
303 label1: while(0);
304 stack_frame_head = fra.me.prev;
305 return fra.me.REG[1];
306 }
307 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
308 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
309 val_t tmp;
310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
311 fra.me.file = LOCATE_syntax___typing;
312 fra.me.line = 81;
313 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
314 fra.me.has_broke = 0;
315 fra.me.REG_size = 2;
316 fra.me.nitni_local_ref_head = NULL;
317 fra.me.REG[0] = NIT_NULL;
318 fra.me.REG[1] = NIT_NULL;
319 fra.me.REG[0] = p0;
320 fra.me.REG[1] = p1;
321 /* ./syntax//typing.nit:81 */
322 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
323 stack_frame_head = fra.me.prev;
324 return;
325 }
326 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
327 struct {struct stack_frame_t me;} fra;
328 val_t tmp;
329 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
330 fra.me.file = LOCATE_syntax___typing;
331 fra.me.line = 83;
332 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
333 fra.me.has_broke = 0;
334 fra.me.REG_size = 1;
335 fra.me.nitni_local_ref_head = NULL;
336 fra.me.REG[0] = NIT_NULL;
337 fra.me.REG[0] = p0;
338 /* ./syntax//typing.nit:83 */
339 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
340 stack_frame_head = fra.me.prev;
341 return fra.me.REG[0];
342 }
343 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
344 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
345 val_t tmp;
346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
347 fra.me.file = LOCATE_syntax___typing;
348 fra.me.line = 83;
349 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
350 fra.me.has_broke = 0;
351 fra.me.REG_size = 2;
352 fra.me.nitni_local_ref_head = NULL;
353 fra.me.REG[0] = NIT_NULL;
354 fra.me.REG[1] = NIT_NULL;
355 fra.me.REG[0] = p0;
356 fra.me.REG[1] = p1;
357 /* ./syntax//typing.nit:83 */
358 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
359 stack_frame_head = fra.me.prev;
360 return;
361 }
362 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
363 struct {struct stack_frame_t me;} fra;
364 val_t tmp;
365 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
366 fra.me.file = LOCATE_syntax___typing;
367 fra.me.line = 86;
368 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
369 fra.me.has_broke = 0;
370 fra.me.REG_size = 1;
371 fra.me.nitni_local_ref_head = NULL;
372 fra.me.REG[0] = NIT_NULL;
373 fra.me.REG[0] = p0;
374 /* ./syntax//typing.nit:86 */
375 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
376 stack_frame_head = fra.me.prev;
377 return fra.me.REG[0];
378 }
379 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
380 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
381 val_t tmp;
382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
383 fra.me.file = LOCATE_syntax___typing;
384 fra.me.line = 86;
385 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
386 fra.me.has_broke = 0;
387 fra.me.REG_size = 2;
388 fra.me.nitni_local_ref_head = NULL;
389 fra.me.REG[0] = NIT_NULL;
390 fra.me.REG[1] = NIT_NULL;
391 fra.me.REG[0] = p0;
392 fra.me.REG[1] = p1;
393 /* ./syntax//typing.nit:86 */
394 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
395 stack_frame_head = fra.me.prev;
396 return;
397 }
398 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
399 struct {struct stack_frame_t me;} fra;
400 val_t REGB0;
401 val_t tmp;
402 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
403 fra.me.file = LOCATE_syntax___typing;
404 fra.me.line = 89;
405 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
406 fra.me.has_broke = 0;
407 fra.me.REG_size = 1;
408 fra.me.nitni_local_ref_head = NULL;
409 fra.me.REG[0] = NIT_NULL;
410 fra.me.REG[0] = p0;
411 /* ./syntax//typing.nit:89 */
412 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
413 if (UNTAG_Bool(REGB0)) {
414 } else {
415 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
416 }
417 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
418 stack_frame_head = fra.me.prev;
419 return REGB0;
420 }
421 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
422 struct {struct stack_frame_t me;} fra;
423 val_t REGB0;
424 val_t tmp;
425 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
426 fra.me.file = LOCATE_syntax___typing;
427 fra.me.line = 89;
428 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
429 fra.me.has_broke = 0;
430 fra.me.REG_size = 1;
431 fra.me.nitni_local_ref_head = NULL;
432 fra.me.REG[0] = NIT_NULL;
433 fra.me.REG[0] = p0;
434 REGB0 = p1;
435 /* ./syntax//typing.nit:89 */
436 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
437 stack_frame_head = fra.me.prev;
438 return;
439 }
440 void syntax___typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
441 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
442 val_t REGB0;
443 val_t REGB1;
444 val_t tmp;
445 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
446 fra.me.file = LOCATE_syntax___typing;
447 fra.me.line = 92;
448 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
449 fra.me.has_broke = 0;
450 fra.me.REG_size = 2;
451 fra.me.nitni_local_ref_head = NULL;
452 fra.me.REG[0] = NIT_NULL;
453 fra.me.REG[1] = NIT_NULL;
454 fra.me.REG[0] = p0;
455 fra.me.REG[1] = p1;
456 /* ./syntax//typing.nit:95 */
457 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
458 /* ./syntax//typing.nit:96 */
459 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
460 if (UNTAG_Bool(REGB0)) {
461 } else {
462 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
463 if (UNTAG_Bool(REGB1)) {
464 REGB1 = TAG_Bool(false);
465 REGB0 = REGB1;
466 } else {
467 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
468 REGB0 = REGB1;
469 }
470 }
471 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
472 if (UNTAG_Bool(REGB0)) {
473 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
474 }
475 stack_frame_head = fra.me.prev;
476 return;
477 }
478 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
479 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
480 val_t REGB0;
481 val_t REGB1;
482 val_t tmp;
483 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
484 fra.me.file = LOCATE_syntax___typing;
485 fra.me.line = 99;
486 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
487 fra.me.has_broke = 0;
488 fra.me.REG_size = 2;
489 fra.me.nitni_local_ref_head = NULL;
490 fra.me.REG[0] = NIT_NULL;
491 fra.me.REG[1] = NIT_NULL;
492 fra.me.REG[0] = p0;
493 fra.me.REG[1] = p1;
494 /* ./syntax//typing.nit:102 */
495 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
496 /* ./syntax//typing.nit:103 */
497 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
498 if (UNTAG_Bool(REGB0)) {
499 } else {
500 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
501 if (UNTAG_Bool(REGB1)) {
502 REGB1 = TAG_Bool(false);
503 REGB0 = REGB1;
504 } else {
505 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
506 REGB0 = REGB1;
507 }
508 }
509 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
510 if (UNTAG_Bool(REGB0)) {
511 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
512 }
513 stack_frame_head = fra.me.prev;
514 return;
515 }
516 val_t syntax___typing___TypingVisitor___is_default_closure_definition(val_t p0){
517 struct {struct stack_frame_t me;} fra;
518 val_t REGB0;
519 val_t tmp;
520 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
521 fra.me.file = LOCATE_syntax___typing;
522 fra.me.line = 106;
523 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition;
524 fra.me.has_broke = 0;
525 fra.me.REG_size = 1;
526 fra.me.nitni_local_ref_head = NULL;
527 fra.me.REG[0] = NIT_NULL;
528 fra.me.REG[0] = p0;
529 /* ./syntax//typing.nit:106 */
530 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
531 if (UNTAG_Bool(REGB0)) {
532 } else {
533 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_syntax___typing, 106);
534 }
535 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
536 stack_frame_head = fra.me.prev;
537 return REGB0;
538 }
539 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
540 struct {struct stack_frame_t me;} fra;
541 val_t REGB0;
542 val_t tmp;
543 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
544 fra.me.file = LOCATE_syntax___typing;
545 fra.me.line = 106;
546 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
547 fra.me.has_broke = 0;
548 fra.me.REG_size = 1;
549 fra.me.nitni_local_ref_head = NULL;
550 fra.me.REG[0] = NIT_NULL;
551 fra.me.REG[0] = p0;
552 REGB0 = p1;
553 /* ./syntax//typing.nit:106 */
554 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
555 stack_frame_head = fra.me.prev;
556 return;
557 }
558 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
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;
566 fra.me.has_broke = 0;
567 fra.me.REG_size = 1;
568 fra.me.nitni_local_ref_head = NULL;
569 fra.me.REG[0] = NIT_NULL;
570 fra.me.REG[0] = p0;
571 /* ./syntax//typing.nit:109 */
572 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
573 if (UNTAG_Bool(REGB0)) {
574 } else {
575 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
576 }
577 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
578 stack_frame_head = fra.me.prev;
579 return REGB0;
580 }
581 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
582 struct {struct stack_frame_t me;} fra;
583 val_t REGB0;
584 val_t tmp;
585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
586 fra.me.file = LOCATE_syntax___typing;
587 fra.me.line = 109;
588 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
589 fra.me.has_broke = 0;
590 fra.me.REG_size = 1;
591 fra.me.nitni_local_ref_head = NULL;
592 fra.me.REG[0] = NIT_NULL;
593 fra.me.REG[0] = p0;
594 REGB0 = p1;
595 /* ./syntax//typing.nit:109 */
596 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
597 stack_frame_head = fra.me.prev;
598 return;
599 }
600 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
601 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
602 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
603 val_t tmp;
604 if (init_table[itpos0]) return;
605 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
606 fra.me.file = LOCATE_syntax___typing;
607 fra.me.line = 112;
608 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
609 fra.me.has_broke = 0;
610 fra.me.REG_size = 3;
611 fra.me.nitni_local_ref_head = NULL;
612 fra.me.REG[0] = NIT_NULL;
613 fra.me.REG[1] = NIT_NULL;
614 fra.me.REG[2] = NIT_NULL;
615 fra.me.REG[0] = p0;
616 fra.me.REG[1] = p1;
617 fra.me.REG[2] = p2;
618 /* ./syntax//typing.nit:112 */
619 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
620 stack_frame_head = fra.me.prev;
621 init_table[itpos0] = 1;
622 return;
623 }
624 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
625 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
626 val_t REGB0;
627 val_t REGB1;
628 val_t REGB2;
629 val_t tmp;
630 static val_t once_value_6; /* Once value */
631 static val_t once_value_7; /* Once value */
632 static val_t once_value_8; /* Once value */
633 static val_t once_value_10; /* Once value */
634 static val_t once_value_11; /* Once value */
635 static val_t once_value_12; /* Once value */
636 static val_t once_value_13; /* Once value */
637 static val_t once_value_14; /* Once value */
638 static val_t once_value_15; /* Once value */
639 static val_t once_value_16; /* Once value */
640 static val_t once_value_18; /* Once value */
641 static val_t once_value_19; /* Once value */
642 static val_t once_value_20; /* Once value */
643 static val_t once_value_21; /* Once value */
644 static val_t once_value_22; /* Once value */
645 static val_t once_value_23; /* Once value */
646 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
647 fra.me.file = LOCATE_syntax___typing;
648 fra.me.line = 114;
649 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
650 fra.me.has_broke = 0;
651 fra.me.REG_size = 12;
652 fra.me.nitni_local_ref_head = NULL;
653 fra.me.REG[0] = NIT_NULL;
654 fra.me.REG[1] = NIT_NULL;
655 fra.me.REG[2] = NIT_NULL;
656 fra.me.REG[3] = NIT_NULL;
657 fra.me.REG[4] = NIT_NULL;
658 fra.me.REG[5] = NIT_NULL;
659 fra.me.REG[6] = NIT_NULL;
660 fra.me.REG[7] = NIT_NULL;
661 fra.me.REG[8] = NIT_NULL;
662 fra.me.REG[9] = NIT_NULL;
663 fra.me.REG[10] = NIT_NULL;
664 fra.me.REG[11] = NIT_NULL;
665 fra.me.REG[0] = p0;
666 fra.me.REG[1] = p1;
667 fra.me.REG[2] = p2;
668 fra.me.REG[3] = p3;
669 /* ./syntax//typing.nit:114 */
670 fra.me.REG[4] = fra.me.REG[0];
671 /* ./syntax//typing.nit:116 */
672 fra.me.REG[5] = fra.me.REG[4];
673 /* ./syntax//typing.nit:119 */
674 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
675 /* ./syntax//typing.nit:120 */
676 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
677 /* ./syntax//typing.nit:121 */
678 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
679 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
680 if (UNTAG_Bool(REGB0)) {
681 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
682 }
683 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
684 fra.me.REG[8] = REGB0;
685 /* ./syntax//typing.nit:122 */
686 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
687 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));
688 switch ((&(fra.me))->has_broke) {
689 case 0: break;
690 case 1: (&(fra.me))->has_broke = 0; goto label5;
691 }
692 /* ./../lib/standard//collection//array.nit:24 */
693 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
694 if (UNTAG_Bool(REGB0)) {
695 } else {
696 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
697 }
698 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
699 /* ./syntax//typing.nit:141 */
700 REGB1 = TAG_Int(1);
701 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
702 if (UNTAG_Bool(REGB2)) {
703 } else {
704 /* ./../lib/standard//kernel.nit:227 */
705 REGB1 = TAG_Bool((REGB0)==(REGB1));
706 /* ./syntax//typing.nit:141 */
707 REGB2 = REGB1;
708 }
709 if (UNTAG_Bool(REGB2)) {
710 /* ./syntax//typing.nit:142 */
711 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
712 fra.me.REG[9] = fra.me.REG[3];
713 goto label5;
714 } else {
715 /* ./../lib/standard//collection//array.nit:24 */
716 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
717 if (UNTAG_Bool(REGB2)) {
718 } else {
719 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
720 }
721 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
722 /* ./syntax//typing.nit:143 */
723 REGB1 = TAG_Int(0);
724 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
725 if (UNTAG_Bool(REGB0)) {
726 } else {
727 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
728 }
729 /* ./../lib/standard//kernel.nit:234 */
730 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
731 /* ./syntax//typing.nit:143 */
732 if (UNTAG_Bool(REGB1)) {
733 /* ./syntax//typing.nit:144 */
734 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
735 /* ./../lib/standard//collection//array.nit:269 */
736 REGB1 = TAG_Int(0);
737 /* ./../lib/standard//collection//array.nit:270 */
738 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
739 if (UNTAG_Bool(REGB2)) {
740 } else {
741 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
742 }
743 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
744 /* ./../lib/standard//collection//array.nit:271 */
745 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
746 /* ./../lib/standard//collection//array.nit:272 */
747 while(1) {
748 /* ./../lib/standard//collection//array.nit:24 */
749 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
750 if (UNTAG_Bool(REGB2)) {
751 } else {
752 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
753 }
754 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
755 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
756 if (UNTAG_Bool(REGB0)) {
757 } else {
758 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
759 }
760 /* ./../lib/standard//kernel.nit:232 */
761 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
762 /* ./../lib/standard//collection//array.nit:272 */
763 if (UNTAG_Bool(REGB2)) {
764 /* ./../lib/standard//collection//array.nit:273 */
765 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
766 if (UNTAG_Bool(REGB2)) {
767 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
768 }
769 /* ./../lib/standard//collection//array.nit:718 */
770 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
771 /* ./syntax//typing.nit:146 */
772 REGB2 = TAG_Int(5);
773 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
774 if (!once_value_6) {
775 fra.me.REG[11] = BOX_NativeString("");
776 REGB2 = TAG_Int(0);
777 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
778 once_value_6 = fra.me.REG[11];
779 register_static_object(&once_value_6);
780 } else fra.me.REG[11] = once_value_6;
781 fra.me.REG[11] = fra.me.REG[11];
782 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
783 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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[11]);
785 if (!once_value_7) {
786 fra.me.REG[11] = BOX_NativeString("");
787 REGB2 = TAG_Int(0);
788 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
789 once_value_7 = fra.me.REG[11];
790 register_static_object(&once_value_7);
791 } else fra.me.REG[11] = once_value_7;
792 fra.me.REG[11] = fra.me.REG[11];
793 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
794 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
795 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*/;
796 if (UNTAG_Bool(REGB2)) {
797 } else {
798 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
799 }
800 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
801 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
802 if (!once_value_8) {
803 fra.me.REG[4] = BOX_NativeString("");
804 REGB2 = TAG_Int(0);
805 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
806 once_value_8 = fra.me.REG[4];
807 register_static_object(&once_value_8);
808 } else fra.me.REG[4] = once_value_8;
809 fra.me.REG[4] = fra.me.REG[4];
810 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
811 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
813 /* ./../lib/standard//collection//array.nit:274 */
814 REGB2 = TAG_Int(1);
815 /* ./../lib/standard//kernel.nit:235 */
816 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
817 /* ./../lib/standard//collection//array.nit:274 */
818 REGB1 = REGB2;
819 } else {
820 /* ./../lib/standard//collection//array.nit:272 */
821 goto label9;
822 }
823 }
824 label9: while(0);
825 /* ./syntax//typing.nit:148 */
826 REGB1 = TAG_Int(5);
827 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
828 if (!once_value_10) {
829 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
830 REGB1 = TAG_Int(51);
831 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
832 once_value_10 = fra.me.REG[6];
833 register_static_object(&once_value_10);
834 } else fra.me.REG[6] = once_value_10;
835 fra.me.REG[6] = fra.me.REG[6];
836 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
837 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
839 if (!once_value_11) {
840 fra.me.REG[6] = BOX_NativeString(": ");
841 REGB1 = TAG_Int(2);
842 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
843 once_value_11 = fra.me.REG[6];
844 register_static_object(&once_value_11);
845 } else fra.me.REG[6] = once_value_11;
846 fra.me.REG[6] = fra.me.REG[6];
847 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
848 if (!once_value_12) {
849 fra.me.REG[6] = BOX_NativeString(", ");
850 REGB1 = TAG_Int(2);
851 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
852 once_value_12 = fra.me.REG[6];
853 register_static_object(&once_value_12);
854 } else fra.me.REG[6] = once_value_12;
855 fra.me.REG[6] = fra.me.REG[6];
856 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
857 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
858 if (!once_value_13) {
859 fra.me.REG[6] = BOX_NativeString(".");
860 REGB1 = TAG_Int(1);
861 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
862 once_value_13 = fra.me.REG[6];
863 register_static_object(&once_value_13);
864 } else fra.me.REG[6] = once_value_13;
865 fra.me.REG[6] = fra.me.REG[6];
866 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
867 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
868 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
869 /* ./syntax//typing.nit:149 */
870 fra.me.REG[9] = NIT_NULL;
871 goto label5;
872 } else {
873 /* ./../lib/standard//collection//array.nit:24 */
874 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
875 if (UNTAG_Bool(REGB1)) {
876 } else {
877 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
878 }
879 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
880 /* ./syntax//typing.nit:150 */
881 REGB2 = TAG_Int(0);
882 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
883 if (UNTAG_Bool(REGB0)) {
884 } else {
885 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
886 }
887 /* ./../lib/standard//kernel.nit:234 */
888 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
889 /* ./syntax//typing.nit:150 */
890 if (UNTAG_Bool(REGB2)) {
891 /* ./syntax//typing.nit:151 */
892 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
893 /* ./../lib/standard//collection//array.nit:269 */
894 REGB2 = TAG_Int(0);
895 /* ./../lib/standard//collection//array.nit:270 */
896 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
897 if (UNTAG_Bool(REGB1)) {
898 } else {
899 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
900 }
901 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
902 /* ./../lib/standard//collection//array.nit:271 */
903 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
904 /* ./../lib/standard//collection//array.nit:272 */
905 while(1) {
906 /* ./../lib/standard//collection//array.nit:24 */
907 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
908 if (UNTAG_Bool(REGB1)) {
909 } else {
910 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
911 }
912 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
913 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
914 if (UNTAG_Bool(REGB0)) {
915 } else {
916 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
917 }
918 /* ./../lib/standard//kernel.nit:232 */
919 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
920 /* ./../lib/standard//collection//array.nit:272 */
921 if (UNTAG_Bool(REGB1)) {
922 /* ./../lib/standard//collection//array.nit:273 */
923 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
924 if (UNTAG_Bool(REGB1)) {
925 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
926 }
927 /* ./../lib/standard//collection//array.nit:718 */
928 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
929 /* ./syntax//typing.nit:153 */
930 REGB1 = TAG_Int(5);
931 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
932 if (!once_value_14) {
933 fra.me.REG[4] = BOX_NativeString("");
934 REGB1 = TAG_Int(0);
935 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
936 once_value_14 = fra.me.REG[4];
937 register_static_object(&once_value_14);
938 } else fra.me.REG[4] = once_value_14;
939 fra.me.REG[4] = fra.me.REG[4];
940 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
941 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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[4]);
943 if (!once_value_15) {
944 fra.me.REG[4] = BOX_NativeString("");
945 REGB1 = TAG_Int(0);
946 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
947 once_value_15 = fra.me.REG[4];
948 register_static_object(&once_value_15);
949 } else fra.me.REG[4] = once_value_15;
950 fra.me.REG[4] = fra.me.REG[4];
951 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
952 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
953 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*/;
954 if (UNTAG_Bool(REGB1)) {
955 } else {
956 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
957 }
958 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
959 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
960 if (!once_value_16) {
961 fra.me.REG[3] = BOX_NativeString("");
962 REGB1 = TAG_Int(0);
963 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
964 once_value_16 = fra.me.REG[3];
965 register_static_object(&once_value_16);
966 } else fra.me.REG[3] = once_value_16;
967 fra.me.REG[3] = fra.me.REG[3];
968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
969 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
970 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
971 /* ./../lib/standard//collection//array.nit:274 */
972 REGB1 = TAG_Int(1);
973 /* ./../lib/standard//kernel.nit:235 */
974 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
975 /* ./../lib/standard//collection//array.nit:274 */
976 REGB2 = REGB1;
977 } else {
978 /* ./../lib/standard//collection//array.nit:272 */
979 goto label17;
980 }
981 }
982 label17: while(0);
983 /* ./syntax//typing.nit:155 */
984 REGB2 = TAG_Int(5);
985 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
986 if (!once_value_18) {
987 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
988 REGB2 = TAG_Int(55);
989 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
990 once_value_18 = fra.me.REG[6];
991 register_static_object(&once_value_18);
992 } else fra.me.REG[6] = once_value_18;
993 fra.me.REG[6] = fra.me.REG[6];
994 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
995 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
996 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
997 if (!once_value_19) {
998 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
999 REGB2 = TAG_Int(27);
1000 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1001 once_value_19 = fra.me.REG[6];
1002 register_static_object(&once_value_19);
1003 } else fra.me.REG[6] = once_value_19;
1004 fra.me.REG[6] = fra.me.REG[6];
1005 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1006 if (!once_value_20) {
1007 fra.me.REG[6] = BOX_NativeString(", ");
1008 REGB2 = TAG_Int(2);
1009 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1010 once_value_20 = fra.me.REG[6];
1011 register_static_object(&once_value_20);
1012 } else fra.me.REG[6] = once_value_20;
1013 fra.me.REG[6] = fra.me.REG[6];
1014 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
1015 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1016 if (!once_value_21) {
1017 fra.me.REG[6] = BOX_NativeString(".");
1018 REGB2 = TAG_Int(1);
1019 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1020 once_value_21 = fra.me.REG[6];
1021 register_static_object(&once_value_21);
1022 } else fra.me.REG[6] = once_value_21;
1023 fra.me.REG[6] = fra.me.REG[6];
1024 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1025 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1026 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1027 /* ./syntax//typing.nit:156 */
1028 fra.me.REG[9] = NIT_NULL;
1029 goto label5;
1030 } else {
1031 /* ./syntax//typing.nit:158 */
1032 REGB2 = TAG_Int(3);
1033 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1034 if (!once_value_22) {
1035 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1036 REGB2 = TAG_Int(55);
1037 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1038 once_value_22 = fra.me.REG[6];
1039 register_static_object(&once_value_22);
1040 } else fra.me.REG[6] = once_value_22;
1041 fra.me.REG[6] = fra.me.REG[6];
1042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1043 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1044 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1045 if (!once_value_23) {
1046 fra.me.REG[2] = BOX_NativeString(".");
1047 REGB2 = TAG_Int(1);
1048 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
1049 once_value_23 = fra.me.REG[2];
1050 register_static_object(&once_value_23);
1051 } else fra.me.REG[2] = once_value_23;
1052 fra.me.REG[2] = fra.me.REG[2];
1053 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1054 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1055 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1056 /* ./syntax//typing.nit:159 */
1057 fra.me.REG[9] = NIT_NULL;
1058 goto label5;
1059 }
1060 }
1061 }
1062 label5: while(0);
1063 stack_frame_head = fra.me.prev;
1064 return fra.me.REG[9];
1065 }
1066 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){
1067 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1068 val_t REGB0;
1069 val_t REGB1;
1070 val_t REGB2;
1071 val_t REGB3;
1072 fun_t CREG[1];
1073 val_t tmp;
1074 static val_t once_value_3; /* Once value */
1075 static val_t once_value_4; /* Once value */
1076 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1077 fra.me.file = LOCATE_syntax___typing;
1078 fra.me.line = 0;
1079 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1080 fra.me.has_broke = 0;
1081 fra.me.REG_size = 4;
1082 fra.me.nitni_local_ref_head = NULL;
1083 fra.me.REG[0] = NIT_NULL;
1084 fra.me.REG[1] = NIT_NULL;
1085 fra.me.REG[2] = NIT_NULL;
1086 fra.me.REG[3] = NIT_NULL;
1087 fra.me.closure_ctx = closctx_param;
1088 fra.me.closure_funs = CREG;
1089 fra.me.REG[0] = p0;
1090 CREG[0] = clos_fun0;
1091 /* ./syntax//typing.nit:123 */
1092 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1093 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1094 if (UNTAG_Bool(REGB0)) {
1095 goto label2;
1096 }
1097 /* ./syntax//typing.nit:124 */
1098 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1099 /* ./syntax//typing.nit:125 */
1100 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1101 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1102 /* ./syntax//typing.nit:126 */
1103 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1104 if (UNTAG_Bool(REGB0)) {
1105 } else {
1106 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1107 }
1108 /* ./syntax//typing.nit:127 */
1109 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1110 /* ./syntax//typing.nit:128 */
1111 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1112 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1113 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1114 if (UNTAG_Bool(REGB1)) {
1115 } else {
1116 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1117 REGB1 = REGB2;
1118 }
1119 if (UNTAG_Bool(REGB1)) {
1120 /* ./syntax//typing.nit:129 */
1121 REGB1 = TAG_Int(0);
1122 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1123 if (UNTAG_Bool(REGB2)) {
1124 } else {
1125 /* ./../lib/standard//kernel.nit:227 */
1126 REGB1 = TAG_Bool((REGB0)==(REGB1));
1127 /* ./syntax//typing.nit:129 */
1128 REGB2 = REGB1;
1129 }
1130 if (UNTAG_Bool(REGB2)) {
1131 REGB2 = TAG_Bool(true);
1132 } else {
1133 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1134 if (UNTAG_Bool(REGB1)) {
1135 } else {
1136 /* ./../lib/standard//kernel.nit:227 */
1137 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1138 /* ./syntax//typing.nit:129 */
1139 REGB1 = REGB3;
1140 }
1141 if (UNTAG_Bool(REGB1)) {
1142 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1143 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1144 if (UNTAG_Bool(REGB1)) {
1145 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1146 }
1147 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1148 } else {
1149 REGB3 = TAG_Bool(false);
1150 REGB1 = REGB3;
1151 }
1152 REGB2 = REGB1;
1153 }
1154 if (UNTAG_Bool(REGB2)) {
1155 /* ./syntax//typing.nit:130 */
1156 closctx->REG[9] = fra.me.REG[0];
1157 closctx->has_broke = 1;
1158 goto label2;
1159 } else {
1160 /* ./syntax//typing.nit:132 */
1161 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1162 }
1163 } else {
1164 /* ./syntax//typing.nit:134 */
1165 REGB2 = TAG_Int(0);
1166 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1167 if (UNTAG_Bool(REGB1)) {
1168 } else {
1169 /* ./../lib/standard//kernel.nit:227 */
1170 REGB2 = TAG_Bool((REGB0)==(REGB2));
1171 /* ./syntax//typing.nit:134 */
1172 REGB1 = REGB2;
1173 }
1174 if (UNTAG_Bool(REGB1)) {
1175 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1176 if (!once_value_3) {
1177 if (!once_value_4) {
1178 fra.me.REG[3] = BOX_NativeString("init");
1179 REGB1 = TAG_Int(4);
1180 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
1181 once_value_4 = fra.me.REG[3];
1182 register_static_object(&once_value_4);
1183 } else fra.me.REG[3] = once_value_4;
1184 fra.me.REG[3] = fra.me.REG[3];
1185 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1186 once_value_3 = fra.me.REG[3];
1187 register_static_object(&once_value_3);
1188 } else fra.me.REG[3] = once_value_3;
1189 fra.me.REG[3] = fra.me.REG[3];
1190 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1191 if (UNTAG_Bool(REGB1)) {
1192 } else {
1193 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1194 REGB1 = REGB2;
1195 }
1196 } else {
1197 REGB2 = TAG_Bool(false);
1198 REGB1 = REGB2;
1199 }
1200 if (UNTAG_Bool(REGB1)) {
1201 /* ./syntax//typing.nit:135 */
1202 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1203 /* ./syntax//typing.nit:136 */
1204 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1205 } else {
1206 /* ./syntax//typing.nit:138 */
1207 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1208 }
1209 }
1210 label2: while(0);
1211 stack_frame_head = fra.me.prev;
1212 return;
1213 }
1214 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1215 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1216 val_t tmp;
1217 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1218 fra.me.file = LOCATE_syntax___typing;
1219 fra.me.line = 168;
1220 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1221 fra.me.has_broke = 0;
1222 fra.me.REG_size = 2;
1223 fra.me.nitni_local_ref_head = NULL;
1224 fra.me.REG[0] = NIT_NULL;
1225 fra.me.REG[1] = NIT_NULL;
1226 fra.me.REG[0] = p0;
1227 fra.me.REG[1] = p1;
1228 /* ./syntax//typing.nit:170 */
1229 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1230 /* ./syntax//typing.nit:171 */
1231 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1232 stack_frame_head = fra.me.prev;
1233 return;
1234 }
1235 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1236 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1237 val_t tmp;
1238 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1239 fra.me.file = LOCATE_syntax___typing;
1240 fra.me.line = 173;
1241 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1242 fra.me.has_broke = 0;
1243 fra.me.REG_size = 2;
1244 fra.me.nitni_local_ref_head = NULL;
1245 fra.me.REG[0] = NIT_NULL;
1246 fra.me.REG[1] = NIT_NULL;
1247 fra.me.REG[0] = p0;
1248 fra.me.REG[1] = p1;
1249 stack_frame_head = fra.me.prev;
1250 return;
1251 }
1252 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1253 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1254 val_t REGB0;
1255 val_t tmp;
1256 static val_t once_value_1; /* Once value */
1257 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1258 fra.me.file = LOCATE_syntax___typing;
1259 fra.me.line = 177;
1260 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1261 fra.me.has_broke = 0;
1262 fra.me.REG_size = 5;
1263 fra.me.nitni_local_ref_head = NULL;
1264 fra.me.REG[0] = NIT_NULL;
1265 fra.me.REG[1] = NIT_NULL;
1266 fra.me.REG[2] = NIT_NULL;
1267 fra.me.REG[3] = NIT_NULL;
1268 fra.me.REG[4] = NIT_NULL;
1269 fra.me.REG[0] = p0;
1270 fra.me.REG[1] = p1;
1271 /* ./syntax//typing.nit:177 */
1272 fra.me.REG[2] = fra.me.REG[0];
1273 fra.me.REG[3] = fra.me.REG[1];
1274 /* ./syntax//typing.nit:179 */
1275 if (!once_value_1) {
1276 fra.me.REG[4] = BOX_NativeString("self");
1277 REGB0 = TAG_Int(4);
1278 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1279 once_value_1 = fra.me.REG[4];
1280 register_static_object(&once_value_1);
1281 } else fra.me.REG[4] = once_value_1;
1282 fra.me.REG[4] = fra.me.REG[4];
1283 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1284 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1285 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1286 /* ./syntax//typing.nit:180 */
1287 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1288 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1289 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1290 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1291 /* ./syntax//typing.nit:181 */
1292 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1293 stack_frame_head = fra.me.prev;
1294 return;
1295 }
1296 val_t syntax___typing___APropdef___self_var(val_t p0){
1297 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1298 val_t REGB0;
1299 val_t tmp;
1300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1301 fra.me.file = LOCATE_syntax___typing;
1302 fra.me.line = 186;
1303 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1304 fra.me.has_broke = 0;
1305 fra.me.REG_size = 2;
1306 fra.me.nitni_local_ref_head = NULL;
1307 fra.me.REG[0] = NIT_NULL;
1308 fra.me.REG[1] = NIT_NULL;
1309 fra.me.REG[0] = p0;
1310 /* ./syntax//typing.nit:186 */
1311 fra.me.REG[1] = fra.me.REG[0];
1312 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1313 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1314 if (UNTAG_Bool(REGB0)) {
1315 } else {
1316 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1317 }
1318 goto label1;
1319 label1: while(0);
1320 stack_frame_head = fra.me.prev;
1321 return fra.me.REG[1];
1322 }
1323 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1324 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1325 val_t REGB0;
1326 val_t REGB1;
1327 val_t tmp;
1328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1329 fra.me.file = LOCATE_syntax___typing;
1330 fra.me.line = 191;
1331 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1332 fra.me.has_broke = 0;
1333 fra.me.REG_size = 5;
1334 fra.me.nitni_local_ref_head = NULL;
1335 fra.me.REG[0] = NIT_NULL;
1336 fra.me.REG[1] = NIT_NULL;
1337 fra.me.REG[2] = NIT_NULL;
1338 fra.me.REG[3] = NIT_NULL;
1339 fra.me.REG[4] = NIT_NULL;
1340 fra.me.REG[0] = p0;
1341 fra.me.REG[1] = p1;
1342 /* ./syntax//typing.nit:191 */
1343 fra.me.REG[2] = fra.me.REG[0];
1344 fra.me.REG[3] = fra.me.REG[1];
1345 /* ./syntax//typing.nit:193 */
1346 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1347 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1348 /* ./syntax//typing.nit:194 */
1349 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1350 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1351 /* ./syntax//typing.nit:196 */
1352 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1353 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1354 /* ./syntax//typing.nit:197 */
1355 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1356 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1357 /* ./syntax//typing.nit:198 */
1358 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1359 /* ./syntax//typing.nit:199 */
1360 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1361 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1362 if (UNTAG_Bool(REGB0)) {
1363 } else {
1364 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1365 if (UNTAG_Bool(REGB1)) {
1366 REGB1 = TAG_Bool(false);
1367 REGB0 = REGB1;
1368 } else {
1369 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1370 REGB0 = REGB1;
1371 }
1372 }
1373 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1374 if (UNTAG_Bool(REGB0)) {
1375 /* ./syntax//typing.nit:200 */
1376 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1377 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*/;
1378 if (UNTAG_Bool(REGB0)) {
1379 } else {
1380 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1381 }
1382 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1383 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1384 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1385 if (UNTAG_Bool(REGB0)) {
1386 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1387 }
1388 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1389 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*/;
1390 if (UNTAG_Bool(REGB0)) {
1391 } else {
1392 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1393 }
1394 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1395 }
1396 /* ./syntax//typing.nit:202 */
1397 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1398 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1399 stack_frame_head = fra.me.prev;
1400 return;
1401 }
1402 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1403 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1404 val_t tmp;
1405 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1406 fra.me.file = LOCATE_syntax___typing;
1407 fra.me.line = 207;
1408 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1409 fra.me.has_broke = 0;
1410 fra.me.REG_size = 5;
1411 fra.me.nitni_local_ref_head = NULL;
1412 fra.me.REG[0] = NIT_NULL;
1413 fra.me.REG[1] = NIT_NULL;
1414 fra.me.REG[2] = NIT_NULL;
1415 fra.me.REG[3] = NIT_NULL;
1416 fra.me.REG[4] = NIT_NULL;
1417 fra.me.REG[0] = p0;
1418 fra.me.REG[1] = p1;
1419 /* ./syntax//typing.nit:207 */
1420 fra.me.REG[2] = fra.me.REG[0];
1421 fra.me.REG[3] = fra.me.REG[1];
1422 /* ./syntax//typing.nit:209 */
1423 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1424 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1425 /* ./syntax//typing.nit:210 */
1426 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1427 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1428 /* ./syntax//typing.nit:212 */
1429 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1430 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1431 /* ./syntax//typing.nit:213 */
1432 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1433 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1434 /* ./syntax//typing.nit:214 */
1435 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1436 /* ./syntax//typing.nit:215 */
1437 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1438 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1439 stack_frame_head = fra.me.prev;
1440 return;
1441 }
1442 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1443 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1444 val_t REGB0;
1445 val_t REGB1;
1446 val_t tmp;
1447 static val_t once_value_1; /* Once value */
1448 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1449 fra.me.file = LOCATE_syntax___typing;
1450 fra.me.line = 220;
1451 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1452 fra.me.has_broke = 0;
1453 fra.me.REG_size = 4;
1454 fra.me.nitni_local_ref_head = NULL;
1455 fra.me.REG[0] = NIT_NULL;
1456 fra.me.REG[1] = NIT_NULL;
1457 fra.me.REG[2] = NIT_NULL;
1458 fra.me.REG[3] = NIT_NULL;
1459 fra.me.REG[0] = p0;
1460 fra.me.REG[1] = p1;
1461 /* ./syntax//typing.nit:220 */
1462 fra.me.REG[2] = fra.me.REG[0];
1463 fra.me.REG[3] = fra.me.REG[1];
1464 /* ./syntax//typing.nit:222 */
1465 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1466 /* ./syntax//typing.nit:223 */
1467 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1468 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1469 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1470 if (UNTAG_Bool(REGB0)) {
1471 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1472 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1473 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1474 if (UNTAG_Bool(REGB0)) {
1475 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1476 }
1477 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1478 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1479 if (UNTAG_Bool(REGB0)) {
1480 } else {
1481 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1482 if (UNTAG_Bool(REGB1)) {
1483 REGB1 = TAG_Bool(false);
1484 REGB0 = REGB1;
1485 } else {
1486 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1487 REGB0 = REGB1;
1488 }
1489 }
1490 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1491 } else {
1492 REGB1 = TAG_Bool(false);
1493 REGB0 = REGB1;
1494 }
1495 if (UNTAG_Bool(REGB0)) {
1496 /* ./syntax//typing.nit:224 */
1497 if (!once_value_1) {
1498 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1499 REGB0 = TAG_Int(78);
1500 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1501 once_value_1 = fra.me.REG[1];
1502 register_static_object(&once_value_1);
1503 } else fra.me.REG[1] = once_value_1;
1504 fra.me.REG[1] = fra.me.REG[1];
1505 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1506 }
1507 stack_frame_head = fra.me.prev;
1508 return;
1509 }
1510 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1511 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1512 val_t REGB0;
1513 val_t tmp;
1514 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1515 fra.me.file = LOCATE_syntax___typing;
1516 fra.me.line = 230;
1517 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1518 fra.me.has_broke = 0;
1519 fra.me.REG_size = 5;
1520 fra.me.nitni_local_ref_head = NULL;
1521 fra.me.REG[0] = NIT_NULL;
1522 fra.me.REG[1] = NIT_NULL;
1523 fra.me.REG[2] = NIT_NULL;
1524 fra.me.REG[3] = NIT_NULL;
1525 fra.me.REG[4] = NIT_NULL;
1526 fra.me.REG[0] = p0;
1527 fra.me.REG[1] = p1;
1528 /* ./syntax//typing.nit:230 */
1529 fra.me.REG[2] = fra.me.REG[0];
1530 fra.me.REG[3] = fra.me.REG[1];
1531 /* ./syntax//typing.nit:232 */
1532 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1533 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1534 /* ./syntax//typing.nit:233 */
1535 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1536 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1537 /* ./syntax//typing.nit:234 */
1538 REGB0 = TAG_Bool(false);
1539 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1540 /* ./syntax//typing.nit:235 */
1541 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1542 stack_frame_head = fra.me.prev;
1543 return;
1544 }
1545 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1546 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1547 val_t REGB0;
1548 val_t REGB1;
1549 val_t REGB2;
1550 val_t REGB3;
1551 val_t REGB4;
1552 val_t REGB5;
1553 val_t tmp;
1554 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1555 fra.me.file = LOCATE_syntax___typing;
1556 fra.me.line = 238;
1557 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1558 fra.me.has_broke = 0;
1559 fra.me.REG_size = 8;
1560 fra.me.nitni_local_ref_head = NULL;
1561 fra.me.REG[0] = NIT_NULL;
1562 fra.me.REG[1] = NIT_NULL;
1563 fra.me.REG[2] = NIT_NULL;
1564 fra.me.REG[3] = NIT_NULL;
1565 fra.me.REG[4] = NIT_NULL;
1566 fra.me.REG[5] = NIT_NULL;
1567 fra.me.REG[6] = NIT_NULL;
1568 fra.me.REG[7] = NIT_NULL;
1569 fra.me.REG[0] = p0;
1570 fra.me.REG[1] = p1;
1571 /* ./syntax//typing.nit:238 */
1572 fra.me.REG[2] = fra.me.REG[0];
1573 fra.me.REG[3] = fra.me.REG[1];
1574 /* ./syntax//typing.nit:240 */
1575 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1576 /* ./syntax//typing.nit:241 */
1577 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1578 if (UNTAG_Bool(REGB0)) {
1579 REGB0 = TAG_Bool(true);
1580 } else {
1581 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1582 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1583 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1584 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1585 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1586 if (UNTAG_Bool(REGB1)) {
1587 } else {
1588 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1589 REGB1 = REGB2;
1590 }
1591 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1592 REGB0 = REGB1;
1593 }
1594 if (UNTAG_Bool(REGB0)) {
1595 } else {
1596 /* ./syntax//typing.nit:244 */
1597 REGB0 = TAG_Int(0);
1598 /* ./syntax//typing.nit:245 */
1599 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1600 /* ./../lib/standard//collection//array.nit:24 */
1601 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1602 if (UNTAG_Bool(REGB1)) {
1603 } else {
1604 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1605 }
1606 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1607 /* ./syntax//typing.nit:246 */
1608 fra.me.REG[4] = NIT_NULL;
1609 /* ./syntax//typing.nit:247 */
1610 fra.me.REG[1] = NIT_NULL;
1611 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1612 if (UNTAG_Bool(REGB2)) {
1613 } else {
1614 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1615 }
1616 /* ./../lib/standard//kernel.nit:232 */
1617 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1618 /* ./syntax//typing.nit:248 */
1619 if (UNTAG_Bool(REGB2)) {
1620 /* ./syntax//typing.nit:249 */
1621 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1622 /* ./../lib/standard//collection//array.nit:278 */
1623 REGB2 = REGB0;
1624 /* ./../lib/standard//collection//array.nit:280 */
1625 REGB3 = TAG_Int(0);
1626 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1627 if (UNTAG_Bool(REGB4)) {
1628 } else {
1629 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1630 }
1631 /* ./../lib/standard//kernel.nit:233 */
1632 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1633 /* ./../lib/standard//collection//array.nit:280 */
1634 if (UNTAG_Bool(REGB3)) {
1635 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1636 if (UNTAG_Bool(REGB3)) {
1637 } else {
1638 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1639 }
1640 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1641 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1642 if (UNTAG_Bool(REGB4)) {
1643 } else {
1644 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1645 }
1646 /* ./../lib/standard//kernel.nit:232 */
1647 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1648 } else {
1649 /* ./../lib/standard//collection//array.nit:280 */
1650 REGB4 = TAG_Bool(false);
1651 REGB3 = REGB4;
1652 }
1653 if (UNTAG_Bool(REGB3)) {
1654 } else {
1655 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1656 }
1657 /* ./../lib/standard//collection//array.nit:281 */
1658 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1659 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1660 if (UNTAG_Bool(REGB3)) {
1661 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1662 }
1663 /* ./../lib/standard//collection//array.nit:718 */
1664 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1665 /* ./../lib/standard//collection//array.nit:281 */
1666 goto label1;
1667 label1: while(0);
1668 /* ./syntax//typing.nit:249 */
1669 fra.me.REG[4] = fra.me.REG[5];
1670 /* ./syntax//typing.nit:250 */
1671 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1672 if (UNTAG_Bool(REGB2)) {
1673 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1674 }
1675 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1676 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1677 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1678 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1679 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1680 fra.me.REG[1] = fra.me.REG[6];
1681 }
1682 /* ./syntax//typing.nit:252 */
1683 REGB2 = TAG_Int(0);
1684 /* ./syntax//typing.nit:253 */
1685 while(1) {
1686 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1687 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1688 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1689 /* ./../lib/standard//collection//array.nit:24 */
1690 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1691 if (UNTAG_Bool(REGB3)) {
1692 } else {
1693 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1694 }
1695 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1696 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1697 if (UNTAG_Bool(REGB4)) {
1698 } else {
1699 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1700 }
1701 /* ./../lib/standard//kernel.nit:232 */
1702 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1703 /* ./syntax//typing.nit:253 */
1704 if (UNTAG_Bool(REGB3)) {
1705 /* ./syntax//typing.nit:254 */
1706 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1707 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1708 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1709 /* ./../lib/standard//collection//array.nit:278 */
1710 REGB3 = REGB2;
1711 /* ./../lib/standard//collection//array.nit:280 */
1712 REGB4 = TAG_Int(0);
1713 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1714 if (UNTAG_Bool(REGB5)) {
1715 } else {
1716 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1717 }
1718 /* ./../lib/standard//kernel.nit:233 */
1719 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1720 /* ./../lib/standard//collection//array.nit:280 */
1721 if (UNTAG_Bool(REGB4)) {
1722 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1723 if (UNTAG_Bool(REGB4)) {
1724 } else {
1725 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1726 }
1727 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1728 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1729 if (UNTAG_Bool(REGB5)) {
1730 } else {
1731 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1732 }
1733 /* ./../lib/standard//kernel.nit:232 */
1734 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1735 } else {
1736 /* ./../lib/standard//collection//array.nit:280 */
1737 REGB5 = TAG_Bool(false);
1738 REGB4 = REGB5;
1739 }
1740 if (UNTAG_Bool(REGB4)) {
1741 } else {
1742 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1743 }
1744 /* ./../lib/standard//collection//array.nit:281 */
1745 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1746 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1747 if (UNTAG_Bool(REGB4)) {
1748 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1749 }
1750 /* ./../lib/standard//collection//array.nit:718 */
1751 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1752 /* ./../lib/standard//collection//array.nit:281 */
1753 goto label2;
1754 label2: while(0);
1755 /* ./syntax//typing.nit:255 */
1756 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1757 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1758 if (UNTAG_Bool(REGB3)) {
1759 REGB3 = TAG_Bool(true);
1760 } else {
1761 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1762 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1763 REGB3 = REGB4;
1764 }
1765 if (UNTAG_Bool(REGB3)) {
1766 REGB3 = TAG_Bool(true);
1767 } else {
1768 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1769 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1770 REGB3 = REGB4;
1771 }
1772 if (UNTAG_Bool(REGB3)) {
1773 REGB3 = TAG_Bool(true);
1774 } else {
1775 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1776 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1777 REGB3 = REGB4;
1778 }
1779 if (UNTAG_Bool(REGB3)) {
1780 /* ./syntax//typing.nit:256 */
1781 REGB3 = TAG_Int(1);
1782 /* ./../lib/standard//kernel.nit:235 */
1783 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1784 /* ./syntax//typing.nit:256 */
1785 REGB2 = REGB3;
1786 } else {
1787 /* ./syntax//typing.nit:257 */
1788 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1789 if (UNTAG_Bool(REGB3)) {
1790 } else {
1791 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1792 if (UNTAG_Bool(REGB4)) {
1793 REGB4 = TAG_Bool(false);
1794 REGB3 = REGB4;
1795 } else {
1796 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1797 REGB3 = REGB4;
1798 }
1799 }
1800 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1801 if (UNTAG_Bool(REGB3)) {
1802 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1803 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1804 if (UNTAG_Bool(REGB3)) {
1805 REGB3 = TAG_Bool(true);
1806 } else {
1807 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1808 if (UNTAG_Bool(REGB4)) {
1809 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1810 }
1811 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1812 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1813 REGB3 = REGB4;
1814 }
1815 } else {
1816 REGB4 = TAG_Bool(false);
1817 REGB3 = REGB4;
1818 }
1819 if (UNTAG_Bool(REGB3)) {
1820 /* ./syntax//typing.nit:258 */
1821 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1822 if (UNTAG_Bool(REGB3)) {
1823 } else {
1824 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1825 REGB3 = REGB4;
1826 }
1827 if (UNTAG_Bool(REGB3)) {
1828 REGB3 = TAG_Int(1);
1829 /* ./../lib/standard//kernel.nit:235 */
1830 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1831 /* ./syntax//typing.nit:258 */
1832 REGB2 = REGB3;
1833 }
1834 /* ./syntax//typing.nit:259 */
1835 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1836 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1837 if (UNTAG_Bool(REGB3)) {
1838 } else {
1839 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1840 }
1841 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1842 /* ./syntax//typing.nit:260 */
1843 REGB3 = TAG_Int(1);
1844 /* ./../lib/standard//kernel.nit:235 */
1845 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1846 /* ./syntax//typing.nit:260 */
1847 REGB0 = REGB3;
1848 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1849 if (UNTAG_Bool(REGB3)) {
1850 } else {
1851 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1852 }
1853 /* ./../lib/standard//kernel.nit:232 */
1854 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1855 /* ./syntax//typing.nit:261 */
1856 if (UNTAG_Bool(REGB3)) {
1857 /* ./syntax//typing.nit:262 */
1858 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1859 /* ./../lib/standard//collection//array.nit:278 */
1860 REGB3 = REGB0;
1861 /* ./../lib/standard//collection//array.nit:280 */
1862 REGB4 = TAG_Int(0);
1863 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1864 if (UNTAG_Bool(REGB5)) {
1865 } else {
1866 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1867 }
1868 /* ./../lib/standard//kernel.nit:233 */
1869 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1870 /* ./../lib/standard//collection//array.nit:280 */
1871 if (UNTAG_Bool(REGB4)) {
1872 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1873 if (UNTAG_Bool(REGB4)) {
1874 } else {
1875 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1876 }
1877 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1878 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1879 if (UNTAG_Bool(REGB5)) {
1880 } else {
1881 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1882 }
1883 /* ./../lib/standard//kernel.nit:232 */
1884 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1885 } else {
1886 /* ./../lib/standard//collection//array.nit:280 */
1887 REGB5 = TAG_Bool(false);
1888 REGB4 = REGB5;
1889 }
1890 if (UNTAG_Bool(REGB4)) {
1891 } else {
1892 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1893 }
1894 /* ./../lib/standard//collection//array.nit:281 */
1895 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1896 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1897 if (UNTAG_Bool(REGB4)) {
1898 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1899 }
1900 /* ./../lib/standard//collection//array.nit:718 */
1901 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1902 /* ./../lib/standard//collection//array.nit:281 */
1903 goto label3;
1904 label3: while(0);
1905 /* ./syntax//typing.nit:262 */
1906 fra.me.REG[4] = fra.me.REG[5];
1907 /* ./syntax//typing.nit:263 */
1908 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1909 if (UNTAG_Bool(REGB3)) {
1910 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1911 }
1912 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1913 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1914 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1915 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1916 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1917 fra.me.REG[1] = fra.me.REG[7];
1918 } else {
1919 /* ./syntax//typing.nit:265 */
1920 fra.me.REG[4] = NIT_NULL;
1921 /* ./syntax//typing.nit:266 */
1922 fra.me.REG[1] = NIT_NULL;
1923 }
1924 } else {
1925 /* ./syntax//typing.nit:269 */
1926 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1927 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]);
1928 /* ./syntax//typing.nit:270 */
1929 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1930 if (UNTAG_Bool(REGB3)) {
1931 } else {
1932 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1933 if (UNTAG_Bool(REGB4)) {
1934 REGB4 = TAG_Bool(false);
1935 REGB3 = REGB4;
1936 } else {
1937 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1938 REGB3 = REGB4;
1939 }
1940 }
1941 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1942 if (UNTAG_Bool(REGB3)) {
1943 /* ./syntax//typing.nit:271 */
1944 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1945 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1946 }
1947 /* ./syntax//typing.nit:273 */
1948 REGB3 = TAG_Int(1);
1949 /* ./../lib/standard//kernel.nit:235 */
1950 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1951 /* ./syntax//typing.nit:273 */
1952 REGB2 = REGB3;
1953 }
1954 }
1955 } else {
1956 /* ./syntax//typing.nit:253 */
1957 goto label4;
1958 }
1959 }
1960 label4: while(0);
1961 }
1962 stack_frame_head = fra.me.prev;
1963 return;
1964 }
1965 void syntax___typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
1966 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1967 val_t REGB0;
1968 val_t tmp;
1969 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1970 fra.me.file = LOCATE_syntax___typing;
1971 fra.me.line = 281;
1972 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___accept_typing;
1973 fra.me.has_broke = 0;
1974 fra.me.REG_size = 3;
1975 fra.me.nitni_local_ref_head = NULL;
1976 fra.me.REG[0] = NIT_NULL;
1977 fra.me.REG[1] = NIT_NULL;
1978 fra.me.REG[2] = NIT_NULL;
1979 fra.me.REG[0] = p0;
1980 fra.me.REG[1] = p1;
1981 /* ./syntax//typing.nit:281 */
1982 fra.me.REG[2] = fra.me.REG[1];
1983 /* ./syntax//typing.nit:283 */
1984 REGB0 = TAG_Bool(false);
1985 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
1986 /* ./syntax//typing.nit:284 */
1987 CALL_SUPER_syntax___typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1988 stack_frame_head = fra.me.prev;
1989 return;
1990 }
1991 void syntax___typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
1992 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1993 val_t tmp;
1994 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1995 fra.me.file = LOCATE_syntax___typing;
1996 fra.me.line = 286;
1997 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___after_typing;
1998 fra.me.has_broke = 0;
1999 fra.me.REG_size = 2;
2000 fra.me.nitni_local_ref_head = NULL;
2001 fra.me.REG[0] = NIT_NULL;
2002 fra.me.REG[1] = NIT_NULL;
2003 fra.me.REG[0] = p0;
2004 fra.me.REG[1] = p1;
2005 /* ./syntax//typing.nit:288 */
2006 CALL_SUPER_syntax___typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2007 stack_frame_head = fra.me.prev;
2008 return;
2009 }
2010 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
2011 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2012 val_t tmp;
2013 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2014 fra.me.file = LOCATE_syntax___typing;
2015 fra.me.line = 293;
2016 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
2017 fra.me.has_broke = 0;
2018 fra.me.REG_size = 2;
2019 fra.me.nitni_local_ref_head = NULL;
2020 fra.me.REG[0] = NIT_NULL;
2021 fra.me.REG[1] = NIT_NULL;
2022 fra.me.REG[0] = p0;
2023 fra.me.REG[1] = p1;
2024 /* ./syntax//typing.nit:295 */
2025 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2026 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2027 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2028 stack_frame_head = fra.me.prev;
2029 return;
2030 }
2031 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
2032 struct {struct stack_frame_t me;} fra;
2033 val_t tmp;
2034 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2035 fra.me.file = LOCATE_syntax___typing;
2036 fra.me.line = 300;
2037 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
2038 fra.me.has_broke = 0;
2039 fra.me.REG_size = 1;
2040 fra.me.nitni_local_ref_head = NULL;
2041 fra.me.REG[0] = NIT_NULL;
2042 fra.me.REG[0] = p0;
2043 /* ./syntax//typing.nit:300 */
2044 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
2045 stack_frame_head = fra.me.prev;
2046 return fra.me.REG[0];
2047 }
2048 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
2049 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
2050 val_t REGB0;
2051 val_t REGB1;
2052 val_t REGB2;
2053 val_t tmp;
2054 static val_t once_value_1; /* Once value */
2055 static val_t once_value_2; /* Once value */
2056 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2057 fra.me.file = LOCATE_syntax___typing;
2058 fra.me.line = 303;
2059 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
2060 fra.me.has_broke = 0;
2061 fra.me.REG_size = 10;
2062 fra.me.nitni_local_ref_head = NULL;
2063 fra.me.REG[0] = NIT_NULL;
2064 fra.me.REG[1] = NIT_NULL;
2065 fra.me.REG[2] = NIT_NULL;
2066 fra.me.REG[3] = NIT_NULL;
2067 fra.me.REG[4] = NIT_NULL;
2068 fra.me.REG[5] = NIT_NULL;
2069 fra.me.REG[6] = NIT_NULL;
2070 fra.me.REG[7] = NIT_NULL;
2071 fra.me.REG[8] = NIT_NULL;
2072 fra.me.REG[9] = NIT_NULL;
2073 fra.me.REG[0] = p0;
2074 fra.me.REG[1] = p1;
2075 /* ./syntax//typing.nit:303 */
2076 fra.me.REG[2] = fra.me.REG[0];
2077 fra.me.REG[3] = fra.me.REG[1];
2078 /* ./syntax//typing.nit:306 */
2079 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2080 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2081 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2082 /* ./syntax//typing.nit:308 */
2083 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2084 /* ./syntax//typing.nit:309 */
2085 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2086 /* ./syntax//typing.nit:310 */
2087 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2088 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2089 /* ./syntax//typing.nit:312 */
2090 fra.me.REG[6] = NIT_NULL;
2091 /* ./syntax//typing.nit:313 */
2092 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2093 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2094 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2095 if (UNTAG_Bool(REGB0)) {
2096 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 313);
2097 }
2098 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2099 /* ./syntax//typing.nit:314 */
2100 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2101 if (UNTAG_Bool(REGB0)) {
2102 } else {
2103 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2104 if (UNTAG_Bool(REGB1)) {
2105 REGB1 = TAG_Bool(false);
2106 REGB0 = REGB1;
2107 } else {
2108 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2109 REGB0 = REGB1;
2110 }
2111 }
2112 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2113 if (UNTAG_Bool(REGB0)) {
2114 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2115 fra.me.REG[6] = fra.me.REG[8];
2116 }
2117 /* ./syntax//typing.nit:315 */
2118 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2119 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2120 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2121 /* ./syntax//typing.nit:316 */
2122 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2123 /* ./syntax//typing.nit:317 */
2124 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2125 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2126 /* ./syntax//typing.nit:319 */
2127 REGB0 = TAG_Bool(true);
2128 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2129 /* ./syntax//typing.nit:321 */
2130 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2131 /* ./syntax//typing.nit:323 */
2132 REGB0 = TAG_Bool(false);
2133 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2134 /* ./syntax//typing.nit:325 */
2135 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2136 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2137 if (UNTAG_Bool(REGB0)) {
2138 } else {
2139 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2140 if (UNTAG_Bool(REGB1)) {
2141 REGB1 = TAG_Bool(false);
2142 REGB0 = REGB1;
2143 } else {
2144 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2145 REGB0 = REGB1;
2146 }
2147 }
2148 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2149 if (UNTAG_Bool(REGB0)) {
2150 /* ./syntax//typing.nit:326 */
2151 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2152 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2153 REGB1 = TAG_Bool(false);
2154 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2155 if (UNTAG_Bool(REGB2)) {
2156 } else {
2157 /* ./../lib/standard//kernel.nit:195 */
2158 REGB1 = TAG_Bool((REGB0)==(REGB1));
2159 /* ./syntax//typing.nit:326 */
2160 REGB2 = REGB1;
2161 }
2162 if (UNTAG_Bool(REGB2)) {
2163 /* ./syntax//typing.nit:327 */
2164 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2165 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2166 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2167 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2168 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2169 if (UNTAG_Bool(REGB2)) {
2170 } else {
2171 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2172 if (UNTAG_Bool(REGB1)) {
2173 REGB1 = TAG_Bool(false);
2174 REGB2 = REGB1;
2175 } else {
2176 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2177 REGB2 = REGB1;
2178 }
2179 }
2180 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2181 if (UNTAG_Bool(REGB2)) {
2182 /* ./syntax//typing.nit:328 */
2183 if (!once_value_1) {
2184 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2185 REGB2 = TAG_Int(77);
2186 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
2187 once_value_1 = fra.me.REG[1];
2188 register_static_object(&once_value_1);
2189 } else fra.me.REG[1] = once_value_1;
2190 fra.me.REG[1] = fra.me.REG[1];
2191 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2192 } else {
2193 /* ./syntax//typing.nit:329 */
2194 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2195 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2196 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2197 if (UNTAG_Bool(REGB2)) {
2198 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2199 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2200 if (UNTAG_Bool(REGB2)) {
2201 } else {
2202 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2203 if (UNTAG_Bool(REGB1)) {
2204 REGB1 = TAG_Bool(false);
2205 REGB2 = REGB1;
2206 } else {
2207 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2208 REGB2 = REGB1;
2209 }
2210 }
2211 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2212 } else {
2213 REGB1 = TAG_Bool(false);
2214 REGB2 = REGB1;
2215 }
2216 if (UNTAG_Bool(REGB2)) {
2217 /* ./syntax//typing.nit:330 */
2218 if (!once_value_2) {
2219 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2220 REGB2 = TAG_Int(80);
2221 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
2222 once_value_2 = fra.me.REG[8];
2223 register_static_object(&once_value_2);
2224 } else fra.me.REG[8] = once_value_2;
2225 fra.me.REG[8] = fra.me.REG[8];
2226 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2227 }
2228 }
2229 }
2230 }
2231 /* ./syntax//typing.nit:334 */
2232 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2233 if (UNTAG_Bool(REGB2)) {
2234 } else {
2235 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2236 if (UNTAG_Bool(REGB1)) {
2237 REGB1 = TAG_Bool(false);
2238 REGB2 = REGB1;
2239 } else {
2240 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2241 REGB2 = REGB1;
2242 }
2243 }
2244 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2245 if (UNTAG_Bool(REGB2)) {
2246 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2247 if (UNTAG_Bool(REGB2)) {
2248 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 334);
2249 }
2250 /* ./../lib/standard//collection//array.nit:269 */
2251 REGB2 = TAG_Int(0);
2252 /* ./../lib/standard//collection//array.nit:270 */
2253 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2254 if (UNTAG_Bool(REGB1)) {
2255 } else {
2256 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2257 }
2258 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2259 /* ./../lib/standard//collection//array.nit:271 */
2260 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2261 /* ./../lib/standard//collection//array.nit:272 */
2262 while(1) {
2263 /* ./../lib/standard//collection//array.nit:24 */
2264 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2265 if (UNTAG_Bool(REGB1)) {
2266 } else {
2267 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2268 }
2269 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2270 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2271 if (UNTAG_Bool(REGB0)) {
2272 } else {
2273 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2274 }
2275 /* ./../lib/standard//kernel.nit:232 */
2276 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2277 /* ./../lib/standard//collection//array.nit:272 */
2278 if (UNTAG_Bool(REGB1)) {
2279 /* ./../lib/standard//collection//array.nit:273 */
2280 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2281 if (UNTAG_Bool(REGB1)) {
2282 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2283 }
2284 /* ./../lib/standard//collection//array.nit:718 */
2285 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2286 /* ./syntax//typing.nit:335 */
2287 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2288 /* ./../lib/standard//collection//array.nit:274 */
2289 REGB1 = TAG_Int(1);
2290 /* ./../lib/standard//kernel.nit:235 */
2291 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2292 /* ./../lib/standard//collection//array.nit:274 */
2293 REGB2 = REGB1;
2294 } else {
2295 /* ./../lib/standard//collection//array.nit:272 */
2296 goto label3;
2297 }
2298 }
2299 label3: while(0);
2300 }
2301 /* ./syntax//typing.nit:338 */
2302 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2303 /* ./syntax//typing.nit:339 */
2304 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2305 /* ./syntax//typing.nit:340 */
2306 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2307 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2308 stack_frame_head = fra.me.prev;
2309 return;
2310 }
2311 val_t syntax___typing___AType___stype(val_t p0){
2312 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2313 val_t REGB0;
2314 val_t tmp;
2315 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2316 fra.me.file = LOCATE_syntax___typing;
2317 fra.me.line = 345;
2318 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2319 fra.me.has_broke = 0;
2320 fra.me.REG_size = 2;
2321 fra.me.nitni_local_ref_head = NULL;
2322 fra.me.REG[0] = NIT_NULL;
2323 fra.me.REG[1] = NIT_NULL;
2324 fra.me.REG[0] = p0;
2325 /* ./syntax//typing.nit:345 */
2326 fra.me.REG[1] = fra.me.REG[0];
2327 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2328 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2329 if (UNTAG_Bool(REGB0)) {
2330 } else {
2331 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 345);
2332 }
2333 goto label1;
2334 label1: while(0);
2335 stack_frame_head = fra.me.prev;
2336 return fra.me.REG[1];
2337 }
2338 val_t syntax___typing___AType___is_typed(val_t p0){
2339 struct {struct stack_frame_t me;} fra;
2340 val_t REGB0;
2341 val_t REGB1;
2342 val_t tmp;
2343 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2344 fra.me.file = LOCATE_syntax___typing;
2345 fra.me.line = 346;
2346 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2347 fra.me.has_broke = 0;
2348 fra.me.REG_size = 1;
2349 fra.me.nitni_local_ref_head = NULL;
2350 fra.me.REG[0] = NIT_NULL;
2351 fra.me.REG[0] = p0;
2352 /* ./syntax//typing.nit:346 */
2353 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2354 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2355 if (UNTAG_Bool(REGB0)) {
2356 } else {
2357 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2358 if (UNTAG_Bool(REGB1)) {
2359 REGB1 = TAG_Bool(false);
2360 REGB0 = REGB1;
2361 } else {
2362 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2363 REGB0 = REGB1;
2364 }
2365 }
2366 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2367 goto label1;
2368 label1: while(0);
2369 stack_frame_head = fra.me.prev;
2370 return REGB0;
2371 }
2372 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2373 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2374 val_t tmp;
2375 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2376 fra.me.file = LOCATE_syntax___typing;
2377 fra.me.line = 349;
2378 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2379 fra.me.has_broke = 0;
2380 fra.me.REG_size = 2;
2381 fra.me.nitni_local_ref_head = NULL;
2382 fra.me.REG[0] = NIT_NULL;
2383 fra.me.REG[1] = NIT_NULL;
2384 fra.me.REG[0] = p0;
2385 fra.me.REG[1] = p1;
2386 /* ./syntax//typing.nit:351 */
2387 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2388 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2389 stack_frame_head = fra.me.prev;
2390 return;
2391 }
2392 val_t syntax___typing___AExpr___is_typed(val_t p0){
2393 struct {struct stack_frame_t me;} fra;
2394 val_t REGB0;
2395 val_t tmp;
2396 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2397 fra.me.file = LOCATE_syntax___typing;
2398 fra.me.line = 356;
2399 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2400 fra.me.has_broke = 0;
2401 fra.me.REG_size = 1;
2402 fra.me.nitni_local_ref_head = NULL;
2403 fra.me.REG[0] = NIT_NULL;
2404 fra.me.REG[0] = p0;
2405 /* ./syntax//typing.nit:356 */
2406 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2407 if (UNTAG_Bool(REGB0)) {
2408 } else {
2409 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 356);
2410 }
2411 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2412 stack_frame_head = fra.me.prev;
2413 return REGB0;
2414 }
2415 val_t syntax___typing___AExpr___is_statement(val_t p0){
2416 struct {struct stack_frame_t me;} fra;
2417 val_t REGB0;
2418 val_t REGB1;
2419 val_t tmp;
2420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2421 fra.me.file = LOCATE_syntax___typing;
2422 fra.me.line = 357;
2423 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
2424 fra.me.has_broke = 0;
2425 fra.me.REG_size = 1;
2426 fra.me.nitni_local_ref_head = NULL;
2427 fra.me.REG[0] = NIT_NULL;
2428 fra.me.REG[0] = p0;
2429 /* ./syntax//typing.nit:357 */
2430 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2431 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2432 if (UNTAG_Bool(REGB0)) {
2433 } else {
2434 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2435 if (UNTAG_Bool(REGB1)) {
2436 REGB1 = TAG_Bool(false);
2437 REGB0 = REGB1;
2438 } else {
2439 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2440 REGB0 = REGB1;
2441 }
2442 }
2443 goto label1;
2444 label1: while(0);
2445 stack_frame_head = fra.me.prev;
2446 return REGB0;
2447 }
2448 val_t syntax___typing___AExpr___stype(val_t p0){
2449 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2450 val_t REGB0;
2451 val_t tmp;
2452 static val_t once_value_1; /* Once value */
2453 static val_t once_value_2; /* Once value */
2454 static val_t once_value_3; /* Once value */
2455 static val_t once_value_4; /* Once value */
2456 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2457 fra.me.file = LOCATE_syntax___typing;
2458 fra.me.line = 358;
2459 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2460 fra.me.has_broke = 0;
2461 fra.me.REG_size = 4;
2462 fra.me.nitni_local_ref_head = NULL;
2463 fra.me.REG[0] = NIT_NULL;
2464 fra.me.REG[1] = NIT_NULL;
2465 fra.me.REG[2] = NIT_NULL;
2466 fra.me.REG[3] = NIT_NULL;
2467 fra.me.REG[0] = p0;
2468 /* ./syntax//typing.nit:358 */
2469 fra.me.REG[1] = fra.me.REG[0];
2470 /* ./syntax//typing.nit:360 */
2471 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2472 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2473 if (UNTAG_Bool(REGB0)) {
2474 /* ./syntax//typing.nit:361 */
2475 REGB0 = TAG_Int(3);
2476 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2477 if (!once_value_1) {
2478 fra.me.REG[3] = BOX_NativeString("");
2479 REGB0 = TAG_Int(0);
2480 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2481 once_value_1 = fra.me.REG[3];
2482 register_static_object(&once_value_1);
2483 } else fra.me.REG[3] = once_value_1;
2484 fra.me.REG[3] = fra.me.REG[3];
2485 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2486 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2487 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2488 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2489 if (!once_value_2) {
2490 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2491 REGB0 = TAG_Int(14);
2492 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2493 once_value_2 = fra.me.REG[3];
2494 register_static_object(&once_value_2);
2495 } else fra.me.REG[3] = once_value_2;
2496 fra.me.REG[3] = fra.me.REG[3];
2497 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2498 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2499 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2500 /* ./syntax//typing.nit:362 */
2501 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 362);
2502 }
2503 /* ./syntax//typing.nit:364 */
2504 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2505 if (UNTAG_Bool(REGB0)) {
2506 /* ./syntax//typing.nit:365 */
2507 REGB0 = TAG_Int(3);
2508 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2509 if (!once_value_3) {
2510 fra.me.REG[3] = BOX_NativeString("");
2511 REGB0 = TAG_Int(0);
2512 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2513 once_value_3 = fra.me.REG[3];
2514 register_static_object(&once_value_3);
2515 } else fra.me.REG[3] = once_value_3;
2516 fra.me.REG[3] = fra.me.REG[3];
2517 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2518 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2519 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2520 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2521 if (!once_value_4) {
2522 fra.me.REG[3] = BOX_NativeString(": is_statement");
2523 REGB0 = TAG_Int(14);
2524 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2525 once_value_4 = fra.me.REG[3];
2526 register_static_object(&once_value_4);
2527 } else fra.me.REG[3] = once_value_4;
2528 fra.me.REG[3] = fra.me.REG[3];
2529 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2530 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2531 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2532 /* ./syntax//typing.nit:366 */
2533 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 366);
2534 }
2535 /* ./syntax//typing.nit:368 */
2536 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2537 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2538 if (UNTAG_Bool(REGB0)) {
2539 } else {
2540 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 368);
2541 }
2542 goto label5;
2543 label5: while(0);
2544 stack_frame_head = fra.me.prev;
2545 return fra.me.REG[1];
2546 }
2547 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2548 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2549 val_t REGB0;
2550 val_t tmp;
2551 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2552 fra.me.file = LOCATE_syntax___typing;
2553 fra.me.line = 372;
2554 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2555 fra.me.has_broke = 0;
2556 fra.me.REG_size = 2;
2557 fra.me.nitni_local_ref_head = NULL;
2558 fra.me.REG[0] = NIT_NULL;
2559 fra.me.REG[1] = NIT_NULL;
2560 fra.me.REG[0] = p0;
2561 fra.me.REG[1] = p1;
2562 /* ./syntax//typing.nit:375 */
2563 REGB0 = TAG_Bool(true);
2564 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2565 stack_frame_head = fra.me.prev;
2566 return;
2567 }
2568 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2569 struct {struct stack_frame_t me;} fra;
2570 val_t REGB0;
2571 val_t tmp;
2572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2573 fra.me.file = LOCATE_syntax___typing;
2574 fra.me.line = 378;
2575 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2576 fra.me.has_broke = 0;
2577 fra.me.REG_size = 1;
2578 fra.me.nitni_local_ref_head = NULL;
2579 fra.me.REG[0] = NIT_NULL;
2580 fra.me.REG[0] = p0;
2581 /* ./syntax//typing.nit:379 */
2582 REGB0 = TAG_Bool(false);
2583 goto label1;
2584 label1: while(0);
2585 stack_frame_head = fra.me.prev;
2586 return REGB0;
2587 }
2588 val_t syntax___typing___AExpr___is_self(val_t p0){
2589 struct {struct stack_frame_t me;} fra;
2590 val_t REGB0;
2591 val_t tmp;
2592 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2593 fra.me.file = LOCATE_syntax___typing;
2594 fra.me.line = 381;
2595 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2596 fra.me.has_broke = 0;
2597 fra.me.REG_size = 1;
2598 fra.me.nitni_local_ref_head = NULL;
2599 fra.me.REG[0] = NIT_NULL;
2600 fra.me.REG[0] = p0;
2601 /* ./syntax//typing.nit:382 */
2602 REGB0 = TAG_Bool(false);
2603 goto label1;
2604 label1: while(0);
2605 stack_frame_head = fra.me.prev;
2606 return REGB0;
2607 }
2608 val_t syntax___typing___AExpr___its_variable(val_t p0){
2609 struct {struct stack_frame_t me;} fra;
2610 val_t tmp;
2611 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2612 fra.me.file = LOCATE_syntax___typing;
2613 fra.me.line = 384;
2614 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2615 fra.me.has_broke = 0;
2616 fra.me.REG_size = 1;
2617 fra.me.nitni_local_ref_head = NULL;
2618 fra.me.REG[0] = NIT_NULL;
2619 fra.me.REG[0] = p0;
2620 /* ./syntax//typing.nit:385 */
2621 fra.me.REG[0] = NIT_NULL;
2622 goto label1;
2623 label1: while(0);
2624 stack_frame_head = fra.me.prev;
2625 return fra.me.REG[0];
2626 }
2627 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2628 struct {struct stack_frame_t me;} fra;
2629 val_t tmp;
2630 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2631 fra.me.file = LOCATE_syntax___typing;
2632 fra.me.line = 387;
2633 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2634 fra.me.has_broke = 0;
2635 fra.me.REG_size = 1;
2636 fra.me.nitni_local_ref_head = NULL;
2637 fra.me.REG[0] = NIT_NULL;
2638 fra.me.REG[0] = p0;
2639 /* ./syntax//typing.nit:387 */
2640 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2641 stack_frame_head = fra.me.prev;
2642 return fra.me.REG[0];
2643 }
2644 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2645 struct {struct stack_frame_t me;} fra;
2646 val_t tmp;
2647 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2648 fra.me.file = LOCATE_syntax___typing;
2649 fra.me.line = 390;
2650 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2651 fra.me.has_broke = 0;
2652 fra.me.REG_size = 1;
2653 fra.me.nitni_local_ref_head = NULL;
2654 fra.me.REG[0] = NIT_NULL;
2655 fra.me.REG[0] = p0;
2656 /* ./syntax//typing.nit:390 */
2657 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2658 stack_frame_head = fra.me.prev;
2659 return fra.me.REG[0];
2660 }
2661 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2662 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2663 val_t REGB0;
2664 val_t tmp;
2665 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2666 fra.me.file = LOCATE_syntax___typing;
2667 fra.me.line = 396;
2668 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2669 fra.me.has_broke = 0;
2670 fra.me.REG_size = 2;
2671 fra.me.nitni_local_ref_head = NULL;
2672 fra.me.REG[0] = NIT_NULL;
2673 fra.me.REG[1] = NIT_NULL;
2674 fra.me.REG[0] = p0;
2675 /* ./syntax//typing.nit:396 */
2676 fra.me.REG[1] = fra.me.REG[0];
2677 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2678 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2679 if (UNTAG_Bool(REGB0)) {
2680 } else {
2681 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 396);
2682 }
2683 goto label1;
2684 label1: while(0);
2685 stack_frame_head = fra.me.prev;
2686 return fra.me.REG[1];
2687 }
2688 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2689 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2690 val_t REGB0;
2691 val_t REGB1;
2692 val_t tmp;
2693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2694 fra.me.file = LOCATE_syntax___typing;
2695 fra.me.line = 398;
2696 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2697 fra.me.has_broke = 0;
2698 fra.me.REG_size = 5;
2699 fra.me.nitni_local_ref_head = NULL;
2700 fra.me.REG[0] = NIT_NULL;
2701 fra.me.REG[1] = NIT_NULL;
2702 fra.me.REG[2] = NIT_NULL;
2703 fra.me.REG[3] = NIT_NULL;
2704 fra.me.REG[4] = NIT_NULL;
2705 fra.me.REG[0] = p0;
2706 fra.me.REG[1] = p1;
2707 /* ./syntax//typing.nit:400 */
2708 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2709 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2710 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2711 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2712 /* ./syntax//typing.nit:401 */
2713 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2714 /* ./syntax//typing.nit:402 */
2715 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2716 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2717 /* ./syntax//typing.nit:403 */
2718 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2719 /* ./syntax//typing.nit:404 */
2720 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2721 if (UNTAG_Bool(REGB0)) {
2722 } else {
2723 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2724 if (UNTAG_Bool(REGB1)) {
2725 REGB1 = TAG_Bool(false);
2726 REGB0 = REGB1;
2727 } else {
2728 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2729 REGB0 = REGB1;
2730 }
2731 }
2732 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2733 if (UNTAG_Bool(REGB0)) {
2734 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2735 }
2736 /* ./syntax//typing.nit:406 */
2737 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2738 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2739 if (UNTAG_Bool(REGB0)) {
2740 } else {
2741 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2742 if (UNTAG_Bool(REGB1)) {
2743 REGB1 = TAG_Bool(false);
2744 REGB0 = REGB1;
2745 } else {
2746 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2747 REGB0 = REGB1;
2748 }
2749 }
2750 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2751 if (UNTAG_Bool(REGB0)) {
2752 /* ./syntax//typing.nit:407 */
2753 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2754 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2755 if (UNTAG_Bool(REGB0)) {
2756 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 407);
2757 }
2758 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2759 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2760 if (UNTAG_Bool(REGB0)) {
2761 goto label1;
2762 }
2763 /* ./syntax//typing.nit:408 */
2764 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2765 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2766 if (UNTAG_Bool(REGB0)) {
2767 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 408);
2768 }
2769 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2770 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2771 /* ./syntax//typing.nit:409 */
2772 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2773 if (UNTAG_Bool(REGB0)) {
2774 } else {
2775 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2776 if (UNTAG_Bool(REGB1)) {
2777 REGB1 = TAG_Bool(false);
2778 REGB0 = REGB1;
2779 } else {
2780 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2781 REGB0 = REGB1;
2782 }
2783 }
2784 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2785 if (UNTAG_Bool(REGB0)) {
2786 /* ./syntax//typing.nit:410 */
2787 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2788 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2789 }
2790 } else {
2791 /* ./syntax//typing.nit:412 */
2792 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2793 if (UNTAG_Bool(REGB0)) {
2794 } else {
2795 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2796 if (UNTAG_Bool(REGB1)) {
2797 REGB1 = TAG_Bool(false);
2798 REGB0 = REGB1;
2799 } else {
2800 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2801 REGB0 = REGB1;
2802 }
2803 }
2804 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2805 if (UNTAG_Bool(REGB0)) {
2806 /* ./syntax//typing.nit:413 */
2807 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2808 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2809 if (UNTAG_Bool(REGB0)) {
2810 goto label1;
2811 }
2812 /* ./syntax//typing.nit:414 */
2813 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2814 if (UNTAG_Bool(REGB0)) {
2815 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 414);
2816 }
2817 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2818 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2819 } else {
2820 /* ./syntax//typing.nit:416 */
2821 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2822 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2823 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2824 }
2825 }
2826 /* ./syntax//typing.nit:418 */
2827 REGB0 = TAG_Bool(true);
2828 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2829 label1: while(0);
2830 stack_frame_head = fra.me.prev;
2831 return;
2832 }
2833 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2834 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2835 val_t REGB0;
2836 val_t tmp;
2837 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2838 fra.me.file = LOCATE_syntax___typing;
2839 fra.me.line = 423;
2840 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2841 fra.me.has_broke = 0;
2842 fra.me.REG_size = 3;
2843 fra.me.nitni_local_ref_head = NULL;
2844 fra.me.REG[0] = NIT_NULL;
2845 fra.me.REG[1] = NIT_NULL;
2846 fra.me.REG[2] = NIT_NULL;
2847 fra.me.REG[0] = p0;
2848 fra.me.REG[1] = p1;
2849 /* ./syntax//typing.nit:425 */
2850 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2851 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));
2852 /* ./syntax//typing.nit:434 */
2853 REGB0 = TAG_Bool(true);
2854 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2855 stack_frame_head = fra.me.prev;
2856 return;
2857 }
2858 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){
2859 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2860 val_t REGB0;
2861 fun_t CREG[1];
2862 val_t tmp;
2863 static val_t once_value_2; /* Once value */
2864 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2865 fra.me.file = LOCATE_syntax___typing;
2866 fra.me.line = 0;
2867 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2868 fra.me.has_broke = 0;
2869 fra.me.REG_size = 2;
2870 fra.me.nitni_local_ref_head = NULL;
2871 fra.me.REG[0] = NIT_NULL;
2872 fra.me.REG[1] = NIT_NULL;
2873 fra.me.closure_ctx = closctx_param;
2874 fra.me.closure_funs = CREG;
2875 fra.me.REG[0] = p0;
2876 CREG[0] = clos_fun0;
2877 /* ./syntax//typing.nit:426 */
2878 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2879 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2880 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2881 if (UNTAG_Bool(REGB0)) {
2882 /* ./syntax//typing.nit:427 */
2883 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2884 } else {
2885 /* ./syntax//typing.nit:428 */
2886 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2887 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
2888 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2889 if (UNTAG_Bool(REGB0)) {
2890 /* ./syntax//typing.nit:429 */
2891 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2892 REGB0 = TAG_Bool(true);
2893 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
2894 /* ./syntax//typing.nit:430 */
2895 if (!once_value_2) {
2896 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
2897 REGB0 = TAG_Int(29);
2898 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
2899 once_value_2 = fra.me.REG[1];
2900 register_static_object(&once_value_2);
2901 } else fra.me.REG[1] = once_value_2;
2902 fra.me.REG[1] = fra.me.REG[1];
2903 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
2904 }
2905 }
2906 stack_frame_head = fra.me.prev;
2907 return;
2908 }
2909 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2910 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2911 val_t REGB0;
2912 val_t REGB1;
2913 val_t tmp;
2914 static val_t once_value_1; /* Once value */
2915 static val_t once_value_3; /* Once value */
2916 static val_t once_value_4; /* Once value */
2917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2918 fra.me.file = LOCATE_syntax___typing;
2919 fra.me.line = 439;
2920 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
2921 fra.me.has_broke = 0;
2922 fra.me.REG_size = 5;
2923 fra.me.nitni_local_ref_head = NULL;
2924 fra.me.REG[0] = NIT_NULL;
2925 fra.me.REG[1] = NIT_NULL;
2926 fra.me.REG[2] = NIT_NULL;
2927 fra.me.REG[3] = NIT_NULL;
2928 fra.me.REG[4] = NIT_NULL;
2929 fra.me.REG[0] = p0;
2930 fra.me.REG[1] = p1;
2931 /* ./syntax//typing.nit:441 */
2932 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2933 /* ./syntax//typing.nit:442 */
2934 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2935 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2936 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2937 if (UNTAG_Bool(REGB0)) {
2938 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 442);
2939 }
2940 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2941 /* ./syntax//typing.nit:444 */
2942 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
2943 if (UNTAG_Bool(REGB0)) {
2944 /* ./syntax//typing.nit:445 */
2945 if (!once_value_1) {
2946 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
2947 REGB0 = TAG_Int(82);
2948 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2949 once_value_1 = fra.me.REG[3];
2950 register_static_object(&once_value_1);
2951 } else fra.me.REG[3] = once_value_1;
2952 fra.me.REG[3] = fra.me.REG[3];
2953 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2954 /* ./syntax//typing.nit:446 */
2955 goto label2;
2956 }
2957 /* ./syntax//typing.nit:449 */
2958 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2959 /* ./syntax//typing.nit:450 */
2960 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2961 if (UNTAG_Bool(REGB0)) {
2962 } else {
2963 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2964 if (UNTAG_Bool(REGB1)) {
2965 REGB1 = TAG_Bool(false);
2966 REGB0 = REGB1;
2967 } else {
2968 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2969 REGB0 = REGB1;
2970 }
2971 }
2972 if (UNTAG_Bool(REGB0)) {
2973 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2974 if (UNTAG_Bool(REGB0)) {
2975 } else {
2976 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2977 if (UNTAG_Bool(REGB1)) {
2978 REGB1 = TAG_Bool(false);
2979 REGB0 = REGB1;
2980 } else {
2981 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2982 REGB0 = REGB1;
2983 }
2984 }
2985 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2986 } else {
2987 REGB1 = TAG_Bool(false);
2988 REGB0 = REGB1;
2989 }
2990 if (UNTAG_Bool(REGB0)) {
2991 /* ./syntax//typing.nit:451 */
2992 if (!once_value_3) {
2993 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2994 REGB0 = TAG_Int(42);
2995 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2996 once_value_3 = fra.me.REG[4];
2997 register_static_object(&once_value_3);
2998 } else fra.me.REG[4] = once_value_3;
2999 fra.me.REG[4] = fra.me.REG[4];
3000 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3001 } else {
3002 /* ./syntax//typing.nit:452 */
3003 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3004 if (UNTAG_Bool(REGB0)) {
3005 } else {
3006 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3007 if (UNTAG_Bool(REGB1)) {
3008 REGB1 = TAG_Bool(false);
3009 REGB0 = REGB1;
3010 } else {
3011 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3012 REGB0 = REGB1;
3013 }
3014 }
3015 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3016 if (UNTAG_Bool(REGB0)) {
3017 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3018 if (UNTAG_Bool(REGB0)) {
3019 } else {
3020 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3021 if (UNTAG_Bool(REGB1)) {
3022 REGB1 = TAG_Bool(false);
3023 REGB0 = REGB1;
3024 } else {
3025 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3026 REGB0 = REGB1;
3027 }
3028 }
3029 } else {
3030 REGB1 = TAG_Bool(false);
3031 REGB0 = REGB1;
3032 }
3033 if (UNTAG_Bool(REGB0)) {
3034 /* ./syntax//typing.nit:453 */
3035 if (!once_value_4) {
3036 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
3037 REGB0 = TAG_Int(40);
3038 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3039 once_value_4 = fra.me.REG[4];
3040 register_static_object(&once_value_4);
3041 } else fra.me.REG[4] = once_value_4;
3042 fra.me.REG[4] = fra.me.REG[4];
3043 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3044 } else {
3045 /* ./syntax//typing.nit:454 */
3046 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3047 if (UNTAG_Bool(REGB0)) {
3048 } else {
3049 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3050 if (UNTAG_Bool(REGB1)) {
3051 REGB1 = TAG_Bool(false);
3052 REGB0 = REGB1;
3053 } else {
3054 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3055 REGB0 = REGB1;
3056 }
3057 }
3058 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3059 if (UNTAG_Bool(REGB0)) {
3060 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3061 if (UNTAG_Bool(REGB0)) {
3062 } else {
3063 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3064 if (UNTAG_Bool(REGB1)) {
3065 REGB1 = TAG_Bool(false);
3066 REGB0 = REGB1;
3067 } else {
3068 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3069 REGB0 = REGB1;
3070 }
3071 }
3072 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3073 } else {
3074 REGB1 = TAG_Bool(false);
3075 REGB0 = REGB1;
3076 }
3077 if (UNTAG_Bool(REGB0)) {
3078 /* ./syntax//typing.nit:455 */
3079 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3080 }
3081 }
3082 }
3083 /* ./syntax//typing.nit:457 */
3084 REGB0 = TAG_Bool(true);
3085 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3086 label2: while(0);
3087 stack_frame_head = fra.me.prev;
3088 return;
3089 }
3090 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3091 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3092 val_t REGB0;
3093 val_t REGB1;
3094 val_t tmp;
3095 static val_t once_value_2; /* Once value */
3096 static val_t once_value_3; /* Once value */
3097 static val_t once_value_4; /* Once value */
3098 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3099 fra.me.file = LOCATE_syntax___typing;
3100 fra.me.line = 462;
3101 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3102 fra.me.has_broke = 0;
3103 fra.me.REG_size = 5;
3104 fra.me.nitni_local_ref_head = NULL;
3105 fra.me.REG[0] = NIT_NULL;
3106 fra.me.REG[1] = NIT_NULL;
3107 fra.me.REG[2] = NIT_NULL;
3108 fra.me.REG[3] = NIT_NULL;
3109 fra.me.REG[4] = NIT_NULL;
3110 fra.me.REG[0] = p0;
3111 fra.me.REG[1] = p1;
3112 /* ./syntax//typing.nit:462 */
3113 fra.me.REG[2] = fra.me.REG[0];
3114 /* ./syntax//typing.nit:464 */
3115 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3116 /* ./syntax//typing.nit:465 */
3117 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3118 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3119 /* ./syntax//typing.nit:466 */
3120 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3121 if (UNTAG_Bool(REGB0)) {
3122 } else {
3123 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3124 if (UNTAG_Bool(REGB1)) {
3125 REGB1 = TAG_Bool(false);
3126 REGB0 = REGB1;
3127 } else {
3128 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3129 REGB0 = REGB1;
3130 }
3131 }
3132 if (UNTAG_Bool(REGB0)) {
3133 goto label1;
3134 }
3135 /* ./syntax//typing.nit:468 */
3136 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3137 if (UNTAG_Bool(REGB0)) {
3138 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 468);
3139 }
3140 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[3])(fra.me.REG[3]);
3141 if (UNTAG_Bool(REGB0)) {
3142 /* ./syntax//typing.nit:469 */
3143 if (!once_value_2) {
3144 fra.me.REG[4] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3145 REGB0 = TAG_Int(39);
3146 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3147 once_value_2 = fra.me.REG[4];
3148 register_static_object(&once_value_2);
3149 } else fra.me.REG[4] = once_value_2;
3150 fra.me.REG[4] = fra.me.REG[4];
3151 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3152 /* ./syntax//typing.nit:470 */
3153 goto label1;
3154 }
3155 /* ./syntax//typing.nit:473 */
3156 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3157 if (UNTAG_Bool(REGB0)) {
3158 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 473);
3159 }
3160 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[3])(fra.me.REG[3]);
3161 /* ./syntax//typing.nit:474 */
3162 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3163 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3164 if (UNTAG_Bool(REGB0)) {
3165 } else {
3166 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3167 if (UNTAG_Bool(REGB1)) {
3168 REGB1 = TAG_Bool(false);
3169 REGB0 = REGB1;
3170 } else {
3171 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3172 REGB0 = REGB1;
3173 }
3174 }
3175 if (UNTAG_Bool(REGB0)) {
3176 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3177 if (UNTAG_Bool(REGB0)) {
3178 } else {
3179 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3180 if (UNTAG_Bool(REGB1)) {
3181 REGB1 = TAG_Bool(false);
3182 REGB0 = REGB1;
3183 } else {
3184 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3185 REGB0 = REGB1;
3186 }
3187 }
3188 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3189 } else {
3190 REGB1 = TAG_Bool(false);
3191 REGB0 = REGB1;
3192 }
3193 if (UNTAG_Bool(REGB0)) {
3194 /* ./syntax//typing.nit:475 */
3195 if (!once_value_3) {
3196 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3197 REGB0 = TAG_Int(52);
3198 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3199 once_value_3 = fra.me.REG[4];
3200 register_static_object(&once_value_3);
3201 } else fra.me.REG[4] = once_value_3;
3202 fra.me.REG[4] = fra.me.REG[4];
3203 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3204 } else {
3205 /* ./syntax//typing.nit:476 */
3206 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3207 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3208 if (UNTAG_Bool(REGB0)) {
3209 } else {
3210 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3211 if (UNTAG_Bool(REGB1)) {
3212 REGB1 = TAG_Bool(false);
3213 REGB0 = REGB1;
3214 } else {
3215 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3216 REGB0 = REGB1;
3217 }
3218 }
3219 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3220 if (UNTAG_Bool(REGB0)) {
3221 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3222 if (UNTAG_Bool(REGB0)) {
3223 } else {
3224 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3225 if (UNTAG_Bool(REGB1)) {
3226 REGB1 = TAG_Bool(false);
3227 REGB0 = REGB1;
3228 } else {
3229 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3230 REGB0 = REGB1;
3231 }
3232 }
3233 } else {
3234 REGB1 = TAG_Bool(false);
3235 REGB0 = REGB1;
3236 }
3237 if (UNTAG_Bool(REGB0)) {
3238 /* ./syntax//typing.nit:477 */
3239 if (!once_value_4) {
3240 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3241 REGB0 = TAG_Int(53);
3242 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3243 once_value_4 = fra.me.REG[4];
3244 register_static_object(&once_value_4);
3245 } else fra.me.REG[4] = once_value_4;
3246 fra.me.REG[4] = fra.me.REG[4];
3247 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3248 } else {
3249 /* ./syntax//typing.nit:478 */
3250 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3251 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3252 if (UNTAG_Bool(REGB0)) {
3253 } else {
3254 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3255 if (UNTAG_Bool(REGB1)) {
3256 REGB1 = TAG_Bool(false);
3257 REGB0 = REGB1;
3258 } else {
3259 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3260 REGB0 = REGB1;
3261 }
3262 }
3263 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3264 if (UNTAG_Bool(REGB0)) {
3265 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3266 if (UNTAG_Bool(REGB0)) {
3267 } else {
3268 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3269 if (UNTAG_Bool(REGB1)) {
3270 REGB1 = TAG_Bool(false);
3271 REGB0 = REGB1;
3272 } else {
3273 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3274 REGB0 = REGB1;
3275 }
3276 }
3277 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3278 } else {
3279 REGB1 = TAG_Bool(false);
3280 REGB0 = REGB1;
3281 }
3282 if (UNTAG_Bool(REGB0)) {
3283 /* ./syntax//typing.nit:479 */
3284 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3285 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*/;
3286 if (UNTAG_Bool(REGB0)) {
3287 } else {
3288 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 479);
3289 }
3290 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
3291 }
3292 }
3293 }
3294 /* ./syntax//typing.nit:481 */
3295 REGB0 = TAG_Bool(true);
3296 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3297 label1: while(0);
3298 stack_frame_head = fra.me.prev;
3299 return;
3300 }
3301 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3302 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3303 val_t REGB0;
3304 val_t REGB1;
3305 val_t tmp;
3306 static val_t once_value_2; /* Once value */
3307 static val_t once_value_3; /* Once value */
3308 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3309 fra.me.file = LOCATE_syntax___typing;
3310 fra.me.line = 486;
3311 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3312 fra.me.has_broke = 0;
3313 fra.me.REG_size = 6;
3314 fra.me.nitni_local_ref_head = NULL;
3315 fra.me.REG[0] = NIT_NULL;
3316 fra.me.REG[1] = NIT_NULL;
3317 fra.me.REG[2] = NIT_NULL;
3318 fra.me.REG[3] = NIT_NULL;
3319 fra.me.REG[4] = NIT_NULL;
3320 fra.me.REG[5] = NIT_NULL;
3321 fra.me.REG[0] = p0;
3322 fra.me.REG[1] = p1;
3323 /* ./syntax//typing.nit:486 */
3324 fra.me.REG[2] = fra.me.REG[0];
3325 /* ./syntax//typing.nit:488 */
3326 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3327 /* ./syntax//typing.nit:489 */
3328 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3329 /* ./syntax//typing.nit:490 */
3330 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3331 fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3332 /* ./syntax//typing.nit:491 */
3333 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3334 if (UNTAG_Bool(REGB0)) {
3335 } else {
3336 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3337 if (UNTAG_Bool(REGB1)) {
3338 REGB1 = TAG_Bool(false);
3339 REGB0 = REGB1;
3340 } else {
3341 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3342 REGB0 = REGB1;
3343 }
3344 }
3345 if (UNTAG_Bool(REGB0)) {
3346 goto label1;
3347 }
3348 /* ./syntax//typing.nit:493 */
3349 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3350 if (UNTAG_Bool(REGB0)) {
3351 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 493);
3352 }
3353 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[4])(fra.me.REG[4]);
3354 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3355 /* ./syntax//typing.nit:495 */
3356 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3357 if (UNTAG_Bool(REGB0)) {
3358 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 495);
3359 }
3360 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[4])(fra.me.REG[4]);
3361 /* ./syntax//typing.nit:496 */
3362 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3363 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3364 if (UNTAG_Bool(REGB0)) {
3365 } else {
3366 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3367 if (UNTAG_Bool(REGB1)) {
3368 REGB1 = TAG_Bool(false);
3369 REGB0 = REGB1;
3370 } else {
3371 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3372 REGB0 = REGB1;
3373 }
3374 }
3375 if (UNTAG_Bool(REGB0)) {
3376 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3377 if (UNTAG_Bool(REGB0)) {
3378 } else {
3379 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3380 if (UNTAG_Bool(REGB1)) {
3381 REGB1 = TAG_Bool(false);
3382 REGB0 = REGB1;
3383 } else {
3384 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3385 REGB0 = REGB1;
3386 }
3387 }
3388 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3389 } else {
3390 REGB1 = TAG_Bool(false);
3391 REGB0 = REGB1;
3392 }
3393 if (UNTAG_Bool(REGB0)) {
3394 /* ./syntax//typing.nit:497 */
3395 if (!once_value_2) {
3396 fra.me.REG[3] = BOX_NativeString("Error: break with a value required in this block.");
3397 REGB0 = TAG_Int(49);
3398 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3399 once_value_2 = fra.me.REG[3];
3400 register_static_object(&once_value_2);
3401 } else fra.me.REG[3] = once_value_2;
3402 fra.me.REG[3] = fra.me.REG[3];
3403 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3404 } else {
3405 /* ./syntax//typing.nit:498 */
3406 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3407 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3408 if (UNTAG_Bool(REGB0)) {
3409 } else {
3410 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3411 if (UNTAG_Bool(REGB1)) {
3412 REGB1 = TAG_Bool(false);
3413 REGB0 = REGB1;
3414 } else {
3415 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3416 REGB0 = REGB1;
3417 }
3418 }
3419 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3420 if (UNTAG_Bool(REGB0)) {
3421 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3422 if (UNTAG_Bool(REGB0)) {
3423 } else {
3424 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3425 if (UNTAG_Bool(REGB1)) {
3426 REGB1 = TAG_Bool(false);
3427 REGB0 = REGB1;
3428 } else {
3429 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3430 REGB0 = REGB1;
3431 }
3432 }
3433 } else {
3434 REGB1 = TAG_Bool(false);
3435 REGB0 = REGB1;
3436 }
3437 if (UNTAG_Bool(REGB0)) {
3438 /* ./syntax//typing.nit:499 */
3439 if (!once_value_3) {
3440 fra.me.REG[3] = BOX_NativeString("Error: break without value required in this block.");
3441 REGB0 = TAG_Int(50);
3442 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3443 once_value_3 = fra.me.REG[3];
3444 register_static_object(&once_value_3);
3445 } else fra.me.REG[3] = once_value_3;
3446 fra.me.REG[3] = fra.me.REG[3];
3447 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3448 } else {
3449 /* ./syntax//typing.nit:500 */
3450 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3451 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3452 if (UNTAG_Bool(REGB0)) {
3453 } else {
3454 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3455 if (UNTAG_Bool(REGB1)) {
3456 REGB1 = TAG_Bool(false);
3457 REGB0 = REGB1;
3458 } else {
3459 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3460 REGB0 = REGB1;
3461 }
3462 }
3463 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3464 if (UNTAG_Bool(REGB0)) {
3465 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3466 if (UNTAG_Bool(REGB0)) {
3467 } else {
3468 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3469 if (UNTAG_Bool(REGB1)) {
3470 REGB1 = TAG_Bool(false);
3471 REGB0 = REGB1;
3472 } else {
3473 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3474 REGB0 = REGB1;
3475 }
3476 }
3477 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3478 } else {
3479 REGB1 = TAG_Bool(false);
3480 REGB0 = REGB1;
3481 }
3482 if (UNTAG_Bool(REGB0)) {
3483 /* ./syntax//typing.nit:502 */
3484 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3485 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*/;
3486 if (UNTAG_Bool(REGB0)) {
3487 } else {
3488 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 502);
3489 }
3490 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3491 if (UNTAG_Bool(REGB0)) {
3492 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 502);
3493 }
3494 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3495 }
3496 }
3497 }
3498 /* ./syntax//typing.nit:504 */
3499 REGB0 = TAG_Bool(true);
3500 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3501 label1: while(0);
3502 stack_frame_head = fra.me.prev;
3503 return;
3504 }
3505 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3506 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3507 val_t REGB0;
3508 val_t tmp;
3509 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3510 fra.me.file = LOCATE_syntax___typing;
3511 fra.me.line = 509;
3512 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3513 fra.me.has_broke = 0;
3514 fra.me.REG_size = 2;
3515 fra.me.nitni_local_ref_head = NULL;
3516 fra.me.REG[0] = NIT_NULL;
3517 fra.me.REG[1] = NIT_NULL;
3518 fra.me.REG[0] = p0;
3519 fra.me.REG[1] = p1;
3520 /* ./syntax//typing.nit:511 */
3521 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3522 /* ./syntax//typing.nit:512 */
3523 REGB0 = TAG_Bool(true);
3524 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3525 stack_frame_head = fra.me.prev;
3526 return;
3527 }
3528 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3529 struct {struct stack_frame_t me;} fra;
3530 val_t tmp;
3531 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3532 fra.me.file = LOCATE_syntax___typing;
3533 fra.me.line = 519;
3534 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3535 fra.me.has_broke = 0;
3536 fra.me.REG_size = 1;
3537 fra.me.nitni_local_ref_head = NULL;
3538 fra.me.REG[0] = NIT_NULL;
3539 fra.me.REG[0] = p0;
3540 /* ./syntax//typing.nit:519 */
3541 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3542 stack_frame_head = fra.me.prev;
3543 return fra.me.REG[0];
3544 }
3545 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3546 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3547 val_t REGB0;
3548 val_t REGB1;
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 = 522;
3553 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3554 fra.me.has_broke = 0;
3555 fra.me.REG_size = 7;
3556 fra.me.nitni_local_ref_head = NULL;
3557 fra.me.REG[0] = NIT_NULL;
3558 fra.me.REG[1] = NIT_NULL;
3559 fra.me.REG[2] = NIT_NULL;
3560 fra.me.REG[3] = NIT_NULL;
3561 fra.me.REG[4] = NIT_NULL;
3562 fra.me.REG[5] = NIT_NULL;
3563 fra.me.REG[6] = NIT_NULL;
3564 fra.me.REG[0] = p0;
3565 fra.me.REG[1] = p1;
3566 fra.me.REG[2] = p2;
3567 fra.me.REG[3] = p3;
3568 REGB0 = p4;
3569 /* ./syntax//typing.nit:526 */
3570 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3571 /* ./syntax//typing.nit:527 */
3572 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3573 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3574 /* ./syntax//typing.nit:530 */
3575 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3576 /* ./syntax//typing.nit:531 */
3577 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3578 /* ./syntax//typing.nit:532 */
3579 if (UNTAG_Bool(REGB0)) {
3580 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3581 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3582 }
3583 /* ./syntax//typing.nit:535 */
3584 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3585 /* ./syntax//typing.nit:538 */
3586 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3587 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3588 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3589 if (UNTAG_Bool(REGB1)) {
3590 /* ./syntax//typing.nit:539 */
3591 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3592 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3593 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3594 }
3595 /* ./syntax//typing.nit:543 */
3596 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3597 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3598 if (UNTAG_Bool(REGB1)) {
3599 /* ./syntax//typing.nit:544 */
3600 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3601 /* ./syntax//typing.nit:545 */
3602 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3603 } else {
3604 /* ./syntax//typing.nit:547 */
3605 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3606 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]);
3607 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3608 }
3609 /* ./syntax//typing.nit:550 */
3610 if (UNTAG_Bool(REGB0)) {
3611 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3612 }
3613 /* ./syntax//typing.nit:551 */
3614 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3615 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3616 /* ./syntax//typing.nit:552 */
3617 REGB0 = TAG_Bool(true);
3618 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3619 stack_frame_head = fra.me.prev;
3620 return;
3621 }
3622 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3623 struct {struct stack_frame_t me;} fra;
3624 val_t tmp;
3625 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3626 fra.me.file = LOCATE_syntax___typing;
3627 fra.me.line = 555;
3628 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3629 fra.me.has_broke = 0;
3630 fra.me.REG_size = 0;
3631 fra.me.nitni_local_ref_head = NULL;
3632 /* ./syntax//typing.nit:555 */
3633 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 555);
3634 stack_frame_head = fra.me.prev;
3635 return;
3636 }
3637 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3638 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3639 val_t REGB0;
3640 val_t tmp;
3641 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3642 fra.me.file = LOCATE_syntax___typing;
3643 fra.me.line = 561;
3644 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3645 fra.me.has_broke = 0;
3646 fra.me.REG_size = 4;
3647 fra.me.nitni_local_ref_head = NULL;
3648 fra.me.REG[0] = NIT_NULL;
3649 fra.me.REG[1] = NIT_NULL;
3650 fra.me.REG[2] = NIT_NULL;
3651 fra.me.REG[3] = NIT_NULL;
3652 fra.me.REG[0] = p0;
3653 fra.me.REG[1] = p1;
3654 /* ./syntax//typing.nit:563 */
3655 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3656 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3657 REGB0 = TAG_Bool(false);
3658 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);
3659 stack_frame_head = fra.me.prev;
3660 return;
3661 }
3662 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3663 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3664 val_t tmp;
3665 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3666 fra.me.file = LOCATE_syntax___typing;
3667 fra.me.line = 566;
3668 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3669 fra.me.has_broke = 0;
3670 fra.me.REG_size = 2;
3671 fra.me.nitni_local_ref_head = NULL;
3672 fra.me.REG[0] = NIT_NULL;
3673 fra.me.REG[1] = NIT_NULL;
3674 fra.me.REG[0] = p0;
3675 fra.me.REG[1] = p1;
3676 /* ./syntax//typing.nit:568 */
3677 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3678 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3679 stack_frame_head = fra.me.prev;
3680 return;
3681 }
3682 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3683 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3684 val_t REGB0;
3685 val_t tmp;
3686 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3687 fra.me.file = LOCATE_syntax___typing;
3688 fra.me.line = 573;
3689 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3690 fra.me.has_broke = 0;
3691 fra.me.REG_size = 5;
3692 fra.me.nitni_local_ref_head = NULL;
3693 fra.me.REG[0] = NIT_NULL;
3694 fra.me.REG[1] = NIT_NULL;
3695 fra.me.REG[2] = NIT_NULL;
3696 fra.me.REG[3] = NIT_NULL;
3697 fra.me.REG[4] = NIT_NULL;
3698 fra.me.REG[0] = p0;
3699 fra.me.REG[1] = p1;
3700 /* ./syntax//typing.nit:575 */
3701 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3702 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3703 /* ./syntax//typing.nit:576 */
3704 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3705 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3706 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3707 /* ./syntax//typing.nit:579 */
3708 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3709 /* ./syntax//typing.nit:580 */
3710 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3711 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3712 /* ./syntax//typing.nit:583 */
3713 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3714 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3715 /* ./syntax//typing.nit:586 */
3716 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3717 /* ./syntax//typing.nit:589 */
3718 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3719 /* ./syntax//typing.nit:590 */
3720 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3721 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3722 /* ./syntax//typing.nit:593 */
3723 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3724 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3725 /* ./syntax//typing.nit:596 */
3726 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3727 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3728 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]);
3729 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3730 /* ./syntax//typing.nit:597 */
3731 REGB0 = TAG_Bool(true);
3732 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3733 stack_frame_head = fra.me.prev;
3734 return;
3735 }
3736 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3737 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3738 val_t REGB0;
3739 val_t tmp;
3740 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3741 fra.me.file = LOCATE_syntax___typing;
3742 fra.me.line = 603;
3743 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
3744 fra.me.has_broke = 0;
3745 fra.me.REG_size = 4;
3746 fra.me.nitni_local_ref_head = NULL;
3747 fra.me.REG[0] = NIT_NULL;
3748 fra.me.REG[1] = NIT_NULL;
3749 fra.me.REG[2] = NIT_NULL;
3750 fra.me.REG[3] = NIT_NULL;
3751 fra.me.REG[0] = p0;
3752 fra.me.REG[1] = p1;
3753 /* ./syntax//typing.nit:605 */
3754 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3755 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3756 REGB0 = TAG_Bool(true);
3757 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);
3758 stack_frame_head = fra.me.prev;
3759 return;
3760 }
3761 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3762 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3763 val_t REGB0;
3764 val_t tmp;
3765 static val_t once_value_1; /* Once value */
3766 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3767 fra.me.file = LOCATE_syntax___typing;
3768 fra.me.line = 608;
3769 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
3770 fra.me.has_broke = 0;
3771 fra.me.REG_size = 5;
3772 fra.me.nitni_local_ref_head = NULL;
3773 fra.me.REG[0] = NIT_NULL;
3774 fra.me.REG[1] = NIT_NULL;
3775 fra.me.REG[2] = NIT_NULL;
3776 fra.me.REG[3] = NIT_NULL;
3777 fra.me.REG[4] = NIT_NULL;
3778 fra.me.REG[0] = p0;
3779 fra.me.REG[1] = p1;
3780 /* ./syntax//typing.nit:610 */
3781 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3782 /* ./syntax//typing.nit:613 */
3783 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3784 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3785 /* ./syntax//typing.nit:614 */
3786 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3787 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3788 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3789 /* ./syntax//typing.nit:616 */
3790 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3791 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
3792 if (UNTAG_Bool(REGB0)) {
3793 /* ./syntax//typing.nit:617 */
3794 if (!once_value_1) {
3795 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3796 REGB0 = TAG_Int(47);
3797 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3798 once_value_1 = fra.me.REG[4];
3799 register_static_object(&once_value_1);
3800 } else fra.me.REG[4] = once_value_1;
3801 fra.me.REG[4] = fra.me.REG[4];
3802 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3803 }
3804 /* ./syntax//typing.nit:621 */
3805 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3806 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3807 /* ./syntax//typing.nit:624 */
3808 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3809 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3810 /* ./syntax//typing.nit:627 */
3811 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3812 /* ./syntax//typing.nit:628 */
3813 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3814 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3815 /* ./syntax//typing.nit:629 */
3816 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3817 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3818 if (UNTAG_Bool(REGB0)) {
3819 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 629);
3820 }
3821 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3822 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3823 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3824 stack_frame_head = fra.me.prev;
3825 return;
3826 }
3827 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3828 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3829 val_t REGB0;
3830 val_t tmp;
3831 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3832 fra.me.file = LOCATE_syntax___typing;
3833 fra.me.line = 635;
3834 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
3835 fra.me.has_broke = 0;
3836 fra.me.REG_size = 4;
3837 fra.me.nitni_local_ref_head = NULL;
3838 fra.me.REG[0] = NIT_NULL;
3839 fra.me.REG[1] = NIT_NULL;
3840 fra.me.REG[2] = NIT_NULL;
3841 fra.me.REG[3] = NIT_NULL;
3842 fra.me.REG[0] = p0;
3843 fra.me.REG[1] = p1;
3844 /* ./syntax//typing.nit:637 */
3845 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3846 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3847 REGB0 = TAG_Bool(true);
3848 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);
3849 stack_frame_head = fra.me.prev;
3850 return;
3851 }
3852 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
3853 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3854 val_t tmp;
3855 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3856 fra.me.file = LOCATE_syntax___typing;
3857 fra.me.line = 640;
3858 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
3859 fra.me.has_broke = 0;
3860 fra.me.REG_size = 3;
3861 fra.me.nitni_local_ref_head = NULL;
3862 fra.me.REG[0] = NIT_NULL;
3863 fra.me.REG[1] = NIT_NULL;
3864 fra.me.REG[2] = NIT_NULL;
3865 fra.me.REG[0] = p0;
3866 fra.me.REG[1] = p1;
3867 /* ./syntax//typing.nit:643 */
3868 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3869 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3870 /* ./syntax//typing.nit:646 */
3871 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3872 stack_frame_head = fra.me.prev;
3873 return;
3874 }
3875 val_t syntax___typing___AForExpr___variables(val_t p0){
3876 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3877 val_t REGB0;
3878 val_t tmp;
3879 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3880 fra.me.file = LOCATE_syntax___typing;
3881 fra.me.line = 653;
3882 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
3883 fra.me.has_broke = 0;
3884 fra.me.REG_size = 2;
3885 fra.me.nitni_local_ref_head = NULL;
3886 fra.me.REG[0] = NIT_NULL;
3887 fra.me.REG[1] = NIT_NULL;
3888 fra.me.REG[0] = p0;
3889 /* ./syntax//typing.nit:653 */
3890 fra.me.REG[1] = fra.me.REG[0];
3891 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
3892 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
3893 if (UNTAG_Bool(REGB0)) {
3894 } else {
3895 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 653);
3896 }
3897 goto label1;
3898 label1: while(0);
3899 stack_frame_head = fra.me.prev;
3900 return fra.me.REG[1];
3901 }
3902 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
3903 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3904 val_t REGB0;
3905 val_t tmp;
3906 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3907 fra.me.file = LOCATE_syntax___typing;
3908 fra.me.line = 655;
3909 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
3910 fra.me.has_broke = 0;
3911 fra.me.REG_size = 4;
3912 fra.me.nitni_local_ref_head = NULL;
3913 fra.me.REG[0] = NIT_NULL;
3914 fra.me.REG[1] = NIT_NULL;
3915 fra.me.REG[2] = NIT_NULL;
3916 fra.me.REG[3] = NIT_NULL;
3917 fra.me.REG[0] = p0;
3918 fra.me.REG[1] = p1;
3919 /* ./syntax//typing.nit:657 */
3920 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3921 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3922 REGB0 = TAG_Bool(true);
3923 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);
3924 stack_frame_head = fra.me.prev;
3925 return;
3926 }
3927 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3928 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3929 val_t tmp;
3930 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3931 fra.me.file = LOCATE_syntax___typing;
3932 fra.me.line = 660;
3933 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
3934 fra.me.has_broke = 0;
3935 fra.me.REG_size = 3;
3936 fra.me.nitni_local_ref_head = NULL;
3937 fra.me.REG[0] = NIT_NULL;
3938 fra.me.REG[1] = NIT_NULL;
3939 fra.me.REG[2] = NIT_NULL;
3940 fra.me.REG[0] = p0;
3941 fra.me.REG[1] = p1;
3942 /* ./syntax//typing.nit:662 */
3943 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3944 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3945 /* ./syntax//typing.nit:663 */
3946 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3947 /* ./syntax//typing.nit:665 */
3948 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3949 /* ./syntax//typing.nit:668 */
3950 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3951 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3952 /* ./syntax//typing.nit:671 */
3953 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3954 /* ./syntax//typing.nit:672 */
3955 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3956 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3957 stack_frame_head = fra.me.prev;
3958 return;
3959 }
3960 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
3961 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3962 val_t REGB0;
3963 val_t REGB1;
3964 val_t REGB2;
3965 val_t REGB3;
3966 val_t REGB4;
3967 val_t REGB5;
3968 val_t tmp;
3969 static val_t once_value_3; /* Once value */
3970 static val_t once_value_4; /* Once value */
3971 static val_t once_value_5; /* Once value */
3972 static val_t once_value_6; /* Once value */
3973 static val_t once_value_7; /* Once value */
3974 static val_t once_value_8; /* Once value */
3975 static val_t once_value_9; /* Once value */
3976 static val_t once_value_10; /* Once value */
3977 static val_t once_value_11; /* Once value */
3978 static val_t once_value_12; /* Once value */
3979 static val_t once_value_13; /* Once value */
3980 static val_t once_value_14; /* Once value */
3981 static val_t once_value_15; /* Once value */
3982 static val_t once_value_16; /* Once value */
3983 static val_t once_value_17; /* Once value */
3984 static val_t once_value_18; /* Once value */
3985 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3986 fra.me.file = LOCATE_syntax___typing;
3987 fra.me.line = 675;
3988 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
3989 fra.me.has_broke = 0;
3990 fra.me.REG_size = 8;
3991 fra.me.nitni_local_ref_head = NULL;
3992 fra.me.REG[0] = NIT_NULL;
3993 fra.me.REG[1] = NIT_NULL;
3994 fra.me.REG[2] = NIT_NULL;
3995 fra.me.REG[3] = NIT_NULL;
3996 fra.me.REG[4] = NIT_NULL;
3997 fra.me.REG[5] = NIT_NULL;
3998 fra.me.REG[6] = NIT_NULL;
3999 fra.me.REG[7] = NIT_NULL;
4000 fra.me.REG[0] = p0;
4001 fra.me.REG[1] = p1;
4002 /* ./syntax//typing.nit:678 */
4003 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
4004 /* ./syntax//typing.nit:679 */
4005 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
4006 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));
4007 /* ./syntax//typing.nit:684 */
4008 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
4009 /* ./syntax//typing.nit:687 */
4010 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4011 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4012 /* ./syntax//typing.nit:688 */
4013 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4014 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4015 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4016 if (UNTAG_Bool(REGB0)) {
4017 goto label2;
4018 }
4019 /* ./syntax//typing.nit:689 */
4020 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4021 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4022 /* ./syntax//typing.nit:691 */
4023 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4024 if (UNTAG_Bool(REGB0)) {
4025 /* ./syntax//typing.nit:692 */
4026 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4027 if (!once_value_3) {
4028 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
4029 REGB0 = TAG_Int(43);
4030 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4031 once_value_3 = fra.me.REG[5];
4032 register_static_object(&once_value_3);
4033 } else fra.me.REG[5] = once_value_3;
4034 fra.me.REG[5] = fra.me.REG[5];
4035 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4036 /* ./syntax//typing.nit:693 */
4037 goto label2;
4038 }
4039 /* ./syntax//typing.nit:697 */
4040 if (!once_value_4) {
4041 if (!once_value_5) {
4042 fra.me.REG[5] = BOX_NativeString("iterate");
4043 REGB0 = TAG_Int(7);
4044 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4045 once_value_5 = fra.me.REG[5];
4046 register_static_object(&once_value_5);
4047 } else fra.me.REG[5] = once_value_5;
4048 fra.me.REG[5] = fra.me.REG[5];
4049 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4050 once_value_4 = fra.me.REG[5];
4051 register_static_object(&once_value_4);
4052 } else fra.me.REG[5] = once_value_4;
4053 fra.me.REG[5] = fra.me.REG[5];
4054 /* ./syntax//typing.nit:698 */
4055 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4056 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4057 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4058 if (UNTAG_Bool(REGB0)) {
4059 /* ./syntax//typing.nit:699 */
4060 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4061 REGB0 = TAG_Int(3);
4062 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4063 if (!once_value_6) {
4064 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
4065 REGB0 = TAG_Int(60);
4066 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4067 once_value_6 = fra.me.REG[7];
4068 register_static_object(&once_value_6);
4069 } else fra.me.REG[7] = once_value_6;
4070 fra.me.REG[7] = fra.me.REG[7];
4071 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4072 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4073 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4074 if (!once_value_7) {
4075 fra.me.REG[7] = BOX_NativeString(".");
4076 REGB0 = TAG_Int(1);
4077 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4078 once_value_7 = fra.me.REG[7];
4079 register_static_object(&once_value_7);
4080 } else fra.me.REG[7] = once_value_7;
4081 fra.me.REG[7] = fra.me.REG[7];
4082 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4083 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4084 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4085 /* ./syntax//typing.nit:700 */
4086 goto label2;
4087 }
4088 /* ./syntax//typing.nit:702 */
4089 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4090 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4091 /* ./syntax//typing.nit:703 */
4092 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4093 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4094 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4095 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4096 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);
4097 /* ./syntax//typing.nit:704 */
4098 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4099 /* ./syntax//typing.nit:705 */
4100 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4101 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4102 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4103 if (UNTAG_Bool(REGB0)) {
4104 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4105 fra.me.REG[3] = fra.me.REG[5];
4106 }
4107 /* ./syntax//typing.nit:706 */
4108 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4109 REGB1 = TAG_Int(0);
4110 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4111 if (UNTAG_Bool(REGB2)) {
4112 } else {
4113 /* ./../lib/standard//kernel.nit:227 */
4114 REGB1 = TAG_Bool((REGB0)==(REGB1));
4115 /* ./syntax//typing.nit:706 */
4116 REGB2 = REGB1;
4117 }
4118 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4119 if (UNTAG_Bool(REGB2)) {
4120 /* ./syntax//typing.nit:707 */
4121 if (!once_value_8) {
4122 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4123 REGB2 = TAG_Int(63);
4124 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4125 once_value_8 = fra.me.REG[5];
4126 register_static_object(&once_value_8);
4127 } else fra.me.REG[5] = once_value_8;
4128 fra.me.REG[5] = fra.me.REG[5];
4129 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4130 /* ./syntax//typing.nit:708 */
4131 goto label2;
4132 } else {
4133 /* ./syntax//typing.nit:709 */
4134 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4135 /* ./../lib/standard//collection//array.nit:24 */
4136 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4137 if (UNTAG_Bool(REGB2)) {
4138 } else {
4139 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4140 }
4141 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4142 /* ./syntax//typing.nit:709 */
4143 REGB1 = TAG_Int(1);
4144 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4145 if (UNTAG_Bool(REGB0)) {
4146 } else {
4147 /* ./../lib/standard//kernel.nit:227 */
4148 REGB1 = TAG_Bool((REGB2)==(REGB1));
4149 /* ./syntax//typing.nit:709 */
4150 REGB0 = REGB1;
4151 }
4152 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4153 if (UNTAG_Bool(REGB0)) {
4154 /* ./syntax//typing.nit:710 */
4155 if (!once_value_9) {
4156 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4157 REGB0 = TAG_Int(62);
4158 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4159 once_value_9 = fra.me.REG[5];
4160 register_static_object(&once_value_9);
4161 } else fra.me.REG[5] = once_value_9;
4162 fra.me.REG[5] = fra.me.REG[5];
4163 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4164 /* ./syntax//typing.nit:711 */
4165 goto label2;
4166 }
4167 }
4168 /* ./syntax//typing.nit:713 */
4169 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4170 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4171 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4172 if (UNTAG_Bool(REGB0)) {
4173 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 713);
4174 }
4175 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4176 fra.me.REG[3] = fra.me.REG[5];
4177 /* ./syntax//typing.nit:714 */
4178 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4179 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4180 if (UNTAG_Bool(REGB0)) {
4181 } else {
4182 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4183 if (UNTAG_Bool(REGB1)) {
4184 REGB1 = TAG_Bool(false);
4185 REGB0 = REGB1;
4186 } else {
4187 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4188 REGB0 = REGB1;
4189 }
4190 }
4191 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4192 if (UNTAG_Bool(REGB0)) {
4193 /* ./syntax//typing.nit:715 */
4194 if (!once_value_10) {
4195 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4196 REGB0 = TAG_Int(73);
4197 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4198 once_value_10 = fra.me.REG[5];
4199 register_static_object(&once_value_10);
4200 } else fra.me.REG[5] = once_value_10;
4201 fra.me.REG[5] = fra.me.REG[5];
4202 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4203 /* ./syntax//typing.nit:716 */
4204 goto label2;
4205 }
4206 /* ./../lib/standard//collection//array.nit:24 */
4207 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4208 if (UNTAG_Bool(REGB0)) {
4209 } else {
4210 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4211 }
4212 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4213 /* ./syntax//typing.nit:718 */
4214 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4215 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4216 if (UNTAG_Bool(REGB2)) {
4217 } else {
4218 /* ./../lib/standard//kernel.nit:227 */
4219 REGB1 = TAG_Bool((REGB0)==(REGB1));
4220 /* ./syntax//typing.nit:718 */
4221 REGB2 = REGB1;
4222 }
4223 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4224 if (UNTAG_Bool(REGB2)) {
4225 /* ./syntax//typing.nit:719 */
4226 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4227 REGB1 = TAG_Int(1);
4228 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4229 if (UNTAG_Bool(REGB0)) {
4230 } else {
4231 /* ./../lib/standard//kernel.nit:227 */
4232 REGB1 = TAG_Bool((REGB2)==(REGB1));
4233 /* ./syntax//typing.nit:719 */
4234 REGB0 = REGB1;
4235 }
4236 if (UNTAG_Bool(REGB0)) {
4237 /* ./syntax//typing.nit:720 */
4238 REGB0 = TAG_Int(7);
4239 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4240 if (!once_value_11) {
4241 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4242 REGB0 = TAG_Int(16);
4243 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4244 once_value_11 = fra.me.REG[4];
4245 register_static_object(&once_value_11);
4246 } else fra.me.REG[4] = once_value_11;
4247 fra.me.REG[4] = fra.me.REG[4];
4248 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4249 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4250 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4251 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4252 if (!once_value_12) {
4253 fra.me.REG[4] = BOX_NativeString(" variable ");
4254 REGB0 = TAG_Int(10);
4255 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4256 once_value_12 = fra.me.REG[4];
4257 register_static_object(&once_value_12);
4258 } else fra.me.REG[4] = once_value_12;
4259 fra.me.REG[4] = fra.me.REG[4];
4260 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4261 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4262 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4263 if (!once_value_13) {
4264 fra.me.REG[4] = BOX_NativeString(", found ");
4265 REGB0 = TAG_Int(8);
4266 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4267 once_value_13 = fra.me.REG[4];
4268 register_static_object(&once_value_13);
4269 } else fra.me.REG[4] = once_value_13;
4270 fra.me.REG[4] = fra.me.REG[4];
4271 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4272 /* ./../lib/standard//collection//array.nit:24 */
4273 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4274 if (UNTAG_Bool(REGB0)) {
4275 } else {
4276 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4277 }
4278 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4279 /* ./syntax//typing.nit:720 */
4280 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4281 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4282 if (!once_value_14) {
4283 fra.me.REG[4] = BOX_NativeString(".");
4284 REGB0 = TAG_Int(1);
4285 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4286 once_value_14 = fra.me.REG[4];
4287 register_static_object(&once_value_14);
4288 } else fra.me.REG[4] = once_value_14;
4289 fra.me.REG[4] = fra.me.REG[4];
4290 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4291 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4292 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4293 } else {
4294 /* ./syntax//typing.nit:722 */
4295 REGB0 = TAG_Int(7);
4296 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4297 if (!once_value_15) {
4298 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4299 REGB0 = TAG_Int(16);
4300 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4301 once_value_15 = fra.me.REG[4];
4302 register_static_object(&once_value_15);
4303 } else fra.me.REG[4] = once_value_15;
4304 fra.me.REG[4] = fra.me.REG[4];
4305 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4306 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4307 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4308 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4309 if (!once_value_16) {
4310 fra.me.REG[4] = BOX_NativeString(" variables ");
4311 REGB0 = TAG_Int(11);
4312 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4313 once_value_16 = fra.me.REG[4];
4314 register_static_object(&once_value_16);
4315 } else fra.me.REG[4] = once_value_16;
4316 fra.me.REG[4] = fra.me.REG[4];
4317 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4318 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4319 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4320 if (!once_value_17) {
4321 fra.me.REG[4] = BOX_NativeString(", found ");
4322 REGB0 = TAG_Int(8);
4323 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4324 once_value_17 = fra.me.REG[4];
4325 register_static_object(&once_value_17);
4326 } else fra.me.REG[4] = once_value_17;
4327 fra.me.REG[4] = fra.me.REG[4];
4328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4329 /* ./../lib/standard//collection//array.nit:24 */
4330 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4331 if (UNTAG_Bool(REGB0)) {
4332 } else {
4333 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4334 }
4335 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4336 /* ./syntax//typing.nit:722 */
4337 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4338 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4339 if (!once_value_18) {
4340 fra.me.REG[4] = BOX_NativeString(".");
4341 REGB0 = TAG_Int(1);
4342 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4343 once_value_18 = fra.me.REG[4];
4344 register_static_object(&once_value_18);
4345 } else fra.me.REG[4] = once_value_18;
4346 fra.me.REG[4] = fra.me.REG[4];
4347 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4348 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4349 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4350 }
4351 /* ./syntax//typing.nit:724 */
4352 goto label2;
4353 }
4354 /* ./syntax//typing.nit:728 */
4355 REGB0 = TAG_Int(0);
4356 /* ./../lib/standard//collection//array.nit:24 */
4357 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4358 if (UNTAG_Bool(REGB1)) {
4359 } else {
4360 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4361 }
4362 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4363 /* ./../lib/standard//kernel.nit:352 */
4364 while(1) {
4365 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4366 if (UNTAG_Bool(REGB2)) {
4367 } else {
4368 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4369 }
4370 /* ./../lib/standard//kernel.nit:232 */
4371 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4372 /* ./../lib/standard//kernel.nit:352 */
4373 if (UNTAG_Bool(REGB2)) {
4374 /* ./syntax//typing.nit:728 */
4375 REGB2 = REGB0;
4376 /* ./../lib/standard//collection//array.nit:278 */
4377 fra.me.REG[5] = fra.me.REG[2];
4378 REGB3 = REGB2;
4379 /* ./../lib/standard//collection//array.nit:280 */
4380 REGB4 = TAG_Int(0);
4381 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4382 if (UNTAG_Bool(REGB5)) {
4383 } else {
4384 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4385 }
4386 /* ./../lib/standard//kernel.nit:233 */
4387 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4388 /* ./../lib/standard//collection//array.nit:280 */
4389 if (UNTAG_Bool(REGB4)) {
4390 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4391 if (UNTAG_Bool(REGB4)) {
4392 } else {
4393 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
4394 }
4395 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4396 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4397 if (UNTAG_Bool(REGB5)) {
4398 } else {
4399 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4400 }
4401 /* ./../lib/standard//kernel.nit:232 */
4402 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4403 } else {
4404 /* ./../lib/standard//collection//array.nit:280 */
4405 REGB5 = TAG_Bool(false);
4406 REGB4 = REGB5;
4407 }
4408 if (UNTAG_Bool(REGB4)) {
4409 } else {
4410 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
4411 }
4412 /* ./../lib/standard//collection//array.nit:281 */
4413 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4414 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4415 if (UNTAG_Bool(REGB4)) {
4416 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
4417 }
4418 /* ./../lib/standard//collection//array.nit:718 */
4419 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4420 /* ./../lib/standard//collection//array.nit:281 */
4421 goto label19;
4422 label19: while(0);
4423 /* ./syntax//typing.nit:729 */
4424 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4425 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4426 if (UNTAG_Bool(REGB2)) {
4427 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 729);
4428 }
4429 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4430 /* ./../lib/standard//kernel.nit:354 */
4431 REGB2 = TAG_Int(1);
4432 /* ./../lib/standard//kernel.nit:235 */
4433 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4434 /* ./../lib/standard//kernel.nit:354 */
4435 REGB0 = REGB2;
4436 } else {
4437 /* ./../lib/standard//kernel.nit:352 */
4438 goto label20;
4439 }
4440 }
4441 label20: while(0);
4442 label2: while(0);
4443 stack_frame_head = fra.me.prev;
4444 return;
4445 }
4446 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){
4447 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4448 fun_t CREG[1];
4449 val_t tmp;
4450 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4451 fra.me.file = LOCATE_syntax___typing;
4452 fra.me.line = 0;
4453 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4454 fra.me.has_broke = 0;
4455 fra.me.REG_size = 2;
4456 fra.me.nitni_local_ref_head = NULL;
4457 fra.me.REG[0] = NIT_NULL;
4458 fra.me.REG[1] = NIT_NULL;
4459 fra.me.closure_ctx = closctx_param;
4460 fra.me.closure_funs = CREG;
4461 fra.me.REG[0] = p0;
4462 CREG[0] = clos_fun0;
4463 /* ./syntax//typing.nit:680 */
4464 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4465 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4466 /* ./syntax//typing.nit:681 */
4467 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4468 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4469 /* ./syntax//typing.nit:682 */
4470 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4471 stack_frame_head = fra.me.prev;
4472 return;
4473 }
4474 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4475 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4476 val_t REGB0;
4477 val_t REGB1;
4478 val_t tmp;
4479 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4480 fra.me.file = LOCATE_syntax___typing;
4481 fra.me.line = 735;
4482 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4483 fra.me.has_broke = 0;
4484 fra.me.REG_size = 4;
4485 fra.me.nitni_local_ref_head = NULL;
4486 fra.me.REG[0] = NIT_NULL;
4487 fra.me.REG[1] = NIT_NULL;
4488 fra.me.REG[2] = NIT_NULL;
4489 fra.me.REG[3] = NIT_NULL;
4490 fra.me.REG[0] = p0;
4491 fra.me.REG[1] = p1;
4492 /* ./syntax//typing.nit:738 */
4493 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4494 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4495 /* ./syntax//typing.nit:739 */
4496 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4497 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4498 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4499 /* ./syntax//typing.nit:742 */
4500 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4501 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4502 if (UNTAG_Bool(REGB0)) {
4503 } else {
4504 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4505 if (UNTAG_Bool(REGB1)) {
4506 REGB1 = TAG_Bool(false);
4507 REGB0 = REGB1;
4508 } else {
4509 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4510 REGB0 = REGB1;
4511 }
4512 }
4513 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4514 if (UNTAG_Bool(REGB0)) {
4515 /* ./syntax//typing.nit:743 */
4516 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4517 /* ./syntax//typing.nit:744 */
4518 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4519 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4520 /* ./syntax//typing.nit:745 */
4521 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4522 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4523 /* ./syntax//typing.nit:746 */
4524 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4525 }
4526 /* ./syntax//typing.nit:750 */
4527 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4528 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4529 /* ./syntax//typing.nit:751 */
4530 REGB0 = TAG_Bool(true);
4531 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4532 stack_frame_head = fra.me.prev;
4533 return;
4534 }
4535 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4536 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4537 val_t REGB0;
4538 val_t tmp;
4539 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4540 fra.me.file = LOCATE_syntax___typing;
4541 fra.me.line = 757;
4542 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4543 fra.me.has_broke = 0;
4544 fra.me.REG_size = 2;
4545 fra.me.nitni_local_ref_head = NULL;
4546 fra.me.REG[0] = NIT_NULL;
4547 fra.me.REG[1] = NIT_NULL;
4548 fra.me.REG[0] = p0;
4549 /* ./syntax//typing.nit:757 */
4550 fra.me.REG[1] = fra.me.REG[0];
4551 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4552 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4553 if (UNTAG_Bool(REGB0)) {
4554 } else {
4555 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 757);
4556 }
4557 goto label1;
4558 label1: while(0);
4559 stack_frame_head = fra.me.prev;
4560 return fra.me.REG[1];
4561 }
4562 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4563 struct {struct stack_frame_t me;} fra;
4564 val_t tmp;
4565 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4566 fra.me.file = LOCATE_syntax___typing;
4567 fra.me.line = 761;
4568 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4569 fra.me.has_broke = 0;
4570 fra.me.REG_size = 1;
4571 fra.me.nitni_local_ref_head = NULL;
4572 fra.me.REG[0] = NIT_NULL;
4573 fra.me.REG[0] = p0;
4574 /* ./syntax//typing.nit:761 */
4575 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4576 goto label1;
4577 label1: while(0);
4578 stack_frame_head = fra.me.prev;
4579 return fra.me.REG[0];
4580 }
4581 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4582 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4583 val_t REGB0;
4584 val_t REGB1;
4585 val_t tmp;
4586 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4587 fra.me.file = LOCATE_syntax___typing;
4588 fra.me.line = 763;
4589 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4590 fra.me.has_broke = 0;
4591 fra.me.REG_size = 4;
4592 fra.me.nitni_local_ref_head = NULL;
4593 fra.me.REG[0] = NIT_NULL;
4594 fra.me.REG[1] = NIT_NULL;
4595 fra.me.REG[2] = NIT_NULL;
4596 fra.me.REG[3] = NIT_NULL;
4597 fra.me.REG[0] = p0;
4598 fra.me.REG[1] = p1;
4599 /* ./syntax//typing.nit:765 */
4600 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4601 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4602 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4603 /* ./syntax//typing.nit:766 */
4604 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4605 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4606 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4607 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4608 /* ./syntax//typing.nit:767 */
4609 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4610 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4611 if (UNTAG_Bool(REGB0)) {
4612 } else {
4613 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4614 if (UNTAG_Bool(REGB1)) {
4615 REGB1 = TAG_Bool(false);
4616 REGB0 = REGB1;
4617 } else {
4618 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4619 REGB0 = REGB1;
4620 }
4621 }
4622 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4623 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4624 stack_frame_head = fra.me.prev;
4625 return;
4626 }
4627 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4628 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4629 val_t REGB0;
4630 val_t REGB1;
4631 val_t tmp;
4632 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4633 fra.me.file = LOCATE_syntax___typing;
4634 fra.me.line = 772;
4635 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4636 fra.me.has_broke = 0;
4637 fra.me.REG_size = 5;
4638 fra.me.nitni_local_ref_head = NULL;
4639 fra.me.REG[0] = NIT_NULL;
4640 fra.me.REG[1] = NIT_NULL;
4641 fra.me.REG[2] = NIT_NULL;
4642 fra.me.REG[3] = NIT_NULL;
4643 fra.me.REG[4] = NIT_NULL;
4644 fra.me.REG[0] = p0;
4645 fra.me.REG[1] = p1;
4646 /* ./syntax//typing.nit:774 */
4647 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4648 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4649 /* ./syntax//typing.nit:777 */
4650 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4651 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4652 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4653 /* ./syntax//typing.nit:778 */
4654 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4655 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4656 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4657 if (UNTAG_Bool(REGB0)) {
4658 goto label1;
4659 }
4660 /* ./syntax//typing.nit:779 */
4661 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4662 if (UNTAG_Bool(REGB0)) {
4663 } else {
4664 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4665 if (UNTAG_Bool(REGB1)) {
4666 REGB1 = TAG_Bool(false);
4667 REGB0 = REGB1;
4668 } else {
4669 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4670 REGB0 = REGB1;
4671 }
4672 }
4673 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4674 if (UNTAG_Bool(REGB0)) {
4675 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4676 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]);
4677 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4678 } else {
4679 REGB1 = TAG_Bool(false);
4680 REGB0 = REGB1;
4681 }
4682 if (UNTAG_Bool(REGB0)) {
4683 goto label1;
4684 }
4685 /* ./syntax//typing.nit:782 */
4686 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4687 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4688 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4689 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4690 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]);
4691 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4692 /* ./syntax//typing.nit:784 */
4693 REGB0 = TAG_Bool(true);
4694 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4695 label1: while(0);
4696 stack_frame_head = fra.me.prev;
4697 return;
4698 }
4699 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4700 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4701 val_t REGB0;
4702 val_t REGB1;
4703 val_t tmp;
4704 static val_t once_value_2; /* Once value */
4705 static val_t once_value_3; /* Once value */
4706 static val_t once_value_4; /* Once value */
4707 static val_t once_value_5; /* Once value */
4708 static val_t once_value_6; /* Once value */
4709 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4710 fra.me.file = LOCATE_syntax___typing;
4711 fra.me.line = 789;
4712 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4713 fra.me.has_broke = 0;
4714 fra.me.REG_size = 8;
4715 fra.me.nitni_local_ref_head = NULL;
4716 fra.me.REG[0] = NIT_NULL;
4717 fra.me.REG[1] = NIT_NULL;
4718 fra.me.REG[2] = NIT_NULL;
4719 fra.me.REG[3] = NIT_NULL;
4720 fra.me.REG[4] = NIT_NULL;
4721 fra.me.REG[5] = NIT_NULL;
4722 fra.me.REG[6] = NIT_NULL;
4723 fra.me.REG[7] = NIT_NULL;
4724 fra.me.REG[0] = p0;
4725 fra.me.REG[1] = p1;
4726 fra.me.REG[2] = p2;
4727 /* ./syntax//typing.nit:794 */
4728 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4729 if (UNTAG_Bool(REGB0)) {
4730 } else {
4731 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4732 if (UNTAG_Bool(REGB1)) {
4733 REGB1 = TAG_Bool(false);
4734 REGB0 = REGB1;
4735 } else {
4736 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4737 REGB0 = REGB1;
4738 }
4739 }
4740 if (UNTAG_Bool(REGB0)) {
4741 /* ./syntax//typing.nit:795 */
4742 fra.me.REG[3] = NIT_NULL;
4743 goto label1;
4744 }
4745 /* ./syntax//typing.nit:797 */
4746 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4747 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4748 /* ./syntax//typing.nit:798 */
4749 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*/;
4750 if (UNTAG_Bool(REGB0)) {
4751 /* ./syntax//typing.nit:799 */
4752 REGB0 = TAG_Int(3);
4753 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4754 if (!once_value_2) {
4755 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4756 REGB0 = TAG_Int(15);
4757 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4758 once_value_2 = fra.me.REG[6];
4759 register_static_object(&once_value_2);
4760 } else fra.me.REG[6] = once_value_2;
4761 fra.me.REG[6] = fra.me.REG[6];
4762 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4763 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4764 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4765 if (!once_value_3) {
4766 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4767 REGB0 = TAG_Int(17);
4768 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4769 once_value_3 = fra.me.REG[6];
4770 register_static_object(&once_value_3);
4771 } else fra.me.REG[6] = once_value_3;
4772 fra.me.REG[6] = fra.me.REG[6];
4773 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4774 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4775 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4776 /* ./syntax//typing.nit:800 */
4777 fra.me.REG[3] = NIT_NULL;
4778 goto label1;
4779 }
4780 /* ./syntax//typing.nit:802 */
4781 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4782 if (UNTAG_Bool(REGB0)) {
4783 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 802);
4784 }
4785 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4786 /* ./syntax//typing.nit:803 */
4787 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4788 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4789 if (UNTAG_Bool(REGB0)) {
4790 /* ./syntax//typing.nit:804 */
4791 REGB0 = TAG_Int(5);
4792 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4793 if (!once_value_4) {
4794 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4795 REGB0 = TAG_Int(15);
4796 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4797 once_value_4 = fra.me.REG[7];
4798 register_static_object(&once_value_4);
4799 } else fra.me.REG[7] = once_value_4;
4800 fra.me.REG[7] = fra.me.REG[7];
4801 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4802 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4803 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4804 if (!once_value_5) {
4805 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4806 REGB0 = TAG_Int(20);
4807 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4808 once_value_5 = fra.me.REG[7];
4809 register_static_object(&once_value_5);
4810 } else fra.me.REG[7] = once_value_5;
4811 fra.me.REG[7] = fra.me.REG[7];
4812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4813 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4814 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4815 if (!once_value_6) {
4816 fra.me.REG[7] = BOX_NativeString(".");
4817 REGB0 = TAG_Int(1);
4818 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4819 once_value_6 = fra.me.REG[7];
4820 register_static_object(&once_value_6);
4821 } else fra.me.REG[7] = once_value_6;
4822 fra.me.REG[7] = fra.me.REG[7];
4823 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4824 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4825 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4826 /* ./syntax//typing.nit:805 */
4827 fra.me.REG[3] = NIT_NULL;
4828 goto label1;
4829 }
4830 /* ./syntax//typing.nit:807 */
4831 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4832 /* ./syntax//typing.nit:808 */
4833 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4834 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4835 REGB0 = TAG_Bool(false);
4836 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);
4837 /* ./syntax//typing.nit:809 */
4838 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4839 /* ./syntax//typing.nit:810 */
4840 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4841 /* ./syntax//typing.nit:811 */
4842 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4843 REGB0 = TAG_Int(0);
4844 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4845 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4846 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]);
4847 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4848 if (UNTAG_Bool(REGB0)) {
4849 fra.me.REG[3] = NIT_NULL;
4850 goto label1;
4851 }
4852 /* ./syntax//typing.nit:812 */
4853 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4854 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4855 if (UNTAG_Bool(REGB0)) {
4856 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 812);
4857 }
4858 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4859 fra.me.REG[3] = fra.me.REG[2];
4860 goto label1;
4861 label1: while(0);
4862 stack_frame_head = fra.me.prev;
4863 return fra.me.REG[3];
4864 }
4865 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
4866 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4867 val_t REGB0;
4868 val_t tmp;
4869 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4870 fra.me.file = LOCATE_syntax___typing;
4871 fra.me.line = 815;
4872 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
4873 fra.me.has_broke = 0;
4874 fra.me.REG_size = 2;
4875 fra.me.nitni_local_ref_head = NULL;
4876 fra.me.REG[0] = NIT_NULL;
4877 fra.me.REG[1] = NIT_NULL;
4878 fra.me.REG[0] = p0;
4879 /* ./syntax//typing.nit:815 */
4880 fra.me.REG[1] = fra.me.REG[0];
4881 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
4882 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4883 if (UNTAG_Bool(REGB0)) {
4884 } else {
4885 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 815);
4886 }
4887 goto label1;
4888 label1: while(0);
4889 stack_frame_head = fra.me.prev;
4890 return fra.me.REG[1];
4891 }
4892 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4893 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4894 val_t REGB0;
4895 val_t REGB1;
4896 val_t tmp;
4897 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4898 fra.me.file = LOCATE_syntax___typing;
4899 fra.me.line = 820;
4900 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
4901 fra.me.has_broke = 0;
4902 fra.me.REG_size = 5;
4903 fra.me.nitni_local_ref_head = NULL;
4904 fra.me.REG[0] = NIT_NULL;
4905 fra.me.REG[1] = NIT_NULL;
4906 fra.me.REG[2] = NIT_NULL;
4907 fra.me.REG[3] = NIT_NULL;
4908 fra.me.REG[4] = NIT_NULL;
4909 fra.me.REG[0] = p0;
4910 fra.me.REG[1] = p1;
4911 /* ./syntax//typing.nit:822 */
4912 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4913 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4914 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4915 /* ./syntax//typing.nit:823 */
4916 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4917 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4918 /* ./syntax//typing.nit:824 */
4919 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4920 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4921 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4922 /* ./syntax//typing.nit:825 */
4923 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]);
4924 /* ./syntax//typing.nit:826 */
4925 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4926 if (UNTAG_Bool(REGB0)) {
4927 } else {
4928 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4929 if (UNTAG_Bool(REGB1)) {
4930 REGB1 = TAG_Bool(false);
4931 REGB0 = REGB1;
4932 } else {
4933 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4934 REGB0 = REGB1;
4935 }
4936 }
4937 if (UNTAG_Bool(REGB0)) {
4938 goto label1;
4939 }
4940 /* ./syntax//typing.nit:829 */
4941 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4942 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4943 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4944 /* ./syntax//typing.nit:830 */
4945 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4946 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4947 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4948 if (UNTAG_Bool(REGB0)) {
4949 goto label1;
4950 }
4951 /* ./syntax//typing.nit:831 */
4952 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4953 if (UNTAG_Bool(REGB0)) {
4954 } else {
4955 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4956 if (UNTAG_Bool(REGB1)) {
4957 REGB1 = TAG_Bool(false);
4958 REGB0 = REGB1;
4959 } else {
4960 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4961 REGB0 = REGB1;
4962 }
4963 }
4964 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4965 if (UNTAG_Bool(REGB0)) {
4966 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4967 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]);
4968 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4969 } else {
4970 REGB1 = TAG_Bool(false);
4971 REGB0 = REGB1;
4972 }
4973 if (UNTAG_Bool(REGB0)) {
4974 goto label1;
4975 }
4976 /* ./syntax//typing.nit:834 */
4977 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4978 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4979 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]);
4980 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4981 /* ./syntax//typing.nit:836 */
4982 REGB0 = TAG_Bool(true);
4983 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4984 label1: while(0);
4985 stack_frame_head = fra.me.prev;
4986 return;
4987 }
4988 val_t syntax___typing___AAssignOp___method_name(val_t p0){
4989 struct {struct stack_frame_t me;} fra;
4990 val_t tmp;
4991 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4992 fra.me.file = LOCATE_syntax___typing;
4993 fra.me.line = 841;
4994 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
4995 fra.me.has_broke = 0;
4996 fra.me.REG_size = 0;
4997 fra.me.nitni_local_ref_head = NULL;
4998 /* ./syntax//typing.nit:841 */
4999 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 841);
5000 stack_frame_head = fra.me.prev;
5001 return NIT_NULL;
5002 }
5003 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
5004 struct {struct stack_frame_t me;} fra;
5005 val_t REGB0;
5006 val_t tmp;
5007 static val_t once_value_1; /* Once value */
5008 static val_t once_value_2; /* Once value */
5009 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5010 fra.me.file = LOCATE_syntax___typing;
5011 fra.me.line = 844;
5012 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
5013 fra.me.has_broke = 0;
5014 fra.me.REG_size = 1;
5015 fra.me.nitni_local_ref_head = NULL;
5016 fra.me.REG[0] = NIT_NULL;
5017 fra.me.REG[0] = p0;
5018 /* ./syntax//typing.nit:844 */
5019 if (!once_value_1) {
5020 if (!once_value_2) {
5021 fra.me.REG[0] = BOX_NativeString("+");
5022 REGB0 = TAG_Int(1);
5023 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5024 once_value_2 = fra.me.REG[0];
5025 register_static_object(&once_value_2);
5026 } else fra.me.REG[0] = once_value_2;
5027 fra.me.REG[0] = fra.me.REG[0];
5028 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5029 once_value_1 = fra.me.REG[0];
5030 register_static_object(&once_value_1);
5031 } else fra.me.REG[0] = once_value_1;
5032 fra.me.REG[0] = fra.me.REG[0];
5033 goto label3;
5034 label3: while(0);
5035 stack_frame_head = fra.me.prev;
5036 return fra.me.REG[0];
5037 }
5038 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
5039 struct {struct stack_frame_t me;} fra;
5040 val_t REGB0;
5041 val_t tmp;
5042 static val_t once_value_1; /* Once value */
5043 static val_t once_value_2; /* Once value */
5044 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5045 fra.me.file = LOCATE_syntax___typing;
5046 fra.me.line = 847;
5047 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
5048 fra.me.has_broke = 0;
5049 fra.me.REG_size = 1;
5050 fra.me.nitni_local_ref_head = NULL;
5051 fra.me.REG[0] = NIT_NULL;
5052 fra.me.REG[0] = p0;
5053 /* ./syntax//typing.nit:847 */
5054 if (!once_value_1) {
5055 if (!once_value_2) {
5056 fra.me.REG[0] = BOX_NativeString("-");
5057 REGB0 = TAG_Int(1);
5058 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5059 once_value_2 = fra.me.REG[0];
5060 register_static_object(&once_value_2);
5061 } else fra.me.REG[0] = once_value_2;
5062 fra.me.REG[0] = fra.me.REG[0];
5063 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5064 once_value_1 = fra.me.REG[0];
5065 register_static_object(&once_value_1);
5066 } else fra.me.REG[0] = once_value_1;
5067 fra.me.REG[0] = fra.me.REG[0];
5068 goto label3;
5069 label3: while(0);
5070 stack_frame_head = fra.me.prev;
5071 return fra.me.REG[0];
5072 }
5073 val_t syntax___typing___ASelfExpr___variable(val_t p0){
5074 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5075 val_t REGB0;
5076 val_t tmp;
5077 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5078 fra.me.file = LOCATE_syntax___typing;
5079 fra.me.line = 852;
5080 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
5081 fra.me.has_broke = 0;
5082 fra.me.REG_size = 2;
5083 fra.me.nitni_local_ref_head = NULL;
5084 fra.me.REG[0] = NIT_NULL;
5085 fra.me.REG[1] = NIT_NULL;
5086 fra.me.REG[0] = p0;
5087 /* ./syntax//typing.nit:852 */
5088 fra.me.REG[1] = fra.me.REG[0];
5089 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5090 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5091 if (UNTAG_Bool(REGB0)) {
5092 } else {
5093 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 852);
5094 }
5095 goto label1;
5096 label1: while(0);
5097 stack_frame_head = fra.me.prev;
5098 return fra.me.REG[1];
5099 }
5100 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5101 struct {struct stack_frame_t me;} fra;
5102 val_t tmp;
5103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5104 fra.me.file = LOCATE_syntax___typing;
5105 fra.me.line = 854;
5106 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5107 fra.me.has_broke = 0;
5108 fra.me.REG_size = 1;
5109 fra.me.nitni_local_ref_head = NULL;
5110 fra.me.REG[0] = NIT_NULL;
5111 fra.me.REG[0] = p0;
5112 /* ./syntax//typing.nit:854 */
5113 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5114 goto label1;
5115 label1: while(0);
5116 stack_frame_head = fra.me.prev;
5117 return fra.me.REG[0];
5118 }
5119 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5120 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5121 val_t REGB0;
5122 val_t tmp;
5123 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5124 fra.me.file = LOCATE_syntax___typing;
5125 fra.me.line = 856;
5126 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5127 fra.me.has_broke = 0;
5128 fra.me.REG_size = 3;
5129 fra.me.nitni_local_ref_head = NULL;
5130 fra.me.REG[0] = NIT_NULL;
5131 fra.me.REG[1] = NIT_NULL;
5132 fra.me.REG[2] = NIT_NULL;
5133 fra.me.REG[0] = p0;
5134 fra.me.REG[1] = p1;
5135 /* ./syntax//typing.nit:858 */
5136 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5137 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5138 /* ./syntax//typing.nit:859 */
5139 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5140 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5141 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5142 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5143 /* ./syntax//typing.nit:860 */
5144 REGB0 = TAG_Bool(true);
5145 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5146 stack_frame_head = fra.me.prev;
5147 return;
5148 }
5149 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5150 struct {struct stack_frame_t me;} fra;
5151 val_t REGB0;
5152 val_t tmp;
5153 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5154 fra.me.file = LOCATE_syntax___typing;
5155 fra.me.line = 863;
5156 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5157 fra.me.has_broke = 0;
5158 fra.me.REG_size = 1;
5159 fra.me.nitni_local_ref_head = NULL;
5160 fra.me.REG[0] = NIT_NULL;
5161 fra.me.REG[0] = p0;
5162 /* ./syntax//typing.nit:863 */
5163 REGB0 = TAG_Bool(true);
5164 goto label1;
5165 label1: while(0);
5166 stack_frame_head = fra.me.prev;
5167 return REGB0;
5168 }
5169 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5170 struct {struct stack_frame_t me;} fra;
5171 val_t REGB0;
5172 val_t tmp;
5173 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5174 fra.me.file = LOCATE_syntax___typing;
5175 fra.me.line = 867;
5176 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5177 fra.me.has_broke = 0;
5178 fra.me.REG_size = 1;
5179 fra.me.nitni_local_ref_head = NULL;
5180 fra.me.REG[0] = NIT_NULL;
5181 fra.me.REG[0] = p0;
5182 /* ./syntax//typing.nit:867 */
5183 REGB0 = TAG_Bool(true);
5184 goto label1;
5185 label1: while(0);
5186 stack_frame_head = fra.me.prev;
5187 return REGB0;
5188 }
5189 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5190 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5191 val_t REGB0;
5192 val_t REGB1;
5193 val_t tmp;
5194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5195 fra.me.file = LOCATE_syntax___typing;
5196 fra.me.line = 871;
5197 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5198 fra.me.has_broke = 0;
5199 fra.me.REG_size = 5;
5200 fra.me.nitni_local_ref_head = NULL;
5201 fra.me.REG[0] = NIT_NULL;
5202 fra.me.REG[1] = NIT_NULL;
5203 fra.me.REG[2] = NIT_NULL;
5204 fra.me.REG[3] = NIT_NULL;
5205 fra.me.REG[4] = NIT_NULL;
5206 fra.me.REG[0] = p0;
5207 fra.me.REG[1] = p1;
5208 /* ./syntax//typing.nit:873 */
5209 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5210 /* ./syntax//typing.nit:876 */
5211 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5212 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5213 /* ./syntax//typing.nit:877 */
5214 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5215 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5216 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5217 /* ./syntax//typing.nit:880 */
5218 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5219 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5220 /* ./syntax//typing.nit:883 */
5221 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5222 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5223 /* ./syntax//typing.nit:886 */
5224 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5225 /* ./syntax//typing.nit:889 */
5226 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5227 /* ./syntax//typing.nit:890 */
5228 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5229 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5230 /* ./syntax//typing.nit:893 */
5231 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5232 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5233 /* ./syntax//typing.nit:896 */
5234 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5235 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5236 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]);
5237 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5238 /* ./syntax//typing.nit:898 */
5239 REGB0 = TAG_Int(2);
5240 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5241 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5242 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5243 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5244 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5245 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]);
5246 /* ./syntax//typing.nit:899 */
5247 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5248 if (UNTAG_Bool(REGB0)) {
5249 } else {
5250 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5251 if (UNTAG_Bool(REGB1)) {
5252 REGB1 = TAG_Bool(false);
5253 REGB0 = REGB1;
5254 } else {
5255 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5256 REGB0 = REGB1;
5257 }
5258 }
5259 if (UNTAG_Bool(REGB0)) {
5260 goto label1;
5261 }
5262 /* ./syntax//typing.nit:901 */
5263 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5264 /* ./syntax//typing.nit:902 */
5265 REGB0 = TAG_Bool(true);
5266 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5267 label1: while(0);
5268 stack_frame_head = fra.me.prev;
5269 return;
5270 }
5271 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5272 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5273 val_t REGB0;
5274 val_t tmp;
5275 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5276 fra.me.file = LOCATE_syntax___typing;
5277 fra.me.line = 907;
5278 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5279 fra.me.has_broke = 0;
5280 fra.me.REG_size = 2;
5281 fra.me.nitni_local_ref_head = NULL;
5282 fra.me.REG[0] = NIT_NULL;
5283 fra.me.REG[1] = NIT_NULL;
5284 fra.me.REG[0] = p0;
5285 fra.me.REG[1] = p1;
5286 /* ./syntax//typing.nit:909 */
5287 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5288 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5289 /* ./syntax//typing.nit:910 */
5290 REGB0 = TAG_Bool(true);
5291 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5292 stack_frame_head = fra.me.prev;
5293 return;
5294 }
5295 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5296 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5297 val_t REGB0;
5298 val_t REGB1;
5299 val_t tmp;
5300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5301 fra.me.file = LOCATE_syntax___typing;
5302 fra.me.line = 915;
5303 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5304 fra.me.has_broke = 0;
5305 fra.me.REG_size = 5;
5306 fra.me.nitni_local_ref_head = NULL;
5307 fra.me.REG[0] = NIT_NULL;
5308 fra.me.REG[1] = NIT_NULL;
5309 fra.me.REG[2] = NIT_NULL;
5310 fra.me.REG[3] = NIT_NULL;
5311 fra.me.REG[4] = NIT_NULL;
5312 fra.me.REG[0] = p0;
5313 fra.me.REG[1] = p1;
5314 /* ./syntax//typing.nit:917 */
5315 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5316 /* ./syntax//typing.nit:918 */
5317 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5318 /* ./syntax//typing.nit:919 */
5319 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5320 /* ./syntax//typing.nit:922 */
5321 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5322 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5323 /* ./syntax//typing.nit:925 */
5324 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5325 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5326 /* ./syntax//typing.nit:928 */
5327 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5328 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5329 /* ./syntax//typing.nit:929 */
5330 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5331 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5332 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5333 if (UNTAG_Bool(REGB0)) {
5334 } else {
5335 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5336 if (UNTAG_Bool(REGB1)) {
5337 REGB1 = TAG_Bool(false);
5338 REGB0 = REGB1;
5339 } else {
5340 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5341 REGB0 = REGB1;
5342 }
5343 }
5344 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5345 if (UNTAG_Bool(REGB0)) {
5346 /* ./syntax//typing.nit:930 */
5347 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5348 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5349 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5350 } else {
5351 /* ./syntax//typing.nit:932 */
5352 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5353 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5354 }
5355 /* ./syntax//typing.nit:935 */
5356 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5357 /* ./syntax//typing.nit:937 */
5358 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5359 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5360 /* ./syntax//typing.nit:938 */
5361 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5362 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5363 /* ./syntax//typing.nit:939 */
5364 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5365 /* ./syntax//typing.nit:940 */
5366 REGB0 = TAG_Bool(true);
5367 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5368 stack_frame_head = fra.me.prev;
5369 return;
5370 }
5371 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5372 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5373 val_t REGB0;
5374 val_t REGB1;
5375 val_t tmp;
5376 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5377 fra.me.file = LOCATE_syntax___typing;
5378 fra.me.line = 945;
5379 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5380 fra.me.has_broke = 0;
5381 fra.me.REG_size = 5;
5382 fra.me.nitni_local_ref_head = NULL;
5383 fra.me.REG[0] = NIT_NULL;
5384 fra.me.REG[1] = NIT_NULL;
5385 fra.me.REG[2] = NIT_NULL;
5386 fra.me.REG[3] = NIT_NULL;
5387 fra.me.REG[4] = NIT_NULL;
5388 fra.me.REG[0] = p0;
5389 fra.me.REG[1] = p1;
5390 /* ./syntax//typing.nit:947 */
5391 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5392 /* ./syntax//typing.nit:948 */
5393 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5394 /* ./syntax//typing.nit:951 */
5395 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5396 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5397 /* ./syntax//typing.nit:954 */
5398 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5399 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5400 /* ./syntax//typing.nit:957 */
5401 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5402 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5403 /* ./syntax//typing.nit:958 */
5404 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5405 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5406 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5407 if (UNTAG_Bool(REGB0)) {
5408 } else {
5409 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5410 if (UNTAG_Bool(REGB1)) {
5411 REGB1 = TAG_Bool(false);
5412 REGB0 = REGB1;
5413 } else {
5414 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5415 REGB0 = REGB1;
5416 }
5417 }
5418 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5419 if (UNTAG_Bool(REGB0)) {
5420 /* ./syntax//typing.nit:959 */
5421 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5422 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5423 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5424 } else {
5425 /* ./syntax//typing.nit:961 */
5426 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5427 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5428 }
5429 /* ./syntax//typing.nit:964 */
5430 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5431 /* ./syntax//typing.nit:966 */
5432 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5433 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5434 /* ./syntax//typing.nit:967 */
5435 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5436 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5437 /* ./syntax//typing.nit:968 */
5438 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5439 /* ./syntax//typing.nit:969 */
5440 REGB0 = TAG_Bool(true);
5441 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5442 stack_frame_head = fra.me.prev;
5443 return;
5444 }
5445 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5446 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5447 val_t REGB0;
5448 val_t tmp;
5449 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5450 fra.me.file = LOCATE_syntax___typing;
5451 fra.me.line = 974;
5452 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5453 fra.me.has_broke = 0;
5454 fra.me.REG_size = 4;
5455 fra.me.nitni_local_ref_head = NULL;
5456 fra.me.REG[0] = NIT_NULL;
5457 fra.me.REG[1] = NIT_NULL;
5458 fra.me.REG[2] = NIT_NULL;
5459 fra.me.REG[3] = NIT_NULL;
5460 fra.me.REG[0] = p0;
5461 fra.me.REG[1] = p1;
5462 /* ./syntax//typing.nit:976 */
5463 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5464 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5465 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5466 /* ./syntax//typing.nit:979 */
5467 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5468 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5469 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5470 /* ./syntax//typing.nit:980 */
5471 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5472 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5473 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5474 /* ./syntax//typing.nit:982 */
5475 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5476 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5477 /* ./syntax//typing.nit:983 */
5478 REGB0 = TAG_Bool(true);
5479 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5480 stack_frame_head = fra.me.prev;
5481 return;
5482 }
5483 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5484 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5485 val_t REGB0;
5486 val_t REGB1;
5487 val_t tmp;
5488 static val_t once_value_1; /* Once value */
5489 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5490 fra.me.file = LOCATE_syntax___typing;
5491 fra.me.line = 988;
5492 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5493 fra.me.has_broke = 0;
5494 fra.me.REG_size = 7;
5495 fra.me.nitni_local_ref_head = NULL;
5496 fra.me.REG[0] = NIT_NULL;
5497 fra.me.REG[1] = NIT_NULL;
5498 fra.me.REG[2] = NIT_NULL;
5499 fra.me.REG[3] = NIT_NULL;
5500 fra.me.REG[4] = NIT_NULL;
5501 fra.me.REG[5] = NIT_NULL;
5502 fra.me.REG[6] = NIT_NULL;
5503 fra.me.REG[0] = p0;
5504 fra.me.REG[1] = p1;
5505 /* ./syntax//typing.nit:990 */
5506 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5507 /* ./syntax//typing.nit:993 */
5508 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5509 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5510 /* ./syntax//typing.nit:994 */
5511 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5512 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5513 /* ./syntax//typing.nit:997 */
5514 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5515 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5516 /* ./syntax//typing.nit:998 */
5517 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5519 if (UNTAG_Bool(REGB0)) {
5520 /* ./syntax//typing.nit:999 */
5521 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5522 if (!once_value_1) {
5523 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
5524 REGB0 = TAG_Int(60);
5525 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5526 once_value_1 = fra.me.REG[5];
5527 register_static_object(&once_value_1);
5528 } else fra.me.REG[5] = once_value_1;
5529 fra.me.REG[5] = fra.me.REG[5];
5530 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5531 } else {
5532 /* ./syntax//typing.nit:1001 */
5533 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5534 fra.me.REG[3] = fra.me.REG[5];
5535 }
5536 /* ./syntax//typing.nit:1005 */
5537 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5538 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5539 /* ./syntax//typing.nit:1006 */
5540 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5541 if (UNTAG_Bool(REGB0)) {
5542 } else {
5543 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5544 if (UNTAG_Bool(REGB1)) {
5545 REGB1 = TAG_Bool(false);
5546 REGB0 = REGB1;
5547 } else {
5548 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5549 REGB0 = REGB1;
5550 }
5551 }
5552 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5553 if (UNTAG_Bool(REGB0)) {
5554 /* ./syntax//typing.nit:1007 */
5555 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5556 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5557 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]);
5558 }
5559 /* ./syntax//typing.nit:1011 */
5560 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5561 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5562 /* ./syntax//typing.nit:1012 */
5563 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5564 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5565 /* ./syntax//typing.nit:1015 */
5566 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5567 /* ./syntax//typing.nit:1018 */
5568 REGB0 = TAG_Int(1);
5569 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5570 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5571 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5572 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]);
5573 /* ./syntax//typing.nit:1019 */
5574 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5575 if (UNTAG_Bool(REGB0)) {
5576 } else {
5577 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5578 if (UNTAG_Bool(REGB1)) {
5579 REGB1 = TAG_Bool(false);
5580 REGB0 = REGB1;
5581 } else {
5582 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5583 REGB0 = REGB1;
5584 }
5585 }
5586 if (UNTAG_Bool(REGB0)) {
5587 goto label2;
5588 }
5589 /* ./syntax//typing.nit:1021 */
5590 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5591 /* ./syntax//typing.nit:1022 */
5592 REGB0 = TAG_Bool(true);
5593 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5594 label2: while(0);
5595 stack_frame_head = fra.me.prev;
5596 return;
5597 }
5598 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5599 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5600 val_t REGB0;
5601 val_t tmp;
5602 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5603 fra.me.file = LOCATE_syntax___typing;
5604 fra.me.line = 1027;
5605 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5606 fra.me.has_broke = 0;
5607 fra.me.REG_size = 2;
5608 fra.me.nitni_local_ref_head = NULL;
5609 fra.me.REG[0] = NIT_NULL;
5610 fra.me.REG[1] = NIT_NULL;
5611 fra.me.REG[0] = p0;
5612 fra.me.REG[1] = p1;
5613 /* ./syntax//typing.nit:1029 */
5614 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5615 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5616 /* ./syntax//typing.nit:1030 */
5617 REGB0 = TAG_Bool(true);
5618 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5619 stack_frame_head = fra.me.prev;
5620 return;
5621 }
5622 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5623 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5624 val_t REGB0;
5625 val_t tmp;
5626 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5627 fra.me.file = LOCATE_syntax___typing;
5628 fra.me.line = 1035;
5629 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5630 fra.me.has_broke = 0;
5631 fra.me.REG_size = 2;
5632 fra.me.nitni_local_ref_head = NULL;
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:1037 */
5638 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(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:1038 */
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___ACharExpr___after_typing(val_t p0, val_t p1){
5647 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5648 val_t REGB0;
5649 val_t tmp;
5650 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5651 fra.me.file = LOCATE_syntax___typing;
5652 fra.me.line = 1043;
5653 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5654 fra.me.has_broke = 0;
5655 fra.me.REG_size = 2;
5656 fra.me.nitni_local_ref_head = NULL;
5657 fra.me.REG[0] = NIT_NULL;
5658 fra.me.REG[1] = NIT_NULL;
5659 fra.me.REG[0] = p0;
5660 fra.me.REG[1] = p1;
5661 /* ./syntax//typing.nit:1045 */
5662 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5663 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5664 /* ./syntax//typing.nit:1046 */
5665 REGB0 = TAG_Bool(true);
5666 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5667 stack_frame_head = fra.me.prev;
5668 return;
5669 }
5670 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5671 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5672 val_t REGB0;
5673 val_t tmp;
5674 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5675 fra.me.file = LOCATE_syntax___typing;
5676 fra.me.line = 1051;
5677 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5678 fra.me.has_broke = 0;
5679 fra.me.REG_size = 2;
5680 fra.me.nitni_local_ref_head = NULL;
5681 fra.me.REG[0] = NIT_NULL;
5682 fra.me.REG[1] = NIT_NULL;
5683 fra.me.REG[0] = p0;
5684 fra.me.REG[1] = p1;
5685 /* ./syntax//typing.nit:1053 */
5686 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5687 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5688 /* ./syntax//typing.nit:1054 */
5689 REGB0 = TAG_Bool(true);
5690 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5691 stack_frame_head = fra.me.prev;
5692 return;
5693 }
5694 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5695 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5696 val_t REGB0;
5697 val_t tmp;
5698 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5699 fra.me.file = LOCATE_syntax___typing;
5700 fra.me.line = 1059;
5701 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5702 fra.me.has_broke = 0;
5703 fra.me.REG_size = 2;
5704 fra.me.nitni_local_ref_head = NULL;
5705 fra.me.REG[0] = NIT_NULL;
5706 fra.me.REG[1] = NIT_NULL;
5707 fra.me.REG[0] = p0;
5708 /* ./syntax//typing.nit:1059 */
5709 fra.me.REG[1] = fra.me.REG[0];
5710 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
5711 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5712 if (UNTAG_Bool(REGB0)) {
5713 } else {
5714 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1059);
5715 }
5716 goto label1;
5717 label1: while(0);
5718 stack_frame_head = fra.me.prev;
5719 return fra.me.REG[1];
5720 }
5721 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5722 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5723 val_t REGB0;
5724 val_t tmp;
5725 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5726 fra.me.file = LOCATE_syntax___typing;
5727 fra.me.line = 1061;
5728 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5729 fra.me.has_broke = 0;
5730 fra.me.REG_size = 5;
5731 fra.me.nitni_local_ref_head = NULL;
5732 fra.me.REG[0] = NIT_NULL;
5733 fra.me.REG[1] = NIT_NULL;
5734 fra.me.REG[2] = NIT_NULL;
5735 fra.me.REG[3] = NIT_NULL;
5736 fra.me.REG[4] = NIT_NULL;
5737 fra.me.REG[0] = p0;
5738 fra.me.REG[1] = p1;
5739 /* ./syntax//typing.nit:1063 */
5740 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5741 /* ./syntax//typing.nit:1064 */
5742 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5743 /* ./syntax//typing.nit:1065 */
5744 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5745 /* ./syntax//typing.nit:1066 */
5746 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5747 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));
5748 /* ./syntax//typing.nit:1067 */
5749 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5750 /* ./syntax//typing.nit:1068 */
5751 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5752 /* ./syntax//typing.nit:1069 */
5753 REGB0 = TAG_Bool(true);
5754 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5755 stack_frame_head = fra.me.prev;
5756 return;
5757 }
5758 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){
5759 struct {struct stack_frame_t me;} fra;
5760 fun_t CREG[1];
5761 val_t tmp;
5762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5763 fra.me.file = LOCATE_syntax___typing;
5764 fra.me.line = 0;
5765 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5766 fra.me.has_broke = 0;
5767 fra.me.REG_size = 1;
5768 fra.me.nitni_local_ref_head = NULL;
5769 fra.me.REG[0] = NIT_NULL;
5770 fra.me.closure_ctx = closctx_param;
5771 fra.me.closure_funs = CREG;
5772 fra.me.REG[0] = p0;
5773 CREG[0] = clos_fun0;
5774 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5775 stack_frame_head = fra.me.prev;
5776 return;
5777 }
5778 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
5779 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5780 val_t REGB0;
5781 val_t tmp;
5782 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5783 fra.me.file = LOCATE_syntax___typing;
5784 fra.me.line = 1074;
5785 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
5786 fra.me.has_broke = 0;
5787 fra.me.REG_size = 2;
5788 fra.me.nitni_local_ref_head = NULL;
5789 fra.me.REG[0] = NIT_NULL;
5790 fra.me.REG[1] = NIT_NULL;
5791 fra.me.REG[0] = p0;
5792 fra.me.REG[1] = p1;
5793 /* ./syntax//typing.nit:1076 */
5794 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5795 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5796 /* ./syntax//typing.nit:1077 */
5797 REGB0 = TAG_Bool(true);
5798 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5799 stack_frame_head = fra.me.prev;
5800 return;
5801 }
5802 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5803 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5804 val_t REGB0;
5805 val_t REGB1;
5806 val_t tmp;
5807 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5808 fra.me.file = LOCATE_syntax___typing;
5809 fra.me.line = 1082;
5810 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
5811 fra.me.has_broke = 0;
5812 fra.me.REG_size = 3;
5813 fra.me.nitni_local_ref_head = NULL;
5814 fra.me.REG[0] = NIT_NULL;
5815 fra.me.REG[1] = NIT_NULL;
5816 fra.me.REG[2] = NIT_NULL;
5817 fra.me.REG[0] = p0;
5818 fra.me.REG[1] = p1;
5819 /* ./syntax//typing.nit:1084 */
5820 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5821 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]);
5822 /* ./syntax//typing.nit:1085 */
5823 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5824 if (UNTAG_Bool(REGB0)) {
5825 } else {
5826 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5827 if (UNTAG_Bool(REGB1)) {
5828 REGB1 = TAG_Bool(false);
5829 REGB0 = REGB1;
5830 } else {
5831 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5832 REGB0 = REGB1;
5833 }
5834 }
5835 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5836 if (UNTAG_Bool(REGB0)) {
5837 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5838 }
5839 stack_frame_head = fra.me.prev;
5840 return;
5841 }
5842 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5843 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5844 val_t REGB0;
5845 val_t tmp;
5846 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5847 fra.me.file = LOCATE_syntax___typing;
5848 fra.me.line = 1088;
5849 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
5850 fra.me.has_broke = 0;
5851 fra.me.REG_size = 3;
5852 fra.me.nitni_local_ref_head = NULL;
5853 fra.me.REG[0] = NIT_NULL;
5854 fra.me.REG[1] = NIT_NULL;
5855 fra.me.REG[2] = NIT_NULL;
5856 fra.me.REG[0] = p0;
5857 fra.me.REG[1] = p1;
5858 fra.me.REG[2] = p2;
5859 /* ./syntax//typing.nit:1090 */
5860 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5861 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5862 /* ./syntax//typing.nit:1091 */
5863 REGB0 = TAG_Bool(true);
5864 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5865 stack_frame_head = fra.me.prev;
5866 return;
5867 }
5868 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5869 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5870 val_t REGB0;
5871 val_t REGB1;
5872 val_t tmp;
5873 static val_t once_value_2; /* Once value */
5874 static val_t once_value_3; /* Once value */
5875 static val_t once_value_4; /* Once value */
5876 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5877 fra.me.file = LOCATE_syntax___typing;
5878 fra.me.line = 1096;
5879 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
5880 fra.me.has_broke = 0;
5881 fra.me.REG_size = 6;
5882 fra.me.nitni_local_ref_head = NULL;
5883 fra.me.REG[0] = NIT_NULL;
5884 fra.me.REG[1] = NIT_NULL;
5885 fra.me.REG[2] = NIT_NULL;
5886 fra.me.REG[3] = NIT_NULL;
5887 fra.me.REG[4] = NIT_NULL;
5888 fra.me.REG[5] = NIT_NULL;
5889 fra.me.REG[0] = p0;
5890 fra.me.REG[1] = p1;
5891 /* ./syntax//typing.nit:1098 */
5892 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5893 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5894 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5895 if (UNTAG_Bool(REGB0)) {
5896 REGB0 = TAG_Bool(true);
5897 } else {
5898 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5899 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5900 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5901 REGB0 = REGB1;
5902 }
5903 if (UNTAG_Bool(REGB0)) {
5904 goto label1;
5905 }
5906 /* ./syntax//typing.nit:1099 */
5907 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5908 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5909 /* ./syntax//typing.nit:1100 */
5910 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5911 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5912 /* ./syntax//typing.nit:1101 */
5913 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5914 if (UNTAG_Bool(REGB0)) {
5915 /* ./syntax//typing.nit:1102 */
5916 fra.me.REG[2] = fra.me.REG[3];
5917 } else {
5918 /* ./syntax//typing.nit:1103 */
5919 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5920 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5921 if (UNTAG_Bool(REGB0)) {
5922 /* ./syntax//typing.nit:1104 */
5923 REGB0 = TAG_Int(5);
5924 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5925 if (!once_value_2) {
5926 fra.me.REG[5] = BOX_NativeString("Type error: ");
5927 REGB0 = TAG_Int(12);
5928 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5929 once_value_2 = fra.me.REG[5];
5930 register_static_object(&once_value_2);
5931 } else fra.me.REG[5] = once_value_2;
5932 fra.me.REG[5] = fra.me.REG[5];
5933 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5934 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5935 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5936 if (!once_value_3) {
5937 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5938 REGB0 = TAG_Int(19);
5939 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5940 once_value_3 = fra.me.REG[5];
5941 register_static_object(&once_value_3);
5942 } else fra.me.REG[5] = once_value_3;
5943 fra.me.REG[5] = fra.me.REG[5];
5944 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5945 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5946 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5947 if (!once_value_4) {
5948 fra.me.REG[3] = BOX_NativeString(".");
5949 REGB0 = TAG_Int(1);
5950 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5951 once_value_4 = fra.me.REG[3];
5952 register_static_object(&once_value_4);
5953 } else fra.me.REG[3] = once_value_4;
5954 fra.me.REG[3] = fra.me.REG[3];
5955 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5956 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5957 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5958 /* ./syntax//typing.nit:1105 */
5959 goto label1;
5960 }
5961 }
5962 /* ./syntax//typing.nit:1107 */
5963 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5964 /* ./syntax//typing.nit:1108 */
5965 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5966 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]);
5967 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5968 if (UNTAG_Bool(REGB0)) {
5969 REGB0 = TAG_Bool(true);
5970 } else {
5971 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5972 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]);
5973 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5974 REGB0 = REGB1;
5975 }
5976 if (UNTAG_Bool(REGB0)) {
5977 goto label1;
5978 }
5979 /* ./syntax//typing.nit:1109 */
5980 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5981 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5982 /* ./syntax//typing.nit:1110 */
5983 REGB0 = TAG_Bool(true);
5984 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5985 label1: while(0);
5986 stack_frame_head = fra.me.prev;
5987 return;
5988 }
5989 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
5990 struct {struct stack_frame_t me;} fra;
5991 val_t tmp;
5992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5993 fra.me.file = LOCATE_syntax___typing;
5994 fra.me.line = 1115;
5995 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
5996 fra.me.has_broke = 0;
5997 fra.me.REG_size = 1;
5998 fra.me.nitni_local_ref_head = NULL;
5999 fra.me.REG[0] = NIT_NULL;
6000 fra.me.REG[0] = p0;
6001 /* ./syntax//typing.nit:1115 */
6002 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
6003 stack_frame_head = fra.me.prev;
6004 return fra.me.REG[0];
6005 }
6006 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
6007 struct {struct stack_frame_t me;} fra;
6008 val_t tmp;
6009 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6010 fra.me.file = LOCATE_syntax___typing;
6011 fra.me.line = 1116;
6012 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
6013 fra.me.has_broke = 0;
6014 fra.me.REG_size = 1;
6015 fra.me.nitni_local_ref_head = NULL;
6016 fra.me.REG[0] = NIT_NULL;
6017 fra.me.REG[0] = p0;
6018 /* ./syntax//typing.nit:1116 */
6019 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6020 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
6021 goto label1;
6022 label1: while(0);
6023 stack_frame_head = fra.me.prev;
6024 return fra.me.REG[0];
6025 }
6026 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
6027 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
6028 val_t REGB0;
6029 val_t REGB1;
6030 val_t REGB2;
6031 val_t tmp;
6032 static val_t once_value_1; /* Once value */
6033 static val_t once_value_2; /* Once value */
6034 static val_t once_value_3; /* Once value */
6035 static val_t once_value_5; /* Once value */
6036 static val_t once_value_6; /* Once value */
6037 static val_t once_value_8; /* Once value */
6038 static val_t once_value_9; /* Once value */
6039 static val_t once_value_10; /* Once value */
6040 static val_t once_value_11; /* Once value */
6041 static val_t once_value_12; /* Once value */
6042 static val_t once_value_13; /* Once value */
6043 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6044 fra.me.file = LOCATE_syntax___typing;
6045 fra.me.line = 1117;
6046 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
6047 fra.me.has_broke = 0;
6048 fra.me.REG_size = 10;
6049 fra.me.nitni_local_ref_head = NULL;
6050 fra.me.REG[0] = NIT_NULL;
6051 fra.me.REG[1] = NIT_NULL;
6052 fra.me.REG[2] = NIT_NULL;
6053 fra.me.REG[3] = NIT_NULL;
6054 fra.me.REG[4] = NIT_NULL;
6055 fra.me.REG[5] = NIT_NULL;
6056 fra.me.REG[6] = NIT_NULL;
6057 fra.me.REG[7] = NIT_NULL;
6058 fra.me.REG[8] = NIT_NULL;
6059 fra.me.REG[9] = NIT_NULL;
6060 fra.me.REG[0] = p0;
6061 fra.me.REG[1] = p1;
6062 /* ./syntax//typing.nit:1117 */
6063 fra.me.REG[2] = fra.me.REG[0];
6064 /* ./syntax//typing.nit:1119 */
6065 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6066 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
6067 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
6068 /* ./syntax//typing.nit:1120 */
6069 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6070 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6071 if (UNTAG_Bool(REGB0)) {
6072 /* ./syntax//typing.nit:1121 */
6073 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6074 REGB0 = TAG_Bool(true);
6075 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
6076 } else {
6077 /* ./syntax//typing.nit:1122 */
6078 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6079 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6080 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
6081 if (UNTAG_Bool(REGB0)) {
6082 /* ./syntax//typing.nit:1123 */
6083 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6084 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6085 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6086 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6087 /* ./../lib/standard//collection//array.nit:266 */
6088 fra.me.REG[4] = fra.me.REG[5];
6089 /* ./../lib/standard//collection//array.nit:269 */
6090 REGB0 = TAG_Int(0);
6091 /* ./../lib/standard//collection//array.nit:270 */
6092 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6093 if (UNTAG_Bool(REGB1)) {
6094 } else {
6095 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6096 }
6097 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6098 /* ./../lib/standard//collection//array.nit:271 */
6099 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6100 /* ./../lib/standard//collection//array.nit:272 */
6101 while(1) {
6102 /* ./../lib/standard//collection//array.nit:24 */
6103 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6104 if (UNTAG_Bool(REGB1)) {
6105 } else {
6106 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6107 }
6108 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6109 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6110 if (UNTAG_Bool(REGB2)) {
6111 } else {
6112 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6113 }
6114 /* ./../lib/standard//kernel.nit:232 */
6115 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6116 /* ./../lib/standard//collection//array.nit:272 */
6117 if (UNTAG_Bool(REGB1)) {
6118 /* ./../lib/standard//collection//array.nit:273 */
6119 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6120 if (UNTAG_Bool(REGB1)) {
6121 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6122 }
6123 /* ./../lib/standard//collection//array.nit:718 */
6124 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6125 /* ./syntax//typing.nit:1125 */
6126 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6127 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6128 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6129 if (UNTAG_Bool(REGB1)) {
6130 /* ./syntax//typing.nit:1126 */
6131 REGB1 = TAG_Int(5);
6132 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6133 if (!once_value_1) {
6134 fra.me.REG[9] = BOX_NativeString("Error: ");
6135 REGB1 = TAG_Int(7);
6136 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6137 once_value_1 = fra.me.REG[9];
6138 register_static_object(&once_value_1);
6139 } else fra.me.REG[9] = once_value_1;
6140 fra.me.REG[9] = fra.me.REG[9];
6141 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6142 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6143 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6145 if (!once_value_2) {
6146 fra.me.REG[9] = BOX_NativeString("::");
6147 REGB1 = TAG_Int(2);
6148 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6149 once_value_2 = fra.me.REG[9];
6150 register_static_object(&once_value_2);
6151 } else fra.me.REG[9] = once_value_2;
6152 fra.me.REG[9] = fra.me.REG[9];
6153 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6154 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6155 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6156 if (!once_value_3) {
6157 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6158 REGB1 = TAG_Int(22);
6159 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6160 once_value_3 = fra.me.REG[9];
6161 register_static_object(&once_value_3);
6162 } else fra.me.REG[9] = once_value_3;
6163 fra.me.REG[9] = fra.me.REG[9];
6164 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6165 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6166 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6167 } else {
6168 /* ./syntax//typing.nit:1128 */
6169 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6170 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6171 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6173 }
6174 /* ./../lib/standard//collection//array.nit:274 */
6175 REGB1 = TAG_Int(1);
6176 /* ./../lib/standard//kernel.nit:235 */
6177 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6178 /* ./../lib/standard//collection//array.nit:274 */
6179 REGB0 = REGB1;
6180 } else {
6181 /* ./../lib/standard//collection//array.nit:272 */
6182 goto label4;
6183 }
6184 }
6185 label4: while(0);
6186 /* ./syntax//typing.nit:1131 */
6187 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6188 if (UNTAG_Bool(REGB0)) {
6189 /* ./syntax//typing.nit:1132 */
6190 REGB0 = TAG_Int(3);
6191 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6192 if (!once_value_5) {
6193 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6194 REGB0 = TAG_Int(27);
6195 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6196 once_value_5 = fra.me.REG[4];
6197 register_static_object(&once_value_5);
6198 } else fra.me.REG[4] = once_value_5;
6199 fra.me.REG[4] = fra.me.REG[4];
6200 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6201 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6202 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6203 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6204 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6205 if (!once_value_6) {
6206 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6207 REGB0 = TAG_Int(17);
6208 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6209 once_value_6 = fra.me.REG[4];
6210 register_static_object(&once_value_6);
6211 } else fra.me.REG[4] = once_value_6;
6212 fra.me.REG[4] = fra.me.REG[4];
6213 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6214 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6215 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6216 /* ./syntax//typing.nit:1133 */
6217 goto label7;
6218 } else {
6219 /* ./../lib/standard//collection//array.nit:24 */
6220 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6221 if (UNTAG_Bool(REGB0)) {
6222 } else {
6223 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6224 }
6225 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6226 /* ./syntax//typing.nit:1134 */
6227 REGB1 = TAG_Int(1);
6228 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6229 if (UNTAG_Bool(REGB2)) {
6230 } else {
6231 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6232 }
6233 /* ./../lib/standard//kernel.nit:234 */
6234 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6235 /* ./syntax//typing.nit:1134 */
6236 if (UNTAG_Bool(REGB1)) {
6237 /* ./syntax//typing.nit:1135 */
6238 REGB1 = TAG_Int(5);
6239 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6240 if (!once_value_8) {
6241 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6242 REGB1 = TAG_Int(37);
6243 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6244 once_value_8 = fra.me.REG[4];
6245 register_static_object(&once_value_8);
6246 } else fra.me.REG[4] = once_value_8;
6247 fra.me.REG[4] = fra.me.REG[4];
6248 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6249 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6250 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6251 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6252 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6253 if (!once_value_9) {
6254 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6255 REGB1 = TAG_Int(18);
6256 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6257 once_value_9 = fra.me.REG[4];
6258 register_static_object(&once_value_9);
6259 } else fra.me.REG[4] = once_value_9;
6260 fra.me.REG[4] = fra.me.REG[4];
6261 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6262 if (!once_value_10) {
6263 fra.me.REG[4] = BOX_NativeString(", ");
6264 REGB1 = TAG_Int(2);
6265 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6266 once_value_10 = fra.me.REG[4];
6267 register_static_object(&once_value_10);
6268 } else fra.me.REG[4] = once_value_10;
6269 fra.me.REG[4] = fra.me.REG[4];
6270 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6271 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6272 if (!once_value_11) {
6273 fra.me.REG[4] = BOX_NativeString(".");
6274 REGB1 = TAG_Int(1);
6275 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6276 once_value_11 = fra.me.REG[4];
6277 register_static_object(&once_value_11);
6278 } else fra.me.REG[4] = once_value_11;
6279 fra.me.REG[4] = fra.me.REG[4];
6280 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6281 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6282 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6283 /* ./syntax//typing.nit:1136 */
6284 goto label7;
6285 }
6286 }
6287 /* ./syntax//typing.nit:1138 */
6288 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6289 /* ./syntax//typing.nit:1139 */
6290 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6291 if (UNTAG_Bool(REGB1)) {
6292 } else {
6293 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1139);
6294 }
6295 /* ./syntax//typing.nit:1140 */
6296 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6297 /* ./syntax//typing.nit:1141 */
6298 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6299 /* ./syntax//typing.nit:1142 */
6300 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6301 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6302 REGB0 = TAG_Int(0);
6303 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6304 if (UNTAG_Bool(REGB2)) {
6305 } else {
6306 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6307 }
6308 /* ./../lib/standard//kernel.nit:234 */
6309 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6310 /* ./syntax//typing.nit:1142 */
6311 if (UNTAG_Bool(REGB0)) {
6312 /* ./syntax//typing.nit:1143 */
6313 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6314 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6315 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*/;
6316 if (UNTAG_Bool(REGB0)) {
6317 } else {
6318 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1143);
6319 }
6320 REGB0 = TAG_Bool(true);
6321 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);
6322 /* ./syntax//typing.nit:1144 */
6323 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6324 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6325 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]);
6326 }
6327 } else {
6328 /* ./syntax//typing.nit:1147 */
6329 REGB0 = TAG_Int(3);
6330 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6331 if (!once_value_12) {
6332 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6333 REGB0 = TAG_Int(35);
6334 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6335 once_value_12 = fra.me.REG[5];
6336 register_static_object(&once_value_12);
6337 } else fra.me.REG[5] = once_value_12;
6338 fra.me.REG[5] = fra.me.REG[5];
6339 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6340 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6341 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6343 if (!once_value_13) {
6344 fra.me.REG[5] = BOX_NativeString(".");
6345 REGB0 = TAG_Int(1);
6346 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6347 once_value_13 = fra.me.REG[5];
6348 register_static_object(&once_value_13);
6349 } else fra.me.REG[5] = once_value_13;
6350 fra.me.REG[5] = fra.me.REG[5];
6351 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6352 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6353 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6354 /* ./syntax//typing.nit:1148 */
6355 goto label7;
6356 }
6357 }
6358 /* ./syntax//typing.nit:1151 */
6359 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6360 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6361 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6362 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*/;
6363 if (UNTAG_Bool(REGB0)) {
6364 } else {
6365 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1151);
6366 }
6367 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6368 if (UNTAG_Bool(REGB0)) {
6369 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1151);
6370 }
6371 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6372 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6373 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6374 if (UNTAG_Bool(REGB0)) {
6375 } else {
6376 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6377 if (UNTAG_Bool(REGB1)) {
6378 REGB1 = TAG_Bool(false);
6379 REGB0 = REGB1;
6380 } else {
6381 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6382 REGB0 = REGB1;
6383 }
6384 }
6385 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6386 if (UNTAG_Bool(REGB0)) {
6387 /* ./syntax//typing.nit:1152 */
6388 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6389 /* ./syntax//typing.nit:1153 */
6390 fra.me.REG[4] = NIT_NULL;
6391 /* ./../lib/standard//collection//array.nit:269 */
6392 REGB0 = TAG_Int(0);
6393 /* ./../lib/standard//collection//array.nit:270 */
6394 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6395 if (UNTAG_Bool(REGB1)) {
6396 } else {
6397 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6398 }
6399 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6400 /* ./../lib/standard//collection//array.nit:271 */
6401 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6402 /* ./../lib/standard//collection//array.nit:272 */
6403 while(1) {
6404 /* ./../lib/standard//collection//array.nit:24 */
6405 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6406 if (UNTAG_Bool(REGB1)) {
6407 } else {
6408 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6409 }
6410 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6411 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6412 if (UNTAG_Bool(REGB2)) {
6413 } else {
6414 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6415 }
6416 /* ./../lib/standard//kernel.nit:232 */
6417 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6418 /* ./../lib/standard//collection//array.nit:272 */
6419 if (UNTAG_Bool(REGB1)) {
6420 /* ./../lib/standard//collection//array.nit:273 */
6421 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6422 if (UNTAG_Bool(REGB1)) {
6423 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6424 }
6425 /* ./../lib/standard//collection//array.nit:718 */
6426 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6427 /* ./syntax//typing.nit:1155 */
6428 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6429 if (UNTAG_Bool(REGB1)) {
6430 } else {
6431 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1155);
6432 }
6433 /* ./syntax//typing.nit:1156 */
6434 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6435 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6436 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*/;
6437 if (UNTAG_Bool(REGB1)) {
6438 } else {
6439 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1156);
6440 }
6441 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6442 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6443 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6444 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6445 if (UNTAG_Bool(REGB1)) {
6446 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6447 }
6448 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6449 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6450 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6451 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6452 if (UNTAG_Bool(REGB1)) {
6453 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6454 }
6455 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6456 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6457 /* ./syntax//typing.nit:1157 */
6458 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6459 /* ./syntax//typing.nit:1158 */
6460 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6461 if (UNTAG_Bool(REGB1)) {
6462 } else {
6463 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6464 if (UNTAG_Bool(REGB2)) {
6465 REGB2 = TAG_Bool(false);
6466 REGB1 = REGB2;
6467 } else {
6468 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6469 REGB1 = REGB2;
6470 }
6471 }
6472 if (UNTAG_Bool(REGB1)) {
6473 REGB1 = TAG_Bool(true);
6474 } else {
6475 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6476 if (UNTAG_Bool(REGB2)) {
6477 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1158);
6478 }
6479 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6480 REGB1 = REGB2;
6481 }
6482 if (UNTAG_Bool(REGB1)) {
6483 /* ./syntax//typing.nit:1159 */
6484 fra.me.REG[4] = fra.me.REG[8];
6485 }
6486 /* ./../lib/standard//collection//array.nit:274 */
6487 REGB1 = TAG_Int(1);
6488 /* ./../lib/standard//kernel.nit:235 */
6489 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6490 /* ./../lib/standard//collection//array.nit:274 */
6491 REGB0 = REGB1;
6492 } else {
6493 /* ./../lib/standard//collection//array.nit:272 */
6494 goto label14;
6495 }
6496 }
6497 label14: while(0);
6498 /* ./../lib/standard//collection//array.nit:269 */
6499 REGB0 = TAG_Int(0);
6500 /* ./../lib/standard//collection//array.nit:270 */
6501 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6502 if (UNTAG_Bool(REGB1)) {
6503 } else {
6504 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6505 }
6506 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6507 /* ./../lib/standard//collection//array.nit:271 */
6508 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6509 /* ./../lib/standard//collection//array.nit:272 */
6510 while(1) {
6511 /* ./../lib/standard//collection//array.nit:24 */
6512 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6513 if (UNTAG_Bool(REGB1)) {
6514 } else {
6515 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6516 }
6517 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6518 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6519 if (UNTAG_Bool(REGB2)) {
6520 } else {
6521 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6522 }
6523 /* ./../lib/standard//kernel.nit:232 */
6524 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6525 /* ./../lib/standard//collection//array.nit:272 */
6526 if (UNTAG_Bool(REGB1)) {
6527 /* ./../lib/standard//collection//array.nit:273 */
6528 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6529 if (UNTAG_Bool(REGB1)) {
6530 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6531 }
6532 /* ./../lib/standard//collection//array.nit:718 */
6533 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6534 /* ./syntax//typing.nit:1163 */
6535 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6536 if (UNTAG_Bool(REGB1)) {
6537 } else {
6538 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1163);
6539 }
6540 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]);
6541 /* ./../lib/standard//collection//array.nit:274 */
6542 REGB1 = TAG_Int(1);
6543 /* ./../lib/standard//kernel.nit:235 */
6544 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6545 /* ./../lib/standard//collection//array.nit:274 */
6546 REGB0 = REGB1;
6547 } else {
6548 /* ./../lib/standard//collection//array.nit:272 */
6549 goto label15;
6550 }
6551 }
6552 label15: while(0);
6553 /* ./syntax//typing.nit:1165 */
6554 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6555 }
6556 /* ./syntax//typing.nit:1167 */
6557 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6558 /* ./syntax//typing.nit:1168 */
6559 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6560 if (UNTAG_Bool(REGB0)) {
6561 } else {
6562 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1168);
6563 }
6564 /* ./syntax//typing.nit:1169 */
6565 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6566 /* ./syntax//typing.nit:1170 */
6567 REGB0 = TAG_Bool(true);
6568 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6569 label7: while(0);
6570 stack_frame_head = fra.me.prev;
6571 return;
6572 }
6573 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6574 struct {struct stack_frame_t me;} fra;
6575 val_t tmp;
6576 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6577 fra.me.file = LOCATE_syntax___typing;
6578 fra.me.line = 1175;
6579 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6580 fra.me.has_broke = 0;
6581 fra.me.REG_size = 1;
6582 fra.me.nitni_local_ref_head = NULL;
6583 fra.me.REG[0] = NIT_NULL;
6584 fra.me.REG[0] = p0;
6585 /* ./syntax//typing.nit:1175 */
6586 fra.me.REG[0] = NIT_NULL;
6587 goto label1;
6588 label1: while(0);
6589 stack_frame_head = fra.me.prev;
6590 return fra.me.REG[0];
6591 }
6592 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6593 struct {struct stack_frame_t me;} fra;
6594 val_t tmp;
6595 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6596 fra.me.file = LOCATE_syntax___typing;
6597 fra.me.line = 1176;
6598 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6599 fra.me.has_broke = 0;
6600 fra.me.REG_size = 0;
6601 fra.me.nitni_local_ref_head = NULL;
6602 /* ./syntax//typing.nit:1176 */
6603 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1176);
6604 stack_frame_head = fra.me.prev;
6605 return NIT_NULL;
6606 }
6607 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6608 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6609 val_t REGB0;
6610 val_t REGB1;
6611 val_t tmp;
6612 static val_t once_value_1; /* Once value */
6613 static val_t once_value_2; /* Once value */
6614 static val_t once_value_4; /* Once value */
6615 static val_t once_value_5; /* Once value */
6616 static val_t once_value_6; /* Once value */
6617 static val_t once_value_7; /* Once value */
6618 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6619 fra.me.file = LOCATE_syntax___typing;
6620 fra.me.line = 1178;
6621 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6622 fra.me.has_broke = 0;
6623 fra.me.REG_size = 8;
6624 fra.me.nitni_local_ref_head = NULL;
6625 fra.me.REG[0] = NIT_NULL;
6626 fra.me.REG[1] = NIT_NULL;
6627 fra.me.REG[2] = NIT_NULL;
6628 fra.me.REG[3] = NIT_NULL;
6629 fra.me.REG[4] = NIT_NULL;
6630 fra.me.REG[5] = NIT_NULL;
6631 fra.me.REG[6] = NIT_NULL;
6632 fra.me.REG[7] = NIT_NULL;
6633 fra.me.REG[0] = p0;
6634 fra.me.REG[1] = p1;
6635 /* ./syntax//typing.nit:1178 */
6636 fra.me.REG[2] = fra.me.REG[0];
6637 /* ./syntax//typing.nit:1180 */
6638 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6639 /* ./syntax//typing.nit:1181 */
6640 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6641 /* ./syntax//typing.nit:1188 */
6642 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6643 if (UNTAG_Bool(REGB0)) {
6644 } else {
6645 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6646 if (UNTAG_Bool(REGB1)) {
6647 REGB1 = TAG_Bool(false);
6648 REGB0 = REGB1;
6649 } else {
6650 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6651 REGB0 = REGB1;
6652 }
6653 }
6654 if (UNTAG_Bool(REGB0)) {
6655 /* ./syntax//typing.nit:1189 */
6656 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6657 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6658 } else {
6659 /* ./syntax//typing.nit:1191 */
6660 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6661 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6662 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6663 if (UNTAG_Bool(REGB0)) {
6664 /* ./syntax//typing.nit:1192 */
6665 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6666 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6667 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6668 /* ./syntax//typing.nit:1193 */
6669 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6670 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6671 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6672 fra.me.REG[5] = fra.me.REG[6];
6673 } else {
6674 /* ./syntax//typing.nit:1195 */
6675 REGB0 = TAG_Int(3);
6676 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6677 if (!once_value_1) {
6678 fra.me.REG[7] = BOX_NativeString("Error: class ");
6679 REGB0 = TAG_Int(13);
6680 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6681 once_value_1 = fra.me.REG[7];
6682 register_static_object(&once_value_1);
6683 } else fra.me.REG[7] = once_value_1;
6684 fra.me.REG[7] = fra.me.REG[7];
6685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6686 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6687 if (UNTAG_Bool(REGB0)) {
6688 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1195);
6689 }
6690 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6692 if (!once_value_2) {
6693 fra.me.REG[3] = BOX_NativeString(", not found.");
6694 REGB0 = TAG_Int(12);
6695 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6696 once_value_2 = fra.me.REG[3];
6697 register_static_object(&once_value_2);
6698 } else fra.me.REG[3] = once_value_2;
6699 fra.me.REG[3] = fra.me.REG[3];
6700 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6701 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6702 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6703 /* ./syntax//typing.nit:1196 */
6704 goto label3;
6705 }
6706 }
6707 /* ./syntax//typing.nit:1200 */
6708 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6709 if (UNTAG_Bool(REGB0)) {
6710 /* ./syntax//typing.nit:1201 */
6711 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6712 /* ./syntax//typing.nit:1203 */
6713 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6714 /* ./syntax//typing.nit:1205 */
6715 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6716 if (UNTAG_Bool(REGB0)) {
6717 } else {
6718 /* ./syntax//typing.nit:1208 */
6719 REGB0 = TAG_Int(3);
6720 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6721 if (!once_value_4) {
6722 fra.me.REG[7] = BOX_NativeString("Error: property ");
6723 REGB0 = TAG_Int(16);
6724 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6725 once_value_4 = fra.me.REG[7];
6726 register_static_object(&once_value_4);
6727 } else fra.me.REG[7] = once_value_4;
6728 fra.me.REG[7] = fra.me.REG[7];
6729 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6730 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6731 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6732 if (!once_value_5) {
6733 fra.me.REG[7] = BOX_NativeString(" is not a method.");
6734 REGB0 = TAG_Int(17);
6735 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6736 once_value_5 = fra.me.REG[7];
6737 register_static_object(&once_value_5);
6738 } else fra.me.REG[7] = once_value_5;
6739 fra.me.REG[7] = fra.me.REG[7];
6740 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6741 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6742 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6743 /* ./syntax//typing.nit:1209 */
6744 goto label3;
6745 }
6746 } else {
6747 /* ./syntax//typing.nit:1212 */
6748 REGB0 = TAG_Int(3);
6749 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6750 if (!once_value_6) {
6751 fra.me.REG[7] = BOX_NativeString("Error: property ");
6752 REGB0 = TAG_Int(16);
6753 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6754 once_value_6 = fra.me.REG[7];
6755 register_static_object(&once_value_6);
6756 } else fra.me.REG[7] = once_value_6;
6757 fra.me.REG[7] = fra.me.REG[7];
6758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6759 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6760 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6761 if (!once_value_7) {
6762 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
6763 REGB0 = TAG_Int(27);
6764 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6765 once_value_7 = fra.me.REG[4];
6766 register_static_object(&once_value_7);
6767 } else fra.me.REG[4] = once_value_7;
6768 fra.me.REG[4] = fra.me.REG[4];
6769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6770 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6771 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6772 /* ./syntax//typing.nit:1213 */
6773 goto label3;
6774 }
6775 /* ./syntax//typing.nit:1216 */
6776 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
6777 /* ./syntax//typing.nit:1217 */
6778 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6779 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6780 if (UNTAG_Bool(REGB0)) {
6781 } else {
6782 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1217);
6783 }
6784 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
6785 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6786 label3: while(0);
6787 stack_frame_head = fra.me.prev;
6788 return;
6789 }
6790 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
6791 struct {struct stack_frame_t me;} fra;
6792 val_t tmp;
6793 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6794 fra.me.file = LOCATE_syntax___typing;
6795 fra.me.line = 1222;
6796 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
6797 fra.me.has_broke = 0;
6798 fra.me.REG_size = 1;
6799 fra.me.nitni_local_ref_head = NULL;
6800 fra.me.REG[0] = NIT_NULL;
6801 fra.me.REG[0] = p0;
6802 /* ./syntax//typing.nit:1222 */
6803 fra.me.REG[0] = NIT_NULL;
6804 goto label1;
6805 label1: while(0);
6806 stack_frame_head = fra.me.prev;
6807 return fra.me.REG[0];
6808 }
6809 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
6810 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6811 val_t REGB0;
6812 val_t tmp;
6813 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6814 fra.me.file = LOCATE_syntax___typing;
6815 fra.me.line = 1223;
6816 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
6817 fra.me.has_broke = 0;
6818 fra.me.REG_size = 2;
6819 fra.me.nitni_local_ref_head = NULL;
6820 fra.me.REG[0] = NIT_NULL;
6821 fra.me.REG[1] = NIT_NULL;
6822 fra.me.REG[0] = p0;
6823 /* ./syntax//typing.nit:1223 */
6824 fra.me.REG[1] = fra.me.REG[0];
6825 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
6826 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
6827 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
6828 if (UNTAG_Bool(REGB0)) {
6829 } else {
6830 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1223);
6831 }
6832 goto label1;
6833 label1: while(0);
6834 stack_frame_head = fra.me.prev;
6835 return fra.me.REG[1];
6836 }
6837 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
6838 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6839 val_t REGB0;
6840 val_t tmp;
6841 static val_t once_value_1; /* Once value */
6842 static val_t once_value_2; /* Once value */
6843 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6844 fra.me.file = LOCATE_syntax___typing;
6845 fra.me.line = 1227;
6846 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
6847 fra.me.has_broke = 0;
6848 fra.me.REG_size = 4;
6849 fra.me.nitni_local_ref_head = NULL;
6850 fra.me.REG[0] = NIT_NULL;
6851 fra.me.REG[1] = NIT_NULL;
6852 fra.me.REG[2] = NIT_NULL;
6853 fra.me.REG[3] = NIT_NULL;
6854 fra.me.REG[0] = p0;
6855 fra.me.REG[1] = p1;
6856 /* ./syntax//typing.nit:1229 */
6857 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6858 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
6859 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
6860 /* ./syntax//typing.nit:1230 */
6861 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
6862 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6863 if (UNTAG_Bool(REGB0)) {
6864 /* ./syntax//typing.nit:1231 */
6865 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6866 REGB0 = TAG_Bool(true);
6867 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
6868 } else {
6869 /* ./syntax//typing.nit:1233 */
6870 REGB0 = TAG_Int(3);
6871 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6872 if (!once_value_1) {
6873 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
6874 REGB0 = TAG_Int(35);
6875 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6876 once_value_1 = fra.me.REG[3];
6877 register_static_object(&once_value_1);
6878 } else fra.me.REG[3] = once_value_1;
6879 fra.me.REG[3] = fra.me.REG[3];
6880 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6881 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6882 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6884 if (!once_value_2) {
6885 fra.me.REG[3] = BOX_NativeString(".");
6886 REGB0 = TAG_Int(1);
6887 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6888 once_value_2 = fra.me.REG[3];
6889 register_static_object(&once_value_2);
6890 } else fra.me.REG[3] = once_value_2;
6891 fra.me.REG[3] = fra.me.REG[3];
6892 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6893 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6894 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6895 /* ./syntax//typing.nit:1234 */
6896 goto label3;
6897 }
6898 label3: while(0);
6899 stack_frame_head = fra.me.prev;
6900 return;
6901 }
6902 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
6903 struct {struct stack_frame_t me;} fra;
6904 val_t tmp;
6905 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6906 fra.me.file = LOCATE_syntax___typing;
6907 fra.me.line = 1240;
6908 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
6909 fra.me.has_broke = 0;
6910 fra.me.REG_size = 1;
6911 fra.me.nitni_local_ref_head = NULL;
6912 fra.me.REG[0] = NIT_NULL;
6913 fra.me.REG[0] = p0;
6914 /* ./syntax//typing.nit:1240 */
6915 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6916 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6917 goto label1;
6918 label1: while(0);
6919 stack_frame_head = fra.me.prev;
6920 return fra.me.REG[0];
6921 }
6922 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
6923 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6924 val_t REGB0;
6925 val_t tmp;
6926 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6927 fra.me.file = LOCATE_syntax___typing;
6928 fra.me.line = 1241;
6929 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
6930 fra.me.has_broke = 0;
6931 fra.me.REG_size = 2;
6932 fra.me.nitni_local_ref_head = NULL;
6933 fra.me.REG[0] = NIT_NULL;
6934 fra.me.REG[1] = NIT_NULL;
6935 fra.me.REG[0] = p0;
6936 /* ./syntax//typing.nit:1241 */
6937 fra.me.REG[1] = fra.me.REG[0];
6938 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
6939 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
6940 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
6941 if (UNTAG_Bool(REGB0)) {
6942 } else {
6943 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1241);
6944 }
6945 goto label1;
6946 label1: while(0);
6947 stack_frame_head = fra.me.prev;
6948 return fra.me.REG[1];
6949 }
6950 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
6951 struct {struct stack_frame_t me;} fra;
6952 val_t tmp;
6953 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6954 fra.me.file = LOCATE_syntax___typing;
6955 fra.me.line = 1245;
6956 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
6957 fra.me.has_broke = 0;
6958 fra.me.REG_size = 1;
6959 fra.me.nitni_local_ref_head = NULL;
6960 fra.me.REG[0] = NIT_NULL;
6961 fra.me.REG[0] = p0;
6962 /* ./syntax//typing.nit:1245 */
6963 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6964 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6965 goto label1;
6966 label1: while(0);
6967 stack_frame_head = fra.me.prev;
6968 return fra.me.REG[0];
6969 }
6970 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
6971 struct {struct stack_frame_t me;} fra;
6972 val_t REGB0;
6973 val_t tmp;
6974 static val_t once_value_1; /* Once value */
6975 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6976 fra.me.file = LOCATE_syntax___typing;
6977 fra.me.line = 1246;
6978 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
6979 fra.me.has_broke = 0;
6980 fra.me.REG_size = 1;
6981 fra.me.nitni_local_ref_head = NULL;
6982 fra.me.REG[0] = NIT_NULL;
6983 fra.me.REG[0] = p0;
6984 /* ./syntax//typing.nit:1246 */
6985 if (!once_value_1) {
6986 fra.me.REG[0] = BOX_NativeString("init");
6987 REGB0 = TAG_Int(4);
6988 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
6989 once_value_1 = fra.me.REG[0];
6990 register_static_object(&once_value_1);
6991 } else fra.me.REG[0] = once_value_1;
6992 fra.me.REG[0] = fra.me.REG[0];
6993 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6994 goto label2;
6995 label2: while(0);
6996 stack_frame_head = fra.me.prev;
6997 return fra.me.REG[0];
6998 }
6999 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
7000 struct {struct stack_frame_t me;} fra;
7001 val_t tmp;
7002 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7003 fra.me.file = LOCATE_syntax___typing;
7004 fra.me.line = 1250;
7005 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
7006 fra.me.has_broke = 0;
7007 fra.me.REG_size = 0;
7008 fra.me.nitni_local_ref_head = NULL;
7009 /* ./syntax//typing.nit:1250 */
7010 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1250);
7011 stack_frame_head = fra.me.prev;
7012 return NIT_NULL;
7013 }
7014 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
7015 struct {struct stack_frame_t me;} fra;
7016 val_t tmp;
7017 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7018 fra.me.file = LOCATE_syntax___typing;
7019 fra.me.line = 1251;
7020 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
7021 fra.me.has_broke = 0;
7022 fra.me.REG_size = 0;
7023 fra.me.nitni_local_ref_head = NULL;
7024 /* ./syntax//typing.nit:1251 */
7025 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1251);
7026 stack_frame_head = fra.me.prev;
7027 return NIT_NULL;
7028 }
7029 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
7030 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7031 val_t REGB0;
7032 val_t REGB1;
7033 val_t tmp;
7034 static val_t once_value_1; /* Once value */
7035 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7036 fra.me.file = LOCATE_syntax___typing;
7037 fra.me.line = 1253;
7038 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
7039 fra.me.has_broke = 0;
7040 fra.me.REG_size = 4;
7041 fra.me.nitni_local_ref_head = NULL;
7042 fra.me.REG[0] = NIT_NULL;
7043 fra.me.REG[1] = NIT_NULL;
7044 fra.me.REG[2] = NIT_NULL;
7045 fra.me.REG[3] = NIT_NULL;
7046 fra.me.REG[0] = p0;
7047 fra.me.REG[1] = p1;
7048 /* ./syntax//typing.nit:1255 */
7049 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7050 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7051 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
7052 if (UNTAG_Bool(REGB0)) {
7053 } else {
7054 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7055 REGB0 = REGB1;
7056 }
7057 if (UNTAG_Bool(REGB0)) {
7058 /* ./syntax//typing.nit:1257 */
7059 if (!once_value_1) {
7060 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
7061 REGB0 = TAG_Int(44);
7062 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7063 once_value_1 = fra.me.REG[3];
7064 register_static_object(&once_value_1);
7065 } else fra.me.REG[3] = once_value_1;
7066 fra.me.REG[3] = fra.me.REG[3];
7067 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7068 }
7069 /* ./syntax//typing.nit:1260 */
7070 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7071 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7072 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
7073 /* ./syntax//typing.nit:1261 */
7074 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7075 /* ./syntax//typing.nit:1262 */
7076 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7077 if (UNTAG_Bool(REGB0)) {
7078 } else {
7079 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1262);
7080 }
7081 /* ./syntax//typing.nit:1263 */
7082 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
7083 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7084 stack_frame_head = fra.me.prev;
7085 return;
7086 }
7087 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
7088 struct {struct stack_frame_t me;} fra;
7089 val_t tmp;
7090 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7091 fra.me.file = LOCATE_syntax___typing;
7092 fra.me.line = 1268;
7093 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
7094 fra.me.has_broke = 0;
7095 fra.me.REG_size = 1;
7096 fra.me.nitni_local_ref_head = NULL;
7097 fra.me.REG[0] = NIT_NULL;
7098 fra.me.REG[0] = p0;
7099 /* ./syntax//typing.nit:1268 */
7100 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
7101 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7102 goto label1;
7103 label1: while(0);
7104 stack_frame_head = fra.me.prev;
7105 return fra.me.REG[0];
7106 }
7107 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
7108 struct {struct stack_frame_t me;} fra;
7109 val_t tmp;
7110 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7111 fra.me.file = LOCATE_syntax___typing;
7112 fra.me.line = 1269;
7113 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
7114 fra.me.has_broke = 0;
7115 fra.me.REG_size = 1;
7116 fra.me.nitni_local_ref_head = NULL;
7117 fra.me.REG[0] = NIT_NULL;
7118 fra.me.REG[0] = p0;
7119 /* ./syntax//typing.nit:1269 */
7120 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
7121 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7122 goto label1;
7123 label1: while(0);
7124 stack_frame_head = fra.me.prev;
7125 return fra.me.REG[0];
7126 }
7127 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7128 struct {struct stack_frame_t me;} fra;
7129 val_t tmp;
7130 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7131 fra.me.file = LOCATE_syntax___typing;
7132 fra.me.line = 1273;
7133 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7134 fra.me.has_broke = 0;
7135 fra.me.REG_size = 1;
7136 fra.me.nitni_local_ref_head = NULL;
7137 fra.me.REG[0] = NIT_NULL;
7138 fra.me.REG[0] = p0;
7139 /* ./syntax//typing.nit:1273 */
7140 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7141 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7142 goto label1;
7143 label1: while(0);
7144 stack_frame_head = fra.me.prev;
7145 return fra.me.REG[0];
7146 }
7147 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7148 struct {struct stack_frame_t me;} fra;
7149 val_t tmp;
7150 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7151 fra.me.file = LOCATE_syntax___typing;
7152 fra.me.line = 1274;
7153 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7154 fra.me.has_broke = 0;
7155 fra.me.REG_size = 1;
7156 fra.me.nitni_local_ref_head = NULL;
7157 fra.me.REG[0] = NIT_NULL;
7158 fra.me.REG[0] = p0;
7159 /* ./syntax//typing.nit:1274 */
7160 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7161 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7162 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7163 goto label1;
7164 label1: while(0);
7165 stack_frame_head = fra.me.prev;
7166 return fra.me.REG[0];
7167 }
7168 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7169 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7170 val_t REGB0;
7171 val_t tmp;
7172 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7173 fra.me.file = LOCATE_syntax___typing;
7174 fra.me.line = 1278;
7175 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7176 fra.me.has_broke = 0;
7177 fra.me.REG_size = 2;
7178 fra.me.nitni_local_ref_head = NULL;
7179 fra.me.REG[0] = NIT_NULL;
7180 fra.me.REG[1] = NIT_NULL;
7181 fra.me.REG[0] = p0;
7182 /* ./syntax//typing.nit:1280 */
7183 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7184 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7185 /* ./syntax//typing.nit:1281 */
7186 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7187 if (UNTAG_Bool(REGB0)) {
7188 /* ./syntax//typing.nit:1283 */
7189 fra.me.REG[1] = fra.me.REG[0];
7190 goto label1;
7191 } else {
7192 /* ./syntax//typing.nit:1285 */
7193 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7194 fra.me.REG[1] = fra.me.REG[0];
7195 goto label1;
7196 }
7197 label1: while(0);
7198 stack_frame_head = fra.me.prev;
7199 return fra.me.REG[1];
7200 }
7201 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7202 struct {struct stack_frame_t me;} fra;
7203 val_t tmp;
7204 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7205 fra.me.file = LOCATE_syntax___typing;
7206 fra.me.line = 1288;
7207 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7208 fra.me.has_broke = 0;
7209 fra.me.REG_size = 1;
7210 fra.me.nitni_local_ref_head = NULL;
7211 fra.me.REG[0] = NIT_NULL;
7212 fra.me.REG[0] = p0;
7213 /* ./syntax//typing.nit:1288 */
7214 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7215 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7216 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7217 goto label1;
7218 label1: while(0);
7219 stack_frame_head = fra.me.prev;
7220 return fra.me.REG[0];
7221 }
7222 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7223 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7224 val_t REGB0;
7225 val_t tmp;
7226 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7227 fra.me.file = LOCATE_syntax___typing;
7228 fra.me.line = 1292;
7229 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7230 fra.me.has_broke = 0;
7231 fra.me.REG_size = 2;
7232 fra.me.nitni_local_ref_head = NULL;
7233 fra.me.REG[0] = NIT_NULL;
7234 fra.me.REG[1] = NIT_NULL;
7235 fra.me.REG[0] = p0;
7236 /* ./syntax//typing.nit:1292 */
7237 fra.me.REG[1] = fra.me.REG[0];
7238 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7239 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7240 if (UNTAG_Bool(REGB0)) {
7241 } else {
7242 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1292);
7243 }
7244 goto label1;
7245 label1: while(0);
7246 stack_frame_head = fra.me.prev;
7247 return fra.me.REG[1];
7248 }
7249 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7250 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7251 val_t REGB0;
7252 val_t tmp;
7253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7254 fra.me.file = LOCATE_syntax___typing;
7255 fra.me.line = 1295;
7256 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7257 fra.me.has_broke = 0;
7258 fra.me.REG_size = 2;
7259 fra.me.nitni_local_ref_head = NULL;
7260 fra.me.REG[0] = NIT_NULL;
7261 fra.me.REG[1] = NIT_NULL;
7262 fra.me.REG[0] = p0;
7263 /* ./syntax//typing.nit:1295 */
7264 fra.me.REG[1] = fra.me.REG[0];
7265 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7266 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7267 if (UNTAG_Bool(REGB0)) {
7268 } else {
7269 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1295);
7270 }
7271 goto label1;
7272 label1: while(0);
7273 stack_frame_head = fra.me.prev;
7274 return fra.me.REG[1];
7275 }
7276 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7277 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7278 val_t REGB0;
7279 val_t REGB1;
7280 val_t REGB2;
7281 val_t tmp;
7282 static val_t once_value_2; /* Once value */
7283 static val_t once_value_3; /* Once value */
7284 static val_t once_value_4; /* Once value */
7285 static val_t once_value_5; /* Once value */
7286 static val_t once_value_6; /* Once value */
7287 static val_t once_value_7; /* Once value */
7288 static val_t once_value_8; /* Once value */
7289 static val_t once_value_9; /* Once value */
7290 static val_t once_value_10; /* Once value */
7291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7292 fra.me.file = LOCATE_syntax___typing;
7293 fra.me.line = 1298;
7294 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7295 fra.me.has_broke = 0;
7296 fra.me.REG_size = 7;
7297 fra.me.nitni_local_ref_head = NULL;
7298 fra.me.REG[0] = NIT_NULL;
7299 fra.me.REG[1] = NIT_NULL;
7300 fra.me.REG[2] = NIT_NULL;
7301 fra.me.REG[3] = NIT_NULL;
7302 fra.me.REG[4] = NIT_NULL;
7303 fra.me.REG[5] = NIT_NULL;
7304 fra.me.REG[6] = NIT_NULL;
7305 fra.me.REG[0] = p0;
7306 fra.me.REG[1] = p1;
7307 /* ./syntax//typing.nit:1301 */
7308 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7309 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7310 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7311 if (UNTAG_Bool(REGB0)) {
7312 goto label1;
7313 }
7314 /* ./syntax//typing.nit:1302 */
7315 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7316 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7317 /* ./syntax//typing.nit:1303 */
7318 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7319 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7320 /* ./syntax//typing.nit:1304 */
7321 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7322 if (UNTAG_Bool(REGB0)) {
7323 /* ./syntax//typing.nit:1305 */
7324 REGB0 = TAG_Int(3);
7325 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7326 if (!once_value_2) {
7327 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7328 REGB0 = TAG_Int(18);
7329 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7330 once_value_2 = fra.me.REG[5];
7331 register_static_object(&once_value_2);
7332 } else fra.me.REG[5] = once_value_2;
7333 fra.me.REG[5] = fra.me.REG[5];
7334 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7335 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7336 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7337 if (!once_value_3) {
7338 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7339 REGB0 = TAG_Int(19);
7340 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7341 once_value_3 = fra.me.REG[5];
7342 register_static_object(&once_value_3);
7343 } else fra.me.REG[5] = once_value_3;
7344 fra.me.REG[5] = fra.me.REG[5];
7345 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7346 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7347 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7348 /* ./syntax//typing.nit:1306 */
7349 goto label1;
7350 }
7351 /* ./syntax//typing.nit:1308 */
7352 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7353 /* ./syntax//typing.nit:1309 */
7354 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7355 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7356 if (UNTAG_Bool(REGB0)) {
7357 /* ./syntax//typing.nit:1310 */
7358 REGB0 = TAG_Int(5);
7359 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7360 if (!once_value_4) {
7361 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7362 REGB0 = TAG_Int(17);
7363 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7364 once_value_4 = fra.me.REG[6];
7365 register_static_object(&once_value_4);
7366 } else fra.me.REG[6] = once_value_4;
7367 fra.me.REG[6] = fra.me.REG[6];
7368 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7369 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7370 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7371 if (!once_value_5) {
7372 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7373 REGB0 = TAG_Int(19);
7374 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7375 once_value_5 = fra.me.REG[6];
7376 register_static_object(&once_value_5);
7377 } else fra.me.REG[6] = once_value_5;
7378 fra.me.REG[6] = fra.me.REG[6];
7379 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7380 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7381 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7382 if (!once_value_6) {
7383 fra.me.REG[6] = BOX_NativeString(".");
7384 REGB0 = TAG_Int(1);
7385 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7386 once_value_6 = fra.me.REG[6];
7387 register_static_object(&once_value_6);
7388 } else fra.me.REG[6] = once_value_6;
7389 fra.me.REG[6] = fra.me.REG[6];
7390 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7391 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7392 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7393 /* ./syntax//typing.nit:1311 */
7394 goto label1;
7395 }
7396 /* ./syntax//typing.nit:1313 */
7397 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7398 /* ./syntax//typing.nit:1314 */
7399 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7400 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7401 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7402 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7403 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7404 REGB1 = TAG_Int(3);
7405 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7406 if (UNTAG_Bool(REGB2)) {
7407 } else {
7408 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7409 }
7410 /* ./../lib/standard//kernel.nit:232 */
7411 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7412 /* ./syntax//typing.nit:1314 */
7413 if (UNTAG_Bool(REGB1)) {
7414 /* ./syntax//typing.nit:1315 */
7415 REGB1 = TAG_Int(7);
7416 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7417 if (!once_value_7) {
7418 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7419 REGB1 = TAG_Int(17);
7420 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7421 once_value_7 = fra.me.REG[5];
7422 register_static_object(&once_value_7);
7423 } else fra.me.REG[5] = once_value_7;
7424 fra.me.REG[5] = fra.me.REG[5];
7425 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7426 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7427 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7428 if (!once_value_8) {
7429 fra.me.REG[3] = BOX_NativeString(" from ");
7430 REGB1 = TAG_Int(6);
7431 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7432 once_value_8 = fra.me.REG[3];
7433 register_static_object(&once_value_8);
7434 } else fra.me.REG[3] = once_value_8;
7435 fra.me.REG[3] = fra.me.REG[3];
7436 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7437 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7438 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7439 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7440 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7441 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7442 if (!once_value_9) {
7443 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7444 REGB1 = TAG_Int(17);
7445 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7446 once_value_9 = fra.me.REG[3];
7447 register_static_object(&once_value_9);
7448 } else fra.me.REG[3] = once_value_9;
7449 fra.me.REG[3] = fra.me.REG[3];
7450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7451 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7452 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7453 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7454 if (!once_value_10) {
7455 fra.me.REG[3] = BOX_NativeString("");
7456 REGB1 = TAG_Int(0);
7457 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7458 once_value_10 = fra.me.REG[3];
7459 register_static_object(&once_value_10);
7460 } else fra.me.REG[3] = once_value_10;
7461 fra.me.REG[3] = fra.me.REG[3];
7462 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7463 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7464 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7465 }
7466 /* ./syntax//typing.nit:1317 */
7467 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7468 /* ./syntax//typing.nit:1318 */
7469 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7470 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7471 /* ./syntax//typing.nit:1319 */
7472 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7473 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7474 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7475 if (UNTAG_Bool(REGB1)) {
7476 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7477 if (UNTAG_Bool(REGB1)) {
7478 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1319);
7479 }
7480 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7481 fra.me.REG[2] = fra.me.REG[4];
7482 }
7483 /* ./syntax//typing.nit:1320 */
7484 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7485 label1: while(0);
7486 stack_frame_head = fra.me.prev;
7487 return;
7488 }
7489 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7490 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7491 val_t REGB0;
7492 val_t REGB1;
7493 val_t tmp;
7494 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7495 fra.me.file = LOCATE_syntax___typing;
7496 fra.me.line = 1325;
7497 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7498 fra.me.has_broke = 0;
7499 fra.me.REG_size = 2;
7500 fra.me.nitni_local_ref_head = NULL;
7501 fra.me.REG[0] = NIT_NULL;
7502 fra.me.REG[1] = NIT_NULL;
7503 fra.me.REG[0] = p0;
7504 fra.me.REG[1] = p1;
7505 /* ./syntax//typing.nit:1327 */
7506 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7507 /* ./syntax//typing.nit:1328 */
7508 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7509 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7510 if (UNTAG_Bool(REGB0)) {
7511 } else {
7512 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7513 if (UNTAG_Bool(REGB1)) {
7514 REGB1 = TAG_Bool(false);
7515 REGB0 = REGB1;
7516 } else {
7517 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7518 REGB0 = REGB1;
7519 }
7520 }
7521 if (UNTAG_Bool(REGB0)) {
7522 goto label1;
7523 }
7524 /* ./syntax//typing.nit:1329 */
7525 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7526 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7527 /* ./syntax//typing.nit:1330 */
7528 REGB0 = TAG_Bool(true);
7529 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7530 label1: while(0);
7531 stack_frame_head = fra.me.prev;
7532 return;
7533 }
7534 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7535 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7536 val_t REGB0;
7537 val_t REGB1;
7538 val_t tmp;
7539 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7540 fra.me.file = LOCATE_syntax___typing;
7541 fra.me.line = 1335;
7542 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7543 fra.me.has_broke = 0;
7544 fra.me.REG_size = 4;
7545 fra.me.nitni_local_ref_head = NULL;
7546 fra.me.REG[0] = NIT_NULL;
7547 fra.me.REG[1] = NIT_NULL;
7548 fra.me.REG[2] = NIT_NULL;
7549 fra.me.REG[3] = NIT_NULL;
7550 fra.me.REG[0] = p0;
7551 fra.me.REG[1] = p1;
7552 /* ./syntax//typing.nit:1337 */
7553 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7554 /* ./syntax//typing.nit:1338 */
7555 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7556 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7557 if (UNTAG_Bool(REGB0)) {
7558 } else {
7559 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7560 if (UNTAG_Bool(REGB1)) {
7561 REGB1 = TAG_Bool(false);
7562 REGB0 = REGB1;
7563 } else {
7564 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7565 REGB0 = REGB1;
7566 }
7567 }
7568 if (UNTAG_Bool(REGB0)) {
7569 goto label1;
7570 }
7571 /* ./syntax//typing.nit:1339 */
7572 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7573 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7574 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]);
7575 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7576 if (UNTAG_Bool(REGB0)) {
7577 goto label1;
7578 }
7579 /* ./syntax//typing.nit:1340 */
7580 REGB0 = TAG_Bool(true);
7581 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7582 label1: while(0);
7583 stack_frame_head = fra.me.prev;
7584 return;
7585 }
7586 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7587 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7588 val_t REGB0;
7589 val_t REGB1;
7590 val_t tmp;
7591 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7592 fra.me.file = LOCATE_syntax___typing;
7593 fra.me.line = 1345;
7594 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7595 fra.me.has_broke = 0;
7596 fra.me.REG_size = 4;
7597 fra.me.nitni_local_ref_head = NULL;
7598 fra.me.REG[0] = NIT_NULL;
7599 fra.me.REG[1] = NIT_NULL;
7600 fra.me.REG[2] = NIT_NULL;
7601 fra.me.REG[3] = NIT_NULL;
7602 fra.me.REG[0] = p0;
7603 fra.me.REG[1] = p1;
7604 /* ./syntax//typing.nit:1347 */
7605 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7606 /* ./syntax//typing.nit:1348 */
7607 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7608 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7609 if (UNTAG_Bool(REGB0)) {
7610 } else {
7611 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7612 if (UNTAG_Bool(REGB1)) {
7613 REGB1 = TAG_Bool(false);
7614 REGB0 = REGB1;
7615 } else {
7616 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7617 REGB0 = REGB1;
7618 }
7619 }
7620 if (UNTAG_Bool(REGB0)) {
7621 goto label1;
7622 }
7623 /* ./syntax//typing.nit:1349 */
7624 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7625 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]);
7626 /* ./syntax//typing.nit:1350 */
7627 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7628 if (UNTAG_Bool(REGB0)) {
7629 } else {
7630 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7631 if (UNTAG_Bool(REGB1)) {
7632 REGB1 = TAG_Bool(false);
7633 REGB0 = REGB1;
7634 } else {
7635 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7636 REGB0 = REGB1;
7637 }
7638 }
7639 if (UNTAG_Bool(REGB0)) {
7640 goto label1;
7641 }
7642 /* ./syntax//typing.nit:1351 */
7643 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7644 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7645 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]);
7646 /* ./syntax//typing.nit:1352 */
7647 REGB0 = TAG_Bool(true);
7648 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7649 label1: while(0);
7650 stack_frame_head = fra.me.prev;
7651 return;
7652 }
7653 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7654 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7655 val_t REGB0;
7656 val_t REGB1;
7657 val_t tmp;
7658 static val_t once_value_2; /* Once value */
7659 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7660 fra.me.file = LOCATE_syntax___typing;
7661 fra.me.line = 1357;
7662 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
7663 fra.me.has_broke = 0;
7664 fra.me.REG_size = 3;
7665 fra.me.nitni_local_ref_head = NULL;
7666 fra.me.REG[0] = NIT_NULL;
7667 fra.me.REG[1] = NIT_NULL;
7668 fra.me.REG[2] = NIT_NULL;
7669 fra.me.REG[0] = p0;
7670 fra.me.REG[1] = p1;
7671 /* ./syntax//typing.nit:1359 */
7672 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7673 /* ./syntax//typing.nit:1360 */
7674 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7675 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7676 if (UNTAG_Bool(REGB0)) {
7677 } else {
7678 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7679 if (UNTAG_Bool(REGB1)) {
7680 REGB1 = TAG_Bool(false);
7681 REGB0 = REGB1;
7682 } else {
7683 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7684 REGB0 = REGB1;
7685 }
7686 }
7687 if (UNTAG_Bool(REGB0)) {
7688 goto label1;
7689 }
7690 /* ./syntax//typing.nit:1361 */
7691 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7692 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
7693 if (UNTAG_Bool(REGB0)) {
7694 /* ./syntax//typing.nit:1362 */
7695 if (!once_value_2) {
7696 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
7697 REGB0 = TAG_Int(37);
7698 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7699 once_value_2 = fra.me.REG[2];
7700 register_static_object(&once_value_2);
7701 } else fra.me.REG[2] = once_value_2;
7702 fra.me.REG[2] = fra.me.REG[2];
7703 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7704 }
7705 /* ./syntax//typing.nit:1364 */
7706 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
7707 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7708 /* ./syntax//typing.nit:1365 */
7709 REGB0 = TAG_Bool(true);
7710 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7711 label1: while(0);
7712 stack_frame_head = fra.me.prev;
7713 return;
7714 }
7715 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
7716 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7717 val_t REGB0;
7718 val_t tmp;
7719 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7720 fra.me.file = LOCATE_syntax___typing;
7721 fra.me.line = 1370;
7722 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
7723 fra.me.has_broke = 0;
7724 fra.me.REG_size = 2;
7725 fra.me.nitni_local_ref_head = NULL;
7726 fra.me.REG[0] = NIT_NULL;
7727 fra.me.REG[1] = NIT_NULL;
7728 fra.me.REG[0] = p0;
7729 /* ./syntax//typing.nit:1370 */
7730 fra.me.REG[1] = fra.me.REG[0];
7731 /* ./syntax//typing.nit:1371 */
7732 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
7733 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7734 if (UNTAG_Bool(REGB0)) {
7735 } else {
7736 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1371);
7737 }
7738 goto label1;
7739 label1: while(0);
7740 stack_frame_head = fra.me.prev;
7741 return fra.me.REG[1];
7742 }
7743 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
7744 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7745 val_t REGB0;
7746 val_t REGB1;
7747 val_t tmp;
7748 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7749 fra.me.file = LOCATE_syntax___typing;
7750 fra.me.line = 1374;
7751 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
7752 fra.me.has_broke = 0;
7753 fra.me.REG_size = 4;
7754 fra.me.nitni_local_ref_head = NULL;
7755 fra.me.REG[0] = NIT_NULL;
7756 fra.me.REG[1] = NIT_NULL;
7757 fra.me.REG[2] = NIT_NULL;
7758 fra.me.REG[3] = NIT_NULL;
7759 fra.me.REG[0] = p0;
7760 /* ./syntax//typing.nit:1377 */
7761 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
7762 /* ./syntax//typing.nit:1378 */
7763 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7764 if (UNTAG_Bool(REGB0)) {
7765 } else {
7766 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7767 if (UNTAG_Bool(REGB1)) {
7768 REGB1 = TAG_Bool(false);
7769 REGB0 = REGB1;
7770 } else {
7771 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7772 REGB0 = REGB1;
7773 }
7774 }
7775 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7776 if (UNTAG_Bool(REGB0)) {
7777 /* ./syntax//typing.nit:1379 */
7778 fra.me.REG[2] = fra.me.REG[1];
7779 goto label1;
7780 } else {
7781 /* ./syntax//typing.nit:1381 */
7782 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7783 fra.me.REG[1] = fra.me.REG[3];
7784 /* ./syntax//typing.nit:1382 */
7785 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7786 if (UNTAG_Bool(REGB0)) {
7787 } else {
7788 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7789 if (UNTAG_Bool(REGB1)) {
7790 REGB1 = TAG_Bool(false);
7791 REGB0 = REGB1;
7792 } else {
7793 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7794 REGB0 = REGB1;
7795 }
7796 }
7797 if (UNTAG_Bool(REGB0)) {
7798 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
7799 fra.me.REG[1] = fra.me.REG[3];
7800 }
7801 /* ./syntax//typing.nit:1383 */
7802 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
7803 /* ./syntax//typing.nit:1384 */
7804 fra.me.REG[2] = fra.me.REG[1];
7805 goto label1;
7806 }
7807 label1: while(0);
7808 stack_frame_head = fra.me.prev;
7809 return fra.me.REG[2];
7810 }
7811 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
7812 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7813 val_t REGB0;
7814 val_t tmp;
7815 static val_t once_value_1; /* Once value */
7816 static val_t once_value_2; /* Once value */
7817 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7818 fra.me.file = LOCATE_syntax___typing;
7819 fra.me.line = 1390;
7820 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
7821 fra.me.has_broke = 0;
7822 fra.me.REG_size = 3;
7823 fra.me.nitni_local_ref_head = NULL;
7824 fra.me.REG[0] = NIT_NULL;
7825 fra.me.REG[1] = NIT_NULL;
7826 fra.me.REG[2] = NIT_NULL;
7827 fra.me.REG[0] = p0;
7828 /* ./syntax//typing.nit:1392 */
7829 REGB0 = TAG_Int(3);
7830 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7831 if (!once_value_1) {
7832 fra.me.REG[2] = BOX_NativeString("");
7833 REGB0 = TAG_Int(0);
7834 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7835 once_value_1 = fra.me.REG[2];
7836 register_static_object(&once_value_1);
7837 } else fra.me.REG[2] = once_value_1;
7838 fra.me.REG[2] = fra.me.REG[2];
7839 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7840 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
7841 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7842 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7843 if (!once_value_2) {
7844 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
7845 REGB0 = TAG_Int(25);
7846 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7847 once_value_2 = fra.me.REG[2];
7848 register_static_object(&once_value_2);
7849 } else fra.me.REG[2] = once_value_2;
7850 fra.me.REG[2] = fra.me.REG[2];
7851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7852 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
7853 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7854 /* ./syntax//typing.nit:1393 */
7855 fra.me.REG[1] = NIT_NULL;
7856 goto label3;
7857 label3: while(0);
7858 stack_frame_head = fra.me.prev;
7859 return fra.me.REG[1];
7860 }
7861 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7862 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7863 val_t REGB0;
7864 val_t REGB1;
7865 val_t REGB2;
7866 val_t REGB3;
7867 val_t REGB4;
7868 val_t REGB5;
7869 val_t REGB6;
7870 val_t REGB7;
7871 val_t REGB8;
7872 val_t REGB9;
7873 val_t REGB10;
7874 val_t REGB11;
7875 val_t tmp;
7876 static val_t once_value_1; /* Once value */
7877 static val_t once_value_2; /* Once value */
7878 static val_t once_value_3; /* Once value */
7879 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7880 fra.me.file = LOCATE_syntax___typing;
7881 fra.me.line = 1396;
7882 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
7883 fra.me.has_broke = 0;
7884 fra.me.REG_size = 7;
7885 fra.me.nitni_local_ref_head = NULL;
7886 fra.me.REG[0] = NIT_NULL;
7887 fra.me.REG[1] = NIT_NULL;
7888 fra.me.REG[2] = NIT_NULL;
7889 fra.me.REG[3] = NIT_NULL;
7890 fra.me.REG[4] = NIT_NULL;
7891 fra.me.REG[5] = NIT_NULL;
7892 fra.me.REG[6] = NIT_NULL;
7893 fra.me.REG[0] = p0;
7894 fra.me.REG[1] = p1;
7895 fra.me.REG[2] = p2;
7896 fra.me.REG[3] = p3;
7897 fra.me.REG[4] = p4;
7898 /* ./syntax//typing.nit:1399 */
7899 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
7900 /* ./syntax//typing.nit:1400 */
7901 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
7902 /* ./syntax//typing.nit:1402 */
7903 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7904 if (UNTAG_Bool(REGB2)) {
7905 } else {
7906 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7907 if (UNTAG_Bool(REGB3)) {
7908 REGB3 = TAG_Bool(false);
7909 REGB2 = REGB3;
7910 } else {
7911 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7912 REGB2 = REGB3;
7913 }
7914 }
7915 if (UNTAG_Bool(REGB2)) {
7916 REGB2 = TAG_Int(0);
7917 } else {
7918 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7919 if (UNTAG_Bool(REGB3)) {
7920 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1402);
7921 }
7922 /* ./../lib/standard//collection//array.nit:24 */
7923 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7924 if (UNTAG_Bool(REGB3)) {
7925 } else {
7926 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
7927 }
7928 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7929 /* ./syntax//typing.nit:1402 */
7930 REGB2 = REGB3;
7931 }
7932 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7933 if (UNTAG_Bool(REGB3)) {
7934 } else {
7935 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7936 }
7937 /* ./../lib/standard//kernel.nit:234 */
7938 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7939 /* ./syntax//typing.nit:1403 */
7940 if (UNTAG_Bool(REGB3)) {
7941 REGB3 = TAG_Bool(true);
7942 } else {
7943 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7944 if (UNTAG_Bool(REGB4)) {
7945 } else {
7946 /* ./../lib/standard//kernel.nit:227 */
7947 REGB5 = TAG_Bool((REGB1)==(REGB2));
7948 /* ./syntax//typing.nit:1403 */
7949 REGB4 = REGB5;
7950 }
7951 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
7952 if (UNTAG_Bool(REGB4)) {
7953 REGB4 = TAG_Int(1);
7954 /* ./../lib/standard//kernel.nit:236 */
7955 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
7956 /* ./syntax//typing.nit:1403 */
7957 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
7958 if (UNTAG_Bool(REGB5)) {
7959 } else {
7960 /* ./../lib/standard//kernel.nit:227 */
7961 REGB4 = TAG_Bool((REGB0)==(REGB4));
7962 /* ./syntax//typing.nit:1403 */
7963 REGB5 = REGB4;
7964 }
7965 } else {
7966 REGB4 = TAG_Bool(false);
7967 REGB5 = REGB4;
7968 }
7969 REGB3 = REGB5;
7970 }
7971 if (UNTAG_Bool(REGB3)) {
7972 /* ./syntax//typing.nit:1404 */
7973 REGB3 = TAG_Int(5);
7974 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
7975 if (!once_value_1) {
7976 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
7977 REGB3 = TAG_Int(37);
7978 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
7979 once_value_1 = fra.me.REG[6];
7980 register_static_object(&once_value_1);
7981 } else fra.me.REG[6] = once_value_1;
7982 fra.me.REG[6] = fra.me.REG[6];
7983 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7984 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7985 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7986 if (!once_value_2) {
7987 fra.me.REG[3] = BOX_NativeString("");
7988 REGB3 = TAG_Int(0);
7989 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7990 once_value_2 = fra.me.REG[3];
7991 register_static_object(&once_value_2);
7992 } else fra.me.REG[3] = once_value_2;
7993 fra.me.REG[3] = fra.me.REG[3];
7994 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7995 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7996 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7997 if (!once_value_3) {
7998 fra.me.REG[3] = BOX_NativeString("'.");
7999 REGB3 = TAG_Int(2);
8000 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8001 once_value_3 = fra.me.REG[3];
8002 register_static_object(&once_value_3);
8003 } else fra.me.REG[3] = once_value_3;
8004 fra.me.REG[3] = fra.me.REG[3];
8005 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8006 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8007 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8008 /* ./syntax//typing.nit:1405 */
8009 REGB3 = TAG_Bool(false);
8010 goto label4;
8011 }
8012 /* ./syntax//typing.nit:1407 */
8013 REGB5 = TAG_Int(0);
8014 /* ./syntax//typing.nit:1408 */
8015 REGB4 = TAG_Int(0);
8016 /* ./../lib/standard//kernel.nit:347 */
8017 REGB6 = REGB1;
8018 /* ./../lib/standard//kernel.nit:352 */
8019 while(1) {
8020 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
8021 if (UNTAG_Bool(REGB7)) {
8022 } else {
8023 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8024 }
8025 /* ./../lib/standard//kernel.nit:232 */
8026 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
8027 /* ./../lib/standard//kernel.nit:352 */
8028 if (UNTAG_Bool(REGB7)) {
8029 /* ./syntax//typing.nit:1408 */
8030 REGB7 = REGB4;
8031 /* ./syntax//typing.nit:1410 */
8032 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
8033 /* ./syntax//typing.nit:1411 */
8034 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
8035 if (UNTAG_Bool(REGB8)) {
8036 } else {
8037 /* ./../lib/standard//kernel.nit:227 */
8038 REGB7 = TAG_Bool((REGB7)==(REGB0));
8039 /* ./syntax//typing.nit:1411 */
8040 REGB8 = REGB7;
8041 }
8042 if (UNTAG_Bool(REGB8)) {
8043 /* ./syntax//typing.nit:1412 */
8044 REGB8 = TAG_Int(0);
8045 /* ./../lib/standard//kernel.nit:237 */
8046 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
8047 /* ./../lib/standard//kernel.nit:341 */
8048 while(1) {
8049 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8050 if (UNTAG_Bool(REGB9)) {
8051 } else {
8052 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8053 }
8054 /* ./../lib/standard//kernel.nit:231 */
8055 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
8056 /* ./../lib/standard//kernel.nit:341 */
8057 if (UNTAG_Bool(REGB9)) {
8058 /* ./syntax//typing.nit:1413 */
8059 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8060 if (UNTAG_Bool(REGB9)) {
8061 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1413);
8062 }
8063 /* ./../lib/standard//collection//array.nit:278 */
8064 fra.me.REG[0] = fra.me.REG[4];
8065 REGB9 = REGB5;
8066 /* ./../lib/standard//collection//array.nit:280 */
8067 REGB10 = TAG_Int(0);
8068 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8069 if (UNTAG_Bool(REGB11)) {
8070 } else {
8071 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8072 }
8073 /* ./../lib/standard//kernel.nit:233 */
8074 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
8075 /* ./../lib/standard//collection//array.nit:280 */
8076 if (UNTAG_Bool(REGB10)) {
8077 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
8078 if (UNTAG_Bool(REGB10)) {
8079 } else {
8080 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8081 }
8082 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
8083 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8084 if (UNTAG_Bool(REGB11)) {
8085 } else {
8086 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8087 }
8088 /* ./../lib/standard//kernel.nit:232 */
8089 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
8090 } else {
8091 /* ./../lib/standard//collection//array.nit:280 */
8092 REGB11 = TAG_Bool(false);
8093 REGB10 = REGB11;
8094 }
8095 if (UNTAG_Bool(REGB10)) {
8096 } else {
8097 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8098 }
8099 /* ./../lib/standard//collection//array.nit:281 */
8100 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
8101 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8102 if (UNTAG_Bool(REGB10)) {
8103 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8104 }
8105 /* ./../lib/standard//collection//array.nit:718 */
8106 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
8107 /* ./../lib/standard//collection//array.nit:281 */
8108 goto label5;
8109 label5: while(0);
8110 /* ./syntax//typing.nit:1414 */
8111 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8112 /* ./syntax//typing.nit:1415 */
8113 REGB9 = TAG_Int(1);
8114 /* ./../lib/standard//kernel.nit:235 */
8115 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
8116 /* ./syntax//typing.nit:1415 */
8117 REGB5 = REGB9;
8118 /* ./../lib/standard//kernel.nit:343 */
8119 REGB9 = TAG_Int(1);
8120 /* ./../lib/standard//kernel.nit:235 */
8121 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
8122 /* ./../lib/standard//kernel.nit:343 */
8123 REGB8 = REGB9;
8124 } else {
8125 /* ./../lib/standard//kernel.nit:341 */
8126 goto label6;
8127 }
8128 }
8129 label6: while(0);
8130 } else {
8131 /* ./syntax//typing.nit:1418 */
8132 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8133 if (UNTAG_Bool(REGB8)) {
8134 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1418);
8135 }
8136 /* ./../lib/standard//collection//array.nit:278 */
8137 fra.me.REG[3] = fra.me.REG[4];
8138 REGB8 = REGB5;
8139 /* ./../lib/standard//collection//array.nit:280 */
8140 REGB7 = TAG_Int(0);
8141 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8142 if (UNTAG_Bool(REGB9)) {
8143 } else {
8144 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8145 }
8146 /* ./../lib/standard//kernel.nit:233 */
8147 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8148 /* ./../lib/standard//collection//array.nit:280 */
8149 if (UNTAG_Bool(REGB7)) {
8150 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8151 if (UNTAG_Bool(REGB7)) {
8152 } else {
8153 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8154 }
8155 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8156 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8157 if (UNTAG_Bool(REGB9)) {
8158 } else {
8159 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8160 }
8161 /* ./../lib/standard//kernel.nit:232 */
8162 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8163 } else {
8164 /* ./../lib/standard//collection//array.nit:280 */
8165 REGB9 = TAG_Bool(false);
8166 REGB7 = REGB9;
8167 }
8168 if (UNTAG_Bool(REGB7)) {
8169 } else {
8170 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8171 }
8172 /* ./../lib/standard//collection//array.nit:281 */
8173 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8174 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8175 if (UNTAG_Bool(REGB7)) {
8176 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8177 }
8178 /* ./../lib/standard//collection//array.nit:718 */
8179 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8180 /* ./../lib/standard//collection//array.nit:281 */
8181 goto label7;
8182 label7: while(0);
8183 /* ./syntax//typing.nit:1418 */
8184 fra.me.REG[0] = fra.me.REG[3];
8185 /* ./syntax//typing.nit:1419 */
8186 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8187 /* ./syntax//typing.nit:1420 */
8188 REGB8 = TAG_Int(1);
8189 /* ./../lib/standard//kernel.nit:235 */
8190 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8191 /* ./syntax//typing.nit:1420 */
8192 REGB5 = REGB8;
8193 }
8194 /* ./../lib/standard//kernel.nit:354 */
8195 REGB8 = TAG_Int(1);
8196 /* ./../lib/standard//kernel.nit:235 */
8197 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8198 /* ./../lib/standard//kernel.nit:354 */
8199 REGB4 = REGB8;
8200 } else {
8201 /* ./../lib/standard//kernel.nit:352 */
8202 goto label8;
8203 }
8204 }
8205 label8: while(0);
8206 /* ./syntax//typing.nit:1423 */
8207 REGB4 = TAG_Bool(true);
8208 REGB3 = REGB4;
8209 goto label4;
8210 label4: while(0);
8211 stack_frame_head = fra.me.prev;
8212 return REGB3;
8213 }
8214 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8215 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8216 val_t REGB0;
8217 val_t REGB1;
8218 val_t REGB2;
8219 val_t REGB3;
8220 val_t REGB4;
8221 val_t REGB5;
8222 val_t tmp;
8223 static val_t once_value_2; /* Once value */
8224 static val_t once_value_3; /* Once value */
8225 static val_t once_value_4; /* Once value */
8226 static val_t once_value_5; /* Once value */
8227 static val_t once_value_6; /* Once value */
8228 static val_t once_value_7; /* Once value */
8229 static val_t once_value_8; /* Once value */
8230 static val_t once_value_11; /* Once value */
8231 static val_t once_value_12; /* Once value */
8232 static val_t once_value_13; /* Once value */
8233 static val_t once_value_14; /* Once value */
8234 static val_t once_value_15; /* Once value */
8235 static val_t once_value_16; /* Once value */
8236 static val_t once_value_18; /* Once value */
8237 static val_t once_value_19; /* Once value */
8238 static val_t once_value_20; /* Once value */
8239 static val_t once_value_21; /* Once value */
8240 static val_t once_value_22; /* Once value */
8241 static val_t once_value_24; /* Once value */
8242 static val_t once_value_25; /* Once value */
8243 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8244 fra.me.file = LOCATE_syntax___typing;
8245 fra.me.line = 1426;
8246 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8247 fra.me.has_broke = 0;
8248 fra.me.REG_size = 17;
8249 fra.me.nitni_local_ref_head = NULL;
8250 fra.me.REG[0] = NIT_NULL;
8251 fra.me.REG[1] = NIT_NULL;
8252 fra.me.REG[2] = NIT_NULL;
8253 fra.me.REG[3] = NIT_NULL;
8254 fra.me.REG[4] = NIT_NULL;
8255 fra.me.REG[5] = NIT_NULL;
8256 fra.me.REG[6] = NIT_NULL;
8257 fra.me.REG[7] = NIT_NULL;
8258 fra.me.REG[8] = NIT_NULL;
8259 fra.me.REG[9] = NIT_NULL;
8260 fra.me.REG[10] = NIT_NULL;
8261 fra.me.REG[11] = NIT_NULL;
8262 fra.me.REG[12] = NIT_NULL;
8263 fra.me.REG[13] = NIT_NULL;
8264 fra.me.REG[14] = NIT_NULL;
8265 fra.me.REG[15] = NIT_NULL;
8266 fra.me.REG[16] = NIT_NULL;
8267 fra.me.REG[0] = p0;
8268 fra.me.REG[1] = p1;
8269 fra.me.REG[2] = p2;
8270 fra.me.REG[3] = p3;
8271 fra.me.REG[4] = p4;
8272 /* ./syntax//typing.nit:1429 */
8273 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8274 /* ./syntax//typing.nit:1430 */
8275 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8276 /* ./syntax//typing.nit:1431 */
8277 REGB0 = TAG_Int(0);
8278 /* ./../lib/standard//collection//array.nit:266 */
8279 fra.me.REG[7] = fra.me.REG[6];
8280 /* ./../lib/standard//collection//array.nit:269 */
8281 REGB1 = TAG_Int(0);
8282 /* ./../lib/standard//collection//array.nit:270 */
8283 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8284 if (UNTAG_Bool(REGB2)) {
8285 } else {
8286 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8287 }
8288 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8289 /* ./../lib/standard//collection//array.nit:271 */
8290 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8291 /* ./../lib/standard//collection//array.nit:272 */
8292 while(1) {
8293 /* ./../lib/standard//collection//array.nit:24 */
8294 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8295 if (UNTAG_Bool(REGB2)) {
8296 } else {
8297 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8298 }
8299 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8300 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8301 if (UNTAG_Bool(REGB3)) {
8302 } else {
8303 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8304 }
8305 /* ./../lib/standard//kernel.nit:232 */
8306 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8307 /* ./../lib/standard//collection//array.nit:272 */
8308 if (UNTAG_Bool(REGB2)) {
8309 /* ./../lib/standard//collection//array.nit:273 */
8310 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8311 if (UNTAG_Bool(REGB2)) {
8312 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8313 }
8314 /* ./../lib/standard//collection//array.nit:718 */
8315 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8316 /* ./syntax//typing.nit:1433 */
8317 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8318 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8319 if (UNTAG_Bool(REGB2)) {
8320 REGB2 = TAG_Int(1);
8321 /* ./../lib/standard//kernel.nit:235 */
8322 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8323 /* ./syntax//typing.nit:1433 */
8324 REGB0 = REGB2;
8325 }
8326 /* ./../lib/standard//collection//array.nit:274 */
8327 REGB2 = TAG_Int(1);
8328 /* ./../lib/standard//kernel.nit:235 */
8329 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8330 /* ./../lib/standard//collection//array.nit:274 */
8331 REGB1 = REGB2;
8332 } else {
8333 /* ./../lib/standard//collection//array.nit:272 */
8334 goto label1;
8335 }
8336 }
8337 label1: while(0);
8338 /* ./syntax//typing.nit:1435 */
8339 REGB1 = TAG_Int(0);
8340 /* ./syntax//typing.nit:1436 */
8341 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8342 if (UNTAG_Bool(REGB2)) {
8343 } else {
8344 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8345 if (UNTAG_Bool(REGB3)) {
8346 REGB3 = TAG_Bool(false);
8347 REGB2 = REGB3;
8348 } else {
8349 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8350 REGB2 = REGB3;
8351 }
8352 }
8353 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8354 if (UNTAG_Bool(REGB2)) {
8355 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8356 if (UNTAG_Bool(REGB2)) {
8357 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1436);
8358 }
8359 /* ./../lib/standard//collection//array.nit:24 */
8360 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8361 if (UNTAG_Bool(REGB2)) {
8362 } else {
8363 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8364 }
8365 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8366 /* ./syntax//typing.nit:1436 */
8367 REGB1 = REGB2;
8368 }
8369 /* ./../lib/standard//collection//array.nit:24 */
8370 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8371 if (UNTAG_Bool(REGB2)) {
8372 } else {
8373 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8374 }
8375 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8376 /* ./syntax//typing.nit:1437 */
8377 REGB3 = TAG_Int(0);
8378 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8379 if (UNTAG_Bool(REGB4)) {
8380 } else {
8381 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8382 }
8383 /* ./../lib/standard//kernel.nit:234 */
8384 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8385 /* ./syntax//typing.nit:1437 */
8386 if (UNTAG_Bool(REGB3)) {
8387 /* ./syntax//typing.nit:1438 */
8388 REGB3 = TAG_Int(0);
8389 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8390 if (UNTAG_Bool(REGB2)) {
8391 } else {
8392 /* ./../lib/standard//kernel.nit:227 */
8393 REGB3 = TAG_Bool((REGB1)==(REGB3));
8394 /* ./syntax//typing.nit:1438 */
8395 REGB2 = REGB3;
8396 }
8397 if (UNTAG_Bool(REGB2)) {
8398 REGB2 = TAG_Int(0);
8399 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8400 if (UNTAG_Bool(REGB3)) {
8401 } else {
8402 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8403 }
8404 /* ./../lib/standard//kernel.nit:234 */
8405 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8406 } else {
8407 /* ./syntax//typing.nit:1438 */
8408 REGB3 = TAG_Bool(false);
8409 REGB2 = REGB3;
8410 }
8411 if (UNTAG_Bool(REGB2)) {
8412 /* ./syntax//typing.nit:1439 */
8413 REGB2 = TAG_Int(5);
8414 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8415 if (!once_value_2) {
8416 fra.me.REG[7] = BOX_NativeString("Error: ");
8417 REGB2 = TAG_Int(7);
8418 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8419 once_value_2 = fra.me.REG[7];
8420 register_static_object(&once_value_2);
8421 } else fra.me.REG[7] = once_value_2;
8422 fra.me.REG[7] = fra.me.REG[7];
8423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8424 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8425 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8426 if (!once_value_3) {
8427 fra.me.REG[7] = BOX_NativeString(" requires ");
8428 REGB2 = TAG_Int(10);
8429 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8430 once_value_3 = fra.me.REG[7];
8431 register_static_object(&once_value_3);
8432 } else fra.me.REG[7] = once_value_3;
8433 fra.me.REG[7] = fra.me.REG[7];
8434 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8435 /* ./../lib/standard//collection//array.nit:24 */
8436 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8437 if (UNTAG_Bool(REGB2)) {
8438 } else {
8439 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8440 }
8441 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8442 /* ./syntax//typing.nit:1439 */
8443 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8444 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8445 if (!once_value_4) {
8446 fra.me.REG[7] = BOX_NativeString(" blocks.");
8447 REGB2 = TAG_Int(8);
8448 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8449 once_value_4 = fra.me.REG[7];
8450 register_static_object(&once_value_4);
8451 } else fra.me.REG[7] = once_value_4;
8452 fra.me.REG[7] = fra.me.REG[7];
8453 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8454 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8455 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8456 } else {
8457 /* ./../lib/standard//collection//array.nit:24 */
8458 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8459 if (UNTAG_Bool(REGB2)) {
8460 } else {
8461 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8462 }
8463 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8464 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8465 if (UNTAG_Bool(REGB3)) {
8466 } else {
8467 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8468 }
8469 /* ./../lib/standard//kernel.nit:234 */
8470 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8471 /* ./syntax//typing.nit:1440 */
8472 if (UNTAG_Bool(REGB2)) {
8473 REGB2 = TAG_Bool(true);
8474 } else {
8475 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8476 if (UNTAG_Bool(REGB3)) {
8477 } else {
8478 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8479 }
8480 /* ./../lib/standard//kernel.nit:232 */
8481 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8482 /* ./syntax//typing.nit:1440 */
8483 REGB2 = REGB0;
8484 }
8485 if (UNTAG_Bool(REGB2)) {
8486 /* ./syntax//typing.nit:1441 */
8487 REGB2 = TAG_Int(7);
8488 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8489 if (!once_value_5) {
8490 fra.me.REG[7] = BOX_NativeString("Error: ");
8491 REGB2 = TAG_Int(7);
8492 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8493 once_value_5 = fra.me.REG[7];
8494 register_static_object(&once_value_5);
8495 } else fra.me.REG[7] = once_value_5;
8496 fra.me.REG[7] = fra.me.REG[7];
8497 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8498 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8499 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8500 if (!once_value_6) {
8501 fra.me.REG[7] = BOX_NativeString(" requires ");
8502 REGB2 = TAG_Int(10);
8503 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8504 once_value_6 = fra.me.REG[7];
8505 register_static_object(&once_value_6);
8506 } else fra.me.REG[7] = once_value_6;
8507 fra.me.REG[7] = fra.me.REG[7];
8508 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8509 /* ./../lib/standard//collection//array.nit:24 */
8510 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8511 if (UNTAG_Bool(REGB2)) {
8512 } else {
8513 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8514 }
8515 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8516 /* ./syntax//typing.nit:1441 */
8517 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8518 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8519 if (!once_value_7) {
8520 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8521 REGB2 = TAG_Int(9);
8522 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8523 once_value_7 = fra.me.REG[7];
8524 register_static_object(&once_value_7);
8525 } else fra.me.REG[7] = once_value_7;
8526 fra.me.REG[7] = fra.me.REG[7];
8527 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8528 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8529 if (UNTAG_Bool(REGB2)) {
8530 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1441);
8531 }
8532 /* ./../lib/standard//collection//array.nit:24 */
8533 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8534 if (UNTAG_Bool(REGB2)) {
8535 } else {
8536 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8537 }
8538 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8539 /* ./syntax//typing.nit:1441 */
8540 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8541 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8542 if (!once_value_8) {
8543 fra.me.REG[7] = BOX_NativeString(" found.");
8544 REGB2 = TAG_Int(7);
8545 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8546 once_value_8 = fra.me.REG[7];
8547 register_static_object(&once_value_8);
8548 } else fra.me.REG[7] = once_value_8;
8549 fra.me.REG[7] = fra.me.REG[7];
8550 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8551 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8552 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8553 } else {
8554 /* ./syntax//typing.nit:1444 */
8555 fra.me.REG[8] = NIT_NULL;
8556 /* ./syntax//typing.nit:1445 */
8557 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8558 if (UNTAG_Bool(REGB2)) {
8559 } else {
8560 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8561 if (UNTAG_Bool(REGB0)) {
8562 REGB0 = TAG_Bool(false);
8563 REGB2 = REGB0;
8564 } else {
8565 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8566 REGB2 = REGB0;
8567 }
8568 }
8569 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8570 if (UNTAG_Bool(REGB2)) {
8571 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8572 fra.me.REG[8] = fra.me.REG[7];
8573 }
8574 /* ./syntax//typing.nit:1448 */
8575 REGB2 = TAG_Int(0);
8576 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8577 if (UNTAG_Bool(REGB0)) {
8578 } else {
8579 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8580 }
8581 /* ./../lib/standard//kernel.nit:234 */
8582 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8583 /* ./syntax//typing.nit:1448 */
8584 if (UNTAG_Bool(REGB2)) {
8585 REGB2 = TAG_Int(1);
8586 /* ./../lib/standard//kernel.nit:237 */
8587 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8588 /* ./syntax//typing.nit:1448 */
8589 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8590 if (UNTAG_Bool(REGB0)) {
8591 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8592 }
8593 /* ./../lib/standard//collection//array.nit:278 */
8594 fra.me.REG[7] = fra.me.REG[4];
8595 /* ./../lib/standard//collection//array.nit:280 */
8596 REGB0 = TAG_Int(0);
8597 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8598 if (UNTAG_Bool(REGB3)) {
8599 } else {
8600 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8601 }
8602 /* ./../lib/standard//kernel.nit:233 */
8603 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8604 /* ./../lib/standard//collection//array.nit:280 */
8605 if (UNTAG_Bool(REGB0)) {
8606 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8607 if (UNTAG_Bool(REGB0)) {
8608 } else {
8609 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8610 }
8611 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8612 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8613 if (UNTAG_Bool(REGB3)) {
8614 } else {
8615 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8616 }
8617 /* ./../lib/standard//kernel.nit:232 */
8618 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8619 } else {
8620 /* ./../lib/standard//collection//array.nit:280 */
8621 REGB3 = TAG_Bool(false);
8622 REGB0 = REGB3;
8623 }
8624 if (UNTAG_Bool(REGB0)) {
8625 } else {
8626 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8627 }
8628 /* ./../lib/standard//collection//array.nit:281 */
8629 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8630 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8631 if (UNTAG_Bool(REGB0)) {
8632 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8633 }
8634 /* ./../lib/standard//collection//array.nit:718 */
8635 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8636 /* ./../lib/standard//collection//array.nit:281 */
8637 goto label9;
8638 label9: while(0);
8639 /* ./syntax//typing.nit:1448 */
8640 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8641 if (UNTAG_Bool(REGB2)) {
8642 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8643 }
8644 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8645 } else {
8646 fra.me.REG[7] = NIT_NULL;
8647 }
8648 /* ./syntax//typing.nit:1451 */
8649 REGB2 = TAG_Int(0);
8650 /* ./../lib/standard//kernel.nit:347 */
8651 REGB0 = REGB1;
8652 /* ./../lib/standard//kernel.nit:352 */
8653 while(1) {
8654 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8655 if (UNTAG_Bool(REGB3)) {
8656 } else {
8657 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8658 }
8659 /* ./../lib/standard//kernel.nit:232 */
8660 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8661 /* ./../lib/standard//kernel.nit:352 */
8662 if (UNTAG_Bool(REGB3)) {
8663 /* ./syntax//typing.nit:1451 */
8664 REGB3 = REGB2;
8665 /* ./syntax//typing.nit:1452 */
8666 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8667 if (UNTAG_Bool(REGB4)) {
8668 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1452);
8669 }
8670 /* ./../lib/standard//collection//array.nit:278 */
8671 fra.me.REG[9] = fra.me.REG[4];
8672 /* ./../lib/standard//collection//array.nit:280 */
8673 REGB4 = TAG_Int(0);
8674 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8675 if (UNTAG_Bool(REGB5)) {
8676 } else {
8677 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8678 }
8679 /* ./../lib/standard//kernel.nit:233 */
8680 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
8681 /* ./../lib/standard//collection//array.nit:280 */
8682 if (UNTAG_Bool(REGB4)) {
8683 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
8684 if (UNTAG_Bool(REGB4)) {
8685 } else {
8686 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8687 }
8688 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
8689 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8690 if (UNTAG_Bool(REGB5)) {
8691 } else {
8692 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8693 }
8694 /* ./../lib/standard//kernel.nit:232 */
8695 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
8696 } else {
8697 /* ./../lib/standard//collection//array.nit:280 */
8698 REGB5 = TAG_Bool(false);
8699 REGB4 = REGB5;
8700 }
8701 if (UNTAG_Bool(REGB4)) {
8702 } else {
8703 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8704 }
8705 /* ./../lib/standard//collection//array.nit:281 */
8706 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
8707 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
8708 if (UNTAG_Bool(REGB4)) {
8709 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8710 }
8711 /* ./../lib/standard//collection//array.nit:718 */
8712 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
8713 /* ./../lib/standard//collection//array.nit:281 */
8714 goto label10;
8715 label10: while(0);
8716 /* ./syntax//typing.nit:1453 */
8717 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8718 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
8719 /* ./syntax//typing.nit:1454 */
8720 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
8721 /* ./syntax//typing.nit:1455 */
8722 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8723 if (UNTAG_Bool(REGB3)) {
8724 } else {
8725 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8726 if (UNTAG_Bool(REGB4)) {
8727 REGB4 = TAG_Bool(false);
8728 REGB3 = REGB4;
8729 } else {
8730 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
8731 REGB3 = REGB4;
8732 }
8733 }
8734 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
8735 if (UNTAG_Bool(REGB3)) {
8736 /* ./syntax//typing.nit:1456 */
8737 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
8738 /* ./syntax//typing.nit:1457 */
8739 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8740 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
8741 /* ./syntax//typing.nit:1458 */
8742 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
8743 /* ./syntax//typing.nit:1459 */
8744 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8745 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
8746 } else {
8747 /* ./../lib/standard//collection//array.nit:24 */
8748 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8749 if (UNTAG_Bool(REGB3)) {
8750 } else {
8751 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8752 }
8753 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8754 /* ./syntax//typing.nit:1460 */
8755 REGB4 = TAG_Int(1);
8756 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
8757 if (UNTAG_Bool(REGB5)) {
8758 } else {
8759 /* ./../lib/standard//kernel.nit:227 */
8760 REGB4 = TAG_Bool((REGB3)==(REGB4));
8761 /* ./syntax//typing.nit:1460 */
8762 REGB5 = REGB4;
8763 }
8764 if (UNTAG_Bool(REGB5)) {
8765 /* ./syntax//typing.nit:1461 */
8766 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8767 REGB5 = TAG_Int(7);
8768 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8769 if (!once_value_11) {
8770 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
8771 REGB5 = TAG_Int(26);
8772 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8773 once_value_11 = fra.me.REG[13];
8774 register_static_object(&once_value_11);
8775 } else fra.me.REG[13] = once_value_11;
8776 fra.me.REG[13] = fra.me.REG[13];
8777 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8778 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8780 if (!once_value_12) {
8781 fra.me.REG[13] = BOX_NativeString("' in ");
8782 REGB5 = TAG_Int(5);
8783 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8784 once_value_12 = fra.me.REG[13];
8785 register_static_object(&once_value_12);
8786 } else fra.me.REG[13] = once_value_12;
8787 fra.me.REG[13] = fra.me.REG[13];
8788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8789 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8790 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8791 if (!once_value_13) {
8792 fra.me.REG[13] = BOX_NativeString("; only closure is !");
8793 REGB5 = TAG_Int(19);
8794 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8795 once_value_13 = fra.me.REG[13];
8796 register_static_object(&once_value_13);
8797 } else fra.me.REG[13] = once_value_13;
8798 fra.me.REG[13] = fra.me.REG[13];
8799 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8800 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
8801 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8802 if (UNTAG_Bool(REGB5)) {
8803 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1461);
8804 }
8805 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
8806 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8807 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8808 if (!once_value_14) {
8809 fra.me.REG[13] = BOX_NativeString(".");
8810 REGB5 = TAG_Int(1);
8811 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8812 once_value_14 = fra.me.REG[13];
8813 register_static_object(&once_value_14);
8814 } else fra.me.REG[13] = once_value_14;
8815 fra.me.REG[13] = fra.me.REG[13];
8816 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8817 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
8818 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
8819 } else {
8820 /* ./syntax//typing.nit:1463 */
8821 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
8822 /* ./../lib/standard//collection//array.nit:266 */
8823 fra.me.REG[11] = fra.me.REG[6];
8824 /* ./../lib/standard//collection//array.nit:269 */
8825 REGB5 = TAG_Int(0);
8826 /* ./../lib/standard//collection//array.nit:270 */
8827 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8828 if (UNTAG_Bool(REGB4)) {
8829 } else {
8830 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8831 }
8832 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8833 /* ./../lib/standard//collection//array.nit:271 */
8834 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
8835 /* ./../lib/standard//collection//array.nit:272 */
8836 while(1) {
8837 /* ./../lib/standard//collection//array.nit:24 */
8838 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8839 if (UNTAG_Bool(REGB4)) {
8840 } else {
8841 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8842 }
8843 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8844 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
8845 if (UNTAG_Bool(REGB3)) {
8846 } else {
8847 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8848 }
8849 /* ./../lib/standard//kernel.nit:232 */
8850 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
8851 /* ./../lib/standard//collection//array.nit:272 */
8852 if (UNTAG_Bool(REGB4)) {
8853 /* ./../lib/standard//collection//array.nit:273 */
8854 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8855 if (UNTAG_Bool(REGB4)) {
8856 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8857 }
8858 /* ./../lib/standard//collection//array.nit:718 */
8859 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
8860 /* ./syntax//typing.nit:1465 */
8861 REGB4 = TAG_Int(3);
8862 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
8863 if (!once_value_15) {
8864 fra.me.REG[16] = BOX_NativeString("!");
8865 REGB4 = TAG_Int(1);
8866 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
8867 once_value_15 = fra.me.REG[16];
8868 register_static_object(&once_value_15);
8869 } else fra.me.REG[16] = once_value_15;
8870 fra.me.REG[16] = fra.me.REG[16];
8871 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
8872 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
8873 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
8874 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8875 if (!once_value_16) {
8876 fra.me.REG[14] = BOX_NativeString("");
8877 REGB4 = TAG_Int(0);
8878 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
8879 once_value_16 = fra.me.REG[14];
8880 register_static_object(&once_value_16);
8881 } else fra.me.REG[14] = once_value_16;
8882 fra.me.REG[14] = fra.me.REG[14];
8883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8884 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
8885 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
8886 /* ./../lib/standard//collection//array.nit:274 */
8887 REGB4 = TAG_Int(1);
8888 /* ./../lib/standard//kernel.nit:235 */
8889 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
8890 /* ./../lib/standard//collection//array.nit:274 */
8891 REGB5 = REGB4;
8892 } else {
8893 /* ./../lib/standard//collection//array.nit:272 */
8894 goto label17;
8895 }
8896 }
8897 label17: while(0);
8898 /* ./syntax//typing.nit:1467 */
8899 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8900 REGB5 = TAG_Int(7);
8901 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8902 if (!once_value_18) {
8903 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
8904 REGB5 = TAG_Int(26);
8905 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
8906 once_value_18 = fra.me.REG[11];
8907 register_static_object(&once_value_18);
8908 } else fra.me.REG[11] = once_value_18;
8909 fra.me.REG[11] = fra.me.REG[11];
8910 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
8911 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8912 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8913 if (!once_value_19) {
8914 fra.me.REG[10] = BOX_NativeString("' in ");
8915 REGB5 = TAG_Int(5);
8916 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8917 once_value_19 = fra.me.REG[10];
8918 register_static_object(&once_value_19);
8919 } else fra.me.REG[10] = once_value_19;
8920 fra.me.REG[10] = fra.me.REG[10];
8921 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8922 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8923 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8924 if (!once_value_20) {
8925 fra.me.REG[10] = BOX_NativeString("; only closures are ");
8926 REGB5 = TAG_Int(20);
8927 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8928 once_value_20 = fra.me.REG[10];
8929 register_static_object(&once_value_20);
8930 } else fra.me.REG[10] = once_value_20;
8931 fra.me.REG[10] = fra.me.REG[10];
8932 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8933 if (!once_value_21) {
8934 fra.me.REG[10] = BOX_NativeString(",");
8935 REGB5 = TAG_Int(1);
8936 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8937 once_value_21 = fra.me.REG[10];
8938 register_static_object(&once_value_21);
8939 } else fra.me.REG[10] = once_value_21;
8940 fra.me.REG[10] = fra.me.REG[10];
8941 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
8942 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8943 if (!once_value_22) {
8944 fra.me.REG[10] = BOX_NativeString(".");
8945 REGB5 = TAG_Int(1);
8946 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8947 once_value_22 = fra.me.REG[10];
8948 register_static_object(&once_value_22);
8949 } else fra.me.REG[10] = once_value_22;
8950 fra.me.REG[10] = fra.me.REG[10];
8951 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8952 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8953 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
8954 }
8955 }
8956 /* ./../lib/standard//kernel.nit:354 */
8957 REGB5 = TAG_Int(1);
8958 /* ./../lib/standard//kernel.nit:235 */
8959 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
8960 /* ./../lib/standard//kernel.nit:354 */
8961 REGB2 = REGB5;
8962 } else {
8963 /* ./../lib/standard//kernel.nit:352 */
8964 goto label23;
8965 }
8966 }
8967 label23: while(0);
8968 /* ./syntax//typing.nit:1472 */
8969 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8970 if (UNTAG_Bool(REGB2)) {
8971 } else {
8972 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8973 if (UNTAG_Bool(REGB0)) {
8974 REGB0 = TAG_Bool(false);
8975 REGB2 = REGB0;
8976 } else {
8977 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
8978 REGB2 = REGB0;
8979 }
8980 }
8981 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8982 if (UNTAG_Bool(REGB2)) {
8983 /* ./syntax//typing.nit:1473 */
8984 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]);
8985 fra.me.REG[5] = fra.me.REG[8];
8986 }
8987 }
8988 }
8989 } else {
8990 /* ./syntax//typing.nit:1476 */
8991 REGB2 = TAG_Int(0);
8992 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8993 if (UNTAG_Bool(REGB0)) {
8994 } else {
8995 /* ./../lib/standard//kernel.nit:227 */
8996 REGB2 = TAG_Bool((REGB1)==(REGB2));
8997 /* ./syntax//typing.nit:1476 */
8998 REGB0 = REGB2;
8999 }
9000 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9001 if (UNTAG_Bool(REGB0)) {
9002 /* ./syntax//typing.nit:1477 */
9003 REGB0 = TAG_Int(3);
9004 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9005 if (!once_value_24) {
9006 fra.me.REG[6] = BOX_NativeString("Error: ");
9007 REGB0 = TAG_Int(7);
9008 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
9009 once_value_24 = fra.me.REG[6];
9010 register_static_object(&once_value_24);
9011 } else fra.me.REG[6] = once_value_24;
9012 fra.me.REG[6] = fra.me.REG[6];
9013 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
9014 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9015 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9016 if (!once_value_25) {
9017 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
9018 REGB0 = TAG_Int(25);
9019 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9020 once_value_25 = fra.me.REG[3];
9021 register_static_object(&once_value_25);
9022 } else fra.me.REG[3] = once_value_25;
9023 fra.me.REG[3] = fra.me.REG[3];
9024 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9025 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9026 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9027 }
9028 }
9029 /* ./syntax//typing.nit:1479 */
9030 goto label26;
9031 label26: while(0);
9032 stack_frame_head = fra.me.prev;
9033 return fra.me.REG[5];
9034 }
9035 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){
9036 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9037 val_t REGB0;
9038 val_t REGB1;
9039 val_t REGB2;
9040 val_t tmp;
9041 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9042 fra.me.file = LOCATE_syntax___typing;
9043 fra.me.line = 1484;
9044 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
9045 fra.me.has_broke = 0;
9046 fra.me.REG_size = 7;
9047 fra.me.nitni_local_ref_head = NULL;
9048 fra.me.REG[0] = NIT_NULL;
9049 fra.me.REG[1] = NIT_NULL;
9050 fra.me.REG[2] = NIT_NULL;
9051 fra.me.REG[3] = NIT_NULL;
9052 fra.me.REG[4] = NIT_NULL;
9053 fra.me.REG[5] = NIT_NULL;
9054 fra.me.REG[6] = NIT_NULL;
9055 fra.me.REG[0] = p0;
9056 fra.me.REG[1] = p1;
9057 fra.me.REG[2] = p2;
9058 REGB0 = p3;
9059 REGB1 = p4;
9060 fra.me.REG[3] = p5;
9061 fra.me.REG[4] = p6;
9062 fra.me.REG[5] = p7;
9063 /* ./syntax//typing.nit:1487 */
9064 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]);
9065 /* ./syntax//typing.nit:1488 */
9066 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9067 if (UNTAG_Bool(REGB0)) {
9068 } else {
9069 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9070 if (UNTAG_Bool(REGB2)) {
9071 REGB2 = TAG_Bool(false);
9072 REGB0 = REGB2;
9073 } else {
9074 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9075 REGB0 = REGB2;
9076 }
9077 }
9078 if (UNTAG_Bool(REGB0)) {
9079 goto label1;
9080 }
9081 /* ./syntax//typing.nit:1489 */
9082 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);
9083 /* ./syntax//typing.nit:1490 */
9084 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9085 if (UNTAG_Bool(REGB1)) {
9086 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1490);
9087 }
9088 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9089 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]);
9090 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9091 if (UNTAG_Bool(REGB1)) {
9092 goto label1;
9093 }
9094 /* ./syntax//typing.nit:1491 */
9095 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9096 if (UNTAG_Bool(REGB1)) {
9097 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1491);
9098 }
9099 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9100 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]);
9101 /* ./syntax//typing.nit:1492 */
9102 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9103 if (UNTAG_Bool(REGB1)) {
9104 } else {
9105 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9106 if (UNTAG_Bool(REGB0)) {
9107 REGB0 = TAG_Bool(false);
9108 REGB1 = REGB0;
9109 } else {
9110 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9111 REGB1 = REGB0;
9112 }
9113 }
9114 if (UNTAG_Bool(REGB1)) {
9115 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9116 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9117 if (UNTAG_Bool(REGB1)) {
9118 } else {
9119 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9120 if (UNTAG_Bool(REGB0)) {
9121 REGB0 = TAG_Bool(false);
9122 REGB1 = REGB0;
9123 } else {
9124 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9125 REGB1 = REGB0;
9126 }
9127 }
9128 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9129 } else {
9130 REGB0 = TAG_Bool(false);
9131 REGB1 = REGB0;
9132 }
9133 if (UNTAG_Bool(REGB1)) {
9134 goto label1;
9135 }
9136 /* ./syntax//typing.nit:1493 */
9137 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
9138 /* ./syntax//typing.nit:1494 */
9139 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9140 /* ./syntax//typing.nit:1495 */
9141 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
9142 label1: while(0);
9143 stack_frame_head = fra.me.prev;
9144 return;
9145 }
9146 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9147 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9148 val_t REGB0;
9149 val_t REGB1;
9150 val_t REGB2;
9151 val_t REGB3;
9152 val_t tmp;
9153 static val_t once_value_1; /* Once value */
9154 static val_t once_value_2; /* Once value */
9155 static val_t once_value_3; /* Once value */
9156 static val_t once_value_4; /* Once value */
9157 static val_t once_value_5; /* Once value */
9158 static val_t once_value_6; /* Once value */
9159 static val_t once_value_8; /* Once value */
9160 static val_t once_value_9; /* Once value */
9161 static val_t once_value_10; /* Once value */
9162 static val_t once_value_11; /* Once value */
9163 static val_t once_value_12; /* Once value */
9164 static val_t once_value_13; /* Once value */
9165 static val_t once_value_14; /* Once value */
9166 static val_t once_value_15; /* Once value */
9167 static val_t once_value_16; /* Once value */
9168 static val_t once_value_17; /* Once value */
9169 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9170 fra.me.file = LOCATE_syntax___typing;
9171 fra.me.line = 1498;
9172 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9173 fra.me.has_broke = 0;
9174 fra.me.REG_size = 10;
9175 fra.me.nitni_local_ref_head = NULL;
9176 fra.me.REG[0] = NIT_NULL;
9177 fra.me.REG[1] = NIT_NULL;
9178 fra.me.REG[2] = NIT_NULL;
9179 fra.me.REG[3] = NIT_NULL;
9180 fra.me.REG[4] = NIT_NULL;
9181 fra.me.REG[5] = NIT_NULL;
9182 fra.me.REG[6] = NIT_NULL;
9183 fra.me.REG[7] = NIT_NULL;
9184 fra.me.REG[8] = NIT_NULL;
9185 fra.me.REG[9] = NIT_NULL;
9186 fra.me.REG[0] = p0;
9187 fra.me.REG[1] = p1;
9188 fra.me.REG[2] = p2;
9189 REGB0 = p3;
9190 fra.me.REG[3] = p4;
9191 /* ./syntax//typing.nit:1500 */
9192 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9193 if (UNTAG_Bool(REGB1)) {
9194 /* ./syntax//typing.nit:1501 */
9195 if (!once_value_1) {
9196 if (!once_value_2) {
9197 fra.me.REG[4] = BOX_NativeString("==");
9198 REGB1 = TAG_Int(2);
9199 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
9200 once_value_2 = fra.me.REG[4];
9201 register_static_object(&once_value_2);
9202 } else fra.me.REG[4] = once_value_2;
9203 fra.me.REG[4] = fra.me.REG[4];
9204 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9205 once_value_1 = fra.me.REG[4];
9206 register_static_object(&once_value_1);
9207 } else fra.me.REG[4] = once_value_1;
9208 fra.me.REG[4] = fra.me.REG[4];
9209 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9210 if (UNTAG_Bool(REGB1)) {
9211 } else {
9212 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9213 REGB1 = REGB2;
9214 }
9215 if (UNTAG_Bool(REGB1)) {
9216 REGB1 = TAG_Bool(true);
9217 } else {
9218 if (!once_value_3) {
9219 if (!once_value_4) {
9220 fra.me.REG[4] = BOX_NativeString("!=");
9221 REGB2 = TAG_Int(2);
9222 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
9223 once_value_4 = fra.me.REG[4];
9224 register_static_object(&once_value_4);
9225 } else fra.me.REG[4] = once_value_4;
9226 fra.me.REG[4] = fra.me.REG[4];
9227 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9228 once_value_3 = fra.me.REG[4];
9229 register_static_object(&once_value_3);
9230 } else fra.me.REG[4] = once_value_3;
9231 fra.me.REG[4] = fra.me.REG[4];
9232 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9233 if (UNTAG_Bool(REGB2)) {
9234 } else {
9235 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9236 REGB2 = REGB3;
9237 }
9238 REGB1 = REGB2;
9239 }
9240 if (UNTAG_Bool(REGB1)) {
9241 /* ./syntax//typing.nit:1503 */
9242 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9243 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9244 fra.me.REG[2] = fra.me.REG[4];
9245 } else {
9246 /* ./syntax//typing.nit:1505 */
9247 REGB1 = TAG_Int(3);
9248 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9249 if (!once_value_5) {
9250 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9251 REGB1 = TAG_Int(15);
9252 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9253 once_value_5 = fra.me.REG[5];
9254 register_static_object(&once_value_5);
9255 } else fra.me.REG[5] = once_value_5;
9256 fra.me.REG[5] = fra.me.REG[5];
9257 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9258 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9259 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9260 if (!once_value_6) {
9261 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9262 REGB1 = TAG_Int(17);
9263 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9264 once_value_6 = fra.me.REG[5];
9265 register_static_object(&once_value_6);
9266 } else fra.me.REG[5] = once_value_6;
9267 fra.me.REG[5] = fra.me.REG[5];
9268 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9269 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9270 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9271 /* ./syntax//typing.nit:1506 */
9272 fra.me.REG[4] = NIT_NULL;
9273 goto label7;
9274 }
9275 }
9276 /* ./syntax//typing.nit:1509 */
9277 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9278 /* ./syntax//typing.nit:1510 */
9279 fra.me.REG[6] = NIT_NULL;
9280 /* ./syntax//typing.nit:1511 */
9281 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9282 if (UNTAG_Bool(REGB1)) {
9283 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9284 fra.me.REG[6] = fra.me.REG[7];
9285 }
9286 /* ./syntax//typing.nit:1512 */
9287 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9288 if (UNTAG_Bool(REGB1)) {
9289 } else {
9290 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9291 if (UNTAG_Bool(REGB2)) {
9292 REGB2 = TAG_Bool(false);
9293 REGB1 = REGB2;
9294 } else {
9295 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9296 REGB1 = REGB2;
9297 }
9298 }
9299 if (UNTAG_Bool(REGB1)) {
9300 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9301 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9302 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
9303 } else {
9304 REGB2 = TAG_Bool(false);
9305 REGB1 = REGB2;
9306 }
9307 if (UNTAG_Bool(REGB1)) {
9308 /* ./syntax//typing.nit:1513 */
9309 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9310 /* ./../lib/standard//collection//array.nit:24 */
9311 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9312 if (UNTAG_Bool(REGB1)) {
9313 } else {
9314 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9315 }
9316 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9317 /* ./syntax//typing.nit:1514 */
9318 REGB2 = TAG_Int(1);
9319 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9320 if (UNTAG_Bool(REGB3)) {
9321 } else {
9322 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9323 }
9324 /* ./../lib/standard//kernel.nit:234 */
9325 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9326 /* ./syntax//typing.nit:1514 */
9327 if (UNTAG_Bool(REGB2)) {
9328 /* ./syntax//typing.nit:1515 */
9329 REGB2 = TAG_Int(5);
9330 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9331 if (!once_value_8) {
9332 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9333 REGB2 = TAG_Int(29);
9334 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9335 once_value_8 = fra.me.REG[9];
9336 register_static_object(&once_value_8);
9337 } else fra.me.REG[9] = once_value_8;
9338 fra.me.REG[9] = fra.me.REG[9];
9339 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9340 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9341 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9342 if (!once_value_9) {
9343 fra.me.REG[9] = BOX_NativeString("' for ");
9344 REGB2 = TAG_Int(6);
9345 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9346 once_value_9 = fra.me.REG[9];
9347 register_static_object(&once_value_9);
9348 } else fra.me.REG[9] = once_value_9;
9349 fra.me.REG[9] = fra.me.REG[9];
9350 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9351 if (!once_value_10) {
9352 fra.me.REG[9] = BOX_NativeString(", ");
9353 REGB2 = TAG_Int(2);
9354 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9355 once_value_10 = fra.me.REG[9];
9356 register_static_object(&once_value_10);
9357 } else fra.me.REG[9] = once_value_10;
9358 fra.me.REG[9] = fra.me.REG[9];
9359 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9360 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9361 if (!once_value_11) {
9362 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9363 REGB2 = TAG_Int(27);
9364 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9365 once_value_11 = fra.me.REG[9];
9366 register_static_object(&once_value_11);
9367 } else fra.me.REG[9] = once_value_11;
9368 fra.me.REG[9] = fra.me.REG[9];
9369 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9370 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9371 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9372 /* ./syntax//typing.nit:1516 */
9373 fra.me.REG[4] = NIT_NULL;
9374 goto label7;
9375 } else {
9376 /* ./../lib/standard//collection//array.nit:24 */
9377 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9378 if (UNTAG_Bool(REGB2)) {
9379 } else {
9380 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9381 }
9382 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9383 /* ./syntax//typing.nit:1517 */
9384 REGB1 = TAG_Int(1);
9385 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9386 if (UNTAG_Bool(REGB3)) {
9387 } else {
9388 /* ./../lib/standard//kernel.nit:227 */
9389 REGB1 = TAG_Bool((REGB2)==(REGB1));
9390 /* ./syntax//typing.nit:1517 */
9391 REGB3 = REGB1;
9392 }
9393 if (UNTAG_Bool(REGB3)) {
9394 /* ./syntax//typing.nit:1518 */
9395 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9396 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9397 if (UNTAG_Bool(REGB3)) {
9398 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1518);
9399 }
9400 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9401 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9402 /* ./syntax//typing.nit:1519 */
9403 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9404 if (UNTAG_Bool(REGB3)) {
9405 } else {
9406 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1519);
9407 }
9408 /* ./syntax//typing.nit:1520 */
9409 fra.me.REG[6] = fra.me.REG[7];
9410 }
9411 }
9412 }
9413 /* ./syntax//typing.nit:1524 */
9414 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9415 if (UNTAG_Bool(REGB3)) {
9416 } else {
9417 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9418 if (UNTAG_Bool(REGB1)) {
9419 REGB1 = TAG_Bool(false);
9420 REGB3 = REGB1;
9421 } else {
9422 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9423 REGB3 = REGB1;
9424 }
9425 }
9426 if (UNTAG_Bool(REGB3)) {
9427 /* ./syntax//typing.nit:1525 */
9428 if (UNTAG_Bool(REGB0)) {
9429 /* ./syntax//typing.nit:1526 */
9430 REGB0 = TAG_Int(5);
9431 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9432 if (!once_value_12) {
9433 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9434 REGB0 = TAG_Int(27);
9435 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9436 once_value_12 = fra.me.REG[5];
9437 register_static_object(&once_value_12);
9438 } else fra.me.REG[5] = once_value_12;
9439 fra.me.REG[5] = fra.me.REG[5];
9440 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9441 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9443 if (!once_value_13) {
9444 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9445 REGB0 = TAG_Int(13);
9446 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9447 once_value_13 = fra.me.REG[5];
9448 register_static_object(&once_value_13);
9449 } else fra.me.REG[5] = once_value_13;
9450 fra.me.REG[5] = fra.me.REG[5];
9451 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9452 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9453 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9454 if (!once_value_14) {
9455 fra.me.REG[5] = BOX_NativeString(".");
9456 REGB0 = TAG_Int(1);
9457 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9458 once_value_14 = fra.me.REG[5];
9459 register_static_object(&once_value_14);
9460 } else fra.me.REG[5] = once_value_14;
9461 fra.me.REG[5] = fra.me.REG[5];
9462 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9463 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9464 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9465 } else {
9466 /* ./syntax//typing.nit:1528 */
9467 REGB0 = TAG_Int(5);
9468 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9469 if (!once_value_15) {
9470 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9471 REGB0 = TAG_Int(15);
9472 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9473 once_value_15 = fra.me.REG[5];
9474 register_static_object(&once_value_15);
9475 } else fra.me.REG[5] = once_value_15;
9476 fra.me.REG[5] = fra.me.REG[5];
9477 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9478 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9479 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9480 if (!once_value_16) {
9481 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9482 REGB0 = TAG_Int(20);
9483 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9484 once_value_16 = fra.me.REG[3];
9485 register_static_object(&once_value_16);
9486 } else fra.me.REG[3] = once_value_16;
9487 fra.me.REG[3] = fra.me.REG[3];
9488 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9489 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9490 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9491 if (!once_value_17) {
9492 fra.me.REG[2] = BOX_NativeString(".");
9493 REGB0 = TAG_Int(1);
9494 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9495 once_value_17 = fra.me.REG[2];
9496 register_static_object(&once_value_17);
9497 } else fra.me.REG[2] = once_value_17;
9498 fra.me.REG[2] = fra.me.REG[2];
9499 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9500 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9501 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9502 }
9503 /* ./syntax//typing.nit:1530 */
9504 fra.me.REG[4] = NIT_NULL;
9505 goto label7;
9506 }
9507 /* ./syntax//typing.nit:1532 */
9508 fra.me.REG[4] = fra.me.REG[6];
9509 goto label7;
9510 label7: while(0);
9511 stack_frame_head = fra.me.prev;
9512 return fra.me.REG[4];
9513 }
9514 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9515 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9516 val_t REGB0;
9517 val_t tmp;
9518 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9519 fra.me.file = LOCATE_syntax___typing;
9520 fra.me.line = 1535;
9521 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9522 fra.me.has_broke = 0;
9523 fra.me.REG_size = 6;
9524 fra.me.nitni_local_ref_head = NULL;
9525 fra.me.REG[0] = NIT_NULL;
9526 fra.me.REG[1] = NIT_NULL;
9527 fra.me.REG[2] = NIT_NULL;
9528 fra.me.REG[3] = NIT_NULL;
9529 fra.me.REG[4] = NIT_NULL;
9530 fra.me.REG[5] = NIT_NULL;
9531 fra.me.REG[0] = p0;
9532 fra.me.REG[1] = p1;
9533 fra.me.REG[2] = p2;
9534 fra.me.REG[3] = p3;
9535 REGB0 = p4;
9536 /* ./syntax//typing.nit:1538 */
9537 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9538 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9539 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);
9540 /* ./syntax//typing.nit:1539 */
9541 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9542 /* ./syntax//typing.nit:1540 */
9543 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9544 if (UNTAG_Bool(REGB0)) {
9545 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9546 fra.me.REG[2] = fra.me.REG[3];
9547 }
9548 /* ./syntax//typing.nit:1541 */
9549 goto label1;
9550 label1: while(0);
9551 stack_frame_head = fra.me.prev;
9552 return fra.me.REG[2];
9553 }
9554 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9555 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9556 val_t REGB0;
9557 val_t tmp;
9558 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9559 fra.me.file = LOCATE_syntax___typing;
9560 fra.me.line = 1544;
9561 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9562 fra.me.has_broke = 0;
9563 fra.me.REG_size = 2;
9564 fra.me.nitni_local_ref_head = NULL;
9565 fra.me.REG[0] = NIT_NULL;
9566 fra.me.REG[1] = NIT_NULL;
9567 fra.me.REG[0] = p0;
9568 /* ./syntax//typing.nit:1544 */
9569 fra.me.REG[1] = fra.me.REG[0];
9570 /* ./syntax//typing.nit:1545 */
9571 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9572 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9573 if (UNTAG_Bool(REGB0)) {
9574 } else {
9575 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1545);
9576 }
9577 goto label1;
9578 label1: while(0);
9579 stack_frame_head = fra.me.prev;
9580 return fra.me.REG[1];
9581 }
9582 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9583 struct {struct stack_frame_t me;} fra;
9584 val_t tmp;
9585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9586 fra.me.file = LOCATE_syntax___typing;
9587 fra.me.line = 1548;
9588 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9589 fra.me.has_broke = 0;
9590 fra.me.REG_size = 1;
9591 fra.me.nitni_local_ref_head = NULL;
9592 fra.me.REG[0] = NIT_NULL;
9593 fra.me.REG[0] = p0;
9594 /* ./syntax//typing.nit:1548 */
9595 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9596 stack_frame_head = fra.me.prev;
9597 return fra.me.REG[0];
9598 }
9599 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9600 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
9601 val_t REGB0;
9602 val_t REGB1;
9603 val_t REGB2;
9604 val_t tmp;
9605 static val_t once_value_1; /* Once value */
9606 static val_t once_value_2; /* Once value */
9607 static val_t once_value_3; /* Once value */
9608 static val_t once_value_4; /* Once value */
9609 static val_t once_value_5; /* Once value */
9610 static val_t once_value_6; /* Once value */
9611 static val_t once_value_7; /* Once value */
9612 static val_t once_value_8; /* Once value */
9613 static val_t once_value_9; /* Once value */
9614 static val_t once_value_10; /* Once value */
9615 static val_t once_value_11; /* Once value */
9616 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9617 fra.me.file = LOCATE_syntax___typing;
9618 fra.me.line = 1555;
9619 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9620 fra.me.has_broke = 0;
9621 fra.me.REG_size = 11;
9622 fra.me.nitni_local_ref_head = NULL;
9623 fra.me.REG[0] = NIT_NULL;
9624 fra.me.REG[1] = NIT_NULL;
9625 fra.me.REG[2] = NIT_NULL;
9626 fra.me.REG[3] = NIT_NULL;
9627 fra.me.REG[4] = NIT_NULL;
9628 fra.me.REG[5] = NIT_NULL;
9629 fra.me.REG[6] = NIT_NULL;
9630 fra.me.REG[7] = NIT_NULL;
9631 fra.me.REG[8] = NIT_NULL;
9632 fra.me.REG[9] = NIT_NULL;
9633 fra.me.REG[10] = NIT_NULL;
9634 fra.me.REG[0] = p0;
9635 fra.me.REG[1] = p1;
9636 fra.me.REG[2] = p2;
9637 /* ./syntax//typing.nit:1555 */
9638 fra.me.REG[3] = fra.me.REG[0];
9639 /* ./syntax//typing.nit:1557 */
9640 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9641 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9642 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9643 if (UNTAG_Bool(REGB0)) {
9644 } else {
9645 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9646 if (UNTAG_Bool(REGB1)) {
9647 REGB1 = TAG_Bool(false);
9648 REGB0 = REGB1;
9649 } else {
9650 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9651 REGB0 = REGB1;
9652 }
9653 }
9654 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9655 if (UNTAG_Bool(REGB0)) {
9656 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9657 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
9658 if (UNTAG_Bool(REGB0)) {
9659 } else {
9660 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9661 REGB0 = REGB1;
9662 }
9663 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9664 } else {
9665 REGB1 = TAG_Bool(false);
9666 REGB0 = REGB1;
9667 }
9668 if (UNTAG_Bool(REGB0)) {
9669 /* ./syntax//typing.nit:1558 */
9670 REGB0 = TAG_Int(3);
9671 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9672 if (!once_value_1) {
9673 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
9674 REGB0 = TAG_Int(30);
9675 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9676 once_value_1 = fra.me.REG[4];
9677 register_static_object(&once_value_1);
9678 } else fra.me.REG[4] = once_value_1;
9679 fra.me.REG[4] = fra.me.REG[4];
9680 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9681 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9682 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9683 if (!once_value_2) {
9684 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
9685 REGB0 = TAG_Int(29);
9686 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9687 once_value_2 = fra.me.REG[4];
9688 register_static_object(&once_value_2);
9689 } else fra.me.REG[4] = once_value_2;
9690 fra.me.REG[4] = fra.me.REG[4];
9691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9692 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9693 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
9694 }
9695 /* ./syntax//typing.nit:1560 */
9696 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9697 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9698 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
9699 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
9700 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
9701 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9702 /* ./syntax//typing.nit:1561 */
9703 fra.me.REG[5] = NIT_NULL;
9704 /* ./syntax//typing.nit:1562 */
9705 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
9706 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
9707 if (UNTAG_Bool(REGB0)) {
9708 } else {
9709 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1562);
9710 }
9711 /* ./syntax//typing.nit:1563 */
9712 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
9713 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9714 if (UNTAG_Bool(REGB0)) {
9715 /* ./syntax//typing.nit:1564 */
9716 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
9717 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
9718 if (UNTAG_Bool(REGB0)) {
9719 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1564);
9720 }
9721 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
9722 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
9723 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
9724 fra.me.REG[5] = fra.me.REG[0];
9725 }
9726 /* ./syntax//typing.nit:1566 */
9727 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9728 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
9729 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
9730 /* ./syntax//typing.nit:1567 */
9731 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9732 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
9733 if (UNTAG_Bool(REGB0)) {
9734 } else {
9735 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
9736 REGB0 = REGB1;
9737 }
9738 if (UNTAG_Bool(REGB0)) {
9739 /* ./syntax//typing.nit:1568 */
9740 REGB0 = TAG_Bool(true);
9741 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
9742 } else {
9743 /* ./syntax//typing.nit:1569 */
9744 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
9745 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9746 if (UNTAG_Bool(REGB0)) {
9747 /* ./syntax//typing.nit:1570 */
9748 REGB0 = TAG_Int(5);
9749 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9750 if (!once_value_3) {
9751 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
9752 REGB0 = TAG_Int(28);
9753 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9754 once_value_3 = fra.me.REG[8];
9755 register_static_object(&once_value_3);
9756 } else fra.me.REG[8] = once_value_3;
9757 fra.me.REG[8] = fra.me.REG[8];
9758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9759 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9760 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9761 if (!once_value_4) {
9762 fra.me.REG[8] = BOX_NativeString(" must be one in ");
9763 REGB0 = TAG_Int(16);
9764 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9765 once_value_4 = fra.me.REG[8];
9766 register_static_object(&once_value_4);
9767 } else fra.me.REG[8] = once_value_4;
9768 fra.me.REG[8] = fra.me.REG[8];
9769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9770 if (!once_value_5) {
9771 fra.me.REG[8] = BOX_NativeString(", ");
9772 REGB0 = TAG_Int(2);
9773 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9774 once_value_5 = fra.me.REG[8];
9775 register_static_object(&once_value_5);
9776 } else fra.me.REG[8] = once_value_5;
9777 fra.me.REG[8] = fra.me.REG[8];
9778 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
9779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9780 if (!once_value_6) {
9781 fra.me.REG[8] = BOX_NativeString(".");
9782 REGB0 = TAG_Int(1);
9783 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9784 once_value_6 = fra.me.REG[8];
9785 register_static_object(&once_value_6);
9786 } else fra.me.REG[8] = once_value_6;
9787 fra.me.REG[8] = fra.me.REG[8];
9788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9789 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9790 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
9791 } else {
9792 /* ./syntax//typing.nit:1571 */
9793 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
9794 if (UNTAG_Bool(REGB0)) {
9795 } else {
9796 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9797 REGB0 = REGB1;
9798 }
9799 if (UNTAG_Bool(REGB0)) {
9800 /* ./syntax//typing.nit:1572 */
9801 REGB0 = TAG_Int(3);
9802 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9803 if (!once_value_7) {
9804 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
9805 REGB0 = TAG_Int(54);
9806 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9807 once_value_7 = fra.me.REG[8];
9808 register_static_object(&once_value_7);
9809 } else fra.me.REG[8] = once_value_7;
9810 fra.me.REG[8] = fra.me.REG[8];
9811 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9812 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9813 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9814 if (!once_value_8) {
9815 fra.me.REG[8] = BOX_NativeString(" is allowed.");
9816 REGB0 = TAG_Int(12);
9817 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9818 once_value_8 = fra.me.REG[8];
9819 register_static_object(&once_value_8);
9820 } else fra.me.REG[8] = once_value_8;
9821 fra.me.REG[8] = fra.me.REG[8];
9822 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9823 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9824 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
9825 } else {
9826 /* ./../lib/standard//collection//array.nit:269 */
9827 REGB0 = TAG_Int(0);
9828 /* ./../lib/standard//collection//array.nit:270 */
9829 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9830 if (UNTAG_Bool(REGB1)) {
9831 } else {
9832 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
9833 }
9834 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9835 /* ./../lib/standard//collection//array.nit:271 */
9836 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
9837 /* ./../lib/standard//collection//array.nit:272 */
9838 while(1) {
9839 /* ./../lib/standard//collection//array.nit:24 */
9840 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9841 if (UNTAG_Bool(REGB1)) {
9842 } else {
9843 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9844 }
9845 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9846 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
9847 if (UNTAG_Bool(REGB2)) {
9848 } else {
9849 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9850 }
9851 /* ./../lib/standard//kernel.nit:232 */
9852 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
9853 /* ./../lib/standard//collection//array.nit:272 */
9854 if (UNTAG_Bool(REGB1)) {
9855 /* ./../lib/standard//collection//array.nit:273 */
9856 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9857 if (UNTAG_Bool(REGB1)) {
9858 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
9859 }
9860 /* ./../lib/standard//collection//array.nit:718 */
9861 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
9862 /* ./syntax//typing.nit:1575 */
9863 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[5]));
9864 if (UNTAG_Bool(REGB1)) {
9865 } else {
9866 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
9867 REGB1 = REGB2;
9868 }
9869 if (UNTAG_Bool(REGB1)) {
9870 /* ./syntax//typing.nit:1576 */
9871 fra.me.REG[5] = NIT_NULL;
9872 } else {
9873 /* ./syntax//typing.nit:1577 */
9874 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[4]));
9875 if (UNTAG_Bool(REGB1)) {
9876 } else {
9877 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
9878 REGB1 = REGB2;
9879 }
9880 if (UNTAG_Bool(REGB1)) {
9881 /* ./syntax//typing.nit:1578 */
9882 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9883 if (UNTAG_Bool(REGB1)) {
9884 } else {
9885 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9886 if (UNTAG_Bool(REGB2)) {
9887 REGB2 = TAG_Bool(false);
9888 REGB1 = REGB2;
9889 } else {
9890 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9891 REGB1 = REGB2;
9892 }
9893 }
9894 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9895 if (UNTAG_Bool(REGB1)) {
9896 /* ./syntax//typing.nit:1579 */
9897 REGB1 = TAG_Int(5);
9898 fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9899 if (!once_value_9) {
9900 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
9901 REGB1 = TAG_Int(22);
9902 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
9903 once_value_9 = fra.me.REG[10];
9904 register_static_object(&once_value_9);
9905 } else fra.me.REG[10] = once_value_9;
9906 fra.me.REG[10] = fra.me.REG[10];
9907 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
9908 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9909 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9910 if (!once_value_10) {
9911 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
9912 REGB1 = TAG_Int(39);
9913 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9914 once_value_10 = fra.me.REG[8];
9915 register_static_object(&once_value_10);
9916 } else fra.me.REG[8] = once_value_10;
9917 fra.me.REG[8] = fra.me.REG[8];
9918 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9919 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9920 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9921 if (!once_value_11) {
9922 fra.me.REG[8] = BOX_NativeString("");
9923 REGB1 = TAG_Int(0);
9924 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9925 once_value_11 = fra.me.REG[8];
9926 register_static_object(&once_value_11);
9927 } else fra.me.REG[8] = once_value_11;
9928 fra.me.REG[8] = fra.me.REG[8];
9929 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9930 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
9931 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[9]);
9932 }
9933 /* ./syntax//typing.nit:1581 */
9934 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
9935 /* ./syntax//typing.nit:1582 */
9936 goto label12;
9937 }
9938 }
9939 /* ./../lib/standard//collection//array.nit:274 */
9940 REGB1 = TAG_Int(1);
9941 /* ./../lib/standard//kernel.nit:235 */
9942 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
9943 /* ./../lib/standard//collection//array.nit:274 */
9944 REGB0 = REGB1;
9945 } else {
9946 /* ./../lib/standard//collection//array.nit:272 */
9947 goto label13;
9948 }
9949 }
9950 label13: while(0);
9951 label12: while(0);
9952 }
9953 }
9954 }
9955 stack_frame_head = fra.me.prev;
9956 return;
9957 }
9958 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
9959 struct {struct stack_frame_t me;} fra;
9960 val_t tmp;
9961 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9962 fra.me.file = LOCATE_syntax___typing;
9963 fra.me.line = 1591;
9964 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
9965 fra.me.has_broke = 0;
9966 fra.me.REG_size = 1;
9967 fra.me.nitni_local_ref_head = NULL;
9968 fra.me.REG[0] = NIT_NULL;
9969 fra.me.REG[0] = p0;
9970 /* ./syntax//typing.nit:1591 */
9971 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9972 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9973 goto label1;
9974 label1: while(0);
9975 stack_frame_head = fra.me.prev;
9976 return fra.me.REG[0];
9977 }
9978 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
9979 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9980 val_t REGB0;
9981 val_t REGB1;
9982 val_t tmp;
9983 static val_t once_value_2; /* Once value */
9984 static val_t once_value_3; /* Once value */
9985 static val_t once_value_4; /* Once value */
9986 static val_t once_value_5; /* Once value */
9987 static val_t once_value_6; /* Once value */
9988 static val_t once_value_7; /* Once value */
9989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9990 fra.me.file = LOCATE_syntax___typing;
9991 fra.me.line = 1592;
9992 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
9993 fra.me.has_broke = 0;
9994 fra.me.REG_size = 5;
9995 fra.me.nitni_local_ref_head = NULL;
9996 fra.me.REG[0] = NIT_NULL;
9997 fra.me.REG[1] = NIT_NULL;
9998 fra.me.REG[2] = NIT_NULL;
9999 fra.me.REG[3] = NIT_NULL;
10000 fra.me.REG[4] = NIT_NULL;
10001 fra.me.REG[0] = p0;
10002 fra.me.REG[1] = p1;
10003 /* ./syntax//typing.nit:1594 */
10004 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10005 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
10006 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10007 if (UNTAG_Bool(REGB0)) {
10008 goto label1;
10009 }
10010 /* ./syntax//typing.nit:1595 */
10011 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10012 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
10013 /* ./syntax//typing.nit:1596 */
10014 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10015 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
10016 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
10017 if (UNTAG_Bool(REGB0)) {
10018 /* ./syntax//typing.nit:1597 */
10019 REGB0 = TAG_Int(3);
10020 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10021 if (!once_value_2) {
10022 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
10023 REGB0 = TAG_Int(41);
10024 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10025 once_value_2 = fra.me.REG[4];
10026 register_static_object(&once_value_2);
10027 } else fra.me.REG[4] = once_value_2;
10028 fra.me.REG[4] = fra.me.REG[4];
10029 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10030 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10031 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10032 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10033 if (!once_value_3) {
10034 fra.me.REG[4] = BOX_NativeString(".");
10035 REGB0 = TAG_Int(1);
10036 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10037 once_value_3 = fra.me.REG[4];
10038 register_static_object(&once_value_3);
10039 } else fra.me.REG[4] = once_value_3;
10040 fra.me.REG[4] = fra.me.REG[4];
10041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10042 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10043 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10044 /* ./syntax//typing.nit:1598 */
10045 goto label1;
10046 }
10047 /* ./syntax//typing.nit:1601 */
10048 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10049 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10050 if (UNTAG_Bool(REGB0)) {
10051 } else {
10052 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10053 if (UNTAG_Bool(REGB1)) {
10054 REGB1 = TAG_Bool(false);
10055 REGB0 = REGB1;
10056 } else {
10057 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10058 REGB0 = REGB1;
10059 }
10060 }
10061 if (UNTAG_Bool(REGB0)) {
10062 /* ./syntax//typing.nit:1602 */
10063 if (!once_value_4) {
10064 if (!once_value_5) {
10065 fra.me.REG[3] = BOX_NativeString("init");
10066 REGB0 = TAG_Int(4);
10067 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10068 once_value_5 = fra.me.REG[3];
10069 register_static_object(&once_value_5);
10070 } else fra.me.REG[3] = once_value_5;
10071 fra.me.REG[3] = fra.me.REG[3];
10072 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10073 once_value_4 = fra.me.REG[3];
10074 register_static_object(&once_value_4);
10075 } else fra.me.REG[3] = once_value_4;
10076 fra.me.REG[3] = fra.me.REG[3];
10077 } else {
10078 /* ./syntax//typing.nit:1604 */
10079 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10080 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10081 if (UNTAG_Bool(REGB0)) {
10082 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1604);
10083 }
10084 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10085 fra.me.REG[3] = fra.me.REG[4];
10086 }
10087 /* ./syntax//typing.nit:1607 */
10088 REGB0 = TAG_Bool(false);
10089 REGB1 = TAG_Bool(false);
10090 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10091 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);
10092 /* ./syntax//typing.nit:1608 */
10093 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
10094 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10095 if (UNTAG_Bool(REGB1)) {
10096 } else {
10097 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10098 if (UNTAG_Bool(REGB0)) {
10099 REGB0 = TAG_Bool(false);
10100 REGB1 = REGB0;
10101 } else {
10102 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10103 REGB1 = REGB0;
10104 }
10105 }
10106 if (UNTAG_Bool(REGB1)) {
10107 goto label1;
10108 }
10109 /* ./syntax//typing.nit:1610 */
10110 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10111 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10112 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10113 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10114 if (UNTAG_Bool(REGB1)) {
10115 /* ./syntax//typing.nit:1611 */
10116 REGB1 = TAG_Int(3);
10117 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10118 if (!once_value_6) {
10119 fra.me.REG[3] = BOX_NativeString("Error: ");
10120 REGB1 = TAG_Int(7);
10121 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10122 once_value_6 = fra.me.REG[3];
10123 register_static_object(&once_value_6);
10124 } else fra.me.REG[3] = once_value_6;
10125 fra.me.REG[3] = fra.me.REG[3];
10126 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10127 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10128 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10129 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10130 if (!once_value_7) {
10131 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
10132 REGB1 = TAG_Int(22);
10133 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10134 once_value_7 = fra.me.REG[3];
10135 register_static_object(&once_value_7);
10136 } else fra.me.REG[3] = once_value_7;
10137 fra.me.REG[3] = fra.me.REG[3];
10138 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10139 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10140 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10141 /* ./syntax//typing.nit:1612 */
10142 goto label1;
10143 }
10144 /* ./syntax//typing.nit:1614 */
10145 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10146 /* ./syntax//typing.nit:1615 */
10147 REGB1 = TAG_Bool(true);
10148 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
10149 label1: while(0);
10150 stack_frame_head = fra.me.prev;
10151 return;
10152 }
10153 val_t syntax___typing___ASendExpr___name(val_t p0){
10154 struct {struct stack_frame_t me;} fra;
10155 val_t tmp;
10156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10157 fra.me.file = LOCATE_syntax___typing;
10158 fra.me.line = 1621;
10159 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10160 fra.me.has_broke = 0;
10161 fra.me.REG_size = 0;
10162 fra.me.nitni_local_ref_head = NULL;
10163 /* ./syntax//typing.nit:1621 */
10164 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1621);
10165 stack_frame_head = fra.me.prev;
10166 return NIT_NULL;
10167 }
10168 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10169 struct {struct stack_frame_t me;} fra;
10170 val_t tmp;
10171 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10172 fra.me.file = LOCATE_syntax___typing;
10173 fra.me.line = 1624;
10174 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10175 fra.me.has_broke = 0;
10176 fra.me.REG_size = 1;
10177 fra.me.nitni_local_ref_head = NULL;
10178 fra.me.REG[0] = NIT_NULL;
10179 fra.me.REG[0] = p0;
10180 /* ./syntax//typing.nit:1625 */
10181 fra.me.REG[0] = NIT_NULL;
10182 goto label1;
10183 label1: while(0);
10184 stack_frame_head = fra.me.prev;
10185 return fra.me.REG[0];
10186 }
10187 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10188 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10189 val_t tmp;
10190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10191 fra.me.file = LOCATE_syntax___typing;
10192 fra.me.line = 1627;
10193 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10194 fra.me.has_broke = 0;
10195 fra.me.REG_size = 2;
10196 fra.me.nitni_local_ref_head = NULL;
10197 fra.me.REG[0] = NIT_NULL;
10198 fra.me.REG[1] = NIT_NULL;
10199 fra.me.REG[0] = p0;
10200 fra.me.REG[1] = p1;
10201 /* ./syntax//typing.nit:1629 */
10202 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10203 stack_frame_head = fra.me.prev;
10204 return;
10205 }
10206 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10207 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10208 val_t REGB0;
10209 val_t REGB1;
10210 val_t tmp;
10211 static val_t once_value_2; /* Once value */
10212 static val_t once_value_3; /* Once value */
10213 static val_t once_value_4; /* Once value */
10214 static val_t once_value_5; /* Once value */
10215 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10216 fra.me.file = LOCATE_syntax___typing;
10217 fra.me.line = 1632;
10218 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10219 fra.me.has_broke = 0;
10220 fra.me.REG_size = 7;
10221 fra.me.nitni_local_ref_head = NULL;
10222 fra.me.REG[0] = NIT_NULL;
10223 fra.me.REG[1] = NIT_NULL;
10224 fra.me.REG[2] = NIT_NULL;
10225 fra.me.REG[3] = NIT_NULL;
10226 fra.me.REG[4] = NIT_NULL;
10227 fra.me.REG[5] = NIT_NULL;
10228 fra.me.REG[6] = NIT_NULL;
10229 fra.me.REG[0] = p0;
10230 fra.me.REG[1] = p1;
10231 /* ./syntax//typing.nit:1632 */
10232 fra.me.REG[2] = fra.me.REG[0];
10233 /* ./syntax//typing.nit:1634 */
10234 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10235 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10236 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10237 if (UNTAG_Bool(REGB0)) {
10238 goto label1;
10239 }
10240 /* ./syntax//typing.nit:1635 */
10241 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10242 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10243 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10244 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10245 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10246 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10247 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10248 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10249 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10250 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]);
10251 /* ./syntax//typing.nit:1636 */
10252 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10253 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10254 if (UNTAG_Bool(REGB1)) {
10255 } else {
10256 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10257 if (UNTAG_Bool(REGB0)) {
10258 REGB0 = TAG_Bool(false);
10259 REGB1 = REGB0;
10260 } else {
10261 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10262 REGB1 = REGB0;
10263 }
10264 }
10265 if (UNTAG_Bool(REGB1)) {
10266 goto label1;
10267 }
10268 /* ./syntax//typing.nit:1637 */
10269 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10270 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10271 if (UNTAG_Bool(REGB1)) {
10272 } else {
10273 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1637);
10274 }
10275 /* ./syntax//typing.nit:1639 */
10276 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10277 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10278 if (UNTAG_Bool(REGB1)) {
10279 /* ./syntax//typing.nit:1640 */
10280 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10281 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10282 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10283 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10284 if (UNTAG_Bool(REGB1)) {
10285 /* ./syntax//typing.nit:1641 */
10286 REGB1 = TAG_Int(3);
10287 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10288 if (!once_value_2) {
10289 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10290 REGB1 = TAG_Int(33);
10291 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10292 once_value_2 = fra.me.REG[5];
10293 register_static_object(&once_value_2);
10294 } else fra.me.REG[5] = once_value_2;
10295 fra.me.REG[5] = fra.me.REG[5];
10296 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10297 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10299 if (!once_value_3) {
10300 fra.me.REG[5] = BOX_NativeString(" in a method.");
10301 REGB1 = TAG_Int(13);
10302 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10303 once_value_3 = fra.me.REG[5];
10304 register_static_object(&once_value_3);
10305 } else fra.me.REG[5] = once_value_3;
10306 fra.me.REG[5] = fra.me.REG[5];
10307 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10308 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10309 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10310 } else {
10311 /* ./syntax//typing.nit:1642 */
10312 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10313 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10314 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10315 if (UNTAG_Bool(REGB1)) {
10316 /* ./syntax//typing.nit:1643 */
10317 REGB1 = TAG_Int(3);
10318 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10319 if (!once_value_4) {
10320 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10321 REGB1 = TAG_Int(19);
10322 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10323 once_value_4 = fra.me.REG[5];
10324 register_static_object(&once_value_4);
10325 } else fra.me.REG[5] = once_value_4;
10326 fra.me.REG[5] = fra.me.REG[5];
10327 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10328 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10329 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10330 if (!once_value_5) {
10331 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10332 REGB1 = TAG_Int(26);
10333 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10334 once_value_5 = fra.me.REG[5];
10335 register_static_object(&once_value_5);
10336 } else fra.me.REG[5] = once_value_5;
10337 fra.me.REG[5] = fra.me.REG[5];
10338 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10339 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10340 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10341 } else {
10342 /* ./syntax//typing.nit:1645 */
10343 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10344 }
10345 }
10346 }
10347 /* ./syntax//typing.nit:1649 */
10348 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10349 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10350 /* ./syntax//typing.nit:1650 */
10351 REGB1 = TAG_Bool(true);
10352 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10353 label1: while(0);
10354 stack_frame_head = fra.me.prev;
10355 return;
10356 }
10357 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10358 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10359 val_t REGB0;
10360 val_t tmp;
10361 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10362 fra.me.file = LOCATE_syntax___typing;
10363 fra.me.line = 1655;
10364 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10365 fra.me.has_broke = 0;
10366 fra.me.REG_size = 2;
10367 fra.me.nitni_local_ref_head = NULL;
10368 fra.me.REG[0] = NIT_NULL;
10369 fra.me.REG[1] = NIT_NULL;
10370 fra.me.REG[0] = p0;
10371 /* ./syntax//typing.nit:1655 */
10372 fra.me.REG[1] = fra.me.REG[0];
10373 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10374 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10375 if (UNTAG_Bool(REGB0)) {
10376 } else {
10377 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1655);
10378 }
10379 goto label1;
10380 label1: while(0);
10381 stack_frame_head = fra.me.prev;
10382 return fra.me.REG[1];
10383 }
10384 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10385 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10386 val_t REGB0;
10387 val_t REGB1;
10388 val_t REGB2;
10389 val_t tmp;
10390 static val_t once_value_2; /* Once value */
10391 static val_t once_value_3; /* Once value */
10392 static val_t once_value_4; /* Once value */
10393 static val_t once_value_5; /* Once value */
10394 static val_t once_value_6; /* Once value */
10395 static val_t once_value_7; /* Once value */
10396 static val_t once_value_8; /* Once value */
10397 static val_t once_value_9; /* Once value */
10398 static val_t once_value_10; /* Once value */
10399 static val_t once_value_11; /* Once value */
10400 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10401 fra.me.file = LOCATE_syntax___typing;
10402 fra.me.line = 1657;
10403 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10404 fra.me.has_broke = 0;
10405 fra.me.REG_size = 7;
10406 fra.me.nitni_local_ref_head = NULL;
10407 fra.me.REG[0] = NIT_NULL;
10408 fra.me.REG[1] = NIT_NULL;
10409 fra.me.REG[2] = NIT_NULL;
10410 fra.me.REG[3] = NIT_NULL;
10411 fra.me.REG[4] = NIT_NULL;
10412 fra.me.REG[5] = NIT_NULL;
10413 fra.me.REG[6] = NIT_NULL;
10414 fra.me.REG[0] = p0;
10415 fra.me.REG[1] = p1;
10416 /* ./syntax//typing.nit:1657 */
10417 fra.me.REG[2] = fra.me.REG[0];
10418 /* ./syntax//typing.nit:1659 */
10419 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10420 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10421 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10422 if (UNTAG_Bool(REGB0)) {
10423 goto label1;
10424 }
10425 /* ./syntax//typing.nit:1660 */
10426 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10427 /* ./syntax//typing.nit:1661 */
10428 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10429 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10430 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10431 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10432 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10433 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10434 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10435 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);
10436 /* ./syntax//typing.nit:1662 */
10437 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10438 /* ./syntax//typing.nit:1663 */
10439 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10440 if (UNTAG_Bool(REGB1)) {
10441 } else {
10442 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10443 if (UNTAG_Bool(REGB0)) {
10444 REGB0 = TAG_Bool(false);
10445 REGB1 = REGB0;
10446 } else {
10447 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10448 REGB1 = REGB0;
10449 }
10450 }
10451 if (UNTAG_Bool(REGB1)) {
10452 goto label1;
10453 }
10454 /* ./syntax//typing.nit:1664 */
10455 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10456 if (UNTAG_Bool(REGB1)) {
10457 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1664);
10458 }
10459 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10460 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10461 if (UNTAG_Bool(REGB1)) {
10462 /* ./syntax//typing.nit:1665 */
10463 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10464 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10465 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10466 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10467 if (UNTAG_Bool(REGB1)) {
10468 /* ./syntax//typing.nit:1666 */
10469 REGB1 = TAG_Int(3);
10470 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10471 if (!once_value_2) {
10472 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10473 REGB1 = TAG_Int(33);
10474 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10475 once_value_2 = fra.me.REG[6];
10476 register_static_object(&once_value_2);
10477 } else fra.me.REG[6] = once_value_2;
10478 fra.me.REG[6] = fra.me.REG[6];
10479 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10480 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10481 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10482 if (!once_value_3) {
10483 fra.me.REG[6] = BOX_NativeString(" in a method.");
10484 REGB1 = TAG_Int(13);
10485 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10486 once_value_3 = fra.me.REG[6];
10487 register_static_object(&once_value_3);
10488 } else fra.me.REG[6] = once_value_3;
10489 fra.me.REG[6] = fra.me.REG[6];
10490 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10491 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10492 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10493 } else {
10494 /* ./syntax//typing.nit:1667 */
10495 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10496 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10497 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10498 if (UNTAG_Bool(REGB1)) {
10499 /* ./syntax//typing.nit:1668 */
10500 REGB1 = TAG_Int(3);
10501 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10502 if (!once_value_4) {
10503 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10504 REGB1 = TAG_Int(19);
10505 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10506 once_value_4 = fra.me.REG[6];
10507 register_static_object(&once_value_4);
10508 } else fra.me.REG[6] = once_value_4;
10509 fra.me.REG[6] = fra.me.REG[6];
10510 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10511 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10512 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10513 if (!once_value_5) {
10514 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10515 REGB1 = TAG_Int(26);
10516 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10517 once_value_5 = fra.me.REG[6];
10518 register_static_object(&once_value_5);
10519 } else fra.me.REG[6] = once_value_5;
10520 fra.me.REG[6] = fra.me.REG[6];
10521 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10522 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10523 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10524 }
10525 }
10526 }
10527 /* ./syntax//typing.nit:1671 */
10528 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10529 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10530 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10531 if (UNTAG_Bool(REGB1)) {
10532 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1671);
10533 }
10534 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10535 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10536 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*/;
10537 if (UNTAG_Bool(REGB1)) {
10538 } else {
10539 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1671);
10540 }
10541 /* ./syntax//typing.nit:1672 */
10542 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10543 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10544 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10545 if (UNTAG_Bool(REGB1)) {
10546 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10547 fra.me.REG[4] = fra.me.REG[0];
10548 }
10549 /* ./syntax//typing.nit:1674 */
10550 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]);
10551 /* ./syntax//typing.nit:1675 */
10552 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10553 if (UNTAG_Bool(REGB1)) {
10554 } else {
10555 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10556 if (UNTAG_Bool(REGB0)) {
10557 REGB0 = TAG_Bool(false);
10558 REGB1 = REGB0;
10559 } else {
10560 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10561 REGB1 = REGB0;
10562 }
10563 }
10564 if (UNTAG_Bool(REGB1)) {
10565 goto label1;
10566 }
10567 /* ./syntax//typing.nit:1676 */
10568 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10569 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10570 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]);
10571 /* ./syntax//typing.nit:1678 */
10572 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10573 /* ./syntax//typing.nit:1679 */
10574 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10575 fra.me.REG[3] = fra.me.REG[0];
10576 /* ./syntax//typing.nit:1680 */
10577 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10579 /* ./syntax//typing.nit:1682 */
10580 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10581 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10582 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10583 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10584 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10585 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10586 REGB2 = TAG_Int(3);
10587 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10588 if (!once_value_6) {
10589 fra.me.REG[6] = BOX_NativeString("");
10590 REGB2 = TAG_Int(0);
10591 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10592 once_value_6 = fra.me.REG[6];
10593 register_static_object(&once_value_6);
10594 } else fra.me.REG[6] = once_value_6;
10595 fra.me.REG[6] = fra.me.REG[6];
10596 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10597 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10598 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10599 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10600 if (!once_value_7) {
10601 fra.me.REG[6] = BOX_NativeString("=");
10602 REGB2 = TAG_Int(1);
10603 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10604 once_value_7 = fra.me.REG[6];
10605 register_static_object(&once_value_7);
10606 } else fra.me.REG[6] = once_value_7;
10607 fra.me.REG[6] = fra.me.REG[6];
10608 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10609 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10610 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10611 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);
10612 /* ./syntax//typing.nit:1683 */
10613 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10614 if (UNTAG_Bool(REGB0)) {
10615 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1683);
10616 }
10617 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10618 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10619 if (UNTAG_Bool(REGB0)) {
10620 /* ./syntax//typing.nit:1684 */
10621 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10622 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10623 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10624 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10625 if (UNTAG_Bool(REGB0)) {
10626 /* ./syntax//typing.nit:1685 */
10627 REGB0 = TAG_Int(3);
10628 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10629 if (!once_value_8) {
10630 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
10631 REGB0 = TAG_Int(33);
10632 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10633 once_value_8 = fra.me.REG[4];
10634 register_static_object(&once_value_8);
10635 } else fra.me.REG[4] = once_value_8;
10636 fra.me.REG[4] = fra.me.REG[4];
10637 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10638 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10640 if (!once_value_9) {
10641 fra.me.REG[4] = BOX_NativeString(" in a method.");
10642 REGB0 = TAG_Int(13);
10643 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10644 once_value_9 = fra.me.REG[4];
10645 register_static_object(&once_value_9);
10646 } else fra.me.REG[4] = once_value_9;
10647 fra.me.REG[4] = fra.me.REG[4];
10648 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10649 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10650 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10651 } else {
10652 /* ./syntax//typing.nit:1686 */
10653 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10654 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10655 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10656 if (UNTAG_Bool(REGB0)) {
10657 /* ./syntax//typing.nit:1687 */
10658 REGB0 = TAG_Int(3);
10659 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10660 if (!once_value_10) {
10661 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
10662 REGB0 = TAG_Int(19);
10663 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10664 once_value_10 = fra.me.REG[4];
10665 register_static_object(&once_value_10);
10666 } else fra.me.REG[4] = once_value_10;
10667 fra.me.REG[4] = fra.me.REG[4];
10668 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10669 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10670 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10671 if (!once_value_11) {
10672 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10673 REGB0 = TAG_Int(26);
10674 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
10675 once_value_11 = fra.me.REG[5];
10676 register_static_object(&once_value_11);
10677 } else fra.me.REG[5] = once_value_11;
10678 fra.me.REG[5] = fra.me.REG[5];
10679 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10680 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10681 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10682 }
10683 }
10684 }
10685 /* ./syntax//typing.nit:1691 */
10686 REGB0 = TAG_Bool(true);
10687 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
10688 label1: while(0);
10689 stack_frame_head = fra.me.prev;
10690 return;
10691 }
10692 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
10693 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10694 val_t REGB0;
10695 val_t tmp;
10696 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10697 fra.me.file = LOCATE_syntax___typing;
10698 fra.me.line = 1696;
10699 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
10700 fra.me.has_broke = 0;
10701 fra.me.REG_size = 2;
10702 fra.me.nitni_local_ref_head = NULL;
10703 fra.me.REG[0] = NIT_NULL;
10704 fra.me.REG[1] = NIT_NULL;
10705 fra.me.REG[0] = p0;
10706 /* ./syntax//typing.nit:1696 */
10707 REGB0 = TAG_Int(1);
10708 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10709 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
10710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10711 goto label1;
10712 label1: while(0);
10713 stack_frame_head = fra.me.prev;
10714 return fra.me.REG[1];
10715 }
10716 val_t syntax___typing___AEqExpr___name(val_t p0){
10717 struct {struct stack_frame_t me;} fra;
10718 val_t REGB0;
10719 val_t tmp;
10720 static val_t once_value_1; /* Once value */
10721 static val_t once_value_2; /* Once value */
10722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10723 fra.me.file = LOCATE_syntax___typing;
10724 fra.me.line = 1699;
10725 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
10726 fra.me.has_broke = 0;
10727 fra.me.REG_size = 1;
10728 fra.me.nitni_local_ref_head = NULL;
10729 fra.me.REG[0] = NIT_NULL;
10730 fra.me.REG[0] = p0;
10731 /* ./syntax//typing.nit:1699 */
10732 if (!once_value_1) {
10733 if (!once_value_2) {
10734 fra.me.REG[0] = BOX_NativeString("==");
10735 REGB0 = TAG_Int(2);
10736 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10737 once_value_2 = fra.me.REG[0];
10738 register_static_object(&once_value_2);
10739 } else fra.me.REG[0] = once_value_2;
10740 fra.me.REG[0] = fra.me.REG[0];
10741 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10742 once_value_1 = fra.me.REG[0];
10743 register_static_object(&once_value_1);
10744 } else fra.me.REG[0] = once_value_1;
10745 fra.me.REG[0] = fra.me.REG[0];
10746 goto label3;
10747 label3: while(0);
10748 stack_frame_head = fra.me.prev;
10749 return fra.me.REG[0];
10750 }
10751 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
10752 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10753 val_t REGB0;
10754 val_t REGB1;
10755 val_t tmp;
10756 static val_t once_value_2; /* Once value */
10757 static val_t once_value_3; /* Once value */
10758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10759 fra.me.file = LOCATE_syntax___typing;
10760 fra.me.line = 1700;
10761 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
10762 fra.me.has_broke = 0;
10763 fra.me.REG_size = 4;
10764 fra.me.nitni_local_ref_head = NULL;
10765 fra.me.REG[0] = NIT_NULL;
10766 fra.me.REG[1] = NIT_NULL;
10767 fra.me.REG[2] = NIT_NULL;
10768 fra.me.REG[3] = NIT_NULL;
10769 fra.me.REG[0] = p0;
10770 fra.me.REG[1] = p1;
10771 /* ./syntax//typing.nit:1700 */
10772 fra.me.REG[2] = fra.me.REG[0];
10773 fra.me.REG[3] = fra.me.REG[1];
10774 /* ./syntax//typing.nit:1702 */
10775 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10776 /* ./syntax//typing.nit:1703 */
10777 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10778 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10779 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10780 if (UNTAG_Bool(REGB0)) {
10781 REGB0 = TAG_Bool(true);
10782 } else {
10783 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10784 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10785 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10786 REGB0 = REGB1;
10787 }
10788 if (UNTAG_Bool(REGB0)) {
10789 goto label1;
10790 }
10791 /* ./syntax//typing.nit:1704 */
10792 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10793 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10794 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10795 if (UNTAG_Bool(REGB0)) {
10796 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10797 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10798 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10799 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10800 } else {
10801 REGB1 = TAG_Bool(false);
10802 REGB0 = REGB1;
10803 }
10804 if (UNTAG_Bool(REGB0)) {
10805 REGB0 = TAG_Bool(true);
10806 } else {
10807 /* ./syntax//typing.nit:1705 */
10808 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10809 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10810 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10811 /* ./syntax//typing.nit:1704 */
10812 REGB0 = REGB1;
10813 }
10814 if (UNTAG_Bool(REGB0)) {
10815 /* ./syntax//typing.nit:1705 */
10816 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10817 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10818 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10819 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10820 } else {
10821 /* ./syntax//typing.nit:1704 */
10822 REGB1 = TAG_Bool(false);
10823 REGB0 = REGB1;
10824 }
10825 if (UNTAG_Bool(REGB0)) {
10826 /* ./syntax//typing.nit:1706 */
10827 if (!once_value_2) {
10828 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10829 REGB0 = TAG_Int(59);
10830 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10831 once_value_2 = fra.me.REG[1];
10832 register_static_object(&once_value_2);
10833 } else fra.me.REG[1] = once_value_2;
10834 fra.me.REG[1] = fra.me.REG[1];
10835 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10836 }
10837 /* ./syntax//typing.nit:1709 */
10838 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10839 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10840 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10841 if (UNTAG_Bool(REGB0)) {
10842 /* ./syntax//typing.nit:1710 */
10843 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10844 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10845 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10846 if (UNTAG_Bool(REGB0)) {
10847 /* ./syntax//typing.nit:1711 */
10848 if (!once_value_3) {
10849 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10850 REGB0 = TAG_Int(43);
10851 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10852 once_value_3 = fra.me.REG[1];
10853 register_static_object(&once_value_3);
10854 } else fra.me.REG[1] = once_value_3;
10855 fra.me.REG[1] = fra.me.REG[1];
10856 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10857 } else {
10858 /* ./syntax//typing.nit:1713 */
10859 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10860 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10861 }
10862 } else {
10863 /* ./syntax//typing.nit:1715 */
10864 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10865 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10866 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10867 if (UNTAG_Bool(REGB0)) {
10868 /* ./syntax//typing.nit:1716 */
10869 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10870 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10871 }
10872 }
10873 label1: while(0);
10874 stack_frame_head = fra.me.prev;
10875 return;
10876 }
10877 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10878 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10879 val_t REGB0;
10880 val_t REGB1;
10881 val_t tmp;
10882 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10883 fra.me.file = LOCATE_syntax___typing;
10884 fra.me.line = 1720;
10885 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
10886 fra.me.has_broke = 0;
10887 fra.me.REG_size = 5;
10888 fra.me.nitni_local_ref_head = NULL;
10889 fra.me.REG[0] = NIT_NULL;
10890 fra.me.REG[1] = NIT_NULL;
10891 fra.me.REG[2] = NIT_NULL;
10892 fra.me.REG[3] = NIT_NULL;
10893 fra.me.REG[4] = NIT_NULL;
10894 fra.me.REG[0] = p0;
10895 fra.me.REG[1] = p1;
10896 fra.me.REG[2] = p2;
10897 /* ./syntax//typing.nit:1722 */
10898 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10899 /* ./syntax//typing.nit:1723 */
10900 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10901 if (UNTAG_Bool(REGB0)) {
10902 } else {
10903 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10904 if (UNTAG_Bool(REGB1)) {
10905 REGB1 = TAG_Bool(false);
10906 REGB0 = REGB1;
10907 } else {
10908 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10909 REGB0 = REGB1;
10910 }
10911 }
10912 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10913 if (UNTAG_Bool(REGB0)) {
10914 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10915 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10916 } else {
10917 REGB1 = TAG_Bool(false);
10918 REGB0 = REGB1;
10919 }
10920 if (UNTAG_Bool(REGB0)) {
10921 /* ./syntax//typing.nit:1724 */
10922 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10923 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10924 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10925 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]);
10926 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10927 /* ./syntax//typing.nit:1725 */
10928 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10929 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10930 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]);
10931 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10932 }
10933 stack_frame_head = fra.me.prev;
10934 return;
10935 }
10936 val_t syntax___typing___ANeExpr___name(val_t p0){
10937 struct {struct stack_frame_t me;} fra;
10938 val_t REGB0;
10939 val_t tmp;
10940 static val_t once_value_1; /* Once value */
10941 static val_t once_value_2; /* Once value */
10942 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10943 fra.me.file = LOCATE_syntax___typing;
10944 fra.me.line = 1730;
10945 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
10946 fra.me.has_broke = 0;
10947 fra.me.REG_size = 1;
10948 fra.me.nitni_local_ref_head = NULL;
10949 fra.me.REG[0] = NIT_NULL;
10950 fra.me.REG[0] = p0;
10951 /* ./syntax//typing.nit:1730 */
10952 if (!once_value_1) {
10953 if (!once_value_2) {
10954 fra.me.REG[0] = BOX_NativeString("!=");
10955 REGB0 = TAG_Int(2);
10956 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10957 once_value_2 = fra.me.REG[0];
10958 register_static_object(&once_value_2);
10959 } else fra.me.REG[0] = once_value_2;
10960 fra.me.REG[0] = fra.me.REG[0];
10961 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10962 once_value_1 = fra.me.REG[0];
10963 register_static_object(&once_value_1);
10964 } else fra.me.REG[0] = once_value_1;
10965 fra.me.REG[0] = fra.me.REG[0];
10966 goto label3;
10967 label3: while(0);
10968 stack_frame_head = fra.me.prev;
10969 return fra.me.REG[0];
10970 }
10971 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
10972 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10973 val_t REGB0;
10974 val_t REGB1;
10975 val_t tmp;
10976 static val_t once_value_2; /* Once value */
10977 static val_t once_value_3; /* Once value */
10978 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10979 fra.me.file = LOCATE_syntax___typing;
10980 fra.me.line = 1731;
10981 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
10982 fra.me.has_broke = 0;
10983 fra.me.REG_size = 4;
10984 fra.me.nitni_local_ref_head = NULL;
10985 fra.me.REG[0] = NIT_NULL;
10986 fra.me.REG[1] = NIT_NULL;
10987 fra.me.REG[2] = NIT_NULL;
10988 fra.me.REG[3] = NIT_NULL;
10989 fra.me.REG[0] = p0;
10990 fra.me.REG[1] = p1;
10991 /* ./syntax//typing.nit:1731 */
10992 fra.me.REG[2] = fra.me.REG[0];
10993 fra.me.REG[3] = fra.me.REG[1];
10994 /* ./syntax//typing.nit:1733 */
10995 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10996 /* ./syntax//typing.nit:1734 */
10997 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10998 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10999 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11000 if (UNTAG_Bool(REGB0)) {
11001 REGB0 = TAG_Bool(true);
11002 } else {
11003 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11004 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11005 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11006 REGB0 = REGB1;
11007 }
11008 if (UNTAG_Bool(REGB0)) {
11009 goto label1;
11010 }
11011 /* ./syntax//typing.nit:1735 */
11012 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11013 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11014 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11015 if (UNTAG_Bool(REGB0)) {
11016 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11017 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11018 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11019 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11020 } else {
11021 REGB1 = TAG_Bool(false);
11022 REGB0 = REGB1;
11023 }
11024 if (UNTAG_Bool(REGB0)) {
11025 REGB0 = TAG_Bool(true);
11026 } else {
11027 /* ./syntax//typing.nit:1736 */
11028 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11029 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11030 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11031 /* ./syntax//typing.nit:1735 */
11032 REGB0 = REGB1;
11033 }
11034 if (UNTAG_Bool(REGB0)) {
11035 /* ./syntax//typing.nit:1736 */
11036 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11037 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11038 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11039 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11040 } else {
11041 /* ./syntax//typing.nit:1735 */
11042 REGB1 = TAG_Bool(false);
11043 REGB0 = REGB1;
11044 }
11045 if (UNTAG_Bool(REGB0)) {
11046 /* ./syntax//typing.nit:1737 */
11047 if (!once_value_2) {
11048 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11049 REGB0 = TAG_Int(59);
11050 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11051 once_value_2 = fra.me.REG[1];
11052 register_static_object(&once_value_2);
11053 } else fra.me.REG[1] = once_value_2;
11054 fra.me.REG[1] = fra.me.REG[1];
11055 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11056 }
11057 /* ./syntax//typing.nit:1740 */
11058 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11059 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11060 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11061 if (UNTAG_Bool(REGB0)) {
11062 /* ./syntax//typing.nit:1741 */
11063 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11064 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11065 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11066 if (UNTAG_Bool(REGB0)) {
11067 /* ./syntax//typing.nit:1742 */
11068 if (!once_value_3) {
11069 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
11070 REGB0 = TAG_Int(43);
11071 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11072 once_value_3 = fra.me.REG[1];
11073 register_static_object(&once_value_3);
11074 } else fra.me.REG[1] = once_value_3;
11075 fra.me.REG[1] = fra.me.REG[1];
11076 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11077 } else {
11078 /* ./syntax//typing.nit:1744 */
11079 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11080 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11081 }
11082 } else {
11083 /* ./syntax//typing.nit:1746 */
11084 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11085 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11086 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11087 if (UNTAG_Bool(REGB0)) {
11088 /* ./syntax//typing.nit:1747 */
11089 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11090 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11091 }
11092 }
11093 label1: while(0);
11094 stack_frame_head = fra.me.prev;
11095 return;
11096 }
11097 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11098 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11099 val_t REGB0;
11100 val_t REGB1;
11101 val_t tmp;
11102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11103 fra.me.file = LOCATE_syntax___typing;
11104 fra.me.line = 1751;
11105 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
11106 fra.me.has_broke = 0;
11107 fra.me.REG_size = 5;
11108 fra.me.nitni_local_ref_head = NULL;
11109 fra.me.REG[0] = NIT_NULL;
11110 fra.me.REG[1] = NIT_NULL;
11111 fra.me.REG[2] = NIT_NULL;
11112 fra.me.REG[3] = NIT_NULL;
11113 fra.me.REG[4] = NIT_NULL;
11114 fra.me.REG[0] = p0;
11115 fra.me.REG[1] = p1;
11116 fra.me.REG[2] = p2;
11117 /* ./syntax//typing.nit:1753 */
11118 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11119 /* ./syntax//typing.nit:1754 */
11120 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11121 if (UNTAG_Bool(REGB0)) {
11122 } else {
11123 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11124 if (UNTAG_Bool(REGB1)) {
11125 REGB1 = TAG_Bool(false);
11126 REGB0 = REGB1;
11127 } else {
11128 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11129 REGB0 = REGB1;
11130 }
11131 }
11132 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11133 if (UNTAG_Bool(REGB0)) {
11134 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11135 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11136 } else {
11137 REGB1 = TAG_Bool(false);
11138 REGB0 = REGB1;
11139 }
11140 if (UNTAG_Bool(REGB0)) {
11141 /* ./syntax//typing.nit:1755 */
11142 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11143 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11144 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11145 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]);
11146 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11147 /* ./syntax//typing.nit:1756 */
11148 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11149 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11150 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]);
11151 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11152 }
11153 stack_frame_head = fra.me.prev;
11154 return;
11155 }
11156 val_t syntax___typing___ALtExpr___name(val_t p0){
11157 struct {struct stack_frame_t me;} fra;
11158 val_t REGB0;
11159 val_t tmp;
11160 static val_t once_value_1; /* Once value */
11161 static val_t once_value_2; /* Once value */
11162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11163 fra.me.file = LOCATE_syntax___typing;
11164 fra.me.line = 1761;
11165 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11166 fra.me.has_broke = 0;
11167 fra.me.REG_size = 1;
11168 fra.me.nitni_local_ref_head = NULL;
11169 fra.me.REG[0] = NIT_NULL;
11170 fra.me.REG[0] = p0;
11171 /* ./syntax//typing.nit:1761 */
11172 if (!once_value_1) {
11173 if (!once_value_2) {
11174 fra.me.REG[0] = BOX_NativeString("<");
11175 REGB0 = TAG_Int(1);
11176 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11177 once_value_2 = fra.me.REG[0];
11178 register_static_object(&once_value_2);
11179 } else fra.me.REG[0] = once_value_2;
11180 fra.me.REG[0] = fra.me.REG[0];
11181 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11182 once_value_1 = fra.me.REG[0];
11183 register_static_object(&once_value_1);
11184 } else fra.me.REG[0] = once_value_1;
11185 fra.me.REG[0] = fra.me.REG[0];
11186 goto label3;
11187 label3: while(0);
11188 stack_frame_head = fra.me.prev;
11189 return fra.me.REG[0];
11190 }
11191 val_t syntax___typing___ALeExpr___name(val_t p0){
11192 struct {struct stack_frame_t me;} fra;
11193 val_t REGB0;
11194 val_t tmp;
11195 static val_t once_value_1; /* Once value */
11196 static val_t once_value_2; /* Once value */
11197 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11198 fra.me.file = LOCATE_syntax___typing;
11199 fra.me.line = 1764;
11200 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11201 fra.me.has_broke = 0;
11202 fra.me.REG_size = 1;
11203 fra.me.nitni_local_ref_head = NULL;
11204 fra.me.REG[0] = NIT_NULL;
11205 fra.me.REG[0] = p0;
11206 /* ./syntax//typing.nit:1764 */
11207 if (!once_value_1) {
11208 if (!once_value_2) {
11209 fra.me.REG[0] = BOX_NativeString("<=");
11210 REGB0 = TAG_Int(2);
11211 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11212 once_value_2 = fra.me.REG[0];
11213 register_static_object(&once_value_2);
11214 } else fra.me.REG[0] = once_value_2;
11215 fra.me.REG[0] = fra.me.REG[0];
11216 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11217 once_value_1 = fra.me.REG[0];
11218 register_static_object(&once_value_1);
11219 } else fra.me.REG[0] = once_value_1;
11220 fra.me.REG[0] = fra.me.REG[0];
11221 goto label3;
11222 label3: while(0);
11223 stack_frame_head = fra.me.prev;
11224 return fra.me.REG[0];
11225 }
11226 val_t syntax___typing___ALlExpr___name(val_t p0){
11227 struct {struct stack_frame_t me;} fra;
11228 val_t REGB0;
11229 val_t tmp;
11230 static val_t once_value_1; /* Once value */
11231 static val_t once_value_2; /* Once value */
11232 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11233 fra.me.file = LOCATE_syntax___typing;
11234 fra.me.line = 1767;
11235 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11236 fra.me.has_broke = 0;
11237 fra.me.REG_size = 1;
11238 fra.me.nitni_local_ref_head = NULL;
11239 fra.me.REG[0] = NIT_NULL;
11240 fra.me.REG[0] = p0;
11241 /* ./syntax//typing.nit:1767 */
11242 if (!once_value_1) {
11243 if (!once_value_2) {
11244 fra.me.REG[0] = BOX_NativeString("<<");
11245 REGB0 = TAG_Int(2);
11246 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11247 once_value_2 = fra.me.REG[0];
11248 register_static_object(&once_value_2);
11249 } else fra.me.REG[0] = once_value_2;
11250 fra.me.REG[0] = fra.me.REG[0];
11251 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11252 once_value_1 = fra.me.REG[0];
11253 register_static_object(&once_value_1);
11254 } else fra.me.REG[0] = once_value_1;
11255 fra.me.REG[0] = fra.me.REG[0];
11256 goto label3;
11257 label3: while(0);
11258 stack_frame_head = fra.me.prev;
11259 return fra.me.REG[0];
11260 }
11261 val_t syntax___typing___AGtExpr___name(val_t p0){
11262 struct {struct stack_frame_t me;} fra;
11263 val_t REGB0;
11264 val_t tmp;
11265 static val_t once_value_1; /* Once value */
11266 static val_t once_value_2; /* Once value */
11267 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11268 fra.me.file = LOCATE_syntax___typing;
11269 fra.me.line = 1770;
11270 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11271 fra.me.has_broke = 0;
11272 fra.me.REG_size = 1;
11273 fra.me.nitni_local_ref_head = NULL;
11274 fra.me.REG[0] = NIT_NULL;
11275 fra.me.REG[0] = p0;
11276 /* ./syntax//typing.nit:1770 */
11277 if (!once_value_1) {
11278 if (!once_value_2) {
11279 fra.me.REG[0] = BOX_NativeString(">");
11280 REGB0 = TAG_Int(1);
11281 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11282 once_value_2 = fra.me.REG[0];
11283 register_static_object(&once_value_2);
11284 } else fra.me.REG[0] = once_value_2;
11285 fra.me.REG[0] = fra.me.REG[0];
11286 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11287 once_value_1 = fra.me.REG[0];
11288 register_static_object(&once_value_1);
11289 } else fra.me.REG[0] = once_value_1;
11290 fra.me.REG[0] = fra.me.REG[0];
11291 goto label3;
11292 label3: while(0);
11293 stack_frame_head = fra.me.prev;
11294 return fra.me.REG[0];
11295 }
11296 val_t syntax___typing___AGeExpr___name(val_t p0){
11297 struct {struct stack_frame_t me;} fra;
11298 val_t REGB0;
11299 val_t tmp;
11300 static val_t once_value_1; /* Once value */
11301 static val_t once_value_2; /* Once value */
11302 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11303 fra.me.file = LOCATE_syntax___typing;
11304 fra.me.line = 1773;
11305 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11306 fra.me.has_broke = 0;
11307 fra.me.REG_size = 1;
11308 fra.me.nitni_local_ref_head = NULL;
11309 fra.me.REG[0] = NIT_NULL;
11310 fra.me.REG[0] = p0;
11311 /* ./syntax//typing.nit:1773 */
11312 if (!once_value_1) {
11313 if (!once_value_2) {
11314 fra.me.REG[0] = BOX_NativeString(">=");
11315 REGB0 = TAG_Int(2);
11316 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11317 once_value_2 = fra.me.REG[0];
11318 register_static_object(&once_value_2);
11319 } else fra.me.REG[0] = once_value_2;
11320 fra.me.REG[0] = fra.me.REG[0];
11321 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11322 once_value_1 = fra.me.REG[0];
11323 register_static_object(&once_value_1);
11324 } else fra.me.REG[0] = once_value_1;
11325 fra.me.REG[0] = fra.me.REG[0];
11326 goto label3;
11327 label3: while(0);
11328 stack_frame_head = fra.me.prev;
11329 return fra.me.REG[0];
11330 }
11331 val_t syntax___typing___AGgExpr___name(val_t p0){
11332 struct {struct stack_frame_t me;} fra;
11333 val_t REGB0;
11334 val_t tmp;
11335 static val_t once_value_1; /* Once value */
11336 static val_t once_value_2; /* Once value */
11337 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11338 fra.me.file = LOCATE_syntax___typing;
11339 fra.me.line = 1776;
11340 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
11341 fra.me.has_broke = 0;
11342 fra.me.REG_size = 1;
11343 fra.me.nitni_local_ref_head = NULL;
11344 fra.me.REG[0] = NIT_NULL;
11345 fra.me.REG[0] = p0;
11346 /* ./syntax//typing.nit:1776 */
11347 if (!once_value_1) {
11348 if (!once_value_2) {
11349 fra.me.REG[0] = BOX_NativeString(">>");
11350 REGB0 = TAG_Int(2);
11351 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11352 once_value_2 = fra.me.REG[0];
11353 register_static_object(&once_value_2);
11354 } else fra.me.REG[0] = once_value_2;
11355 fra.me.REG[0] = fra.me.REG[0];
11356 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11357 once_value_1 = fra.me.REG[0];
11358 register_static_object(&once_value_1);
11359 } else fra.me.REG[0] = once_value_1;
11360 fra.me.REG[0] = fra.me.REG[0];
11361 goto label3;
11362 label3: while(0);
11363 stack_frame_head = fra.me.prev;
11364 return fra.me.REG[0];
11365 }
11366 val_t syntax___typing___APlusExpr___name(val_t p0){
11367 struct {struct stack_frame_t me;} fra;
11368 val_t REGB0;
11369 val_t tmp;
11370 static val_t once_value_1; /* Once value */
11371 static val_t once_value_2; /* Once value */
11372 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11373 fra.me.file = LOCATE_syntax___typing;
11374 fra.me.line = 1779;
11375 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11376 fra.me.has_broke = 0;
11377 fra.me.REG_size = 1;
11378 fra.me.nitni_local_ref_head = NULL;
11379 fra.me.REG[0] = NIT_NULL;
11380 fra.me.REG[0] = p0;
11381 /* ./syntax//typing.nit:1779 */
11382 if (!once_value_1) {
11383 if (!once_value_2) {
11384 fra.me.REG[0] = BOX_NativeString("+");
11385 REGB0 = TAG_Int(1);
11386 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11387 once_value_2 = fra.me.REG[0];
11388 register_static_object(&once_value_2);
11389 } else fra.me.REG[0] = once_value_2;
11390 fra.me.REG[0] = fra.me.REG[0];
11391 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11392 once_value_1 = fra.me.REG[0];
11393 register_static_object(&once_value_1);
11394 } else fra.me.REG[0] = once_value_1;
11395 fra.me.REG[0] = fra.me.REG[0];
11396 goto label3;
11397 label3: while(0);
11398 stack_frame_head = fra.me.prev;
11399 return fra.me.REG[0];
11400 }
11401 val_t syntax___typing___AMinusExpr___name(val_t p0){
11402 struct {struct stack_frame_t me;} fra;
11403 val_t REGB0;
11404 val_t tmp;
11405 static val_t once_value_1; /* Once value */
11406 static val_t once_value_2; /* Once value */
11407 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11408 fra.me.file = LOCATE_syntax___typing;
11409 fra.me.line = 1782;
11410 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11411 fra.me.has_broke = 0;
11412 fra.me.REG_size = 1;
11413 fra.me.nitni_local_ref_head = NULL;
11414 fra.me.REG[0] = NIT_NULL;
11415 fra.me.REG[0] = p0;
11416 /* ./syntax//typing.nit:1782 */
11417 if (!once_value_1) {
11418 if (!once_value_2) {
11419 fra.me.REG[0] = BOX_NativeString("-");
11420 REGB0 = TAG_Int(1);
11421 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11422 once_value_2 = fra.me.REG[0];
11423 register_static_object(&once_value_2);
11424 } else fra.me.REG[0] = once_value_2;
11425 fra.me.REG[0] = fra.me.REG[0];
11426 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11427 once_value_1 = fra.me.REG[0];
11428 register_static_object(&once_value_1);
11429 } else fra.me.REG[0] = once_value_1;
11430 fra.me.REG[0] = fra.me.REG[0];
11431 goto label3;
11432 label3: while(0);
11433 stack_frame_head = fra.me.prev;
11434 return fra.me.REG[0];
11435 }
11436 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11437 struct {struct stack_frame_t me;} fra;
11438 val_t REGB0;
11439 val_t tmp;
11440 static val_t once_value_1; /* Once value */
11441 static val_t once_value_2; /* Once value */
11442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11443 fra.me.file = LOCATE_syntax___typing;
11444 fra.me.line = 1785;
11445 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11446 fra.me.has_broke = 0;
11447 fra.me.REG_size = 1;
11448 fra.me.nitni_local_ref_head = NULL;
11449 fra.me.REG[0] = NIT_NULL;
11450 fra.me.REG[0] = p0;
11451 /* ./syntax//typing.nit:1785 */
11452 if (!once_value_1) {
11453 if (!once_value_2) {
11454 fra.me.REG[0] = BOX_NativeString("<=>");
11455 REGB0 = TAG_Int(3);
11456 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11457 once_value_2 = fra.me.REG[0];
11458 register_static_object(&once_value_2);
11459 } else fra.me.REG[0] = once_value_2;
11460 fra.me.REG[0] = fra.me.REG[0];
11461 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11462 once_value_1 = fra.me.REG[0];
11463 register_static_object(&once_value_1);
11464 } else fra.me.REG[0] = once_value_1;
11465 fra.me.REG[0] = fra.me.REG[0];
11466 goto label3;
11467 label3: while(0);
11468 stack_frame_head = fra.me.prev;
11469 return fra.me.REG[0];
11470 }
11471 val_t syntax___typing___AStarExpr___name(val_t p0){
11472 struct {struct stack_frame_t me;} fra;
11473 val_t REGB0;
11474 val_t tmp;
11475 static val_t once_value_1; /* Once value */
11476 static val_t once_value_2; /* Once value */
11477 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11478 fra.me.file = LOCATE_syntax___typing;
11479 fra.me.line = 1788;
11480 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11481 fra.me.has_broke = 0;
11482 fra.me.REG_size = 1;
11483 fra.me.nitni_local_ref_head = NULL;
11484 fra.me.REG[0] = NIT_NULL;
11485 fra.me.REG[0] = p0;
11486 /* ./syntax//typing.nit:1788 */
11487 if (!once_value_1) {
11488 if (!once_value_2) {
11489 fra.me.REG[0] = BOX_NativeString("*");
11490 REGB0 = TAG_Int(1);
11491 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11492 once_value_2 = fra.me.REG[0];
11493 register_static_object(&once_value_2);
11494 } else fra.me.REG[0] = once_value_2;
11495 fra.me.REG[0] = fra.me.REG[0];
11496 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11497 once_value_1 = fra.me.REG[0];
11498 register_static_object(&once_value_1);
11499 } else fra.me.REG[0] = once_value_1;
11500 fra.me.REG[0] = fra.me.REG[0];
11501 goto label3;
11502 label3: while(0);
11503 stack_frame_head = fra.me.prev;
11504 return fra.me.REG[0];
11505 }
11506 val_t syntax___typing___ASlashExpr___name(val_t p0){
11507 struct {struct stack_frame_t me;} fra;
11508 val_t REGB0;
11509 val_t tmp;
11510 static val_t once_value_1; /* Once value */
11511 static val_t once_value_2; /* Once value */
11512 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11513 fra.me.file = LOCATE_syntax___typing;
11514 fra.me.line = 1791;
11515 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11516 fra.me.has_broke = 0;
11517 fra.me.REG_size = 1;
11518 fra.me.nitni_local_ref_head = NULL;
11519 fra.me.REG[0] = NIT_NULL;
11520 fra.me.REG[0] = p0;
11521 /* ./syntax//typing.nit:1791 */
11522 if (!once_value_1) {
11523 if (!once_value_2) {
11524 fra.me.REG[0] = BOX_NativeString("/");
11525 REGB0 = TAG_Int(1);
11526 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11527 once_value_2 = fra.me.REG[0];
11528 register_static_object(&once_value_2);
11529 } else fra.me.REG[0] = once_value_2;
11530 fra.me.REG[0] = fra.me.REG[0];
11531 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11532 once_value_1 = fra.me.REG[0];
11533 register_static_object(&once_value_1);
11534 } else fra.me.REG[0] = once_value_1;
11535 fra.me.REG[0] = fra.me.REG[0];
11536 goto label3;
11537 label3: while(0);
11538 stack_frame_head = fra.me.prev;
11539 return fra.me.REG[0];
11540 }
11541 val_t syntax___typing___APercentExpr___name(val_t p0){
11542 struct {struct stack_frame_t me;} fra;
11543 val_t REGB0;
11544 val_t tmp;
11545 static val_t once_value_1; /* Once value */
11546 static val_t once_value_2; /* Once value */
11547 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11548 fra.me.file = LOCATE_syntax___typing;
11549 fra.me.line = 1794;
11550 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11551 fra.me.has_broke = 0;
11552 fra.me.REG_size = 1;
11553 fra.me.nitni_local_ref_head = NULL;
11554 fra.me.REG[0] = NIT_NULL;
11555 fra.me.REG[0] = p0;
11556 /* ./syntax//typing.nit:1794 */
11557 if (!once_value_1) {
11558 if (!once_value_2) {
11559 fra.me.REG[0] = BOX_NativeString("%");
11560 REGB0 = TAG_Int(1);
11561 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11562 once_value_2 = fra.me.REG[0];
11563 register_static_object(&once_value_2);
11564 } else fra.me.REG[0] = once_value_2;
11565 fra.me.REG[0] = fra.me.REG[0];
11566 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11567 once_value_1 = fra.me.REG[0];
11568 register_static_object(&once_value_1);
11569 } else fra.me.REG[0] = once_value_1;
11570 fra.me.REG[0] = fra.me.REG[0];
11571 goto label3;
11572 label3: while(0);
11573 stack_frame_head = fra.me.prev;
11574 return fra.me.REG[0];
11575 }
11576 val_t syntax___typing___AUminusExpr___name(val_t p0){
11577 struct {struct stack_frame_t me;} fra;
11578 val_t REGB0;
11579 val_t tmp;
11580 static val_t once_value_1; /* Once value */
11581 static val_t once_value_2; /* Once value */
11582 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11583 fra.me.file = LOCATE_syntax___typing;
11584 fra.me.line = 1798;
11585 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11586 fra.me.has_broke = 0;
11587 fra.me.REG_size = 1;
11588 fra.me.nitni_local_ref_head = NULL;
11589 fra.me.REG[0] = NIT_NULL;
11590 fra.me.REG[0] = p0;
11591 /* ./syntax//typing.nit:1798 */
11592 if (!once_value_1) {
11593 if (!once_value_2) {
11594 fra.me.REG[0] = BOX_NativeString("unary -");
11595 REGB0 = TAG_Int(7);
11596 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11597 once_value_2 = fra.me.REG[0];
11598 register_static_object(&once_value_2);
11599 } else fra.me.REG[0] = once_value_2;
11600 fra.me.REG[0] = fra.me.REG[0];
11601 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11602 once_value_1 = fra.me.REG[0];
11603 register_static_object(&once_value_1);
11604 } else fra.me.REG[0] = once_value_1;
11605 fra.me.REG[0] = fra.me.REG[0];
11606 goto label3;
11607 label3: while(0);
11608 stack_frame_head = fra.me.prev;
11609 return fra.me.REG[0];
11610 }
11611 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11612 struct {struct stack_frame_t me;} fra;
11613 val_t tmp;
11614 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11615 fra.me.file = LOCATE_syntax___typing;
11616 fra.me.line = 1799;
11617 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
11618 fra.me.has_broke = 0;
11619 fra.me.REG_size = 1;
11620 fra.me.nitni_local_ref_head = NULL;
11621 fra.me.REG[0] = NIT_NULL;
11622 fra.me.REG[0] = p0;
11623 /* ./syntax//typing.nit:1799 */
11624 fra.me.REG[0] = NIT_NULL;
11625 goto label1;
11626 label1: while(0);
11627 stack_frame_head = fra.me.prev;
11628 return fra.me.REG[0];
11629 }
11630 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
11631 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
11632 val_t REGB0;
11633 val_t REGB1;
11634 val_t tmp;
11635 static val_t once_value_1; /* Once value */
11636 static val_t once_value_2; /* Once value */
11637 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11638 fra.me.file = LOCATE_syntax___typing;
11639 fra.me.line = 1803;
11640 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
11641 fra.me.has_broke = 0;
11642 fra.me.REG_size = 9;
11643 fra.me.nitni_local_ref_head = NULL;
11644 fra.me.REG[0] = NIT_NULL;
11645 fra.me.REG[1] = NIT_NULL;
11646 fra.me.REG[2] = NIT_NULL;
11647 fra.me.REG[3] = NIT_NULL;
11648 fra.me.REG[4] = NIT_NULL;
11649 fra.me.REG[5] = NIT_NULL;
11650 fra.me.REG[6] = NIT_NULL;
11651 fra.me.REG[7] = NIT_NULL;
11652 fra.me.REG[8] = NIT_NULL;
11653 fra.me.REG[0] = p0;
11654 fra.me.REG[1] = p1;
11655 /* ./syntax//typing.nit:1803 */
11656 fra.me.REG[2] = fra.me.REG[0];
11657 fra.me.REG[3] = fra.me.REG[1];
11658 /* ./syntax//typing.nit:1805 */
11659 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11660 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
11661 if (UNTAG_Bool(REGB0)) {
11662 /* ./syntax//typing.nit:1806 */
11663 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11664 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11665 /* ./syntax//typing.nit:1807 */
11666 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
11667 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
11668 /* ./syntax//typing.nit:1808 */
11669 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11670 if (UNTAG_Bool(REGB0)) {
11671 } else {
11672 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11673 if (UNTAG_Bool(REGB1)) {
11674 REGB1 = TAG_Bool(false);
11675 REGB0 = REGB1;
11676 } else {
11677 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
11678 REGB0 = REGB1;
11679 }
11680 }
11681 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11682 if (UNTAG_Bool(REGB0)) {
11683 /* ./syntax//typing.nit:1810 */
11684 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*/;
11685 if (UNTAG_Bool(REGB0)) {
11686 /* ./syntax//typing.nit:1811 */
11687 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11688 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11689 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
11690 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
11691 /* ./syntax//typing.nit:1812 */
11692 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11693 } else {
11694 /* ./syntax//typing.nit:1814 */
11695 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11696 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
11697 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11698 if (UNTAG_Bool(REGB0)) {
11699 /* ./syntax//typing.nit:1815 */
11700 REGB0 = TAG_Int(3);
11701 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11702 if (!once_value_1) {
11703 fra.me.REG[6] = BOX_NativeString("Error: ");
11704 REGB0 = TAG_Int(7);
11705 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
11706 once_value_1 = fra.me.REG[6];
11707 register_static_object(&once_value_1);
11708 } else fra.me.REG[6] = once_value_1;
11709 fra.me.REG[6] = fra.me.REG[6];
11710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11711 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11713 if (!once_value_2) {
11714 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
11715 REGB0 = TAG_Int(29);
11716 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11717 once_value_2 = fra.me.REG[4];
11718 register_static_object(&once_value_2);
11719 } else fra.me.REG[4] = once_value_2;
11720 fra.me.REG[4] = fra.me.REG[4];
11721 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11722 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
11723 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
11724 /* ./syntax//typing.nit:1816 */
11725 goto label3;
11726 }
11727 /* ./syntax//typing.nit:1818 */
11728 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
11729 fra.me.REG[8] = fra.me.REG[7];
11730 /* ./syntax//typing.nit:1819 */
11731 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11732 }
11733 /* ./syntax//typing.nit:1821 */
11734 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
11735 /* ./syntax//typing.nit:1822 */
11736 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
11737 /* ./syntax//typing.nit:1823 */
11738 goto label3;
11739 }
11740 }
11741 /* ./syntax//typing.nit:1827 */
11742 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11743 label3: while(0);
11744 stack_frame_head = fra.me.prev;
11745 return;
11746 }
11747 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
11748 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11749 val_t REGB0;
11750 val_t tmp;
11751 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11752 fra.me.file = LOCATE_syntax___typing;
11753 fra.me.line = 1830;
11754 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
11755 fra.me.has_broke = 0;
11756 fra.me.REG_size = 2;
11757 fra.me.nitni_local_ref_head = NULL;
11758 fra.me.REG[0] = NIT_NULL;
11759 fra.me.REG[1] = NIT_NULL;
11760 fra.me.REG[0] = p0;
11761 /* ./syntax//typing.nit:1832 */
11762 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11763 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11764 if (UNTAG_Bool(REGB0)) {
11765 /* ./syntax//typing.nit:1833 */
11766 fra.me.REG[1] = NIT_NULL;
11767 goto label1;
11768 } else {
11769 /* ./syntax//typing.nit:1835 */
11770 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11771 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11772 fra.me.REG[1] = fra.me.REG[0];
11773 goto label1;
11774 }
11775 label1: while(0);
11776 stack_frame_head = fra.me.prev;
11777 return fra.me.REG[1];
11778 }
11779 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
11780 struct {struct stack_frame_t me;} fra;
11781 val_t tmp;
11782 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11783 fra.me.file = LOCATE_syntax___typing;
11784 fra.me.line = 1839;
11785 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
11786 fra.me.has_broke = 0;
11787 fra.me.REG_size = 0;
11788 fra.me.nitni_local_ref_head = NULL;
11789 /* ./syntax//typing.nit:1839 */
11790 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1839);
11791 stack_frame_head = fra.me.prev;
11792 return NIT_NULL;
11793 }
11794 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
11795 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11796 val_t tmp;
11797 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11798 fra.me.file = LOCATE_syntax___typing;
11799 fra.me.line = 1844;
11800 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
11801 fra.me.has_broke = 0;
11802 fra.me.REG_size = 2;
11803 fra.me.nitni_local_ref_head = NULL;
11804 fra.me.REG[0] = NIT_NULL;
11805 fra.me.REG[1] = NIT_NULL;
11806 fra.me.REG[0] = p0;
11807 fra.me.REG[1] = p1;
11808 /* ./syntax//typing.nit:1846 */
11809 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11810 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
11811 goto label1;
11812 label1: while(0);
11813 stack_frame_head = fra.me.prev;
11814 return fra.me.REG[0];
11815 }
11816 val_t syntax___typing___ACallExpr___name(val_t p0){
11817 struct {struct stack_frame_t me;} fra;
11818 val_t tmp;
11819 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11820 fra.me.file = LOCATE_syntax___typing;
11821 fra.me.line = 1849;
11822 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
11823 fra.me.has_broke = 0;
11824 fra.me.REG_size = 1;
11825 fra.me.nitni_local_ref_head = NULL;
11826 fra.me.REG[0] = NIT_NULL;
11827 fra.me.REG[0] = p0;
11828 /* ./syntax//typing.nit:1849 */
11829 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11830 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11831 goto label1;
11832 label1: while(0);
11833 stack_frame_head = fra.me.prev;
11834 return fra.me.REG[0];
11835 }
11836 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
11837 struct {struct stack_frame_t me;} fra;
11838 val_t tmp;
11839 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11840 fra.me.file = LOCATE_syntax___typing;
11841 fra.me.line = 1850;
11842 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
11843 fra.me.has_broke = 0;
11844 fra.me.REG_size = 1;
11845 fra.me.nitni_local_ref_head = NULL;
11846 fra.me.REG[0] = NIT_NULL;
11847 fra.me.REG[0] = p0;
11848 /* ./syntax//typing.nit:1850 */
11849 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11850 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11851 goto label1;
11852 label1: while(0);
11853 stack_frame_head = fra.me.prev;
11854 return fra.me.REG[0];
11855 }
11856 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
11857 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11858 val_t tmp;
11859 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11860 fra.me.file = LOCATE_syntax___typing;
11861 fra.me.line = 1854;
11862 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
11863 fra.me.has_broke = 0;
11864 fra.me.REG_size = 3;
11865 fra.me.nitni_local_ref_head = NULL;
11866 fra.me.REG[0] = NIT_NULL;
11867 fra.me.REG[1] = NIT_NULL;
11868 fra.me.REG[2] = NIT_NULL;
11869 fra.me.REG[0] = p0;
11870 fra.me.REG[1] = p1;
11871 /* ./syntax//typing.nit:1856 */
11872 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11873 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
11874 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11875 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11876 goto label1;
11877 label1: while(0);
11878 stack_frame_head = fra.me.prev;
11879 return fra.me.REG[0];
11880 }
11881 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
11882 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11883 val_t REGB0;
11884 val_t tmp;
11885 static val_t once_value_1; /* Once value */
11886 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11887 fra.me.file = LOCATE_syntax___typing;
11888 fra.me.line = 1859;
11889 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
11890 fra.me.has_broke = 0;
11891 fra.me.REG_size = 2;
11892 fra.me.nitni_local_ref_head = NULL;
11893 fra.me.REG[0] = NIT_NULL;
11894 fra.me.REG[1] = NIT_NULL;
11895 fra.me.REG[0] = p0;
11896 /* ./syntax//typing.nit:1859 */
11897 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11898 fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
11899 if (!once_value_1) {
11900 fra.me.REG[1] = BOX_NativeString("=");
11901 REGB0 = TAG_Int(1);
11902 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11903 once_value_1 = fra.me.REG[1];
11904 register_static_object(&once_value_1);
11905 } else fra.me.REG[1] = once_value_1;
11906 fra.me.REG[1] = fra.me.REG[1];
11907 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11908 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
11909 goto label2;
11910 label2: while(0);
11911 stack_frame_head = fra.me.prev;
11912 return fra.me.REG[1];
11913 }
11914 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
11915 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11916 val_t tmp;
11917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11918 fra.me.file = LOCATE_syntax___typing;
11919 fra.me.line = 1860;
11920 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
11921 fra.me.has_broke = 0;
11922 fra.me.REG_size = 2;
11923 fra.me.nitni_local_ref_head = NULL;
11924 fra.me.REG[0] = NIT_NULL;
11925 fra.me.REG[1] = NIT_NULL;
11926 fra.me.REG[0] = p0;
11927 /* ./syntax//typing.nit:1861 */
11928 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11929 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11930 /* ./syntax//typing.nit:1862 */
11931 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11932 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11933 /* ./syntax//typing.nit:1863 */
11934 goto label1;
11935 label1: while(0);
11936 stack_frame_head = fra.me.prev;
11937 return fra.me.REG[1];
11938 }
11939 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
11940 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11941 val_t tmp;
11942 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11943 fra.me.file = LOCATE_syntax___typing;
11944 fra.me.line = 1868;
11945 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
11946 fra.me.has_broke = 0;
11947 fra.me.REG_size = 3;
11948 fra.me.nitni_local_ref_head = NULL;
11949 fra.me.REG[0] = NIT_NULL;
11950 fra.me.REG[1] = NIT_NULL;
11951 fra.me.REG[2] = NIT_NULL;
11952 fra.me.REG[0] = p0;
11953 fra.me.REG[1] = p1;
11954 /* ./syntax//typing.nit:1870 */
11955 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11956 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
11957 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11958 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11959 goto label1;
11960 label1: while(0);
11961 stack_frame_head = fra.me.prev;
11962 return fra.me.REG[0];
11963 }
11964 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
11965 struct {struct stack_frame_t me;} fra;
11966 val_t tmp;
11967 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11968 fra.me.file = LOCATE_syntax___typing;
11969 fra.me.line = 1873;
11970 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
11971 fra.me.has_broke = 0;
11972 fra.me.REG_size = 1;
11973 fra.me.nitni_local_ref_head = NULL;
11974 fra.me.REG[0] = NIT_NULL;
11975 fra.me.REG[0] = p0;
11976 /* ./syntax//typing.nit:1873 */
11977 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11978 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11979 goto label1;
11980 label1: while(0);
11981 stack_frame_head = fra.me.prev;
11982 return fra.me.REG[0];
11983 }
11984 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
11985 struct {struct stack_frame_t me;} fra;
11986 val_t tmp;
11987 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11988 fra.me.file = LOCATE_syntax___typing;
11989 fra.me.line = 1874;
11990 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
11991 fra.me.has_broke = 0;
11992 fra.me.REG_size = 1;
11993 fra.me.nitni_local_ref_head = NULL;
11994 fra.me.REG[0] = NIT_NULL;
11995 fra.me.REG[0] = p0;
11996 /* ./syntax//typing.nit:1874 */
11997 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11998 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11999 goto label1;
12000 label1: while(0);
12001 stack_frame_head = fra.me.prev;
12002 return fra.me.REG[0];
12003 }
12004 val_t syntax___typing___ABraExpr___name(val_t p0){
12005 struct {struct stack_frame_t me;} fra;
12006 val_t REGB0;
12007 val_t tmp;
12008 static val_t once_value_1; /* Once value */
12009 static val_t once_value_2; /* Once value */
12010 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12011 fra.me.file = LOCATE_syntax___typing;
12012 fra.me.line = 1878;
12013 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
12014 fra.me.has_broke = 0;
12015 fra.me.REG_size = 1;
12016 fra.me.nitni_local_ref_head = NULL;
12017 fra.me.REG[0] = NIT_NULL;
12018 fra.me.REG[0] = p0;
12019 /* ./syntax//typing.nit:1878 */
12020 if (!once_value_1) {
12021 if (!once_value_2) {
12022 fra.me.REG[0] = BOX_NativeString("[]");
12023 REGB0 = TAG_Int(2);
12024 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12025 once_value_2 = fra.me.REG[0];
12026 register_static_object(&once_value_2);
12027 } else fra.me.REG[0] = once_value_2;
12028 fra.me.REG[0] = fra.me.REG[0];
12029 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12030 once_value_1 = fra.me.REG[0];
12031 register_static_object(&once_value_1);
12032 } else fra.me.REG[0] = once_value_1;
12033 fra.me.REG[0] = fra.me.REG[0];
12034 goto label3;
12035 label3: while(0);
12036 stack_frame_head = fra.me.prev;
12037 return fra.me.REG[0];
12038 }
12039 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
12040 struct {struct stack_frame_t me;} fra;
12041 val_t tmp;
12042 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12043 fra.me.file = LOCATE_syntax___typing;
12044 fra.me.line = 1879;
12045 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
12046 fra.me.has_broke = 0;
12047 fra.me.REG_size = 1;
12048 fra.me.nitni_local_ref_head = NULL;
12049 fra.me.REG[0] = NIT_NULL;
12050 fra.me.REG[0] = p0;
12051 /* ./syntax//typing.nit:1879 */
12052 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12053 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12054 goto label1;
12055 label1: while(0);
12056 stack_frame_head = fra.me.prev;
12057 return fra.me.REG[0];
12058 }
12059 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
12060 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12061 val_t REGB0;
12062 val_t tmp;
12063 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12064 fra.me.file = LOCATE_syntax___typing;
12065 fra.me.line = 1880;
12066 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
12067 fra.me.has_broke = 0;
12068 fra.me.REG_size = 2;
12069 fra.me.nitni_local_ref_head = NULL;
12070 fra.me.REG[0] = NIT_NULL;
12071 fra.me.REG[1] = NIT_NULL;
12072 fra.me.REG[0] = p0;
12073 /* ./syntax//typing.nit:1882 */
12074 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12075 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12076 if (UNTAG_Bool(REGB0)) {
12077 /* ./syntax//typing.nit:1883 */
12078 fra.me.REG[1] = NIT_NULL;
12079 goto label1;
12080 } else {
12081 /* ./syntax//typing.nit:1885 */
12082 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12083 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12084 fra.me.REG[1] = fra.me.REG[0];
12085 goto label1;
12086 }
12087 label1: while(0);
12088 stack_frame_head = fra.me.prev;
12089 return fra.me.REG[1];
12090 }
12091 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
12092 struct {struct stack_frame_t me;} fra;
12093 val_t REGB0;
12094 val_t tmp;
12095 static val_t once_value_1; /* Once value */
12096 static val_t once_value_2; /* Once value */
12097 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12098 fra.me.file = LOCATE_syntax___typing;
12099 fra.me.line = 1891;
12100 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
12101 fra.me.has_broke = 0;
12102 fra.me.REG_size = 1;
12103 fra.me.nitni_local_ref_head = NULL;
12104 fra.me.REG[0] = NIT_NULL;
12105 fra.me.REG[0] = p0;
12106 /* ./syntax//typing.nit:1891 */
12107 if (!once_value_1) {
12108 if (!once_value_2) {
12109 fra.me.REG[0] = BOX_NativeString("[]=");
12110 REGB0 = TAG_Int(3);
12111 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12112 once_value_2 = fra.me.REG[0];
12113 register_static_object(&once_value_2);
12114 } else fra.me.REG[0] = once_value_2;
12115 fra.me.REG[0] = fra.me.REG[0];
12116 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12117 once_value_1 = fra.me.REG[0];
12118 register_static_object(&once_value_1);
12119 } else fra.me.REG[0] = once_value_1;
12120 fra.me.REG[0] = fra.me.REG[0];
12121 goto label3;
12122 label3: while(0);
12123 stack_frame_head = fra.me.prev;
12124 return fra.me.REG[0];
12125 }
12126 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
12127 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12128 val_t tmp;
12129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12130 fra.me.file = LOCATE_syntax___typing;
12131 fra.me.line = 1892;
12132 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
12133 fra.me.has_broke = 0;
12134 fra.me.REG_size = 2;
12135 fra.me.nitni_local_ref_head = NULL;
12136 fra.me.REG[0] = NIT_NULL;
12137 fra.me.REG[1] = NIT_NULL;
12138 fra.me.REG[0] = p0;
12139 /* ./syntax//typing.nit:1893 */
12140 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12141 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
12142 /* ./syntax//typing.nit:1894 */
12143 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12145 /* ./syntax//typing.nit:1895 */
12146 goto label1;
12147 label1: while(0);
12148 stack_frame_head = fra.me.prev;
12149 return fra.me.REG[1];
12150 }
12151 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
12152 struct {struct stack_frame_t me;} fra;
12153 val_t REGB0;
12154 val_t tmp;
12155 static val_t once_value_1; /* Once value */
12156 static val_t once_value_2; /* Once value */
12157 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12158 fra.me.file = LOCATE_syntax___typing;
12159 fra.me.line = 1900;
12160 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
12161 fra.me.has_broke = 0;
12162 fra.me.REG_size = 1;
12163 fra.me.nitni_local_ref_head = NULL;
12164 fra.me.REG[0] = NIT_NULL;
12165 fra.me.REG[0] = p0;
12166 /* ./syntax//typing.nit:1900 */
12167 if (!once_value_1) {
12168 if (!once_value_2) {
12169 fra.me.REG[0] = BOX_NativeString("[]");
12170 REGB0 = TAG_Int(2);
12171 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12172 once_value_2 = fra.me.REG[0];
12173 register_static_object(&once_value_2);
12174 } else fra.me.REG[0] = once_value_2;
12175 fra.me.REG[0] = fra.me.REG[0];
12176 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12177 once_value_1 = fra.me.REG[0];
12178 register_static_object(&once_value_1);
12179 } else fra.me.REG[0] = once_value_1;
12180 fra.me.REG[0] = fra.me.REG[0];
12181 goto label3;
12182 label3: while(0);
12183 stack_frame_head = fra.me.prev;
12184 return fra.me.REG[0];
12185 }
12186 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
12187 struct {struct stack_frame_t me;} fra;
12188 val_t tmp;
12189 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12190 fra.me.file = LOCATE_syntax___typing;
12191 fra.me.line = 1901;
12192 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
12193 fra.me.has_broke = 0;
12194 fra.me.REG_size = 1;
12195 fra.me.nitni_local_ref_head = NULL;
12196 fra.me.REG[0] = NIT_NULL;
12197 fra.me.REG[0] = p0;
12198 /* ./syntax//typing.nit:1901 */
12199 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12200 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12201 goto label1;
12202 label1: while(0);
12203 stack_frame_head = fra.me.prev;
12204 return fra.me.REG[0];
12205 }
12206 val_t syntax___typing___AInitExpr___name(val_t p0){
12207 struct {struct stack_frame_t me;} fra;
12208 val_t REGB0;
12209 val_t tmp;
12210 static val_t once_value_1; /* Once value */
12211 static val_t once_value_2; /* Once value */
12212 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12213 fra.me.file = LOCATE_syntax___typing;
12214 fra.me.line = 1905;
12215 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12216 fra.me.has_broke = 0;
12217 fra.me.REG_size = 1;
12218 fra.me.nitni_local_ref_head = NULL;
12219 fra.me.REG[0] = NIT_NULL;
12220 fra.me.REG[0] = p0;
12221 /* ./syntax//typing.nit:1905 */
12222 if (!once_value_1) {
12223 if (!once_value_2) {
12224 fra.me.REG[0] = BOX_NativeString("init");
12225 REGB0 = TAG_Int(4);
12226 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12227 once_value_2 = fra.me.REG[0];
12228 register_static_object(&once_value_2);
12229 } else fra.me.REG[0] = once_value_2;
12230 fra.me.REG[0] = fra.me.REG[0];
12231 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12232 once_value_1 = fra.me.REG[0];
12233 register_static_object(&once_value_1);
12234 } else fra.me.REG[0] = once_value_1;
12235 fra.me.REG[0] = fra.me.REG[0];
12236 goto label3;
12237 label3: while(0);
12238 stack_frame_head = fra.me.prev;
12239 return fra.me.REG[0];
12240 }
12241 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
12242 struct {struct stack_frame_t me;} fra;
12243 val_t tmp;
12244 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12245 fra.me.file = LOCATE_syntax___typing;
12246 fra.me.line = 1906;
12247 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
12248 fra.me.has_broke = 0;
12249 fra.me.REG_size = 1;
12250 fra.me.nitni_local_ref_head = NULL;
12251 fra.me.REG[0] = NIT_NULL;
12252 fra.me.REG[0] = p0;
12253 /* ./syntax//typing.nit:1906 */
12254 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12255 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12256 goto label1;
12257 label1: while(0);
12258 stack_frame_head = fra.me.prev;
12259 return fra.me.REG[0];
12260 }
12261 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12262 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12263 val_t REGB0;
12264 val_t tmp;
12265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12266 fra.me.file = LOCATE_syntax___typing;
12267 fra.me.line = 1911;
12268 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12269 fra.me.has_broke = 0;
12270 fra.me.REG_size = 2;
12271 fra.me.nitni_local_ref_head = NULL;
12272 fra.me.REG[0] = NIT_NULL;
12273 fra.me.REG[1] = NIT_NULL;
12274 fra.me.REG[0] = p0;
12275 /* ./syntax//typing.nit:1911 */
12276 fra.me.REG[1] = fra.me.REG[0];
12277 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12278 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12279 if (UNTAG_Bool(REGB0)) {
12280 } else {
12281 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1911);
12282 }
12283 goto label1;
12284 label1: while(0);
12285 stack_frame_head = fra.me.prev;
12286 return fra.me.REG[1];
12287 }
12288 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12289 struct {struct stack_frame_t me;} fra;
12290 val_t tmp;
12291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12292 fra.me.file = LOCATE_syntax___typing;
12293 fra.me.line = 1912;
12294 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12295 fra.me.has_broke = 0;
12296 fra.me.REG_size = 1;
12297 fra.me.nitni_local_ref_head = NULL;
12298 fra.me.REG[0] = NIT_NULL;
12299 fra.me.REG[0] = p0;
12300 /* ./syntax//typing.nit:1912 */
12301 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12302 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12303 goto label1;
12304 label1: while(0);
12305 stack_frame_head = fra.me.prev;
12306 return fra.me.REG[0];
12307 }
12308 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12309 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12310 val_t REGB0;
12311 val_t REGB1;
12312 val_t tmp;
12313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12314 fra.me.file = LOCATE_syntax___typing;
12315 fra.me.line = 1914;
12316 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12317 fra.me.has_broke = 0;
12318 fra.me.REG_size = 5;
12319 fra.me.nitni_local_ref_head = NULL;
12320 fra.me.REG[0] = NIT_NULL;
12321 fra.me.REG[1] = NIT_NULL;
12322 fra.me.REG[2] = NIT_NULL;
12323 fra.me.REG[3] = NIT_NULL;
12324 fra.me.REG[4] = NIT_NULL;
12325 fra.me.REG[0] = p0;
12326 fra.me.REG[1] = p1;
12327 /* ./syntax//typing.nit:1916 */
12328 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12329 /* ./syntax//typing.nit:1917 */
12330 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12331 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12332 if (UNTAG_Bool(REGB0)) {
12333 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12334 }
12335 /* ./syntax//typing.nit:1918 */
12336 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12337 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12338 /* ./syntax//typing.nit:1919 */
12339 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12340 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12341 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12342 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]);
12343 /* ./syntax//typing.nit:1920 */
12344 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12345 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12346 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12347 if (UNTAG_Bool(REGB1)) {
12348 /* ./syntax//typing.nit:1921 */
12349 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12350 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12351 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12352 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12353 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]);
12354 }
12355 /* ./syntax//typing.nit:1923 */
12356 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12357 if (UNTAG_Bool(REGB0)) {
12358 goto label1;
12359 }
12360 /* ./syntax//typing.nit:1924 */
12361 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12362 /* ./syntax//typing.nit:1925 */
12363 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12364 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12365 /* ./syntax//typing.nit:1926 */
12366 REGB0 = TAG_Bool(true);
12367 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12368 label1: while(0);
12369 stack_frame_head = fra.me.prev;
12370 return;
12371 }
12372 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12373 struct {struct stack_frame_t me;} fra;
12374 val_t tmp;
12375 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12376 fra.me.file = LOCATE_syntax___typing;
12377 fra.me.line = 1931;
12378 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12379 fra.me.has_broke = 0;
12380 fra.me.REG_size = 0;
12381 fra.me.nitni_local_ref_head = NULL;
12382 /* ./syntax//typing.nit:1931 */
12383 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1931);
12384 stack_frame_head = fra.me.prev;
12385 return NIT_NULL;
12386 }
12387 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12388 struct {struct stack_frame_t me;} fra;
12389 val_t tmp;
12390 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12391 fra.me.file = LOCATE_syntax___typing;
12392 fra.me.line = 1934;
12393 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12394 fra.me.has_broke = 0;
12395 fra.me.REG_size = 1;
12396 fra.me.nitni_local_ref_head = NULL;
12397 fra.me.REG[0] = NIT_NULL;
12398 fra.me.REG[0] = p0;
12399 /* ./syntax//typing.nit:1934 */
12400 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12401 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12402 goto label1;
12403 label1: while(0);
12404 stack_frame_head = fra.me.prev;
12405 return fra.me.REG[0];
12406 }
12407 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12408 struct {struct stack_frame_t me;} fra;
12409 val_t tmp;
12410 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12411 fra.me.file = LOCATE_syntax___typing;
12412 fra.me.line = 1937;
12413 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12414 fra.me.has_broke = 0;
12415 fra.me.REG_size = 1;
12416 fra.me.nitni_local_ref_head = NULL;
12417 fra.me.REG[0] = NIT_NULL;
12418 fra.me.REG[0] = p0;
12419 /* ./syntax//typing.nit:1937 */
12420 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12421 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12422 goto label1;
12423 label1: while(0);
12424 stack_frame_head = fra.me.prev;
12425 return fra.me.REG[0];
12426 }
12427 val_t syntax___typing___AClosureDef___closure(val_t p0){
12428 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12429 val_t REGB0;
12430 val_t tmp;
12431 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12432 fra.me.file = LOCATE_syntax___typing;
12433 fra.me.line = 1942;
12434 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12435 fra.me.has_broke = 0;
12436 fra.me.REG_size = 2;
12437 fra.me.nitni_local_ref_head = NULL;
12438 fra.me.REG[0] = NIT_NULL;
12439 fra.me.REG[1] = NIT_NULL;
12440 fra.me.REG[0] = p0;
12441 /* ./syntax//typing.nit:1942 */
12442 fra.me.REG[1] = fra.me.REG[0];
12443 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12444 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12445 if (UNTAG_Bool(REGB0)) {
12446 } else {
12447 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1942);
12448 }
12449 goto label1;
12450 label1: while(0);
12451 stack_frame_head = fra.me.prev;
12452 return fra.me.REG[1];
12453 }
12454 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12455 struct {struct stack_frame_t me;} fra;
12456 val_t tmp;
12457 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12458 fra.me.file = LOCATE_syntax___typing;
12459 fra.me.line = 1944;
12460 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12461 fra.me.has_broke = 0;
12462 fra.me.REG_size = 1;
12463 fra.me.nitni_local_ref_head = NULL;
12464 fra.me.REG[0] = NIT_NULL;
12465 fra.me.REG[0] = p0;
12466 /* ./syntax//typing.nit:1944 */
12467 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12468 stack_frame_head = fra.me.prev;
12469 return fra.me.REG[0];
12470 }
12471 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12472 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12473 val_t REGB0;
12474 val_t tmp;
12475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12476 fra.me.file = LOCATE_syntax___typing;
12477 fra.me.line = 1948;
12478 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12479 fra.me.has_broke = 0;
12480 fra.me.REG_size = 3;
12481 fra.me.nitni_local_ref_head = NULL;
12482 fra.me.REG[0] = NIT_NULL;
12483 fra.me.REG[1] = NIT_NULL;
12484 fra.me.REG[2] = NIT_NULL;
12485 fra.me.REG[0] = p0;
12486 fra.me.REG[1] = p1;
12487 /* ./syntax//typing.nit:1948 */
12488 fra.me.REG[2] = fra.me.REG[0];
12489 /* ./syntax//typing.nit:1951 */
12490 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12491 if (UNTAG_Bool(REGB0)) {
12492 } else {
12493 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1951);
12494 }
12495 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12496 if (UNTAG_Bool(REGB0)) {
12497 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12498 }
12499 stack_frame_head = fra.me.prev;
12500 return;
12501 }
12502 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12503 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12504 val_t REGB0;
12505 val_t REGB1;
12506 val_t REGB2;
12507 val_t REGB3;
12508 val_t tmp;
12509 static val_t once_value_1; /* Once value */
12510 static val_t once_value_2; /* Once value */
12511 static val_t once_value_3; /* Once value */
12512 static val_t once_value_6; /* Once value */
12513 static val_t once_value_7; /* Once value */
12514 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12515 fra.me.file = LOCATE_syntax___typing;
12516 fra.me.line = 1954;
12517 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12518 fra.me.has_broke = 0;
12519 fra.me.REG_size = 8;
12520 fra.me.nitni_local_ref_head = NULL;
12521 fra.me.REG[0] = NIT_NULL;
12522 fra.me.REG[1] = NIT_NULL;
12523 fra.me.REG[2] = NIT_NULL;
12524 fra.me.REG[3] = NIT_NULL;
12525 fra.me.REG[4] = NIT_NULL;
12526 fra.me.REG[5] = NIT_NULL;
12527 fra.me.REG[6] = NIT_NULL;
12528 fra.me.REG[7] = NIT_NULL;
12529 fra.me.REG[0] = p0;
12530 fra.me.REG[1] = p1;
12531 fra.me.REG[2] = p2;
12532 /* ./syntax//typing.nit:1956 */
12533 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12534 /* ./syntax//typing.nit:1958 */
12535 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12536 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12537 /* ./syntax//typing.nit:1959 */
12538 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12539 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12540 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12541 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12542 if (UNTAG_Bool(REGB2)) {
12543 } else {
12544 /* ./../lib/standard//kernel.nit:227 */
12545 REGB1 = TAG_Bool((REGB0)==(REGB1));
12546 /* ./syntax//typing.nit:1959 */
12547 REGB2 = REGB1;
12548 }
12549 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12550 if (UNTAG_Bool(REGB2)) {
12551 /* ./syntax//typing.nit:1960 */
12552 REGB2 = TAG_Int(5);
12553 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12554 if (!once_value_1) {
12555 fra.me.REG[5] = BOX_NativeString("Error: ");
12556 REGB2 = TAG_Int(7);
12557 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12558 once_value_1 = fra.me.REG[5];
12559 register_static_object(&once_value_1);
12560 } else fra.me.REG[5] = once_value_1;
12561 fra.me.REG[5] = fra.me.REG[5];
12562 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12563 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12564 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12565 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12566 if (!once_value_2) {
12567 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12568 REGB2 = TAG_Int(36);
12569 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12570 once_value_2 = fra.me.REG[5];
12571 register_static_object(&once_value_2);
12572 } else fra.me.REG[5] = once_value_2;
12573 fra.me.REG[5] = fra.me.REG[5];
12574 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12575 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12576 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
12577 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12578 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12579 if (!once_value_3) {
12580 fra.me.REG[5] = BOX_NativeString(" found.");
12581 REGB2 = TAG_Int(7);
12582 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12583 once_value_3 = fra.me.REG[5];
12584 register_static_object(&once_value_3);
12585 } else fra.me.REG[5] = once_value_3;
12586 fra.me.REG[5] = fra.me.REG[5];
12587 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12588 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12589 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12590 /* ./syntax//typing.nit:1961 */
12591 goto label4;
12592 }
12593 /* ./syntax//typing.nit:1964 */
12594 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12595 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
12596 /* ./syntax//typing.nit:1966 */
12597 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12598 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
12599 /* ./syntax//typing.nit:1967 */
12600 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12601 /* ./syntax//typing.nit:1968 */
12602 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12603 /* ./syntax//typing.nit:1969 */
12604 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12605 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
12606 /* ./syntax//typing.nit:1970 */
12607 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
12608 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
12609 /* ./syntax//typing.nit:1971 */
12610 REGB2 = TAG_Int(0);
12611 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12612 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
12613 /* ./../lib/standard//kernel.nit:352 */
12614 while(1) {
12615 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
12616 if (UNTAG_Bool(REGB0)) {
12617 } else {
12618 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
12619 }
12620 /* ./../lib/standard//kernel.nit:232 */
12621 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
12622 /* ./../lib/standard//kernel.nit:352 */
12623 if (UNTAG_Bool(REGB0)) {
12624 /* ./syntax//typing.nit:1971 */
12625 REGB0 = REGB2;
12626 /* ./syntax//typing.nit:1972 */
12627 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12628 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
12629 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12630 if (UNTAG_Bool(REGB3)) {
12631 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1972);
12632 }
12633 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
12634 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12635 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
12636 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
12637 /* ./syntax//typing.nit:1973 */
12638 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
12639 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12640 if (UNTAG_Bool(REGB3)) {
12641 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1973);
12642 }
12643 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12644 /* ./syntax//typing.nit:1974 */
12645 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
12646 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12647 /* ./syntax//typing.nit:1975 */
12648 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12649 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12650 /* ./../lib/standard//kernel.nit:354 */
12651 REGB0 = TAG_Int(1);
12652 /* ./../lib/standard//kernel.nit:235 */
12653 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
12654 /* ./../lib/standard//kernel.nit:354 */
12655 REGB2 = REGB0;
12656 } else {
12657 /* ./../lib/standard//kernel.nit:352 */
12658 goto label5;
12659 }
12660 }
12661 label5: while(0);
12662 /* ./syntax//typing.nit:1978 */
12663 REGB2 = TAG_Bool(true);
12664 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
12665 /* ./syntax//typing.nit:1979 */
12666 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12667 /* ./syntax//typing.nit:1981 */
12668 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12669 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
12670 REGB1 = TAG_Bool(false);
12671 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
12672 if (UNTAG_Bool(REGB0)) {
12673 } else {
12674 /* ./../lib/standard//kernel.nit:195 */
12675 REGB1 = TAG_Bool((REGB2)==(REGB1));
12676 /* ./syntax//typing.nit:1981 */
12677 REGB0 = REGB1;
12678 }
12679 if (UNTAG_Bool(REGB0)) {
12680 /* ./syntax//typing.nit:1982 */
12681 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12682 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12683 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
12684 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12685 if (UNTAG_Bool(REGB0)) {
12686 } else {
12687 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12688 if (UNTAG_Bool(REGB1)) {
12689 REGB1 = TAG_Bool(false);
12690 REGB0 = REGB1;
12691 } else {
12692 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12693 REGB0 = REGB1;
12694 }
12695 }
12696 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12697 if (UNTAG_Bool(REGB0)) {
12698 /* ./syntax//typing.nit:1983 */
12699 if (!once_value_6) {
12700 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
12701 REGB0 = TAG_Int(77);
12702 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12703 once_value_6 = fra.me.REG[3];
12704 register_static_object(&once_value_6);
12705 } else fra.me.REG[3] = once_value_6;
12706 fra.me.REG[3] = fra.me.REG[3];
12707 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12708 } else {
12709 /* ./syntax//typing.nit:1984 */
12710 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12711 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12712 if (UNTAG_Bool(REGB0)) {
12713 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
12714 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12715 if (UNTAG_Bool(REGB0)) {
12716 } else {
12717 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12718 if (UNTAG_Bool(REGB1)) {
12719 REGB1 = TAG_Bool(false);
12720 REGB0 = REGB1;
12721 } else {
12722 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
12723 REGB0 = REGB1;
12724 }
12725 }
12726 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12727 } else {
12728 REGB1 = TAG_Bool(false);
12729 REGB0 = REGB1;
12730 }
12731 if (UNTAG_Bool(REGB0)) {
12732 /* ./syntax//typing.nit:1985 */
12733 if (!once_value_7) {
12734 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
12735 REGB0 = TAG_Int(80);
12736 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
12737 once_value_7 = fra.me.REG[2];
12738 register_static_object(&once_value_7);
12739 } else fra.me.REG[2] = once_value_7;
12740 fra.me.REG[2] = fra.me.REG[2];
12741 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
12742 }
12743 }
12744 }
12745 /* ./syntax//typing.nit:1988 */
12746 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
12747 /* ./syntax//typing.nit:1989 */
12748 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
12749 /* ./syntax//typing.nit:1990 */
12750 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12751 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
12752 label4: while(0);
12753 stack_frame_head = fra.me.prev;
12754 return;
12755 }
12756 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
12757 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
12758 val_t REGB0;
12759 val_t REGB1;
12760 val_t tmp;
12761 static val_t once_value_2; /* Once value */
12762 static val_t once_value_3; /* Once value */
12763 static val_t once_value_4; /* Once value */
12764 static val_t once_value_5; /* Once value */
12765 static val_t once_value_6; /* Once value */
12766 static val_t once_value_7; /* Once value */
12767 static val_t once_value_8; /* Once value */
12768 static val_t once_value_9; /* Once value */
12769 static val_t once_value_10; /* Once value */
12770 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12771 fra.me.file = LOCATE_syntax___typing;
12772 fra.me.line = 1996;
12773 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
12774 fra.me.has_broke = 0;
12775 fra.me.REG_size = 6;
12776 fra.me.nitni_local_ref_head = NULL;
12777 fra.me.REG[0] = NIT_NULL;
12778 fra.me.REG[1] = NIT_NULL;
12779 fra.me.REG[2] = NIT_NULL;
12780 fra.me.REG[3] = NIT_NULL;
12781 fra.me.REG[4] = NIT_NULL;
12782 fra.me.REG[5] = NIT_NULL;
12783 fra.me.REG[0] = p0;
12784 fra.me.REG[1] = p1;
12785 fra.me.REG[2] = p2;
12786 fra.me.REG[3] = p3;
12787 /* ./syntax//typing.nit:1998 */
12788 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12789 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12790 if (UNTAG_Bool(REGB0)) {
12791 goto label1;
12792 }
12793 /* ./syntax//typing.nit:1999 */
12794 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12795 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12796 if (UNTAG_Bool(REGB0)) {
12797 goto label1;
12798 }
12799 /* ./syntax//typing.nit:2000 */
12800 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12801 /* ./syntax//typing.nit:2001 */
12802 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12803 /* ./syntax//typing.nit:2002 */
12804 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12805 if (UNTAG_Bool(REGB0)) {
12806 } else {
12807 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12808 REGB0 = REGB1;
12809 }
12810 if (UNTAG_Bool(REGB0)) {
12811 /* ./syntax//typing.nit:2003 */
12812 REGB0 = TAG_Int(3);
12813 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12814 if (!once_value_2) {
12815 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12816 REGB0 = TAG_Int(33);
12817 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12818 once_value_2 = fra.me.REG[5];
12819 register_static_object(&once_value_2);
12820 } else fra.me.REG[5] = once_value_2;
12821 fra.me.REG[5] = fra.me.REG[5];
12822 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12823 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12824 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12825 if (!once_value_3) {
12826 fra.me.REG[5] = BOX_NativeString(".");
12827 REGB0 = TAG_Int(1);
12828 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12829 once_value_3 = fra.me.REG[5];
12830 register_static_object(&once_value_3);
12831 } else fra.me.REG[5] = once_value_3;
12832 fra.me.REG[5] = fra.me.REG[5];
12833 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12834 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12835 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12836 } else {
12837 /* ./syntax//typing.nit:2004 */
12838 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12839 if (UNTAG_Bool(REGB0)) {
12840 /* ./syntax//typing.nit:2005 */
12841 REGB0 = TAG_Int(5);
12842 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12843 if (!once_value_4) {
12844 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12845 REGB0 = TAG_Int(33);
12846 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12847 once_value_4 = fra.me.REG[5];
12848 register_static_object(&once_value_4);
12849 } else fra.me.REG[5] = once_value_4;
12850 fra.me.REG[5] = fra.me.REG[5];
12851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12852 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12854 if (!once_value_5) {
12855 fra.me.REG[5] = BOX_NativeString(" since it is a ");
12856 REGB0 = TAG_Int(15);
12857 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12858 once_value_5 = fra.me.REG[5];
12859 register_static_object(&once_value_5);
12860 } else fra.me.REG[5] = once_value_5;
12861 fra.me.REG[5] = fra.me.REG[5];
12862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12863 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
12864 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12865 if (!once_value_6) {
12866 fra.me.REG[5] = BOX_NativeString(".");
12867 REGB0 = TAG_Int(1);
12868 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12869 once_value_6 = fra.me.REG[5];
12870 register_static_object(&once_value_6);
12871 } else fra.me.REG[5] = once_value_6;
12872 fra.me.REG[5] = fra.me.REG[5];
12873 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12874 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12875 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12876 } else {
12877 /* ./syntax//typing.nit:2006 */
12878 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12879 if (UNTAG_Bool(REGB0)) {
12880 /* ./syntax//typing.nit:2008 */
12881 REGB0 = TAG_Int(3);
12882 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12883 if (!once_value_7) {
12884 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
12885 REGB0 = TAG_Int(50);
12886 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12887 once_value_7 = fra.me.REG[5];
12888 register_static_object(&once_value_7);
12889 } else fra.me.REG[5] = once_value_7;
12890 fra.me.REG[5] = fra.me.REG[5];
12891 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12892 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12893 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12894 if (!once_value_8) {
12895 fra.me.REG[5] = BOX_NativeString(".");
12896 REGB0 = TAG_Int(1);
12897 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12898 once_value_8 = fra.me.REG[5];
12899 register_static_object(&once_value_8);
12900 } else fra.me.REG[5] = once_value_8;
12901 fra.me.REG[5] = fra.me.REG[5];
12902 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12903 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12904 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12905 } else {
12906 /* ./syntax//typing.nit:2009 */
12907 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12908 if (UNTAG_Bool(REGB0)) {
12909 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
12910 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12911 if (UNTAG_Bool(REGB0)) {
12912 } else {
12913 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12914 REGB0 = REGB1;
12915 }
12916 } else {
12917 REGB1 = TAG_Bool(false);
12918 REGB0 = REGB1;
12919 }
12920 if (UNTAG_Bool(REGB0)) {
12921 /* ./syntax//typing.nit:2010 */
12922 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
12923 if (UNTAG_Bool(REGB0)) {
12924 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
12925 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
12926 } else {
12927 REGB1 = TAG_Bool(false);
12928 REGB0 = REGB1;
12929 }
12930 if (UNTAG_Bool(REGB0)) {
12931 } else {
12932 /* ./syntax//typing.nit:2016 */
12933 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
12934 if (UNTAG_Bool(REGB0)) {
12935 /* ./syntax//typing.nit:2017 */
12936 if (!once_value_9) {
12937 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
12938 REGB0 = TAG_Int(26);
12939 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12940 once_value_9 = fra.me.REG[3];
12941 register_static_object(&once_value_9);
12942 } else fra.me.REG[3] = once_value_9;
12943 fra.me.REG[3] = fra.me.REG[3];
12944 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12945 } else {
12946 /* ./syntax//typing.nit:2019 */
12947 if (!once_value_10) {
12948 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
12949 REGB0 = TAG_Int(32);
12950 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12951 once_value_10 = fra.me.REG[3];
12952 register_static_object(&once_value_10);
12953 } else fra.me.REG[3] = once_value_10;
12954 fra.me.REG[3] = fra.me.REG[3];
12955 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12956 }
12957 }
12958 }
12959 }
12960 }
12961 }
12962 label1: while(0);
12963 stack_frame_head = fra.me.prev;
12964 return;
12965 }
12966 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
12967 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12968 val_t REGB0;
12969 val_t REGB1;
12970 val_t tmp;
12971 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12972 fra.me.file = LOCATE_syntax___typing;
12973 fra.me.line = 2027;
12974 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
12975 fra.me.has_broke = 0;
12976 fra.me.REG_size = 5;
12977 fra.me.nitni_local_ref_head = NULL;
12978 fra.me.REG[0] = NIT_NULL;
12979 fra.me.REG[1] = NIT_NULL;
12980 fra.me.REG[2] = NIT_NULL;
12981 fra.me.REG[3] = NIT_NULL;
12982 fra.me.REG[4] = NIT_NULL;
12983 fra.me.REG[0] = p0;
12984 fra.me.REG[1] = p1;
12985 /* ./syntax//typing.nit:2029 */
12986 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12987 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12988 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]);
12989 /* ./syntax//typing.nit:2030 */
12990 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12991 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12992 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12993 if (UNTAG_Bool(REGB0)) {
12994 goto label1;
12995 }
12996 /* ./syntax//typing.nit:2031 */
12997 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12998 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
12999 /* ./syntax//typing.nit:2032 */
13000 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13001 if (UNTAG_Bool(REGB0)) {
13002 } else {
13003 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13004 if (UNTAG_Bool(REGB1)) {
13005 REGB1 = TAG_Bool(false);
13006 REGB0 = REGB1;
13007 } else {
13008 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13009 REGB0 = REGB1;
13010 }
13011 }
13012 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13013 if (UNTAG_Bool(REGB0)) {
13014 /* ./syntax//typing.nit:2033 */
13015 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13016 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13017 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
13018 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]);
13019 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
13020 }
13021 /* ./syntax//typing.nit:2035 */
13022 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
13023 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13024 /* ./syntax//typing.nit:2036 */
13025 REGB0 = TAG_Bool(true);
13026 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13027 label1: while(0);
13028 stack_frame_head = fra.me.prev;
13029 return;
13030 }
13031 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
13032 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
13033 val_t REGB0;
13034 val_t REGB1;
13035 val_t tmp;
13036 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13037 fra.me.file = LOCATE_syntax___typing;
13038 fra.me.line = 2042;
13039 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
13040 fra.me.has_broke = 0;
13041 fra.me.REG_size = 4;
13042 fra.me.nitni_local_ref_head = NULL;
13043 fra.me.REG[0] = NIT_NULL;
13044 fra.me.REG[1] = NIT_NULL;
13045 fra.me.REG[2] = NIT_NULL;
13046 fra.me.REG[3] = NIT_NULL;
13047 fra.me.REG[0] = p0;
13048 fra.me.REG[1] = p1;
13049 /* ./syntax//typing.nit:2044 */
13050 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13051 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13052 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]);
13053 /* ./syntax//typing.nit:2045 */
13054 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13055 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13056 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13057 if (UNTAG_Bool(REGB0)) {
13058 goto label1;
13059 }
13060 /* ./syntax//typing.nit:2046 */
13061 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13062 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13063 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
13064 /* ./syntax//typing.nit:2047 */
13065 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
13066 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13067 if (UNTAG_Bool(REGB0)) {
13068 } else {
13069 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13070 if (UNTAG_Bool(REGB1)) {
13071 REGB1 = TAG_Bool(false);
13072 REGB0 = REGB1;
13073 } else {
13074 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13075 REGB0 = REGB1;
13076 }
13077 }
13078 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13079 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13080 label1: while(0);
13081 stack_frame_head = fra.me.prev;
13082 return;
13083 }
13084 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
13085 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13086 val_t REGB0;
13087 val_t tmp;
13088 static val_t once_value_2; /* Once value */
13089 static val_t once_value_3; /* Once value */
13090 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13091 fra.me.file = LOCATE_syntax___typing;
13092 fra.me.line = 2052;
13093 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
13094 fra.me.has_broke = 0;
13095 fra.me.REG_size = 5;
13096 fra.me.nitni_local_ref_head = NULL;
13097 fra.me.REG[0] = NIT_NULL;
13098 fra.me.REG[1] = NIT_NULL;
13099 fra.me.REG[2] = NIT_NULL;
13100 fra.me.REG[3] = NIT_NULL;
13101 fra.me.REG[4] = NIT_NULL;
13102 fra.me.REG[0] = p0;
13103 fra.me.REG[1] = p1;
13104 /* ./syntax//typing.nit:2054 */
13105 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13106 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13108 if (UNTAG_Bool(REGB0)) {
13109 goto label1;
13110 }
13111 /* ./syntax//typing.nit:2055 */
13112 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13113 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13114 /* ./syntax//typing.nit:2056 */
13115 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13116 if (UNTAG_Bool(REGB0)) {
13117 /* ./syntax//typing.nit:2057 */
13118 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13119 if (!once_value_2) {
13120 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
13121 REGB0 = TAG_Int(43);
13122 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13123 once_value_2 = fra.me.REG[4];
13124 register_static_object(&once_value_2);
13125 } else fra.me.REG[4] = once_value_2;
13126 fra.me.REG[4] = fra.me.REG[4];
13127 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
13128 /* ./syntax//typing.nit:2058 */
13129 goto label1;
13130 } else {
13131 /* ./syntax//typing.nit:2059 */
13132 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13133 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13134 if (UNTAG_Bool(REGB0)) {
13135 /* ./syntax//typing.nit:2060 */
13136 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13137 if (!once_value_3) {
13138 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
13139 REGB0 = TAG_Int(45);
13140 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13141 once_value_3 = fra.me.REG[4];
13142 register_static_object(&once_value_3);
13143 } else fra.me.REG[4] = once_value_3;
13144 fra.me.REG[4] = fra.me.REG[4];
13145 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
13146 }
13147 }
13148 /* ./syntax//typing.nit:2062 */
13149 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13150 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
13151 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
13152 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
13153 /* ./syntax//typing.nit:2063 */
13154 REGB0 = TAG_Bool(true);
13155 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13156 label1: while(0);
13157 stack_frame_head = fra.me.prev;
13158 return;
13159 }
13160 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
13161 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
13162 val_t REGB0;
13163 val_t tmp;
13164 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13165 fra.me.file = LOCATE_syntax___typing;
13166 fra.me.line = 2068;
13167 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
13168 fra.me.has_broke = 0;
13169 fra.me.REG_size = 2;
13170 fra.me.nitni_local_ref_head = NULL;
13171 fra.me.REG[0] = NIT_NULL;
13172 fra.me.REG[1] = NIT_NULL;
13173 fra.me.REG[0] = p0;
13174 fra.me.REG[1] = p1;
13175 /* ./syntax//typing.nit:2070 */
13176 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13177 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
13178 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13179 if (UNTAG_Bool(REGB0)) {
13180 goto label1;
13181 }
13182 /* ./syntax//typing.nit:2071 */
13183 REGB0 = TAG_Bool(true);
13184 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13185 /* ./syntax//typing.nit:2072 */
13186 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13187 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
13188 if (UNTAG_Bool(REGB0)) {
13189 goto label1;
13190 }
13191 /* ./syntax//typing.nit:2073 */
13192 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13193 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
13194 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13195 label1: while(0);
13196 stack_frame_head = fra.me.prev;
13197 return;
13198 }
13199 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
13200 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13201 val_t REGB0;
13202 val_t REGB1;
13203 val_t REGB2;
13204 val_t tmp;
13205 static val_t once_value_1; /* Once value */
13206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13207 fra.me.file = LOCATE_syntax___typing;
13208 fra.me.line = 2078;
13209 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
13210 fra.me.has_broke = 0;
13211 fra.me.REG_size = 5;
13212 fra.me.nitni_local_ref_head = NULL;
13213 fra.me.REG[0] = NIT_NULL;
13214 fra.me.REG[1] = NIT_NULL;
13215 fra.me.REG[2] = NIT_NULL;
13216 fra.me.REG[3] = NIT_NULL;
13217 fra.me.REG[4] = NIT_NULL;
13218 fra.me.REG[0] = p0;
13219 fra.me.REG[1] = p1;
13220 /* ./syntax//typing.nit:2078 */
13221 fra.me.REG[2] = fra.me.REG[0];
13222 fra.me.REG[3] = fra.me.REG[1];
13223 /* ./syntax//typing.nit:2080 */
13224 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13225 REGB1 = TAG_Int(0);
13226 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13227 if (UNTAG_Bool(REGB2)) {
13228 } else {
13229 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13230 }
13231 /* ./../lib/standard//kernel.nit:234 */
13232 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13233 /* ./syntax//typing.nit:2080 */
13234 if (UNTAG_Bool(REGB1)) {
13235 /* ./syntax//typing.nit:2081 */
13236 if (!once_value_1) {
13237 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13238 REGB1 = TAG_Int(34);
13239 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
13240 once_value_1 = fra.me.REG[4];
13241 register_static_object(&once_value_1);
13242 } else fra.me.REG[4] = once_value_1;
13243 fra.me.REG[4] = fra.me.REG[4];
13244 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13245 }
13246 /* ./syntax//typing.nit:2083 */
13247 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13248 REGB0 = TAG_Int(1);
13249 /* ./../lib/standard//kernel.nit:235 */
13250 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13251 /* ./syntax//typing.nit:2083 */
13252 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13253 /* ./syntax//typing.nit:2085 */
13254 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13255 /* ./syntax//typing.nit:2087 */
13256 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13257 REGB1 = TAG_Int(1);
13258 /* ./../lib/standard//kernel.nit:237 */
13259 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13260 /* ./syntax//typing.nit:2087 */
13261 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13262 stack_frame_head = fra.me.prev;
13263 return;
13264 }