c_src: fix last update, _nitni.h s were referring to _nit.h from Nit src
[nit.git] / c_src / syntax___typing._sep.c
1 /* This C file is generated by NIT to compile module syntax___typing. */
2 #include "syntax___typing._sep.h"
3 void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_syntax___typing;
8 fra.me.line = 25;
9 fra.me.meth = LOCATE_syntax___typing___MMSrcModule___do_typing;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 2;
12 fra.me.REG[0] = NIT_NULL;
13 fra.me.REG[1] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 fra.me.REG[1] = p1;
16 /* ./syntax//typing.nit:29 */
17 fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
18 /* ./syntax//typing.nit:30 */
19 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
20 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
21 stack_frame_head = fra.me.prev;
22 return;
23 }
24 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
25 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
26 val_t REGB0;
27 val_t REGB1;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_syntax___typing;
31 fra.me.line = 41;
32 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___visit;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 2;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[1] = NIT_NULL;
37 fra.me.REG[0] = p0;
38 fra.me.REG[1] = p1;
39 /* ./syntax//typing.nit:43 */
40 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
41 if (UNTAG_Bool(REGB0)) {
42 } else {
43 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
44 if (UNTAG_Bool(REGB1)) {
45 REGB1 = TAG_Bool(false);
46 REGB0 = REGB1;
47 } else {
48 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
49 REGB0 = REGB1;
50 }
51 }
52 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
53 if (UNTAG_Bool(REGB0)) {
54 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
55 if (UNTAG_Bool(REGB0)) {
56 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 43);
57 }
58 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
59 }
60 stack_frame_head = fra.me.prev;
61 return;
62 }
63 val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
64 struct {struct stack_frame_t me;} fra;
65 val_t REGB0;
66 val_t tmp;
67 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
68 fra.me.file = LOCATE_syntax___typing;
69 fra.me.line = 46;
70 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___scope_ctx;
71 fra.me.has_broke = 0;
72 fra.me.REG_size = 1;
73 fra.me.REG[0] = NIT_NULL;
74 fra.me.REG[0] = p0;
75 /* ./syntax//typing.nit:46 */
76 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
77 if (UNTAG_Bool(REGB0)) {
78 } else {
79 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_syntax___typing, 46);
80 }
81 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
82 stack_frame_head = fra.me.prev;
83 return fra.me.REG[0];
84 }
85 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
86 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
87 val_t REGB0;
88 val_t tmp;
89 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
90 fra.me.file = LOCATE_syntax___typing;
91 fra.me.line = 49;
92 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
93 fra.me.has_broke = 0;
94 fra.me.REG_size = 2;
95 fra.me.REG[0] = NIT_NULL;
96 fra.me.REG[1] = NIT_NULL;
97 fra.me.REG[0] = p0;
98 /* ./syntax//typing.nit:49 */
99 fra.me.REG[1] = fra.me.REG[0];
100 /* ./syntax//typing.nit:50 */
101 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
102 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
103 if (UNTAG_Bool(REGB0)) {
104 } else {
105 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
106 }
107 goto label1;
108 label1: while(0);
109 stack_frame_head = fra.me.prev;
110 return fra.me.REG[1];
111 }
112 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
113 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
114 val_t tmp;
115 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
116 fra.me.file = LOCATE_syntax___typing;
117 fra.me.line = 51;
118 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
119 fra.me.has_broke = 0;
120 fra.me.REG_size = 2;
121 fra.me.REG[0] = NIT_NULL;
122 fra.me.REG[1] = NIT_NULL;
123 fra.me.REG[0] = p0;
124 fra.me.REG[1] = p1;
125 /* ./syntax//typing.nit:51 */
126 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
127 stack_frame_head = fra.me.prev;
128 return;
129 }
130 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
131 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
132 val_t REGB0;
133 val_t tmp;
134 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
135 fra.me.file = LOCATE_syntax___typing;
136 fra.me.line = 53;
137 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
138 fra.me.has_broke = 0;
139 fra.me.REG_size = 3;
140 fra.me.REG[0] = NIT_NULL;
141 fra.me.REG[1] = NIT_NULL;
142 fra.me.REG[2] = NIT_NULL;
143 fra.me.REG[0] = p0;
144 fra.me.REG[1] = p1;
145 /* ./syntax//typing.nit:56 */
146 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
147 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
148 if (UNTAG_Bool(REGB0)) {
149 goto label1;
150 }
151 /* ./syntax//typing.nit:57 */
152 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
153 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
154 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
155 label1: while(0);
156 stack_frame_head = fra.me.prev;
157 return;
158 }
159 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
160 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
161 val_t tmp;
162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
163 fra.me.file = LOCATE_syntax___typing;
164 fra.me.line = 60;
165 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
166 fra.me.has_broke = 0;
167 fra.me.REG_size = 3;
168 fra.me.REG[0] = NIT_NULL;
169 fra.me.REG[1] = NIT_NULL;
170 fra.me.REG[2] = NIT_NULL;
171 fra.me.REG[0] = p0;
172 fra.me.REG[1] = p1;
173 /* ./syntax//typing.nit:63 */
174 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
175 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
176 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
177 stack_frame_head = fra.me.prev;
178 return;
179 }
180 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
181 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
182 val_t REGB0;
183 val_t REGB1;
184 val_t tmp;
185 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
186 fra.me.file = LOCATE_syntax___typing;
187 fra.me.line = 66;
188 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
189 fra.me.has_broke = 0;
190 fra.me.REG_size = 3;
191 fra.me.REG[0] = NIT_NULL;
192 fra.me.REG[1] = NIT_NULL;
193 fra.me.REG[2] = NIT_NULL;
194 fra.me.REG[0] = p0;
195 fra.me.REG[1] = p1;
196 /* ./syntax//typing.nit:69 */
197 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
198 if (UNTAG_Bool(REGB0)) {
199 } else {
200 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
201 if (UNTAG_Bool(REGB1)) {
202 REGB1 = TAG_Bool(false);
203 REGB0 = REGB1;
204 } else {
205 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
206 REGB0 = REGB1;
207 }
208 }
209 if (UNTAG_Bool(REGB0)) {
210 goto label1;
211 }
212 /* ./syntax//typing.nit:70 */
213 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
214 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
215 /* ./syntax//typing.nit:71 */
216 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
217 /* ./syntax//typing.nit:72 */
218 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
219 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
220 label1: while(0);
221 stack_frame_head = fra.me.prev;
222 return;
223 }
224 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
225 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
226 val_t REGB0;
227 val_t tmp;
228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
229 fra.me.file = LOCATE_syntax___typing;
230 fra.me.line = 75;
231 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
232 fra.me.has_broke = 0;
233 fra.me.REG_size = 2;
234 fra.me.REG[0] = NIT_NULL;
235 fra.me.REG[1] = NIT_NULL;
236 fra.me.REG[0] = p0;
237 /* ./syntax//typing.nit:75 */
238 fra.me.REG[1] = fra.me.REG[0];
239 /* ./syntax//typing.nit:76 */
240 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
241 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
242 if (UNTAG_Bool(REGB0)) {
243 } else {
244 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
245 }
246 goto label1;
247 label1: while(0);
248 stack_frame_head = fra.me.prev;
249 return fra.me.REG[1];
250 }
251 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
252 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
253 val_t tmp;
254 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
255 fra.me.file = LOCATE_syntax___typing;
256 fra.me.line = 77;
257 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
258 fra.me.has_broke = 0;
259 fra.me.REG_size = 2;
260 fra.me.REG[0] = NIT_NULL;
261 fra.me.REG[1] = NIT_NULL;
262 fra.me.REG[0] = p0;
263 fra.me.REG[1] = p1;
264 /* ./syntax//typing.nit:77 */
265 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
266 stack_frame_head = fra.me.prev;
267 return;
268 }
269 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
270 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
271 val_t REGB0;
272 val_t tmp;
273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
274 fra.me.file = LOCATE_syntax___typing;
275 fra.me.line = 79;
276 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
277 fra.me.has_broke = 0;
278 fra.me.REG_size = 2;
279 fra.me.REG[0] = NIT_NULL;
280 fra.me.REG[1] = NIT_NULL;
281 fra.me.REG[0] = p0;
282 /* ./syntax//typing.nit:79 */
283 fra.me.REG[1] = fra.me.REG[0];
284 /* ./syntax//typing.nit:80 */
285 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
286 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
287 if (UNTAG_Bool(REGB0)) {
288 } else {
289 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
290 }
291 goto label1;
292 label1: while(0);
293 stack_frame_head = fra.me.prev;
294 return fra.me.REG[1];
295 }
296 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
297 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
298 val_t tmp;
299 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
300 fra.me.file = LOCATE_syntax___typing;
301 fra.me.line = 81;
302 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
303 fra.me.has_broke = 0;
304 fra.me.REG_size = 2;
305 fra.me.REG[0] = NIT_NULL;
306 fra.me.REG[1] = NIT_NULL;
307 fra.me.REG[0] = p0;
308 fra.me.REG[1] = p1;
309 /* ./syntax//typing.nit:81 */
310 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
311 stack_frame_head = fra.me.prev;
312 return;
313 }
314 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
315 struct {struct stack_frame_t me;} fra;
316 val_t tmp;
317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
318 fra.me.file = LOCATE_syntax___typing;
319 fra.me.line = 83;
320 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
321 fra.me.has_broke = 0;
322 fra.me.REG_size = 1;
323 fra.me.REG[0] = NIT_NULL;
324 fra.me.REG[0] = p0;
325 /* ./syntax//typing.nit:83 */
326 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
327 stack_frame_head = fra.me.prev;
328 return fra.me.REG[0];
329 }
330 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
331 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
332 val_t tmp;
333 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
334 fra.me.file = LOCATE_syntax___typing;
335 fra.me.line = 83;
336 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
337 fra.me.has_broke = 0;
338 fra.me.REG_size = 2;
339 fra.me.REG[0] = NIT_NULL;
340 fra.me.REG[1] = NIT_NULL;
341 fra.me.REG[0] = p0;
342 fra.me.REG[1] = p1;
343 /* ./syntax//typing.nit:83 */
344 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
345 stack_frame_head = fra.me.prev;
346 return;
347 }
348 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
349 struct {struct stack_frame_t me;} fra;
350 val_t tmp;
351 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
352 fra.me.file = LOCATE_syntax___typing;
353 fra.me.line = 86;
354 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
355 fra.me.has_broke = 0;
356 fra.me.REG_size = 1;
357 fra.me.REG[0] = NIT_NULL;
358 fra.me.REG[0] = p0;
359 /* ./syntax//typing.nit:86 */
360 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
361 stack_frame_head = fra.me.prev;
362 return fra.me.REG[0];
363 }
364 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
365 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
366 val_t tmp;
367 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
368 fra.me.file = LOCATE_syntax___typing;
369 fra.me.line = 86;
370 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
371 fra.me.has_broke = 0;
372 fra.me.REG_size = 2;
373 fra.me.REG[0] = NIT_NULL;
374 fra.me.REG[1] = NIT_NULL;
375 fra.me.REG[0] = p0;
376 fra.me.REG[1] = p1;
377 /* ./syntax//typing.nit:86 */
378 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
379 stack_frame_head = fra.me.prev;
380 return;
381 }
382 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
383 struct {struct stack_frame_t me;} fra;
384 val_t REGB0;
385 val_t tmp;
386 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
387 fra.me.file = LOCATE_syntax___typing;
388 fra.me.line = 89;
389 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
390 fra.me.has_broke = 0;
391 fra.me.REG_size = 1;
392 fra.me.REG[0] = NIT_NULL;
393 fra.me.REG[0] = p0;
394 /* ./syntax//typing.nit:89 */
395 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
396 if (UNTAG_Bool(REGB0)) {
397 } else {
398 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
399 }
400 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
401 stack_frame_head = fra.me.prev;
402 return REGB0;
403 }
404 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
405 struct {struct stack_frame_t me;} fra;
406 val_t REGB0;
407 val_t tmp;
408 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
409 fra.me.file = LOCATE_syntax___typing;
410 fra.me.line = 89;
411 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
412 fra.me.has_broke = 0;
413 fra.me.REG_size = 1;
414 fra.me.REG[0] = NIT_NULL;
415 fra.me.REG[0] = p0;
416 REGB0 = p1;
417 /* ./syntax//typing.nit:89 */
418 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
419 stack_frame_head = fra.me.prev;
420 return;
421 }
422 void syntax___typing___TypingVisitor___use_if_true_flow_ctx(val_t p0, val_t p1){
423 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
424 val_t REGB0;
425 val_t REGB1;
426 val_t tmp;
427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
428 fra.me.file = LOCATE_syntax___typing;
429 fra.me.line = 92;
430 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
431 fra.me.has_broke = 0;
432 fra.me.REG_size = 2;
433 fra.me.REG[0] = NIT_NULL;
434 fra.me.REG[1] = NIT_NULL;
435 fra.me.REG[0] = p0;
436 fra.me.REG[1] = p1;
437 /* ./syntax//typing.nit:95 */
438 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
439 /* ./syntax//typing.nit:96 */
440 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
441 if (UNTAG_Bool(REGB0)) {
442 } else {
443 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
444 if (UNTAG_Bool(REGB1)) {
445 REGB1 = TAG_Bool(false);
446 REGB0 = REGB1;
447 } else {
448 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
449 REGB0 = REGB1;
450 }
451 }
452 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
453 if (UNTAG_Bool(REGB0)) {
454 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
455 }
456 stack_frame_head = fra.me.prev;
457 return;
458 }
459 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
460 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
461 val_t REGB0;
462 val_t REGB1;
463 val_t tmp;
464 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
465 fra.me.file = LOCATE_syntax___typing;
466 fra.me.line = 99;
467 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
468 fra.me.has_broke = 0;
469 fra.me.REG_size = 2;
470 fra.me.REG[0] = NIT_NULL;
471 fra.me.REG[1] = NIT_NULL;
472 fra.me.REG[0] = p0;
473 fra.me.REG[1] = p1;
474 /* ./syntax//typing.nit:102 */
475 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
476 /* ./syntax//typing.nit:103 */
477 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
478 if (UNTAG_Bool(REGB0)) {
479 } else {
480 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
481 if (UNTAG_Bool(REGB1)) {
482 REGB1 = TAG_Bool(false);
483 REGB0 = REGB1;
484 } else {
485 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
486 REGB0 = REGB1;
487 }
488 }
489 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
490 if (UNTAG_Bool(REGB0)) {
491 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
492 }
493 stack_frame_head = fra.me.prev;
494 return;
495 }
496 val_t syntax___typing___TypingVisitor___is_default_closure_definition(val_t p0){
497 struct {struct stack_frame_t me;} fra;
498 val_t REGB0;
499 val_t tmp;
500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
501 fra.me.file = LOCATE_syntax___typing;
502 fra.me.line = 106;
503 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition;
504 fra.me.has_broke = 0;
505 fra.me.REG_size = 1;
506 fra.me.REG[0] = NIT_NULL;
507 fra.me.REG[0] = p0;
508 /* ./syntax//typing.nit:106 */
509 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
510 if (UNTAG_Bool(REGB0)) {
511 } else {
512 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_syntax___typing, 106);
513 }
514 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
515 stack_frame_head = fra.me.prev;
516 return REGB0;
517 }
518 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
519 struct {struct stack_frame_t me;} fra;
520 val_t REGB0;
521 val_t tmp;
522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
523 fra.me.file = LOCATE_syntax___typing;
524 fra.me.line = 106;
525 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
526 fra.me.has_broke = 0;
527 fra.me.REG_size = 1;
528 fra.me.REG[0] = NIT_NULL;
529 fra.me.REG[0] = p0;
530 REGB0 = p1;
531 /* ./syntax//typing.nit:106 */
532 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
533 stack_frame_head = fra.me.prev;
534 return;
535 }
536 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
537 struct {struct stack_frame_t me;} fra;
538 val_t REGB0;
539 val_t tmp;
540 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
541 fra.me.file = LOCATE_syntax___typing;
542 fra.me.line = 109;
543 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count;
544 fra.me.has_broke = 0;
545 fra.me.REG_size = 1;
546 fra.me.REG[0] = NIT_NULL;
547 fra.me.REG[0] = p0;
548 /* ./syntax//typing.nit:109 */
549 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
550 if (UNTAG_Bool(REGB0)) {
551 } else {
552 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
553 }
554 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
555 stack_frame_head = fra.me.prev;
556 return REGB0;
557 }
558 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
559 struct {struct stack_frame_t me;} fra;
560 val_t REGB0;
561 val_t tmp;
562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
563 fra.me.file = LOCATE_syntax___typing;
564 fra.me.line = 109;
565 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
566 fra.me.has_broke = 0;
567 fra.me.REG_size = 1;
568 fra.me.REG[0] = NIT_NULL;
569 fra.me.REG[0] = p0;
570 REGB0 = p1;
571 /* ./syntax//typing.nit:109 */
572 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
573 stack_frame_head = fra.me.prev;
574 return;
575 }
576 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
577 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
578 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
579 val_t tmp;
580 if (init_table[itpos0]) return;
581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
582 fra.me.file = LOCATE_syntax___typing;
583 fra.me.line = 112;
584 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
585 fra.me.has_broke = 0;
586 fra.me.REG_size = 3;
587 fra.me.REG[0] = NIT_NULL;
588 fra.me.REG[1] = NIT_NULL;
589 fra.me.REG[2] = NIT_NULL;
590 fra.me.REG[0] = p0;
591 fra.me.REG[1] = p1;
592 fra.me.REG[2] = p2;
593 /* ./syntax//typing.nit:112 */
594 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
595 stack_frame_head = fra.me.prev;
596 init_table[itpos0] = 1;
597 return;
598 }
599 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
600 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
601 val_t REGB0;
602 val_t REGB1;
603 val_t REGB2;
604 val_t tmp;
605 static val_t once_value_6; /* Once value */
606 static val_t once_value_7; /* Once value */
607 static val_t once_value_8; /* Once value */
608 static val_t once_value_10; /* Once value */
609 static val_t once_value_11; /* Once value */
610 static val_t once_value_12; /* Once value */
611 static val_t once_value_13; /* Once value */
612 static val_t once_value_14; /* Once value */
613 static val_t once_value_15; /* Once value */
614 static val_t once_value_16; /* Once value */
615 static val_t once_value_18; /* Once value */
616 static val_t once_value_19; /* Once value */
617 static val_t once_value_20; /* Once value */
618 static val_t once_value_21; /* Once value */
619 static val_t once_value_22; /* Once value */
620 static val_t once_value_23; /* Once value */
621 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
622 fra.me.file = LOCATE_syntax___typing;
623 fra.me.line = 114;
624 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
625 fra.me.has_broke = 0;
626 fra.me.REG_size = 12;
627 fra.me.REG[0] = NIT_NULL;
628 fra.me.REG[1] = NIT_NULL;
629 fra.me.REG[2] = NIT_NULL;
630 fra.me.REG[3] = NIT_NULL;
631 fra.me.REG[4] = NIT_NULL;
632 fra.me.REG[5] = NIT_NULL;
633 fra.me.REG[6] = NIT_NULL;
634 fra.me.REG[7] = NIT_NULL;
635 fra.me.REG[8] = NIT_NULL;
636 fra.me.REG[9] = NIT_NULL;
637 fra.me.REG[10] = NIT_NULL;
638 fra.me.REG[11] = NIT_NULL;
639 fra.me.REG[0] = p0;
640 fra.me.REG[1] = p1;
641 fra.me.REG[2] = p2;
642 fra.me.REG[3] = p3;
643 /* ./syntax//typing.nit:114 */
644 fra.me.REG[4] = fra.me.REG[0];
645 /* ./syntax//typing.nit:116 */
646 fra.me.REG[5] = fra.me.REG[4];
647 /* ./syntax//typing.nit:119 */
648 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
649 /* ./syntax//typing.nit:120 */
650 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
651 /* ./syntax//typing.nit:121 */
652 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
653 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
654 if (UNTAG_Bool(REGB0)) {
655 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
656 }
657 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
658 fra.me.REG[8] = REGB0;
659 /* ./syntax//typing.nit:122 */
660 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
661 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[9])(fra.me.REG[9], (&(fra.me)), ((fun_t)OC_syntax___typing___TypingVisitor___get_default_constructor_for_1));
662 switch ((&(fra.me))->has_broke) {
663 case 0: break;
664 case 1: (&(fra.me))->has_broke = 0; goto label5;
665 }
666 /* ./../lib/standard//collection//array.nit:24 */
667 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
668 if (UNTAG_Bool(REGB0)) {
669 } else {
670 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
671 }
672 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
673 /* ./syntax//typing.nit:141 */
674 REGB1 = TAG_Int(1);
675 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
676 if (UNTAG_Bool(REGB2)) {
677 } else {
678 /* ./../lib/standard//kernel.nit:227 */
679 REGB1 = TAG_Bool((REGB0)==(REGB1));
680 /* ./syntax//typing.nit:141 */
681 REGB2 = REGB1;
682 }
683 if (UNTAG_Bool(REGB2)) {
684 /* ./syntax//typing.nit:142 */
685 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
686 fra.me.REG[9] = fra.me.REG[3];
687 goto label5;
688 } else {
689 /* ./../lib/standard//collection//array.nit:24 */
690 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
691 if (UNTAG_Bool(REGB2)) {
692 } else {
693 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
694 }
695 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
696 /* ./syntax//typing.nit:143 */
697 REGB1 = TAG_Int(0);
698 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
699 if (UNTAG_Bool(REGB0)) {
700 } else {
701 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
702 }
703 /* ./../lib/standard//kernel.nit:234 */
704 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
705 /* ./syntax//typing.nit:143 */
706 if (UNTAG_Bool(REGB1)) {
707 /* ./syntax//typing.nit:144 */
708 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
709 /* ./../lib/standard//collection//array.nit:269 */
710 REGB1 = TAG_Int(0);
711 /* ./../lib/standard//collection//array.nit:270 */
712 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
713 if (UNTAG_Bool(REGB2)) {
714 } else {
715 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
716 }
717 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
718 /* ./../lib/standard//collection//array.nit:271 */
719 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
720 /* ./../lib/standard//collection//array.nit:272 */
721 while(1) {
722 /* ./../lib/standard//collection//array.nit:24 */
723 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
724 if (UNTAG_Bool(REGB2)) {
725 } else {
726 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
727 }
728 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
729 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
730 if (UNTAG_Bool(REGB0)) {
731 } else {
732 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
733 }
734 /* ./../lib/standard//kernel.nit:232 */
735 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
736 /* ./../lib/standard//collection//array.nit:272 */
737 if (UNTAG_Bool(REGB2)) {
738 /* ./../lib/standard//collection//array.nit:273 */
739 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
740 if (UNTAG_Bool(REGB2)) {
741 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
742 }
743 /* ./../lib/standard//collection//array.nit:718 */
744 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
745 /* ./syntax//typing.nit:146 */
746 REGB2 = TAG_Int(5);
747 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
748 if (!once_value_6) {
749 fra.me.REG[11] = BOX_NativeString("");
750 REGB2 = TAG_Int(0);
751 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
752 once_value_6 = fra.me.REG[11];
753 register_static_object(&once_value_6);
754 } else fra.me.REG[11] = once_value_6;
755 fra.me.REG[11] = fra.me.REG[11];
756 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
757 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
759 if (!once_value_7) {
760 fra.me.REG[11] = BOX_NativeString("");
761 REGB2 = TAG_Int(0);
762 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
763 once_value_7 = fra.me.REG[11];
764 register_static_object(&once_value_7);
765 } else fra.me.REG[11] = once_value_7;
766 fra.me.REG[11] = fra.me.REG[11];
767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
768 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
769 REGB2 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
770 if (UNTAG_Bool(REGB2)) {
771 } else {
772 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
773 }
774 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
775 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
776 if (!once_value_8) {
777 fra.me.REG[4] = BOX_NativeString("");
778 REGB2 = TAG_Int(0);
779 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
780 once_value_8 = fra.me.REG[4];
781 register_static_object(&once_value_8);
782 } else fra.me.REG[4] = once_value_8;
783 fra.me.REG[4] = fra.me.REG[4];
784 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
785 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
786 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
787 /* ./../lib/standard//collection//array.nit:274 */
788 REGB2 = TAG_Int(1);
789 /* ./../lib/standard//kernel.nit:235 */
790 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
791 /* ./../lib/standard//collection//array.nit:274 */
792 REGB1 = REGB2;
793 } else {
794 /* ./../lib/standard//collection//array.nit:272 */
795 goto label9;
796 }
797 }
798 label9: while(0);
799 /* ./syntax//typing.nit:148 */
800 REGB1 = TAG_Int(5);
801 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
802 if (!once_value_10) {
803 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
804 REGB1 = TAG_Int(51);
805 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
806 once_value_10 = fra.me.REG[6];
807 register_static_object(&once_value_10);
808 } else fra.me.REG[6] = once_value_10;
809 fra.me.REG[6] = fra.me.REG[6];
810 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
811 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
813 if (!once_value_11) {
814 fra.me.REG[6] = BOX_NativeString(": ");
815 REGB1 = TAG_Int(2);
816 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
817 once_value_11 = fra.me.REG[6];
818 register_static_object(&once_value_11);
819 } else fra.me.REG[6] = once_value_11;
820 fra.me.REG[6] = fra.me.REG[6];
821 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
822 if (!once_value_12) {
823 fra.me.REG[6] = BOX_NativeString(", ");
824 REGB1 = TAG_Int(2);
825 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
826 once_value_12 = fra.me.REG[6];
827 register_static_object(&once_value_12);
828 } else fra.me.REG[6] = once_value_12;
829 fra.me.REG[6] = fra.me.REG[6];
830 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
831 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
832 if (!once_value_13) {
833 fra.me.REG[6] = BOX_NativeString(".");
834 REGB1 = TAG_Int(1);
835 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
836 once_value_13 = fra.me.REG[6];
837 register_static_object(&once_value_13);
838 } else fra.me.REG[6] = once_value_13;
839 fra.me.REG[6] = fra.me.REG[6];
840 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
841 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
842 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
843 /* ./syntax//typing.nit:149 */
844 fra.me.REG[9] = NIT_NULL;
845 goto label5;
846 } else {
847 /* ./../lib/standard//collection//array.nit:24 */
848 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
849 if (UNTAG_Bool(REGB1)) {
850 } else {
851 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
852 }
853 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
854 /* ./syntax//typing.nit:150 */
855 REGB2 = TAG_Int(0);
856 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
857 if (UNTAG_Bool(REGB0)) {
858 } else {
859 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
860 }
861 /* ./../lib/standard//kernel.nit:234 */
862 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
863 /* ./syntax//typing.nit:150 */
864 if (UNTAG_Bool(REGB2)) {
865 /* ./syntax//typing.nit:151 */
866 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
867 /* ./../lib/standard//collection//array.nit:269 */
868 REGB2 = TAG_Int(0);
869 /* ./../lib/standard//collection//array.nit:270 */
870 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
871 if (UNTAG_Bool(REGB1)) {
872 } else {
873 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
874 }
875 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
876 /* ./../lib/standard//collection//array.nit:271 */
877 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
878 /* ./../lib/standard//collection//array.nit:272 */
879 while(1) {
880 /* ./../lib/standard//collection//array.nit:24 */
881 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
882 if (UNTAG_Bool(REGB1)) {
883 } else {
884 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
885 }
886 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
887 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
888 if (UNTAG_Bool(REGB0)) {
889 } else {
890 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
891 }
892 /* ./../lib/standard//kernel.nit:232 */
893 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
894 /* ./../lib/standard//collection//array.nit:272 */
895 if (UNTAG_Bool(REGB1)) {
896 /* ./../lib/standard//collection//array.nit:273 */
897 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
898 if (UNTAG_Bool(REGB1)) {
899 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
900 }
901 /* ./../lib/standard//collection//array.nit:718 */
902 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
903 /* ./syntax//typing.nit:153 */
904 REGB1 = TAG_Int(5);
905 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
906 if (!once_value_14) {
907 fra.me.REG[4] = BOX_NativeString("");
908 REGB1 = TAG_Int(0);
909 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
910 once_value_14 = fra.me.REG[4];
911 register_static_object(&once_value_14);
912 } else fra.me.REG[4] = once_value_14;
913 fra.me.REG[4] = fra.me.REG[4];
914 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
915 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
916 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
917 if (!once_value_15) {
918 fra.me.REG[4] = BOX_NativeString("");
919 REGB1 = TAG_Int(0);
920 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
921 once_value_15 = fra.me.REG[4];
922 register_static_object(&once_value_15);
923 } else fra.me.REG[4] = once_value_15;
924 fra.me.REG[4] = fra.me.REG[4];
925 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
926 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
927 REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
928 if (UNTAG_Bool(REGB1)) {
929 } else {
930 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
931 }
932 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
933 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
934 if (!once_value_16) {
935 fra.me.REG[3] = BOX_NativeString("");
936 REGB1 = TAG_Int(0);
937 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
938 once_value_16 = fra.me.REG[3];
939 register_static_object(&once_value_16);
940 } else fra.me.REG[3] = once_value_16;
941 fra.me.REG[3] = fra.me.REG[3];
942 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
943 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
944 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
945 /* ./../lib/standard//collection//array.nit:274 */
946 REGB1 = TAG_Int(1);
947 /* ./../lib/standard//kernel.nit:235 */
948 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
949 /* ./../lib/standard//collection//array.nit:274 */
950 REGB2 = REGB1;
951 } else {
952 /* ./../lib/standard//collection//array.nit:272 */
953 goto label17;
954 }
955 }
956 label17: while(0);
957 /* ./syntax//typing.nit:155 */
958 REGB2 = TAG_Int(5);
959 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
960 if (!once_value_18) {
961 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
962 REGB2 = TAG_Int(55);
963 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
964 once_value_18 = fra.me.REG[6];
965 register_static_object(&once_value_18);
966 } else fra.me.REG[6] = once_value_18;
967 fra.me.REG[6] = fra.me.REG[6];
968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
969 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
970 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
971 if (!once_value_19) {
972 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
973 REGB2 = TAG_Int(27);
974 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
975 once_value_19 = fra.me.REG[6];
976 register_static_object(&once_value_19);
977 } else fra.me.REG[6] = once_value_19;
978 fra.me.REG[6] = fra.me.REG[6];
979 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
980 if (!once_value_20) {
981 fra.me.REG[6] = BOX_NativeString(", ");
982 REGB2 = TAG_Int(2);
983 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
984 once_value_20 = fra.me.REG[6];
985 register_static_object(&once_value_20);
986 } else fra.me.REG[6] = once_value_20;
987 fra.me.REG[6] = fra.me.REG[6];
988 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
989 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
990 if (!once_value_21) {
991 fra.me.REG[6] = BOX_NativeString(".");
992 REGB2 = TAG_Int(1);
993 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
994 once_value_21 = fra.me.REG[6];
995 register_static_object(&once_value_21);
996 } else fra.me.REG[6] = once_value_21;
997 fra.me.REG[6] = fra.me.REG[6];
998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
999 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1000 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1001 /* ./syntax//typing.nit:156 */
1002 fra.me.REG[9] = NIT_NULL;
1003 goto label5;
1004 } else {
1005 /* ./syntax//typing.nit:158 */
1006 REGB2 = TAG_Int(3);
1007 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1008 if (!once_value_22) {
1009 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1010 REGB2 = TAG_Int(55);
1011 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1012 once_value_22 = fra.me.REG[6];
1013 register_static_object(&once_value_22);
1014 } else fra.me.REG[6] = once_value_22;
1015 fra.me.REG[6] = fra.me.REG[6];
1016 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1017 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1018 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1019 if (!once_value_23) {
1020 fra.me.REG[2] = BOX_NativeString(".");
1021 REGB2 = TAG_Int(1);
1022 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
1023 once_value_23 = fra.me.REG[2];
1024 register_static_object(&once_value_23);
1025 } else fra.me.REG[2] = once_value_23;
1026 fra.me.REG[2] = fra.me.REG[2];
1027 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1028 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1029 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1030 /* ./syntax//typing.nit:159 */
1031 fra.me.REG[9] = NIT_NULL;
1032 goto label5;
1033 }
1034 }
1035 }
1036 label5: while(0);
1037 stack_frame_head = fra.me.prev;
1038 return fra.me.REG[9];
1039 }
1040 void OC_syntax___typing___TypingVisitor___get_default_constructor_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1041 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1042 val_t REGB0;
1043 val_t REGB1;
1044 val_t REGB2;
1045 val_t REGB3;
1046 fun_t CREG[1];
1047 val_t tmp;
1048 static val_t once_value_3; /* Once value */
1049 static val_t once_value_4; /* Once value */
1050 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1051 fra.me.file = LOCATE_syntax___typing;
1052 fra.me.line = 0;
1053 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1054 fra.me.has_broke = 0;
1055 fra.me.REG_size = 4;
1056 fra.me.REG[0] = NIT_NULL;
1057 fra.me.REG[1] = NIT_NULL;
1058 fra.me.REG[2] = NIT_NULL;
1059 fra.me.REG[3] = NIT_NULL;
1060 fra.me.closure_ctx = closctx_param;
1061 fra.me.closure_funs = CREG;
1062 fra.me.REG[0] = p0;
1063 CREG[0] = clos_fun0;
1064 /* ./syntax//typing.nit:123 */
1065 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1066 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1067 if (UNTAG_Bool(REGB0)) {
1068 goto label2;
1069 }
1070 /* ./syntax//typing.nit:124 */
1071 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1072 /* ./syntax//typing.nit:125 */
1073 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1074 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1075 /* ./syntax//typing.nit:126 */
1076 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1077 if (UNTAG_Bool(REGB0)) {
1078 } else {
1079 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1080 }
1081 /* ./syntax//typing.nit:127 */
1082 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1083 /* ./syntax//typing.nit:128 */
1084 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1085 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1086 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1087 if (UNTAG_Bool(REGB1)) {
1088 } else {
1089 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1090 REGB1 = REGB2;
1091 }
1092 if (UNTAG_Bool(REGB1)) {
1093 /* ./syntax//typing.nit:129 */
1094 REGB1 = TAG_Int(0);
1095 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1096 if (UNTAG_Bool(REGB2)) {
1097 } else {
1098 /* ./../lib/standard//kernel.nit:227 */
1099 REGB1 = TAG_Bool((REGB0)==(REGB1));
1100 /* ./syntax//typing.nit:129 */
1101 REGB2 = REGB1;
1102 }
1103 if (UNTAG_Bool(REGB2)) {
1104 REGB2 = TAG_Bool(true);
1105 } else {
1106 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1107 if (UNTAG_Bool(REGB1)) {
1108 } else {
1109 /* ./../lib/standard//kernel.nit:227 */
1110 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1111 /* ./syntax//typing.nit:129 */
1112 REGB1 = REGB3;
1113 }
1114 if (UNTAG_Bool(REGB1)) {
1115 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1116 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1117 if (UNTAG_Bool(REGB1)) {
1118 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1119 }
1120 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1121 } else {
1122 REGB3 = TAG_Bool(false);
1123 REGB1 = REGB3;
1124 }
1125 REGB2 = REGB1;
1126 }
1127 if (UNTAG_Bool(REGB2)) {
1128 /* ./syntax//typing.nit:130 */
1129 closctx->REG[9] = fra.me.REG[0];
1130 closctx->has_broke = 1;
1131 goto label2;
1132 } else {
1133 /* ./syntax//typing.nit:132 */
1134 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1135 }
1136 } else {
1137 /* ./syntax//typing.nit:134 */
1138 REGB2 = TAG_Int(0);
1139 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1140 if (UNTAG_Bool(REGB1)) {
1141 } else {
1142 /* ./../lib/standard//kernel.nit:227 */
1143 REGB2 = TAG_Bool((REGB0)==(REGB2));
1144 /* ./syntax//typing.nit:134 */
1145 REGB1 = REGB2;
1146 }
1147 if (UNTAG_Bool(REGB1)) {
1148 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1149 if (!once_value_3) {
1150 if (!once_value_4) {
1151 fra.me.REG[3] = BOX_NativeString("init");
1152 REGB1 = TAG_Int(4);
1153 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
1154 once_value_4 = fra.me.REG[3];
1155 register_static_object(&once_value_4);
1156 } else fra.me.REG[3] = once_value_4;
1157 fra.me.REG[3] = fra.me.REG[3];
1158 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1159 once_value_3 = fra.me.REG[3];
1160 register_static_object(&once_value_3);
1161 } else fra.me.REG[3] = once_value_3;
1162 fra.me.REG[3] = fra.me.REG[3];
1163 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1164 if (UNTAG_Bool(REGB1)) {
1165 } else {
1166 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1167 REGB1 = REGB2;
1168 }
1169 } else {
1170 REGB2 = TAG_Bool(false);
1171 REGB1 = REGB2;
1172 }
1173 if (UNTAG_Bool(REGB1)) {
1174 /* ./syntax//typing.nit:135 */
1175 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1176 /* ./syntax//typing.nit:136 */
1177 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1178 } else {
1179 /* ./syntax//typing.nit:138 */
1180 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1181 }
1182 }
1183 label2: while(0);
1184 stack_frame_head = fra.me.prev;
1185 return;
1186 }
1187 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1188 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1189 val_t tmp;
1190 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1191 fra.me.file = LOCATE_syntax___typing;
1192 fra.me.line = 168;
1193 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1194 fra.me.has_broke = 0;
1195 fra.me.REG_size = 2;
1196 fra.me.REG[0] = NIT_NULL;
1197 fra.me.REG[1] = NIT_NULL;
1198 fra.me.REG[0] = p0;
1199 fra.me.REG[1] = p1;
1200 /* ./syntax//typing.nit:170 */
1201 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1202 /* ./syntax//typing.nit:171 */
1203 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1204 stack_frame_head = fra.me.prev;
1205 return;
1206 }
1207 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1208 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1209 val_t tmp;
1210 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1211 fra.me.file = LOCATE_syntax___typing;
1212 fra.me.line = 173;
1213 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1214 fra.me.has_broke = 0;
1215 fra.me.REG_size = 2;
1216 fra.me.REG[0] = NIT_NULL;
1217 fra.me.REG[1] = NIT_NULL;
1218 fra.me.REG[0] = p0;
1219 fra.me.REG[1] = p1;
1220 stack_frame_head = fra.me.prev;
1221 return;
1222 }
1223 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1224 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1225 val_t REGB0;
1226 val_t tmp;
1227 static val_t once_value_1; /* Once value */
1228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1229 fra.me.file = LOCATE_syntax___typing;
1230 fra.me.line = 177;
1231 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1232 fra.me.has_broke = 0;
1233 fra.me.REG_size = 5;
1234 fra.me.REG[0] = NIT_NULL;
1235 fra.me.REG[1] = NIT_NULL;
1236 fra.me.REG[2] = NIT_NULL;
1237 fra.me.REG[3] = NIT_NULL;
1238 fra.me.REG[4] = NIT_NULL;
1239 fra.me.REG[0] = p0;
1240 fra.me.REG[1] = p1;
1241 /* ./syntax//typing.nit:177 */
1242 fra.me.REG[2] = fra.me.REG[0];
1243 fra.me.REG[3] = fra.me.REG[1];
1244 /* ./syntax//typing.nit:179 */
1245 if (!once_value_1) {
1246 fra.me.REG[4] = BOX_NativeString("self");
1247 REGB0 = TAG_Int(4);
1248 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1249 once_value_1 = fra.me.REG[4];
1250 register_static_object(&once_value_1);
1251 } else fra.me.REG[4] = once_value_1;
1252 fra.me.REG[4] = fra.me.REG[4];
1253 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1254 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1255 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1256 /* ./syntax//typing.nit:180 */
1257 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1258 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1259 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1260 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1261 /* ./syntax//typing.nit:181 */
1262 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1263 stack_frame_head = fra.me.prev;
1264 return;
1265 }
1266 val_t syntax___typing___APropdef___self_var(val_t p0){
1267 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1268 val_t REGB0;
1269 val_t tmp;
1270 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1271 fra.me.file = LOCATE_syntax___typing;
1272 fra.me.line = 186;
1273 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1274 fra.me.has_broke = 0;
1275 fra.me.REG_size = 2;
1276 fra.me.REG[0] = NIT_NULL;
1277 fra.me.REG[1] = NIT_NULL;
1278 fra.me.REG[0] = p0;
1279 /* ./syntax//typing.nit:186 */
1280 fra.me.REG[1] = fra.me.REG[0];
1281 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1282 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1283 if (UNTAG_Bool(REGB0)) {
1284 } else {
1285 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1286 }
1287 goto label1;
1288 label1: while(0);
1289 stack_frame_head = fra.me.prev;
1290 return fra.me.REG[1];
1291 }
1292 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1293 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1294 val_t REGB0;
1295 val_t REGB1;
1296 val_t tmp;
1297 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1298 fra.me.file = LOCATE_syntax___typing;
1299 fra.me.line = 191;
1300 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1301 fra.me.has_broke = 0;
1302 fra.me.REG_size = 5;
1303 fra.me.REG[0] = NIT_NULL;
1304 fra.me.REG[1] = NIT_NULL;
1305 fra.me.REG[2] = NIT_NULL;
1306 fra.me.REG[3] = NIT_NULL;
1307 fra.me.REG[4] = NIT_NULL;
1308 fra.me.REG[0] = p0;
1309 fra.me.REG[1] = p1;
1310 /* ./syntax//typing.nit:191 */
1311 fra.me.REG[2] = fra.me.REG[0];
1312 fra.me.REG[3] = fra.me.REG[1];
1313 /* ./syntax//typing.nit:193 */
1314 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1315 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1316 /* ./syntax//typing.nit:194 */
1317 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1318 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1319 /* ./syntax//typing.nit:196 */
1320 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1321 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1322 /* ./syntax//typing.nit:197 */
1323 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1324 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1325 /* ./syntax//typing.nit:198 */
1326 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1327 /* ./syntax//typing.nit:199 */
1328 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1329 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1330 if (UNTAG_Bool(REGB0)) {
1331 } else {
1332 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1333 if (UNTAG_Bool(REGB1)) {
1334 REGB1 = TAG_Bool(false);
1335 REGB0 = REGB1;
1336 } else {
1337 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1338 REGB0 = REGB1;
1339 }
1340 }
1341 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1342 if (UNTAG_Bool(REGB0)) {
1343 /* ./syntax//typing.nit:200 */
1344 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1345 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
1346 if (UNTAG_Bool(REGB0)) {
1347 } else {
1348 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1349 }
1350 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1351 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1352 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1353 if (UNTAG_Bool(REGB0)) {
1354 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1355 }
1356 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1357 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
1358 if (UNTAG_Bool(REGB0)) {
1359 } else {
1360 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1361 }
1362 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1363 }
1364 /* ./syntax//typing.nit:202 */
1365 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1366 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1367 stack_frame_head = fra.me.prev;
1368 return;
1369 }
1370 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1371 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1372 val_t tmp;
1373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1374 fra.me.file = LOCATE_syntax___typing;
1375 fra.me.line = 207;
1376 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1377 fra.me.has_broke = 0;
1378 fra.me.REG_size = 5;
1379 fra.me.REG[0] = NIT_NULL;
1380 fra.me.REG[1] = NIT_NULL;
1381 fra.me.REG[2] = NIT_NULL;
1382 fra.me.REG[3] = NIT_NULL;
1383 fra.me.REG[4] = NIT_NULL;
1384 fra.me.REG[0] = p0;
1385 fra.me.REG[1] = p1;
1386 /* ./syntax//typing.nit:207 */
1387 fra.me.REG[2] = fra.me.REG[0];
1388 fra.me.REG[3] = fra.me.REG[1];
1389 /* ./syntax//typing.nit:209 */
1390 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1391 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1392 /* ./syntax//typing.nit:210 */
1393 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1394 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1395 /* ./syntax//typing.nit:212 */
1396 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1397 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1398 /* ./syntax//typing.nit:213 */
1399 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1400 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1401 /* ./syntax//typing.nit:214 */
1402 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1403 /* ./syntax//typing.nit:215 */
1404 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1405 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1406 stack_frame_head = fra.me.prev;
1407 return;
1408 }
1409 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1410 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1411 val_t REGB0;
1412 val_t REGB1;
1413 val_t tmp;
1414 static val_t once_value_1; /* Once value */
1415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1416 fra.me.file = LOCATE_syntax___typing;
1417 fra.me.line = 220;
1418 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1419 fra.me.has_broke = 0;
1420 fra.me.REG_size = 4;
1421 fra.me.REG[0] = NIT_NULL;
1422 fra.me.REG[1] = NIT_NULL;
1423 fra.me.REG[2] = NIT_NULL;
1424 fra.me.REG[3] = NIT_NULL;
1425 fra.me.REG[0] = p0;
1426 fra.me.REG[1] = p1;
1427 /* ./syntax//typing.nit:220 */
1428 fra.me.REG[2] = fra.me.REG[0];
1429 fra.me.REG[3] = fra.me.REG[1];
1430 /* ./syntax//typing.nit:222 */
1431 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1432 /* ./syntax//typing.nit:223 */
1433 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1434 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1435 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1436 if (UNTAG_Bool(REGB0)) {
1437 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1438 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1439 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1440 if (UNTAG_Bool(REGB0)) {
1441 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1442 }
1443 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1444 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1445 if (UNTAG_Bool(REGB0)) {
1446 } else {
1447 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1448 if (UNTAG_Bool(REGB1)) {
1449 REGB1 = TAG_Bool(false);
1450 REGB0 = REGB1;
1451 } else {
1452 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1453 REGB0 = REGB1;
1454 }
1455 }
1456 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1457 } else {
1458 REGB1 = TAG_Bool(false);
1459 REGB0 = REGB1;
1460 }
1461 if (UNTAG_Bool(REGB0)) {
1462 /* ./syntax//typing.nit:224 */
1463 if (!once_value_1) {
1464 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1465 REGB0 = TAG_Int(78);
1466 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1467 once_value_1 = fra.me.REG[1];
1468 register_static_object(&once_value_1);
1469 } else fra.me.REG[1] = once_value_1;
1470 fra.me.REG[1] = fra.me.REG[1];
1471 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1472 }
1473 stack_frame_head = fra.me.prev;
1474 return;
1475 }
1476 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1477 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1478 val_t REGB0;
1479 val_t tmp;
1480 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1481 fra.me.file = LOCATE_syntax___typing;
1482 fra.me.line = 230;
1483 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1484 fra.me.has_broke = 0;
1485 fra.me.REG_size = 5;
1486 fra.me.REG[0] = NIT_NULL;
1487 fra.me.REG[1] = NIT_NULL;
1488 fra.me.REG[2] = NIT_NULL;
1489 fra.me.REG[3] = NIT_NULL;
1490 fra.me.REG[4] = NIT_NULL;
1491 fra.me.REG[0] = p0;
1492 fra.me.REG[1] = p1;
1493 /* ./syntax//typing.nit:230 */
1494 fra.me.REG[2] = fra.me.REG[0];
1495 fra.me.REG[3] = fra.me.REG[1];
1496 /* ./syntax//typing.nit:232 */
1497 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1498 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1499 /* ./syntax//typing.nit:233 */
1500 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1501 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1502 /* ./syntax//typing.nit:234 */
1503 REGB0 = TAG_Bool(false);
1504 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1505 /* ./syntax//typing.nit:235 */
1506 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1507 stack_frame_head = fra.me.prev;
1508 return;
1509 }
1510 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1511 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1512 val_t REGB0;
1513 val_t REGB1;
1514 val_t REGB2;
1515 val_t REGB3;
1516 val_t REGB4;
1517 val_t REGB5;
1518 val_t tmp;
1519 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1520 fra.me.file = LOCATE_syntax___typing;
1521 fra.me.line = 238;
1522 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1523 fra.me.has_broke = 0;
1524 fra.me.REG_size = 8;
1525 fra.me.REG[0] = NIT_NULL;
1526 fra.me.REG[1] = NIT_NULL;
1527 fra.me.REG[2] = NIT_NULL;
1528 fra.me.REG[3] = NIT_NULL;
1529 fra.me.REG[4] = NIT_NULL;
1530 fra.me.REG[5] = NIT_NULL;
1531 fra.me.REG[6] = NIT_NULL;
1532 fra.me.REG[7] = NIT_NULL;
1533 fra.me.REG[0] = p0;
1534 fra.me.REG[1] = p1;
1535 /* ./syntax//typing.nit:238 */
1536 fra.me.REG[2] = fra.me.REG[0];
1537 fra.me.REG[3] = fra.me.REG[1];
1538 /* ./syntax//typing.nit:240 */
1539 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1540 /* ./syntax//typing.nit:241 */
1541 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1542 if (UNTAG_Bool(REGB0)) {
1543 REGB0 = TAG_Bool(true);
1544 } else {
1545 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1546 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1547 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1548 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1549 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1550 if (UNTAG_Bool(REGB1)) {
1551 } else {
1552 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1553 REGB1 = REGB2;
1554 }
1555 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1556 REGB0 = REGB1;
1557 }
1558 if (UNTAG_Bool(REGB0)) {
1559 } else {
1560 /* ./syntax//typing.nit:244 */
1561 REGB0 = TAG_Int(0);
1562 /* ./syntax//typing.nit:245 */
1563 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1564 /* ./../lib/standard//collection//array.nit:24 */
1565 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1566 if (UNTAG_Bool(REGB1)) {
1567 } else {
1568 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1569 }
1570 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1571 /* ./syntax//typing.nit:246 */
1572 fra.me.REG[4] = NIT_NULL;
1573 /* ./syntax//typing.nit:247 */
1574 fra.me.REG[1] = NIT_NULL;
1575 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1576 if (UNTAG_Bool(REGB2)) {
1577 } else {
1578 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1579 }
1580 /* ./../lib/standard//kernel.nit:232 */
1581 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1582 /* ./syntax//typing.nit:248 */
1583 if (UNTAG_Bool(REGB2)) {
1584 /* ./syntax//typing.nit:249 */
1585 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1586 /* ./../lib/standard//collection//array.nit:278 */
1587 REGB2 = REGB0;
1588 /* ./../lib/standard//collection//array.nit:280 */
1589 REGB3 = TAG_Int(0);
1590 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1591 if (UNTAG_Bool(REGB4)) {
1592 } else {
1593 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1594 }
1595 /* ./../lib/standard//kernel.nit:233 */
1596 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1597 /* ./../lib/standard//collection//array.nit:280 */
1598 if (UNTAG_Bool(REGB3)) {
1599 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1600 if (UNTAG_Bool(REGB3)) {
1601 } else {
1602 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1603 }
1604 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1605 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1606 if (UNTAG_Bool(REGB4)) {
1607 } else {
1608 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1609 }
1610 /* ./../lib/standard//kernel.nit:232 */
1611 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1612 } else {
1613 /* ./../lib/standard//collection//array.nit:280 */
1614 REGB4 = TAG_Bool(false);
1615 REGB3 = REGB4;
1616 }
1617 if (UNTAG_Bool(REGB3)) {
1618 } else {
1619 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1620 }
1621 /* ./../lib/standard//collection//array.nit:281 */
1622 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1623 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1624 if (UNTAG_Bool(REGB3)) {
1625 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1626 }
1627 /* ./../lib/standard//collection//array.nit:718 */
1628 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1629 /* ./../lib/standard//collection//array.nit:281 */
1630 goto label1;
1631 label1: while(0);
1632 /* ./syntax//typing.nit:249 */
1633 fra.me.REG[4] = fra.me.REG[5];
1634 /* ./syntax//typing.nit:250 */
1635 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1636 if (UNTAG_Bool(REGB2)) {
1637 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1638 }
1639 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1640 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1641 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1642 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1643 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1644 fra.me.REG[1] = fra.me.REG[6];
1645 }
1646 /* ./syntax//typing.nit:252 */
1647 REGB2 = TAG_Int(0);
1648 /* ./syntax//typing.nit:253 */
1649 while(1) {
1650 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1651 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1652 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1653 /* ./../lib/standard//collection//array.nit:24 */
1654 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1655 if (UNTAG_Bool(REGB3)) {
1656 } else {
1657 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1658 }
1659 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1660 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1661 if (UNTAG_Bool(REGB4)) {
1662 } else {
1663 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1664 }
1665 /* ./../lib/standard//kernel.nit:232 */
1666 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1667 /* ./syntax//typing.nit:253 */
1668 if (UNTAG_Bool(REGB3)) {
1669 /* ./syntax//typing.nit:254 */
1670 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1671 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1672 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1673 /* ./../lib/standard//collection//array.nit:278 */
1674 REGB3 = REGB2;
1675 /* ./../lib/standard//collection//array.nit:280 */
1676 REGB4 = TAG_Int(0);
1677 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1678 if (UNTAG_Bool(REGB5)) {
1679 } else {
1680 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1681 }
1682 /* ./../lib/standard//kernel.nit:233 */
1683 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1684 /* ./../lib/standard//collection//array.nit:280 */
1685 if (UNTAG_Bool(REGB4)) {
1686 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1687 if (UNTAG_Bool(REGB4)) {
1688 } else {
1689 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1690 }
1691 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1692 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1693 if (UNTAG_Bool(REGB5)) {
1694 } else {
1695 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1696 }
1697 /* ./../lib/standard//kernel.nit:232 */
1698 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1699 } else {
1700 /* ./../lib/standard//collection//array.nit:280 */
1701 REGB5 = TAG_Bool(false);
1702 REGB4 = REGB5;
1703 }
1704 if (UNTAG_Bool(REGB4)) {
1705 } else {
1706 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1707 }
1708 /* ./../lib/standard//collection//array.nit:281 */
1709 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1710 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1711 if (UNTAG_Bool(REGB4)) {
1712 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1713 }
1714 /* ./../lib/standard//collection//array.nit:718 */
1715 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1716 /* ./../lib/standard//collection//array.nit:281 */
1717 goto label2;
1718 label2: while(0);
1719 /* ./syntax//typing.nit:255 */
1720 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1721 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1722 if (UNTAG_Bool(REGB3)) {
1723 REGB3 = TAG_Bool(true);
1724 } else {
1725 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1726 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1727 REGB3 = REGB4;
1728 }
1729 if (UNTAG_Bool(REGB3)) {
1730 REGB3 = TAG_Bool(true);
1731 } else {
1732 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1733 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1734 REGB3 = REGB4;
1735 }
1736 if (UNTAG_Bool(REGB3)) {
1737 REGB3 = TAG_Bool(true);
1738 } else {
1739 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1740 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1741 REGB3 = REGB4;
1742 }
1743 if (UNTAG_Bool(REGB3)) {
1744 /* ./syntax//typing.nit:256 */
1745 REGB3 = TAG_Int(1);
1746 /* ./../lib/standard//kernel.nit:235 */
1747 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1748 /* ./syntax//typing.nit:256 */
1749 REGB2 = REGB3;
1750 } else {
1751 /* ./syntax//typing.nit:257 */
1752 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1753 if (UNTAG_Bool(REGB3)) {
1754 } else {
1755 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1756 if (UNTAG_Bool(REGB4)) {
1757 REGB4 = TAG_Bool(false);
1758 REGB3 = REGB4;
1759 } else {
1760 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1761 REGB3 = REGB4;
1762 }
1763 }
1764 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1765 if (UNTAG_Bool(REGB3)) {
1766 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1767 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1768 if (UNTAG_Bool(REGB3)) {
1769 REGB3 = TAG_Bool(true);
1770 } else {
1771 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1772 if (UNTAG_Bool(REGB4)) {
1773 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1774 }
1775 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1776 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1777 REGB3 = REGB4;
1778 }
1779 } else {
1780 REGB4 = TAG_Bool(false);
1781 REGB3 = REGB4;
1782 }
1783 if (UNTAG_Bool(REGB3)) {
1784 /* ./syntax//typing.nit:258 */
1785 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1786 if (UNTAG_Bool(REGB3)) {
1787 } else {
1788 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1789 REGB3 = REGB4;
1790 }
1791 if (UNTAG_Bool(REGB3)) {
1792 REGB3 = TAG_Int(1);
1793 /* ./../lib/standard//kernel.nit:235 */
1794 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1795 /* ./syntax//typing.nit:258 */
1796 REGB2 = REGB3;
1797 }
1798 /* ./syntax//typing.nit:259 */
1799 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1800 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1801 if (UNTAG_Bool(REGB3)) {
1802 } else {
1803 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1804 }
1805 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1806 /* ./syntax//typing.nit:260 */
1807 REGB3 = TAG_Int(1);
1808 /* ./../lib/standard//kernel.nit:235 */
1809 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1810 /* ./syntax//typing.nit:260 */
1811 REGB0 = REGB3;
1812 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1813 if (UNTAG_Bool(REGB3)) {
1814 } else {
1815 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1816 }
1817 /* ./../lib/standard//kernel.nit:232 */
1818 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1819 /* ./syntax//typing.nit:261 */
1820 if (UNTAG_Bool(REGB3)) {
1821 /* ./syntax//typing.nit:262 */
1822 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1823 /* ./../lib/standard//collection//array.nit:278 */
1824 REGB3 = REGB0;
1825 /* ./../lib/standard//collection//array.nit:280 */
1826 REGB4 = TAG_Int(0);
1827 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1828 if (UNTAG_Bool(REGB5)) {
1829 } else {
1830 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1831 }
1832 /* ./../lib/standard//kernel.nit:233 */
1833 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1834 /* ./../lib/standard//collection//array.nit:280 */
1835 if (UNTAG_Bool(REGB4)) {
1836 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1837 if (UNTAG_Bool(REGB4)) {
1838 } else {
1839 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1840 }
1841 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1842 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1843 if (UNTAG_Bool(REGB5)) {
1844 } else {
1845 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1846 }
1847 /* ./../lib/standard//kernel.nit:232 */
1848 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1849 } else {
1850 /* ./../lib/standard//collection//array.nit:280 */
1851 REGB5 = TAG_Bool(false);
1852 REGB4 = REGB5;
1853 }
1854 if (UNTAG_Bool(REGB4)) {
1855 } else {
1856 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
1857 }
1858 /* ./../lib/standard//collection//array.nit:281 */
1859 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1860 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1861 if (UNTAG_Bool(REGB4)) {
1862 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1863 }
1864 /* ./../lib/standard//collection//array.nit:718 */
1865 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1866 /* ./../lib/standard//collection//array.nit:281 */
1867 goto label3;
1868 label3: while(0);
1869 /* ./syntax//typing.nit:262 */
1870 fra.me.REG[4] = fra.me.REG[5];
1871 /* ./syntax//typing.nit:263 */
1872 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1873 if (UNTAG_Bool(REGB3)) {
1874 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1875 }
1876 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1877 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1878 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1879 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1880 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1881 fra.me.REG[1] = fra.me.REG[7];
1882 } else {
1883 /* ./syntax//typing.nit:265 */
1884 fra.me.REG[4] = NIT_NULL;
1885 /* ./syntax//typing.nit:266 */
1886 fra.me.REG[1] = NIT_NULL;
1887 }
1888 } else {
1889 /* ./syntax//typing.nit:269 */
1890 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1891 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]);
1892 /* ./syntax//typing.nit:270 */
1893 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1894 if (UNTAG_Bool(REGB3)) {
1895 } else {
1896 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1897 if (UNTAG_Bool(REGB4)) {
1898 REGB4 = TAG_Bool(false);
1899 REGB3 = REGB4;
1900 } else {
1901 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1902 REGB3 = REGB4;
1903 }
1904 }
1905 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1906 if (UNTAG_Bool(REGB3)) {
1907 /* ./syntax//typing.nit:271 */
1908 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1909 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1910 }
1911 /* ./syntax//typing.nit:273 */
1912 REGB3 = TAG_Int(1);
1913 /* ./../lib/standard//kernel.nit:235 */
1914 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1915 /* ./syntax//typing.nit:273 */
1916 REGB2 = REGB3;
1917 }
1918 }
1919 } else {
1920 /* ./syntax//typing.nit:253 */
1921 goto label4;
1922 }
1923 }
1924 label4: while(0);
1925 }
1926 stack_frame_head = fra.me.prev;
1927 return;
1928 }
1929 void syntax___typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
1930 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1931 val_t REGB0;
1932 val_t tmp;
1933 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1934 fra.me.file = LOCATE_syntax___typing;
1935 fra.me.line = 281;
1936 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___accept_typing;
1937 fra.me.has_broke = 0;
1938 fra.me.REG_size = 3;
1939 fra.me.REG[0] = NIT_NULL;
1940 fra.me.REG[1] = NIT_NULL;
1941 fra.me.REG[2] = NIT_NULL;
1942 fra.me.REG[0] = p0;
1943 fra.me.REG[1] = p1;
1944 /* ./syntax//typing.nit:281 */
1945 fra.me.REG[2] = fra.me.REG[1];
1946 /* ./syntax//typing.nit:283 */
1947 REGB0 = TAG_Bool(false);
1948 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
1949 /* ./syntax//typing.nit:284 */
1950 CALL_SUPER_syntax___typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1951 stack_frame_head = fra.me.prev;
1952 return;
1953 }
1954 void syntax___typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
1955 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1956 val_t tmp;
1957 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1958 fra.me.file = LOCATE_syntax___typing;
1959 fra.me.line = 286;
1960 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___after_typing;
1961 fra.me.has_broke = 0;
1962 fra.me.REG_size = 2;
1963 fra.me.REG[0] = NIT_NULL;
1964 fra.me.REG[1] = NIT_NULL;
1965 fra.me.REG[0] = p0;
1966 fra.me.REG[1] = p1;
1967 /* ./syntax//typing.nit:288 */
1968 CALL_SUPER_syntax___typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1969 stack_frame_head = fra.me.prev;
1970 return;
1971 }
1972 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
1973 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1974 val_t tmp;
1975 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1976 fra.me.file = LOCATE_syntax___typing;
1977 fra.me.line = 293;
1978 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
1979 fra.me.has_broke = 0;
1980 fra.me.REG_size = 2;
1981 fra.me.REG[0] = NIT_NULL;
1982 fra.me.REG[1] = NIT_NULL;
1983 fra.me.REG[0] = p0;
1984 fra.me.REG[1] = p1;
1985 /* ./syntax//typing.nit:295 */
1986 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
1987 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1988 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1989 stack_frame_head = fra.me.prev;
1990 return;
1991 }
1992 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
1993 struct {struct stack_frame_t me;} fra;
1994 val_t tmp;
1995 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1996 fra.me.file = LOCATE_syntax___typing;
1997 fra.me.line = 300;
1998 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
1999 fra.me.has_broke = 0;
2000 fra.me.REG_size = 1;
2001 fra.me.REG[0] = NIT_NULL;
2002 fra.me.REG[0] = p0;
2003 /* ./syntax//typing.nit:300 */
2004 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
2005 stack_frame_head = fra.me.prev;
2006 return fra.me.REG[0];
2007 }
2008 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
2009 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
2010 val_t REGB0;
2011 val_t REGB1;
2012 val_t REGB2;
2013 val_t tmp;
2014 static val_t once_value_1; /* Once value */
2015 static val_t once_value_2; /* Once value */
2016 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2017 fra.me.file = LOCATE_syntax___typing;
2018 fra.me.line = 303;
2019 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
2020 fra.me.has_broke = 0;
2021 fra.me.REG_size = 10;
2022 fra.me.REG[0] = NIT_NULL;
2023 fra.me.REG[1] = NIT_NULL;
2024 fra.me.REG[2] = NIT_NULL;
2025 fra.me.REG[3] = NIT_NULL;
2026 fra.me.REG[4] = NIT_NULL;
2027 fra.me.REG[5] = NIT_NULL;
2028 fra.me.REG[6] = NIT_NULL;
2029 fra.me.REG[7] = NIT_NULL;
2030 fra.me.REG[8] = NIT_NULL;
2031 fra.me.REG[9] = NIT_NULL;
2032 fra.me.REG[0] = p0;
2033 fra.me.REG[1] = p1;
2034 /* ./syntax//typing.nit:303 */
2035 fra.me.REG[2] = fra.me.REG[0];
2036 fra.me.REG[3] = fra.me.REG[1];
2037 /* ./syntax//typing.nit:306 */
2038 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2039 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2040 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2041 /* ./syntax//typing.nit:308 */
2042 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2043 /* ./syntax//typing.nit:309 */
2044 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2045 /* ./syntax//typing.nit:310 */
2046 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2047 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2048 /* ./syntax//typing.nit:312 */
2049 fra.me.REG[6] = NIT_NULL;
2050 /* ./syntax//typing.nit:313 */
2051 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2052 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2053 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2054 if (UNTAG_Bool(REGB0)) {
2055 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 313);
2056 }
2057 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2058 /* ./syntax//typing.nit:314 */
2059 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2060 if (UNTAG_Bool(REGB0)) {
2061 } else {
2062 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2063 if (UNTAG_Bool(REGB1)) {
2064 REGB1 = TAG_Bool(false);
2065 REGB0 = REGB1;
2066 } else {
2067 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2068 REGB0 = REGB1;
2069 }
2070 }
2071 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2072 if (UNTAG_Bool(REGB0)) {
2073 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2074 fra.me.REG[6] = fra.me.REG[8];
2075 }
2076 /* ./syntax//typing.nit:315 */
2077 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2078 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2079 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2080 /* ./syntax//typing.nit:316 */
2081 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2082 /* ./syntax//typing.nit:317 */
2083 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2084 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2085 /* ./syntax//typing.nit:319 */
2086 REGB0 = TAG_Bool(true);
2087 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2088 /* ./syntax//typing.nit:321 */
2089 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2090 /* ./syntax//typing.nit:323 */
2091 REGB0 = TAG_Bool(false);
2092 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2093 /* ./syntax//typing.nit:325 */
2094 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2095 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2096 if (UNTAG_Bool(REGB0)) {
2097 } else {
2098 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2099 if (UNTAG_Bool(REGB1)) {
2100 REGB1 = TAG_Bool(false);
2101 REGB0 = REGB1;
2102 } else {
2103 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2104 REGB0 = REGB1;
2105 }
2106 }
2107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2108 if (UNTAG_Bool(REGB0)) {
2109 /* ./syntax//typing.nit:326 */
2110 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2111 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2112 REGB1 = TAG_Bool(false);
2113 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2114 if (UNTAG_Bool(REGB2)) {
2115 } else {
2116 /* ./../lib/standard//kernel.nit:195 */
2117 REGB1 = TAG_Bool((REGB0)==(REGB1));
2118 /* ./syntax//typing.nit:326 */
2119 REGB2 = REGB1;
2120 }
2121 if (UNTAG_Bool(REGB2)) {
2122 /* ./syntax//typing.nit:327 */
2123 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2124 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2125 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2126 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2127 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2128 if (UNTAG_Bool(REGB2)) {
2129 } else {
2130 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2131 if (UNTAG_Bool(REGB1)) {
2132 REGB1 = TAG_Bool(false);
2133 REGB2 = REGB1;
2134 } else {
2135 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2136 REGB2 = REGB1;
2137 }
2138 }
2139 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2140 if (UNTAG_Bool(REGB2)) {
2141 /* ./syntax//typing.nit:328 */
2142 if (!once_value_1) {
2143 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2144 REGB2 = TAG_Int(77);
2145 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
2146 once_value_1 = fra.me.REG[1];
2147 register_static_object(&once_value_1);
2148 } else fra.me.REG[1] = once_value_1;
2149 fra.me.REG[1] = fra.me.REG[1];
2150 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2151 } else {
2152 /* ./syntax//typing.nit:329 */
2153 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2154 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2155 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2156 if (UNTAG_Bool(REGB2)) {
2157 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2158 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2159 if (UNTAG_Bool(REGB2)) {
2160 } else {
2161 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2162 if (UNTAG_Bool(REGB1)) {
2163 REGB1 = TAG_Bool(false);
2164 REGB2 = REGB1;
2165 } else {
2166 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2167 REGB2 = REGB1;
2168 }
2169 }
2170 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2171 } else {
2172 REGB1 = TAG_Bool(false);
2173 REGB2 = REGB1;
2174 }
2175 if (UNTAG_Bool(REGB2)) {
2176 /* ./syntax//typing.nit:330 */
2177 if (!once_value_2) {
2178 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2179 REGB2 = TAG_Int(80);
2180 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
2181 once_value_2 = fra.me.REG[8];
2182 register_static_object(&once_value_2);
2183 } else fra.me.REG[8] = once_value_2;
2184 fra.me.REG[8] = fra.me.REG[8];
2185 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2186 }
2187 }
2188 }
2189 }
2190 /* ./syntax//typing.nit:334 */
2191 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2192 if (UNTAG_Bool(REGB2)) {
2193 } else {
2194 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2195 if (UNTAG_Bool(REGB1)) {
2196 REGB1 = TAG_Bool(false);
2197 REGB2 = REGB1;
2198 } else {
2199 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2200 REGB2 = REGB1;
2201 }
2202 }
2203 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2204 if (UNTAG_Bool(REGB2)) {
2205 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2206 if (UNTAG_Bool(REGB2)) {
2207 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 334);
2208 }
2209 /* ./../lib/standard//collection//array.nit:269 */
2210 REGB2 = TAG_Int(0);
2211 /* ./../lib/standard//collection//array.nit:270 */
2212 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2213 if (UNTAG_Bool(REGB1)) {
2214 } else {
2215 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2216 }
2217 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2218 /* ./../lib/standard//collection//array.nit:271 */
2219 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2220 /* ./../lib/standard//collection//array.nit:272 */
2221 while(1) {
2222 /* ./../lib/standard//collection//array.nit:24 */
2223 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2224 if (UNTAG_Bool(REGB1)) {
2225 } else {
2226 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2227 }
2228 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2229 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2230 if (UNTAG_Bool(REGB0)) {
2231 } else {
2232 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2233 }
2234 /* ./../lib/standard//kernel.nit:232 */
2235 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2236 /* ./../lib/standard//collection//array.nit:272 */
2237 if (UNTAG_Bool(REGB1)) {
2238 /* ./../lib/standard//collection//array.nit:273 */
2239 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2240 if (UNTAG_Bool(REGB1)) {
2241 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2242 }
2243 /* ./../lib/standard//collection//array.nit:718 */
2244 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2245 /* ./syntax//typing.nit:335 */
2246 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2247 /* ./../lib/standard//collection//array.nit:274 */
2248 REGB1 = TAG_Int(1);
2249 /* ./../lib/standard//kernel.nit:235 */
2250 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2251 /* ./../lib/standard//collection//array.nit:274 */
2252 REGB2 = REGB1;
2253 } else {
2254 /* ./../lib/standard//collection//array.nit:272 */
2255 goto label3;
2256 }
2257 }
2258 label3: while(0);
2259 }
2260 /* ./syntax//typing.nit:338 */
2261 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2262 /* ./syntax//typing.nit:339 */
2263 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2264 /* ./syntax//typing.nit:340 */
2265 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2266 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2267 stack_frame_head = fra.me.prev;
2268 return;
2269 }
2270 val_t syntax___typing___AType___stype(val_t p0){
2271 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2272 val_t REGB0;
2273 val_t tmp;
2274 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2275 fra.me.file = LOCATE_syntax___typing;
2276 fra.me.line = 345;
2277 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2278 fra.me.has_broke = 0;
2279 fra.me.REG_size = 2;
2280 fra.me.REG[0] = NIT_NULL;
2281 fra.me.REG[1] = NIT_NULL;
2282 fra.me.REG[0] = p0;
2283 /* ./syntax//typing.nit:345 */
2284 fra.me.REG[1] = fra.me.REG[0];
2285 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2286 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2287 if (UNTAG_Bool(REGB0)) {
2288 } else {
2289 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 345);
2290 }
2291 goto label1;
2292 label1: while(0);
2293 stack_frame_head = fra.me.prev;
2294 return fra.me.REG[1];
2295 }
2296 val_t syntax___typing___AType___is_typed(val_t p0){
2297 struct {struct stack_frame_t me;} fra;
2298 val_t REGB0;
2299 val_t REGB1;
2300 val_t tmp;
2301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2302 fra.me.file = LOCATE_syntax___typing;
2303 fra.me.line = 346;
2304 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2305 fra.me.has_broke = 0;
2306 fra.me.REG_size = 1;
2307 fra.me.REG[0] = NIT_NULL;
2308 fra.me.REG[0] = p0;
2309 /* ./syntax//typing.nit:346 */
2310 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2311 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2312 if (UNTAG_Bool(REGB0)) {
2313 } else {
2314 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2315 if (UNTAG_Bool(REGB1)) {
2316 REGB1 = TAG_Bool(false);
2317 REGB0 = REGB1;
2318 } else {
2319 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2320 REGB0 = REGB1;
2321 }
2322 }
2323 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2324 goto label1;
2325 label1: while(0);
2326 stack_frame_head = fra.me.prev;
2327 return REGB0;
2328 }
2329 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2330 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2331 val_t tmp;
2332 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2333 fra.me.file = LOCATE_syntax___typing;
2334 fra.me.line = 349;
2335 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2336 fra.me.has_broke = 0;
2337 fra.me.REG_size = 2;
2338 fra.me.REG[0] = NIT_NULL;
2339 fra.me.REG[1] = NIT_NULL;
2340 fra.me.REG[0] = p0;
2341 fra.me.REG[1] = p1;
2342 /* ./syntax//typing.nit:351 */
2343 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2344 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2345 stack_frame_head = fra.me.prev;
2346 return;
2347 }
2348 val_t syntax___typing___AExpr___is_typed(val_t p0){
2349 struct {struct stack_frame_t me;} fra;
2350 val_t REGB0;
2351 val_t tmp;
2352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2353 fra.me.file = LOCATE_syntax___typing;
2354 fra.me.line = 356;
2355 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2356 fra.me.has_broke = 0;
2357 fra.me.REG_size = 1;
2358 fra.me.REG[0] = NIT_NULL;
2359 fra.me.REG[0] = p0;
2360 /* ./syntax//typing.nit:356 */
2361 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2362 if (UNTAG_Bool(REGB0)) {
2363 } else {
2364 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 356);
2365 }
2366 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2367 stack_frame_head = fra.me.prev;
2368 return REGB0;
2369 }
2370 val_t syntax___typing___AExpr___is_statement(val_t p0){
2371 struct {struct stack_frame_t me;} fra;
2372 val_t REGB0;
2373 val_t REGB1;
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 = 357;
2378 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
2379 fra.me.has_broke = 0;
2380 fra.me.REG_size = 1;
2381 fra.me.REG[0] = NIT_NULL;
2382 fra.me.REG[0] = p0;
2383 /* ./syntax//typing.nit:357 */
2384 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2385 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2386 if (UNTAG_Bool(REGB0)) {
2387 } else {
2388 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2389 if (UNTAG_Bool(REGB1)) {
2390 REGB1 = TAG_Bool(false);
2391 REGB0 = REGB1;
2392 } else {
2393 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2394 REGB0 = REGB1;
2395 }
2396 }
2397 goto label1;
2398 label1: while(0);
2399 stack_frame_head = fra.me.prev;
2400 return REGB0;
2401 }
2402 val_t syntax___typing___AExpr___stype(val_t p0){
2403 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2404 val_t REGB0;
2405 val_t tmp;
2406 static val_t once_value_1; /* Once value */
2407 static val_t once_value_2; /* Once value */
2408 static val_t once_value_3; /* Once value */
2409 static val_t once_value_4; /* Once value */
2410 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2411 fra.me.file = LOCATE_syntax___typing;
2412 fra.me.line = 358;
2413 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2414 fra.me.has_broke = 0;
2415 fra.me.REG_size = 4;
2416 fra.me.REG[0] = NIT_NULL;
2417 fra.me.REG[1] = NIT_NULL;
2418 fra.me.REG[2] = NIT_NULL;
2419 fra.me.REG[3] = NIT_NULL;
2420 fra.me.REG[0] = p0;
2421 /* ./syntax//typing.nit:358 */
2422 fra.me.REG[1] = fra.me.REG[0];
2423 /* ./syntax//typing.nit:360 */
2424 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2425 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2426 if (UNTAG_Bool(REGB0)) {
2427 /* ./syntax//typing.nit:361 */
2428 REGB0 = TAG_Int(3);
2429 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2430 if (!once_value_1) {
2431 fra.me.REG[3] = BOX_NativeString("");
2432 REGB0 = TAG_Int(0);
2433 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2434 once_value_1 = fra.me.REG[3];
2435 register_static_object(&once_value_1);
2436 } else fra.me.REG[3] = once_value_1;
2437 fra.me.REG[3] = fra.me.REG[3];
2438 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2439 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2440 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2441 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2442 if (!once_value_2) {
2443 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2444 REGB0 = TAG_Int(14);
2445 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2446 once_value_2 = fra.me.REG[3];
2447 register_static_object(&once_value_2);
2448 } else fra.me.REG[3] = once_value_2;
2449 fra.me.REG[3] = fra.me.REG[3];
2450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2451 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2452 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2453 /* ./syntax//typing.nit:362 */
2454 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 362);
2455 }
2456 /* ./syntax//typing.nit:364 */
2457 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2458 if (UNTAG_Bool(REGB0)) {
2459 /* ./syntax//typing.nit:365 */
2460 REGB0 = TAG_Int(3);
2461 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2462 if (!once_value_3) {
2463 fra.me.REG[3] = BOX_NativeString("");
2464 REGB0 = TAG_Int(0);
2465 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2466 once_value_3 = fra.me.REG[3];
2467 register_static_object(&once_value_3);
2468 } else fra.me.REG[3] = once_value_3;
2469 fra.me.REG[3] = fra.me.REG[3];
2470 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2471 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2472 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2473 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2474 if (!once_value_4) {
2475 fra.me.REG[3] = BOX_NativeString(": is_statement");
2476 REGB0 = TAG_Int(14);
2477 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2478 once_value_4 = fra.me.REG[3];
2479 register_static_object(&once_value_4);
2480 } else fra.me.REG[3] = once_value_4;
2481 fra.me.REG[3] = fra.me.REG[3];
2482 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2483 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2484 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2485 /* ./syntax//typing.nit:366 */
2486 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 366);
2487 }
2488 /* ./syntax//typing.nit:368 */
2489 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2490 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2491 if (UNTAG_Bool(REGB0)) {
2492 } else {
2493 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 368);
2494 }
2495 goto label5;
2496 label5: while(0);
2497 stack_frame_head = fra.me.prev;
2498 return fra.me.REG[1];
2499 }
2500 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2501 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2502 val_t REGB0;
2503 val_t tmp;
2504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2505 fra.me.file = LOCATE_syntax___typing;
2506 fra.me.line = 372;
2507 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2508 fra.me.has_broke = 0;
2509 fra.me.REG_size = 2;
2510 fra.me.REG[0] = NIT_NULL;
2511 fra.me.REG[1] = NIT_NULL;
2512 fra.me.REG[0] = p0;
2513 fra.me.REG[1] = p1;
2514 /* ./syntax//typing.nit:375 */
2515 REGB0 = TAG_Bool(true);
2516 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2517 stack_frame_head = fra.me.prev;
2518 return;
2519 }
2520 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2521 struct {struct stack_frame_t me;} fra;
2522 val_t REGB0;
2523 val_t tmp;
2524 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2525 fra.me.file = LOCATE_syntax___typing;
2526 fra.me.line = 378;
2527 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2528 fra.me.has_broke = 0;
2529 fra.me.REG_size = 1;
2530 fra.me.REG[0] = NIT_NULL;
2531 fra.me.REG[0] = p0;
2532 /* ./syntax//typing.nit:379 */
2533 REGB0 = TAG_Bool(false);
2534 goto label1;
2535 label1: while(0);
2536 stack_frame_head = fra.me.prev;
2537 return REGB0;
2538 }
2539 val_t syntax___typing___AExpr___is_self(val_t p0){
2540 struct {struct stack_frame_t me;} fra;
2541 val_t REGB0;
2542 val_t tmp;
2543 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2544 fra.me.file = LOCATE_syntax___typing;
2545 fra.me.line = 381;
2546 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2547 fra.me.has_broke = 0;
2548 fra.me.REG_size = 1;
2549 fra.me.REG[0] = NIT_NULL;
2550 fra.me.REG[0] = p0;
2551 /* ./syntax//typing.nit:382 */
2552 REGB0 = TAG_Bool(false);
2553 goto label1;
2554 label1: while(0);
2555 stack_frame_head = fra.me.prev;
2556 return REGB0;
2557 }
2558 val_t syntax___typing___AExpr___its_variable(val_t p0){
2559 struct {struct stack_frame_t me;} fra;
2560 val_t tmp;
2561 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2562 fra.me.file = LOCATE_syntax___typing;
2563 fra.me.line = 384;
2564 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2565 fra.me.has_broke = 0;
2566 fra.me.REG_size = 1;
2567 fra.me.REG[0] = NIT_NULL;
2568 fra.me.REG[0] = p0;
2569 /* ./syntax//typing.nit:385 */
2570 fra.me.REG[0] = NIT_NULL;
2571 goto label1;
2572 label1: while(0);
2573 stack_frame_head = fra.me.prev;
2574 return fra.me.REG[0];
2575 }
2576 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2577 struct {struct stack_frame_t me;} fra;
2578 val_t tmp;
2579 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2580 fra.me.file = LOCATE_syntax___typing;
2581 fra.me.line = 387;
2582 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2583 fra.me.has_broke = 0;
2584 fra.me.REG_size = 1;
2585 fra.me.REG[0] = NIT_NULL;
2586 fra.me.REG[0] = p0;
2587 /* ./syntax//typing.nit:387 */
2588 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2589 stack_frame_head = fra.me.prev;
2590 return fra.me.REG[0];
2591 }
2592 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2593 struct {struct stack_frame_t me;} fra;
2594 val_t tmp;
2595 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2596 fra.me.file = LOCATE_syntax___typing;
2597 fra.me.line = 390;
2598 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2599 fra.me.has_broke = 0;
2600 fra.me.REG_size = 1;
2601 fra.me.REG[0] = NIT_NULL;
2602 fra.me.REG[0] = p0;
2603 /* ./syntax//typing.nit:390 */
2604 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2605 stack_frame_head = fra.me.prev;
2606 return fra.me.REG[0];
2607 }
2608 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2609 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2610 val_t REGB0;
2611 val_t tmp;
2612 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2613 fra.me.file = LOCATE_syntax___typing;
2614 fra.me.line = 396;
2615 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2616 fra.me.has_broke = 0;
2617 fra.me.REG_size = 2;
2618 fra.me.REG[0] = NIT_NULL;
2619 fra.me.REG[1] = NIT_NULL;
2620 fra.me.REG[0] = p0;
2621 /* ./syntax//typing.nit:396 */
2622 fra.me.REG[1] = fra.me.REG[0];
2623 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2624 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2625 if (UNTAG_Bool(REGB0)) {
2626 } else {
2627 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 396);
2628 }
2629 goto label1;
2630 label1: while(0);
2631 stack_frame_head = fra.me.prev;
2632 return fra.me.REG[1];
2633 }
2634 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2635 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2636 val_t REGB0;
2637 val_t REGB1;
2638 val_t tmp;
2639 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2640 fra.me.file = LOCATE_syntax___typing;
2641 fra.me.line = 398;
2642 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2643 fra.me.has_broke = 0;
2644 fra.me.REG_size = 5;
2645 fra.me.REG[0] = NIT_NULL;
2646 fra.me.REG[1] = NIT_NULL;
2647 fra.me.REG[2] = NIT_NULL;
2648 fra.me.REG[3] = NIT_NULL;
2649 fra.me.REG[4] = NIT_NULL;
2650 fra.me.REG[0] = p0;
2651 fra.me.REG[1] = p1;
2652 /* ./syntax//typing.nit:400 */
2653 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2654 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2655 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2656 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2657 /* ./syntax//typing.nit:401 */
2658 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2659 /* ./syntax//typing.nit:402 */
2660 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2661 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2662 /* ./syntax//typing.nit:403 */
2663 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2664 /* ./syntax//typing.nit:404 */
2665 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2666 if (UNTAG_Bool(REGB0)) {
2667 } else {
2668 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2669 if (UNTAG_Bool(REGB1)) {
2670 REGB1 = TAG_Bool(false);
2671 REGB0 = REGB1;
2672 } else {
2673 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2674 REGB0 = REGB1;
2675 }
2676 }
2677 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2678 if (UNTAG_Bool(REGB0)) {
2679 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2680 }
2681 /* ./syntax//typing.nit:406 */
2682 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2683 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2684 if (UNTAG_Bool(REGB0)) {
2685 } else {
2686 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2687 if (UNTAG_Bool(REGB1)) {
2688 REGB1 = TAG_Bool(false);
2689 REGB0 = REGB1;
2690 } else {
2691 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2692 REGB0 = REGB1;
2693 }
2694 }
2695 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2696 if (UNTAG_Bool(REGB0)) {
2697 /* ./syntax//typing.nit:407 */
2698 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2699 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2700 if (UNTAG_Bool(REGB0)) {
2701 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 407);
2702 }
2703 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2704 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2705 if (UNTAG_Bool(REGB0)) {
2706 goto label1;
2707 }
2708 /* ./syntax//typing.nit:408 */
2709 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2710 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2711 if (UNTAG_Bool(REGB0)) {
2712 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 408);
2713 }
2714 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2715 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2716 /* ./syntax//typing.nit:409 */
2717 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2718 if (UNTAG_Bool(REGB0)) {
2719 } else {
2720 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2721 if (UNTAG_Bool(REGB1)) {
2722 REGB1 = TAG_Bool(false);
2723 REGB0 = REGB1;
2724 } else {
2725 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2726 REGB0 = REGB1;
2727 }
2728 }
2729 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2730 if (UNTAG_Bool(REGB0)) {
2731 /* ./syntax//typing.nit:410 */
2732 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2733 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2734 }
2735 } else {
2736 /* ./syntax//typing.nit:412 */
2737 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2738 if (UNTAG_Bool(REGB0)) {
2739 } else {
2740 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2741 if (UNTAG_Bool(REGB1)) {
2742 REGB1 = TAG_Bool(false);
2743 REGB0 = REGB1;
2744 } else {
2745 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2746 REGB0 = REGB1;
2747 }
2748 }
2749 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2750 if (UNTAG_Bool(REGB0)) {
2751 /* ./syntax//typing.nit:413 */
2752 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2753 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2754 if (UNTAG_Bool(REGB0)) {
2755 goto label1;
2756 }
2757 /* ./syntax//typing.nit:414 */
2758 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2759 if (UNTAG_Bool(REGB0)) {
2760 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 414);
2761 }
2762 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
2763 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
2764 } else {
2765 /* ./syntax//typing.nit:416 */
2766 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
2767 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
2768 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2769 }
2770 }
2771 /* ./syntax//typing.nit:418 */
2772 REGB0 = TAG_Bool(true);
2773 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2774 label1: while(0);
2775 stack_frame_head = fra.me.prev;
2776 return;
2777 }
2778 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
2779 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2780 val_t REGB0;
2781 val_t tmp;
2782 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2783 fra.me.file = LOCATE_syntax___typing;
2784 fra.me.line = 423;
2785 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2786 fra.me.has_broke = 0;
2787 fra.me.REG_size = 3;
2788 fra.me.REG[0] = NIT_NULL;
2789 fra.me.REG[1] = NIT_NULL;
2790 fra.me.REG[2] = NIT_NULL;
2791 fra.me.REG[0] = p0;
2792 fra.me.REG[1] = p1;
2793 /* ./syntax//typing.nit:425 */
2794 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2795 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));
2796 /* ./syntax//typing.nit:434 */
2797 REGB0 = TAG_Bool(true);
2798 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2799 stack_frame_head = fra.me.prev;
2800 return;
2801 }
2802 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){
2803 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2804 val_t REGB0;
2805 fun_t CREG[1];
2806 val_t tmp;
2807 static val_t once_value_2; /* Once value */
2808 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2809 fra.me.file = LOCATE_syntax___typing;
2810 fra.me.line = 0;
2811 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
2812 fra.me.has_broke = 0;
2813 fra.me.REG_size = 2;
2814 fra.me.REG[0] = NIT_NULL;
2815 fra.me.REG[1] = NIT_NULL;
2816 fra.me.closure_ctx = closctx_param;
2817 fra.me.closure_funs = CREG;
2818 fra.me.REG[0] = p0;
2819 CREG[0] = clos_fun0;
2820 /* ./syntax//typing.nit:426 */
2821 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2822 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2823 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2824 if (UNTAG_Bool(REGB0)) {
2825 /* ./syntax//typing.nit:427 */
2826 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2827 } else {
2828 /* ./syntax//typing.nit:428 */
2829 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2830 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
2831 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2832 if (UNTAG_Bool(REGB0)) {
2833 /* ./syntax//typing.nit:429 */
2834 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
2835 REGB0 = TAG_Bool(true);
2836 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
2837 /* ./syntax//typing.nit:430 */
2838 if (!once_value_2) {
2839 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
2840 REGB0 = TAG_Int(29);
2841 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
2842 once_value_2 = fra.me.REG[1];
2843 register_static_object(&once_value_2);
2844 } else fra.me.REG[1] = once_value_2;
2845 fra.me.REG[1] = fra.me.REG[1];
2846 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
2847 }
2848 }
2849 stack_frame_head = fra.me.prev;
2850 return;
2851 }
2852 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
2853 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2854 val_t REGB0;
2855 val_t REGB1;
2856 val_t tmp;
2857 static val_t once_value_1; /* Once value */
2858 static val_t once_value_3; /* Once value */
2859 static val_t once_value_4; /* Once value */
2860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2861 fra.me.file = LOCATE_syntax___typing;
2862 fra.me.line = 439;
2863 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
2864 fra.me.has_broke = 0;
2865 fra.me.REG_size = 5;
2866 fra.me.REG[0] = NIT_NULL;
2867 fra.me.REG[1] = NIT_NULL;
2868 fra.me.REG[2] = NIT_NULL;
2869 fra.me.REG[3] = NIT_NULL;
2870 fra.me.REG[4] = NIT_NULL;
2871 fra.me.REG[0] = p0;
2872 fra.me.REG[1] = p1;
2873 /* ./syntax//typing.nit:441 */
2874 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2875 /* ./syntax//typing.nit:442 */
2876 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
2877 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2878 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2879 if (UNTAG_Bool(REGB0)) {
2880 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 442);
2881 }
2882 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
2883 /* ./syntax//typing.nit:444 */
2884 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
2885 if (UNTAG_Bool(REGB0)) {
2886 /* ./syntax//typing.nit:445 */
2887 if (!once_value_1) {
2888 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
2889 REGB0 = TAG_Int(82);
2890 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2891 once_value_1 = fra.me.REG[3];
2892 register_static_object(&once_value_1);
2893 } else fra.me.REG[3] = once_value_1;
2894 fra.me.REG[3] = fra.me.REG[3];
2895 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
2896 /* ./syntax//typing.nit:446 */
2897 goto label2;
2898 }
2899 /* ./syntax//typing.nit:449 */
2900 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2901 /* ./syntax//typing.nit:450 */
2902 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2903 if (UNTAG_Bool(REGB0)) {
2904 } else {
2905 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2906 if (UNTAG_Bool(REGB1)) {
2907 REGB1 = TAG_Bool(false);
2908 REGB0 = REGB1;
2909 } else {
2910 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2911 REGB0 = REGB1;
2912 }
2913 }
2914 if (UNTAG_Bool(REGB0)) {
2915 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2916 if (UNTAG_Bool(REGB0)) {
2917 } else {
2918 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2919 if (UNTAG_Bool(REGB1)) {
2920 REGB1 = TAG_Bool(false);
2921 REGB0 = REGB1;
2922 } else {
2923 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2924 REGB0 = REGB1;
2925 }
2926 }
2927 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2928 } else {
2929 REGB1 = TAG_Bool(false);
2930 REGB0 = REGB1;
2931 }
2932 if (UNTAG_Bool(REGB0)) {
2933 /* ./syntax//typing.nit:451 */
2934 if (!once_value_3) {
2935 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
2936 REGB0 = TAG_Int(42);
2937 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2938 once_value_3 = fra.me.REG[4];
2939 register_static_object(&once_value_3);
2940 } else fra.me.REG[4] = once_value_3;
2941 fra.me.REG[4] = fra.me.REG[4];
2942 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2943 } else {
2944 /* ./syntax//typing.nit:452 */
2945 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2946 if (UNTAG_Bool(REGB0)) {
2947 } else {
2948 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2949 if (UNTAG_Bool(REGB1)) {
2950 REGB1 = TAG_Bool(false);
2951 REGB0 = REGB1;
2952 } else {
2953 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2954 REGB0 = REGB1;
2955 }
2956 }
2957 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2958 if (UNTAG_Bool(REGB0)) {
2959 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2960 if (UNTAG_Bool(REGB0)) {
2961 } else {
2962 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2963 if (UNTAG_Bool(REGB1)) {
2964 REGB1 = TAG_Bool(false);
2965 REGB0 = REGB1;
2966 } else {
2967 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2968 REGB0 = REGB1;
2969 }
2970 }
2971 } else {
2972 REGB1 = TAG_Bool(false);
2973 REGB0 = REGB1;
2974 }
2975 if (UNTAG_Bool(REGB0)) {
2976 /* ./syntax//typing.nit:453 */
2977 if (!once_value_4) {
2978 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
2979 REGB0 = TAG_Int(40);
2980 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
2981 once_value_4 = fra.me.REG[4];
2982 register_static_object(&once_value_4);
2983 } else fra.me.REG[4] = once_value_4;
2984 fra.me.REG[4] = fra.me.REG[4];
2985 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
2986 } else {
2987 /* ./syntax//typing.nit:454 */
2988 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2989 if (UNTAG_Bool(REGB0)) {
2990 } else {
2991 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2992 if (UNTAG_Bool(REGB1)) {
2993 REGB1 = TAG_Bool(false);
2994 REGB0 = REGB1;
2995 } else {
2996 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2997 REGB0 = REGB1;
2998 }
2999 }
3000 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3001 if (UNTAG_Bool(REGB0)) {
3002 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3003 if (UNTAG_Bool(REGB0)) {
3004 } else {
3005 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3006 if (UNTAG_Bool(REGB1)) {
3007 REGB1 = TAG_Bool(false);
3008 REGB0 = REGB1;
3009 } else {
3010 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3011 REGB0 = REGB1;
3012 }
3013 }
3014 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3015 } else {
3016 REGB1 = TAG_Bool(false);
3017 REGB0 = REGB1;
3018 }
3019 if (UNTAG_Bool(REGB0)) {
3020 /* ./syntax//typing.nit:455 */
3021 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3022 }
3023 }
3024 }
3025 /* ./syntax//typing.nit:457 */
3026 REGB0 = TAG_Bool(true);
3027 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3028 label2: while(0);
3029 stack_frame_head = fra.me.prev;
3030 return;
3031 }
3032 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3033 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3034 val_t REGB0;
3035 val_t REGB1;
3036 val_t tmp;
3037 static val_t once_value_2; /* Once value */
3038 static val_t once_value_3; /* Once value */
3039 static val_t once_value_4; /* Once value */
3040 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3041 fra.me.file = LOCATE_syntax___typing;
3042 fra.me.line = 462;
3043 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3044 fra.me.has_broke = 0;
3045 fra.me.REG_size = 5;
3046 fra.me.REG[0] = NIT_NULL;
3047 fra.me.REG[1] = NIT_NULL;
3048 fra.me.REG[2] = NIT_NULL;
3049 fra.me.REG[3] = NIT_NULL;
3050 fra.me.REG[4] = NIT_NULL;
3051 fra.me.REG[0] = p0;
3052 fra.me.REG[1] = p1;
3053 /* ./syntax//typing.nit:462 */
3054 fra.me.REG[2] = fra.me.REG[0];
3055 /* ./syntax//typing.nit:464 */
3056 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3057 /* ./syntax//typing.nit:465 */
3058 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3059 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
3060 /* ./syntax//typing.nit:466 */
3061 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3062 if (UNTAG_Bool(REGB0)) {
3063 } else {
3064 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3065 if (UNTAG_Bool(REGB1)) {
3066 REGB1 = TAG_Bool(false);
3067 REGB0 = REGB1;
3068 } else {
3069 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3070 REGB0 = REGB1;
3071 }
3072 }
3073 if (UNTAG_Bool(REGB0)) {
3074 goto label1;
3075 }
3076 /* ./syntax//typing.nit:468 */
3077 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3078 if (UNTAG_Bool(REGB0)) {
3079 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 468);
3080 }
3081 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[3])(fra.me.REG[3]);
3082 if (UNTAG_Bool(REGB0)) {
3083 /* ./syntax//typing.nit:469 */
3084 if (!once_value_2) {
3085 fra.me.REG[4] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3086 REGB0 = TAG_Int(39);
3087 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3088 once_value_2 = fra.me.REG[4];
3089 register_static_object(&once_value_2);
3090 } else fra.me.REG[4] = once_value_2;
3091 fra.me.REG[4] = fra.me.REG[4];
3092 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3093 /* ./syntax//typing.nit:470 */
3094 goto label1;
3095 }
3096 /* ./syntax//typing.nit:473 */
3097 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3098 if (UNTAG_Bool(REGB0)) {
3099 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 473);
3100 }
3101 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[3])(fra.me.REG[3]);
3102 /* ./syntax//typing.nit:474 */
3103 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3104 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3105 if (UNTAG_Bool(REGB0)) {
3106 } else {
3107 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3108 if (UNTAG_Bool(REGB1)) {
3109 REGB1 = TAG_Bool(false);
3110 REGB0 = REGB1;
3111 } else {
3112 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3113 REGB0 = REGB1;
3114 }
3115 }
3116 if (UNTAG_Bool(REGB0)) {
3117 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3118 if (UNTAG_Bool(REGB0)) {
3119 } else {
3120 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3121 if (UNTAG_Bool(REGB1)) {
3122 REGB1 = TAG_Bool(false);
3123 REGB0 = REGB1;
3124 } else {
3125 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3126 REGB0 = REGB1;
3127 }
3128 }
3129 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3130 } else {
3131 REGB1 = TAG_Bool(false);
3132 REGB0 = REGB1;
3133 }
3134 if (UNTAG_Bool(REGB0)) {
3135 /* ./syntax//typing.nit:475 */
3136 if (!once_value_3) {
3137 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3138 REGB0 = TAG_Int(52);
3139 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3140 once_value_3 = fra.me.REG[4];
3141 register_static_object(&once_value_3);
3142 } else fra.me.REG[4] = once_value_3;
3143 fra.me.REG[4] = fra.me.REG[4];
3144 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3145 } else {
3146 /* ./syntax//typing.nit:476 */
3147 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3148 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3149 if (UNTAG_Bool(REGB0)) {
3150 } else {
3151 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3152 if (UNTAG_Bool(REGB1)) {
3153 REGB1 = TAG_Bool(false);
3154 REGB0 = REGB1;
3155 } else {
3156 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3157 REGB0 = REGB1;
3158 }
3159 }
3160 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3161 if (UNTAG_Bool(REGB0)) {
3162 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3163 if (UNTAG_Bool(REGB0)) {
3164 } else {
3165 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3166 if (UNTAG_Bool(REGB1)) {
3167 REGB1 = TAG_Bool(false);
3168 REGB0 = REGB1;
3169 } else {
3170 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3171 REGB0 = REGB1;
3172 }
3173 }
3174 } else {
3175 REGB1 = TAG_Bool(false);
3176 REGB0 = REGB1;
3177 }
3178 if (UNTAG_Bool(REGB0)) {
3179 /* ./syntax//typing.nit:477 */
3180 if (!once_value_4) {
3181 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3182 REGB0 = TAG_Int(53);
3183 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3184 once_value_4 = fra.me.REG[4];
3185 register_static_object(&once_value_4);
3186 } else fra.me.REG[4] = once_value_4;
3187 fra.me.REG[4] = fra.me.REG[4];
3188 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
3189 } else {
3190 /* ./syntax//typing.nit:478 */
3191 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3192 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3193 if (UNTAG_Bool(REGB0)) {
3194 } else {
3195 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3196 if (UNTAG_Bool(REGB1)) {
3197 REGB1 = TAG_Bool(false);
3198 REGB0 = REGB1;
3199 } else {
3200 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3201 REGB0 = REGB1;
3202 }
3203 }
3204 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3205 if (UNTAG_Bool(REGB0)) {
3206 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3207 if (UNTAG_Bool(REGB0)) {
3208 } else {
3209 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3210 if (UNTAG_Bool(REGB1)) {
3211 REGB1 = TAG_Bool(false);
3212 REGB0 = REGB1;
3213 } else {
3214 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3215 REGB0 = REGB1;
3216 }
3217 }
3218 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3219 } else {
3220 REGB1 = TAG_Bool(false);
3221 REGB0 = REGB1;
3222 }
3223 if (UNTAG_Bool(REGB0)) {
3224 /* ./syntax//typing.nit:479 */
3225 fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3226 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*/;
3227 if (UNTAG_Bool(REGB0)) {
3228 } else {
3229 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 479);
3230 }
3231 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
3232 }
3233 }
3234 }
3235 /* ./syntax//typing.nit:481 */
3236 REGB0 = TAG_Bool(true);
3237 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3238 label1: while(0);
3239 stack_frame_head = fra.me.prev;
3240 return;
3241 }
3242 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3243 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3244 val_t REGB0;
3245 val_t REGB1;
3246 val_t tmp;
3247 static val_t once_value_2; /* Once value */
3248 static val_t once_value_3; /* Once value */
3249 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3250 fra.me.file = LOCATE_syntax___typing;
3251 fra.me.line = 486;
3252 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3253 fra.me.has_broke = 0;
3254 fra.me.REG_size = 6;
3255 fra.me.REG[0] = NIT_NULL;
3256 fra.me.REG[1] = NIT_NULL;
3257 fra.me.REG[2] = NIT_NULL;
3258 fra.me.REG[3] = NIT_NULL;
3259 fra.me.REG[4] = NIT_NULL;
3260 fra.me.REG[5] = NIT_NULL;
3261 fra.me.REG[0] = p0;
3262 fra.me.REG[1] = p1;
3263 /* ./syntax//typing.nit:486 */
3264 fra.me.REG[2] = fra.me.REG[0];
3265 /* ./syntax//typing.nit:488 */
3266 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3267 /* ./syntax//typing.nit:489 */
3268 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3269 /* ./syntax//typing.nit:490 */
3270 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3271 fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3272 /* ./syntax//typing.nit:491 */
3273 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3274 if (UNTAG_Bool(REGB0)) {
3275 } else {
3276 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3277 if (UNTAG_Bool(REGB1)) {
3278 REGB1 = TAG_Bool(false);
3279 REGB0 = REGB1;
3280 } else {
3281 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3282 REGB0 = REGB1;
3283 }
3284 }
3285 if (UNTAG_Bool(REGB0)) {
3286 goto label1;
3287 }
3288 /* ./syntax//typing.nit:493 */
3289 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3290 if (UNTAG_Bool(REGB0)) {
3291 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 493);
3292 }
3293 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[4])(fra.me.REG[4]);
3294 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3295 /* ./syntax//typing.nit:495 */
3296 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3297 if (UNTAG_Bool(REGB0)) {
3298 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 495);
3299 }
3300 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[4])(fra.me.REG[4]);
3301 /* ./syntax//typing.nit:496 */
3302 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3303 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3304 if (UNTAG_Bool(REGB0)) {
3305 } else {
3306 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3307 if (UNTAG_Bool(REGB1)) {
3308 REGB1 = TAG_Bool(false);
3309 REGB0 = REGB1;
3310 } else {
3311 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3312 REGB0 = REGB1;
3313 }
3314 }
3315 if (UNTAG_Bool(REGB0)) {
3316 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3317 if (UNTAG_Bool(REGB0)) {
3318 } else {
3319 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3320 if (UNTAG_Bool(REGB1)) {
3321 REGB1 = TAG_Bool(false);
3322 REGB0 = REGB1;
3323 } else {
3324 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3325 REGB0 = REGB1;
3326 }
3327 }
3328 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3329 } else {
3330 REGB1 = TAG_Bool(false);
3331 REGB0 = REGB1;
3332 }
3333 if (UNTAG_Bool(REGB0)) {
3334 /* ./syntax//typing.nit:497 */
3335 if (!once_value_2) {
3336 fra.me.REG[3] = BOX_NativeString("Error: break with a value required in this block.");
3337 REGB0 = TAG_Int(49);
3338 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3339 once_value_2 = fra.me.REG[3];
3340 register_static_object(&once_value_2);
3341 } else fra.me.REG[3] = once_value_2;
3342 fra.me.REG[3] = fra.me.REG[3];
3343 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3344 } else {
3345 /* ./syntax//typing.nit:498 */
3346 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3347 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3348 if (UNTAG_Bool(REGB0)) {
3349 } else {
3350 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3351 if (UNTAG_Bool(REGB1)) {
3352 REGB1 = TAG_Bool(false);
3353 REGB0 = REGB1;
3354 } else {
3355 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3356 REGB0 = REGB1;
3357 }
3358 }
3359 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3360 if (UNTAG_Bool(REGB0)) {
3361 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3362 if (UNTAG_Bool(REGB0)) {
3363 } else {
3364 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3365 if (UNTAG_Bool(REGB1)) {
3366 REGB1 = TAG_Bool(false);
3367 REGB0 = REGB1;
3368 } else {
3369 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3370 REGB0 = REGB1;
3371 }
3372 }
3373 } else {
3374 REGB1 = TAG_Bool(false);
3375 REGB0 = REGB1;
3376 }
3377 if (UNTAG_Bool(REGB0)) {
3378 /* ./syntax//typing.nit:499 */
3379 if (!once_value_3) {
3380 fra.me.REG[3] = BOX_NativeString("Error: break without value required in this block.");
3381 REGB0 = TAG_Int(50);
3382 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3383 once_value_3 = fra.me.REG[3];
3384 register_static_object(&once_value_3);
3385 } else fra.me.REG[3] = once_value_3;
3386 fra.me.REG[3] = fra.me.REG[3];
3387 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3388 } else {
3389 /* ./syntax//typing.nit:500 */
3390 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3391 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3392 if (UNTAG_Bool(REGB0)) {
3393 } else {
3394 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3395 if (UNTAG_Bool(REGB1)) {
3396 REGB1 = TAG_Bool(false);
3397 REGB0 = REGB1;
3398 } else {
3399 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3400 REGB0 = REGB1;
3401 }
3402 }
3403 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3404 if (UNTAG_Bool(REGB0)) {
3405 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3406 if (UNTAG_Bool(REGB0)) {
3407 } else {
3408 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3409 if (UNTAG_Bool(REGB1)) {
3410 REGB1 = TAG_Bool(false);
3411 REGB0 = REGB1;
3412 } else {
3413 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3414 REGB0 = REGB1;
3415 }
3416 }
3417 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3418 } else {
3419 REGB1 = TAG_Bool(false);
3420 REGB0 = REGB1;
3421 }
3422 if (UNTAG_Bool(REGB0)) {
3423 /* ./syntax//typing.nit:502 */
3424 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3425 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*/;
3426 if (UNTAG_Bool(REGB0)) {
3427 } else {
3428 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 502);
3429 }
3430 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3431 if (UNTAG_Bool(REGB0)) {
3432 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 502);
3433 }
3434 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3435 }
3436 }
3437 }
3438 /* ./syntax//typing.nit:504 */
3439 REGB0 = TAG_Bool(true);
3440 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
3441 label1: while(0);
3442 stack_frame_head = fra.me.prev;
3443 return;
3444 }
3445 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3446 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3447 val_t REGB0;
3448 val_t tmp;
3449 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3450 fra.me.file = LOCATE_syntax___typing;
3451 fra.me.line = 509;
3452 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3453 fra.me.has_broke = 0;
3454 fra.me.REG_size = 2;
3455 fra.me.REG[0] = NIT_NULL;
3456 fra.me.REG[1] = NIT_NULL;
3457 fra.me.REG[0] = p0;
3458 fra.me.REG[1] = p1;
3459 /* ./syntax//typing.nit:511 */
3460 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3461 /* ./syntax//typing.nit:512 */
3462 REGB0 = TAG_Bool(true);
3463 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3464 stack_frame_head = fra.me.prev;
3465 return;
3466 }
3467 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3468 struct {struct stack_frame_t me;} fra;
3469 val_t tmp;
3470 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3471 fra.me.file = LOCATE_syntax___typing;
3472 fra.me.line = 519;
3473 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3474 fra.me.has_broke = 0;
3475 fra.me.REG_size = 1;
3476 fra.me.REG[0] = NIT_NULL;
3477 fra.me.REG[0] = p0;
3478 /* ./syntax//typing.nit:519 */
3479 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3480 stack_frame_head = fra.me.prev;
3481 return fra.me.REG[0];
3482 }
3483 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3484 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3485 val_t REGB0;
3486 val_t REGB1;
3487 val_t tmp;
3488 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3489 fra.me.file = LOCATE_syntax___typing;
3490 fra.me.line = 522;
3491 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3492 fra.me.has_broke = 0;
3493 fra.me.REG_size = 7;
3494 fra.me.REG[0] = NIT_NULL;
3495 fra.me.REG[1] = NIT_NULL;
3496 fra.me.REG[2] = NIT_NULL;
3497 fra.me.REG[3] = NIT_NULL;
3498 fra.me.REG[4] = NIT_NULL;
3499 fra.me.REG[5] = NIT_NULL;
3500 fra.me.REG[6] = NIT_NULL;
3501 fra.me.REG[0] = p0;
3502 fra.me.REG[1] = p1;
3503 fra.me.REG[2] = p2;
3504 fra.me.REG[3] = p3;
3505 REGB0 = p4;
3506 /* ./syntax//typing.nit:526 */
3507 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3508 /* ./syntax//typing.nit:527 */
3509 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3510 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3511 /* ./syntax//typing.nit:530 */
3512 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3513 /* ./syntax//typing.nit:531 */
3514 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3515 /* ./syntax//typing.nit:532 */
3516 if (UNTAG_Bool(REGB0)) {
3517 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3518 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3519 }
3520 /* ./syntax//typing.nit:535 */
3521 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3522 /* ./syntax//typing.nit:538 */
3523 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3524 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3525 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3526 if (UNTAG_Bool(REGB1)) {
3527 /* ./syntax//typing.nit:539 */
3528 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3529 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3530 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3531 }
3532 /* ./syntax//typing.nit:543 */
3533 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3534 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3535 if (UNTAG_Bool(REGB1)) {
3536 /* ./syntax//typing.nit:544 */
3537 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3538 /* ./syntax//typing.nit:545 */
3539 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3540 } else {
3541 /* ./syntax//typing.nit:547 */
3542 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3543 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]);
3544 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3545 }
3546 /* ./syntax//typing.nit:550 */
3547 if (UNTAG_Bool(REGB0)) {
3548 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3549 }
3550 /* ./syntax//typing.nit:551 */
3551 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3552 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3553 /* ./syntax//typing.nit:552 */
3554 REGB0 = TAG_Bool(true);
3555 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3556 stack_frame_head = fra.me.prev;
3557 return;
3558 }
3559 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3560 struct {struct stack_frame_t me;} fra;
3561 val_t tmp;
3562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3563 fra.me.file = LOCATE_syntax___typing;
3564 fra.me.line = 555;
3565 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3566 fra.me.has_broke = 0;
3567 fra.me.REG_size = 0;
3568 /* ./syntax//typing.nit:555 */
3569 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 555);
3570 stack_frame_head = fra.me.prev;
3571 return;
3572 }
3573 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3574 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3575 val_t REGB0;
3576 val_t tmp;
3577 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3578 fra.me.file = LOCATE_syntax___typing;
3579 fra.me.line = 561;
3580 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3581 fra.me.has_broke = 0;
3582 fra.me.REG_size = 4;
3583 fra.me.REG[0] = NIT_NULL;
3584 fra.me.REG[1] = NIT_NULL;
3585 fra.me.REG[2] = NIT_NULL;
3586 fra.me.REG[3] = NIT_NULL;
3587 fra.me.REG[0] = p0;
3588 fra.me.REG[1] = p1;
3589 /* ./syntax//typing.nit:563 */
3590 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3591 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3592 REGB0 = TAG_Bool(false);
3593 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);
3594 stack_frame_head = fra.me.prev;
3595 return;
3596 }
3597 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3598 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3599 val_t tmp;
3600 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3601 fra.me.file = LOCATE_syntax___typing;
3602 fra.me.line = 566;
3603 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3604 fra.me.has_broke = 0;
3605 fra.me.REG_size = 2;
3606 fra.me.REG[0] = NIT_NULL;
3607 fra.me.REG[1] = NIT_NULL;
3608 fra.me.REG[0] = p0;
3609 fra.me.REG[1] = p1;
3610 /* ./syntax//typing.nit:568 */
3611 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3612 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3613 stack_frame_head = fra.me.prev;
3614 return;
3615 }
3616 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3617 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3618 val_t REGB0;
3619 val_t tmp;
3620 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3621 fra.me.file = LOCATE_syntax___typing;
3622 fra.me.line = 573;
3623 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3624 fra.me.has_broke = 0;
3625 fra.me.REG_size = 5;
3626 fra.me.REG[0] = NIT_NULL;
3627 fra.me.REG[1] = NIT_NULL;
3628 fra.me.REG[2] = NIT_NULL;
3629 fra.me.REG[3] = NIT_NULL;
3630 fra.me.REG[4] = NIT_NULL;
3631 fra.me.REG[0] = p0;
3632 fra.me.REG[1] = p1;
3633 /* ./syntax//typing.nit:575 */
3634 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3635 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3636 /* ./syntax//typing.nit:576 */
3637 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3638 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3639 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3640 /* ./syntax//typing.nit:579 */
3641 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3642 /* ./syntax//typing.nit:580 */
3643 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3644 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3645 /* ./syntax//typing.nit:583 */
3646 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3647 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3648 /* ./syntax//typing.nit:586 */
3649 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3650 /* ./syntax//typing.nit:589 */
3651 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3652 /* ./syntax//typing.nit:590 */
3653 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3654 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3655 /* ./syntax//typing.nit:593 */
3656 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3657 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3658 /* ./syntax//typing.nit:596 */
3659 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3660 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3661 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]);
3662 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3663 /* ./syntax//typing.nit:597 */
3664 REGB0 = TAG_Bool(true);
3665 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3666 stack_frame_head = fra.me.prev;
3667 return;
3668 }
3669 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3670 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3671 val_t REGB0;
3672 val_t tmp;
3673 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3674 fra.me.file = LOCATE_syntax___typing;
3675 fra.me.line = 603;
3676 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
3677 fra.me.has_broke = 0;
3678 fra.me.REG_size = 4;
3679 fra.me.REG[0] = NIT_NULL;
3680 fra.me.REG[1] = NIT_NULL;
3681 fra.me.REG[2] = NIT_NULL;
3682 fra.me.REG[3] = NIT_NULL;
3683 fra.me.REG[0] = p0;
3684 fra.me.REG[1] = p1;
3685 /* ./syntax//typing.nit:605 */
3686 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3687 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3688 REGB0 = TAG_Bool(true);
3689 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);
3690 stack_frame_head = fra.me.prev;
3691 return;
3692 }
3693 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
3694 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3695 val_t REGB0;
3696 val_t tmp;
3697 static val_t once_value_1; /* Once value */
3698 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3699 fra.me.file = LOCATE_syntax___typing;
3700 fra.me.line = 608;
3701 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
3702 fra.me.has_broke = 0;
3703 fra.me.REG_size = 5;
3704 fra.me.REG[0] = NIT_NULL;
3705 fra.me.REG[1] = NIT_NULL;
3706 fra.me.REG[2] = NIT_NULL;
3707 fra.me.REG[3] = NIT_NULL;
3708 fra.me.REG[4] = NIT_NULL;
3709 fra.me.REG[0] = p0;
3710 fra.me.REG[1] = p1;
3711 /* ./syntax//typing.nit:610 */
3712 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3713 /* ./syntax//typing.nit:613 */
3714 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3715 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3716 /* ./syntax//typing.nit:614 */
3717 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3718 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3719 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3720 /* ./syntax//typing.nit:616 */
3721 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3722 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
3723 if (UNTAG_Bool(REGB0)) {
3724 /* ./syntax//typing.nit:617 */
3725 if (!once_value_1) {
3726 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
3727 REGB0 = TAG_Int(47);
3728 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3729 once_value_1 = fra.me.REG[4];
3730 register_static_object(&once_value_1);
3731 } else fra.me.REG[4] = once_value_1;
3732 fra.me.REG[4] = fra.me.REG[4];
3733 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3734 }
3735 /* ./syntax//typing.nit:621 */
3736 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3737 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3738 /* ./syntax//typing.nit:624 */
3739 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3740 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3741 /* ./syntax//typing.nit:627 */
3742 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3743 /* ./syntax//typing.nit:628 */
3744 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3745 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3746 /* ./syntax//typing.nit:629 */
3747 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3748 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3749 if (UNTAG_Bool(REGB0)) {
3750 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 629);
3751 }
3752 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
3753 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3754 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3755 stack_frame_head = fra.me.prev;
3756 return;
3757 }
3758 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
3759 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3760 val_t REGB0;
3761 val_t tmp;
3762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3763 fra.me.file = LOCATE_syntax___typing;
3764 fra.me.line = 635;
3765 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
3766 fra.me.has_broke = 0;
3767 fra.me.REG_size = 4;
3768 fra.me.REG[0] = NIT_NULL;
3769 fra.me.REG[1] = NIT_NULL;
3770 fra.me.REG[2] = NIT_NULL;
3771 fra.me.REG[3] = NIT_NULL;
3772 fra.me.REG[0] = p0;
3773 fra.me.REG[1] = p1;
3774 /* ./syntax//typing.nit:637 */
3775 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3776 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3777 REGB0 = TAG_Bool(true);
3778 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);
3779 stack_frame_head = fra.me.prev;
3780 return;
3781 }
3782 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
3783 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3784 val_t tmp;
3785 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3786 fra.me.file = LOCATE_syntax___typing;
3787 fra.me.line = 640;
3788 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
3789 fra.me.has_broke = 0;
3790 fra.me.REG_size = 3;
3791 fra.me.REG[0] = NIT_NULL;
3792 fra.me.REG[1] = NIT_NULL;
3793 fra.me.REG[2] = NIT_NULL;
3794 fra.me.REG[0] = p0;
3795 fra.me.REG[1] = p1;
3796 /* ./syntax//typing.nit:643 */
3797 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3798 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3799 /* ./syntax//typing.nit:646 */
3800 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3801 stack_frame_head = fra.me.prev;
3802 return;
3803 }
3804 val_t syntax___typing___AForExpr___variables(val_t p0){
3805 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3806 val_t REGB0;
3807 val_t tmp;
3808 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3809 fra.me.file = LOCATE_syntax___typing;
3810 fra.me.line = 653;
3811 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
3812 fra.me.has_broke = 0;
3813 fra.me.REG_size = 2;
3814 fra.me.REG[0] = NIT_NULL;
3815 fra.me.REG[1] = NIT_NULL;
3816 fra.me.REG[0] = p0;
3817 /* ./syntax//typing.nit:653 */
3818 fra.me.REG[1] = fra.me.REG[0];
3819 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
3820 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
3821 if (UNTAG_Bool(REGB0)) {
3822 } else {
3823 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 653);
3824 }
3825 goto label1;
3826 label1: while(0);
3827 stack_frame_head = fra.me.prev;
3828 return fra.me.REG[1];
3829 }
3830 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
3831 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3832 val_t REGB0;
3833 val_t tmp;
3834 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3835 fra.me.file = LOCATE_syntax___typing;
3836 fra.me.line = 655;
3837 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
3838 fra.me.has_broke = 0;
3839 fra.me.REG_size = 4;
3840 fra.me.REG[0] = NIT_NULL;
3841 fra.me.REG[1] = NIT_NULL;
3842 fra.me.REG[2] = NIT_NULL;
3843 fra.me.REG[3] = NIT_NULL;
3844 fra.me.REG[0] = p0;
3845 fra.me.REG[1] = p1;
3846 /* ./syntax//typing.nit:657 */
3847 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
3848 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3849 REGB0 = TAG_Bool(true);
3850 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);
3851 stack_frame_head = fra.me.prev;
3852 return;
3853 }
3854 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
3855 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3856 val_t tmp;
3857 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3858 fra.me.file = LOCATE_syntax___typing;
3859 fra.me.line = 660;
3860 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
3861 fra.me.has_broke = 0;
3862 fra.me.REG_size = 3;
3863 fra.me.REG[0] = NIT_NULL;
3864 fra.me.REG[1] = NIT_NULL;
3865 fra.me.REG[2] = NIT_NULL;
3866 fra.me.REG[0] = p0;
3867 fra.me.REG[1] = p1;
3868 /* ./syntax//typing.nit:662 */
3869 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3870 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3871 /* ./syntax//typing.nit:663 */
3872 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3873 /* ./syntax//typing.nit:665 */
3874 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3875 /* ./syntax//typing.nit:668 */
3876 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3877 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3878 /* ./syntax//typing.nit:671 */
3879 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3880 /* ./syntax//typing.nit:672 */
3881 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3882 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3883 stack_frame_head = fra.me.prev;
3884 return;
3885 }
3886 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
3887 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
3888 val_t REGB0;
3889 val_t REGB1;
3890 val_t REGB2;
3891 val_t REGB3;
3892 val_t REGB4;
3893 val_t REGB5;
3894 val_t tmp;
3895 static val_t once_value_3; /* Once value */
3896 static val_t once_value_4; /* Once value */
3897 static val_t once_value_5; /* Once value */
3898 static val_t once_value_6; /* Once value */
3899 static val_t once_value_7; /* Once value */
3900 static val_t once_value_8; /* Once value */
3901 static val_t once_value_9; /* Once value */
3902 static val_t once_value_10; /* Once value */
3903 static val_t once_value_11; /* Once value */
3904 static val_t once_value_12; /* Once value */
3905 static val_t once_value_13; /* Once value */
3906 static val_t once_value_14; /* Once value */
3907 static val_t once_value_15; /* Once value */
3908 static val_t once_value_16; /* Once value */
3909 static val_t once_value_17; /* Once value */
3910 static val_t once_value_18; /* Once value */
3911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3912 fra.me.file = LOCATE_syntax___typing;
3913 fra.me.line = 675;
3914 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
3915 fra.me.has_broke = 0;
3916 fra.me.REG_size = 8;
3917 fra.me.REG[0] = NIT_NULL;
3918 fra.me.REG[1] = NIT_NULL;
3919 fra.me.REG[2] = NIT_NULL;
3920 fra.me.REG[3] = NIT_NULL;
3921 fra.me.REG[4] = NIT_NULL;
3922 fra.me.REG[5] = NIT_NULL;
3923 fra.me.REG[6] = NIT_NULL;
3924 fra.me.REG[7] = NIT_NULL;
3925 fra.me.REG[0] = p0;
3926 fra.me.REG[1] = p1;
3927 /* ./syntax//typing.nit:678 */
3928 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
3929 /* ./syntax//typing.nit:679 */
3930 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
3931 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));
3932 /* ./syntax//typing.nit:684 */
3933 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
3934 /* ./syntax//typing.nit:687 */
3935 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3936 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3937 /* ./syntax//typing.nit:688 */
3938 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3939 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3940 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3941 if (UNTAG_Bool(REGB0)) {
3942 goto label2;
3943 }
3944 /* ./syntax//typing.nit:689 */
3945 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3946 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
3947 /* ./syntax//typing.nit:691 */
3948 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
3949 if (UNTAG_Bool(REGB0)) {
3950 /* ./syntax//typing.nit:692 */
3951 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3952 if (!once_value_3) {
3953 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
3954 REGB0 = TAG_Int(43);
3955 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3956 once_value_3 = fra.me.REG[5];
3957 register_static_object(&once_value_3);
3958 } else fra.me.REG[5] = once_value_3;
3959 fra.me.REG[5] = fra.me.REG[5];
3960 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3961 /* ./syntax//typing.nit:693 */
3962 goto label2;
3963 }
3964 /* ./syntax//typing.nit:697 */
3965 if (!once_value_4) {
3966 if (!once_value_5) {
3967 fra.me.REG[5] = BOX_NativeString("iterate");
3968 REGB0 = TAG_Int(7);
3969 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
3970 once_value_5 = fra.me.REG[5];
3971 register_static_object(&once_value_5);
3972 } else fra.me.REG[5] = once_value_5;
3973 fra.me.REG[5] = fra.me.REG[5];
3974 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
3975 once_value_4 = fra.me.REG[5];
3976 register_static_object(&once_value_4);
3977 } else fra.me.REG[5] = once_value_4;
3978 fra.me.REG[5] = fra.me.REG[5];
3979 /* ./syntax//typing.nit:698 */
3980 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
3981 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
3982 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3983 if (UNTAG_Bool(REGB0)) {
3984 /* ./syntax//typing.nit:699 */
3985 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3986 REGB0 = TAG_Int(3);
3987 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3988 if (!once_value_6) {
3989 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
3990 REGB0 = TAG_Int(60);
3991 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3992 once_value_6 = fra.me.REG[7];
3993 register_static_object(&once_value_6);
3994 } else fra.me.REG[7] = once_value_6;
3995 fra.me.REG[7] = fra.me.REG[7];
3996 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3997 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
3999 if (!once_value_7) {
4000 fra.me.REG[7] = BOX_NativeString(".");
4001 REGB0 = TAG_Int(1);
4002 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4003 once_value_7 = fra.me.REG[7];
4004 register_static_object(&once_value_7);
4005 } else fra.me.REG[7] = once_value_7;
4006 fra.me.REG[7] = fra.me.REG[7];
4007 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4008 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4009 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4010 /* ./syntax//typing.nit:700 */
4011 goto label2;
4012 }
4013 /* ./syntax//typing.nit:702 */
4014 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4015 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4016 /* ./syntax//typing.nit:703 */
4017 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4018 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4019 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4020 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4021 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);
4022 /* ./syntax//typing.nit:704 */
4023 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4024 /* ./syntax//typing.nit:705 */
4025 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4026 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4027 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4028 if (UNTAG_Bool(REGB0)) {
4029 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4030 fra.me.REG[3] = fra.me.REG[5];
4031 }
4032 /* ./syntax//typing.nit:706 */
4033 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4034 REGB1 = TAG_Int(0);
4035 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4036 if (UNTAG_Bool(REGB2)) {
4037 } else {
4038 /* ./../lib/standard//kernel.nit:227 */
4039 REGB1 = TAG_Bool((REGB0)==(REGB1));
4040 /* ./syntax//typing.nit:706 */
4041 REGB2 = REGB1;
4042 }
4043 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4044 if (UNTAG_Bool(REGB2)) {
4045 /* ./syntax//typing.nit:707 */
4046 if (!once_value_8) {
4047 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4048 REGB2 = TAG_Int(63);
4049 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4050 once_value_8 = fra.me.REG[5];
4051 register_static_object(&once_value_8);
4052 } else fra.me.REG[5] = once_value_8;
4053 fra.me.REG[5] = fra.me.REG[5];
4054 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4055 /* ./syntax//typing.nit:708 */
4056 goto label2;
4057 } else {
4058 /* ./syntax//typing.nit:709 */
4059 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4060 /* ./../lib/standard//collection//array.nit:24 */
4061 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4062 if (UNTAG_Bool(REGB2)) {
4063 } else {
4064 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4065 }
4066 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4067 /* ./syntax//typing.nit:709 */
4068 REGB1 = TAG_Int(1);
4069 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4070 if (UNTAG_Bool(REGB0)) {
4071 } else {
4072 /* ./../lib/standard//kernel.nit:227 */
4073 REGB1 = TAG_Bool((REGB2)==(REGB1));
4074 /* ./syntax//typing.nit:709 */
4075 REGB0 = REGB1;
4076 }
4077 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4078 if (UNTAG_Bool(REGB0)) {
4079 /* ./syntax//typing.nit:710 */
4080 if (!once_value_9) {
4081 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4082 REGB0 = TAG_Int(62);
4083 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4084 once_value_9 = fra.me.REG[5];
4085 register_static_object(&once_value_9);
4086 } else fra.me.REG[5] = once_value_9;
4087 fra.me.REG[5] = fra.me.REG[5];
4088 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4089 /* ./syntax//typing.nit:711 */
4090 goto label2;
4091 }
4092 }
4093 /* ./syntax//typing.nit:713 */
4094 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4095 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4096 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4097 if (UNTAG_Bool(REGB0)) {
4098 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 713);
4099 }
4100 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4101 fra.me.REG[3] = fra.me.REG[5];
4102 /* ./syntax//typing.nit:714 */
4103 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4104 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4105 if (UNTAG_Bool(REGB0)) {
4106 } else {
4107 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4108 if (UNTAG_Bool(REGB1)) {
4109 REGB1 = TAG_Bool(false);
4110 REGB0 = REGB1;
4111 } else {
4112 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4113 REGB0 = REGB1;
4114 }
4115 }
4116 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4117 if (UNTAG_Bool(REGB0)) {
4118 /* ./syntax//typing.nit:715 */
4119 if (!once_value_10) {
4120 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4121 REGB0 = TAG_Int(73);
4122 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4123 once_value_10 = fra.me.REG[5];
4124 register_static_object(&once_value_10);
4125 } else fra.me.REG[5] = once_value_10;
4126 fra.me.REG[5] = fra.me.REG[5];
4127 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4128 /* ./syntax//typing.nit:716 */
4129 goto label2;
4130 }
4131 /* ./../lib/standard//collection//array.nit:24 */
4132 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4133 if (UNTAG_Bool(REGB0)) {
4134 } else {
4135 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4136 }
4137 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4138 /* ./syntax//typing.nit:718 */
4139 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4140 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4141 if (UNTAG_Bool(REGB2)) {
4142 } else {
4143 /* ./../lib/standard//kernel.nit:227 */
4144 REGB1 = TAG_Bool((REGB0)==(REGB1));
4145 /* ./syntax//typing.nit:718 */
4146 REGB2 = REGB1;
4147 }
4148 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4149 if (UNTAG_Bool(REGB2)) {
4150 /* ./syntax//typing.nit:719 */
4151 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4152 REGB1 = TAG_Int(1);
4153 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4154 if (UNTAG_Bool(REGB0)) {
4155 } else {
4156 /* ./../lib/standard//kernel.nit:227 */
4157 REGB1 = TAG_Bool((REGB2)==(REGB1));
4158 /* ./syntax//typing.nit:719 */
4159 REGB0 = REGB1;
4160 }
4161 if (UNTAG_Bool(REGB0)) {
4162 /* ./syntax//typing.nit:720 */
4163 REGB0 = TAG_Int(7);
4164 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4165 if (!once_value_11) {
4166 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4167 REGB0 = TAG_Int(16);
4168 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4169 once_value_11 = fra.me.REG[4];
4170 register_static_object(&once_value_11);
4171 } else fra.me.REG[4] = once_value_11;
4172 fra.me.REG[4] = fra.me.REG[4];
4173 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4174 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4175 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4176 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4177 if (!once_value_12) {
4178 fra.me.REG[4] = BOX_NativeString(" variable ");
4179 REGB0 = TAG_Int(10);
4180 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4181 once_value_12 = fra.me.REG[4];
4182 register_static_object(&once_value_12);
4183 } else fra.me.REG[4] = once_value_12;
4184 fra.me.REG[4] = fra.me.REG[4];
4185 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4186 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4187 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4188 if (!once_value_13) {
4189 fra.me.REG[4] = BOX_NativeString(", found ");
4190 REGB0 = TAG_Int(8);
4191 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4192 once_value_13 = fra.me.REG[4];
4193 register_static_object(&once_value_13);
4194 } else fra.me.REG[4] = once_value_13;
4195 fra.me.REG[4] = fra.me.REG[4];
4196 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4197 /* ./../lib/standard//collection//array.nit:24 */
4198 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4199 if (UNTAG_Bool(REGB0)) {
4200 } else {
4201 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4202 }
4203 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4204 /* ./syntax//typing.nit:720 */
4205 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4206 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4207 if (!once_value_14) {
4208 fra.me.REG[4] = BOX_NativeString(".");
4209 REGB0 = TAG_Int(1);
4210 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4211 once_value_14 = fra.me.REG[4];
4212 register_static_object(&once_value_14);
4213 } else fra.me.REG[4] = once_value_14;
4214 fra.me.REG[4] = fra.me.REG[4];
4215 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4216 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4217 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4218 } else {
4219 /* ./syntax//typing.nit:722 */
4220 REGB0 = TAG_Int(7);
4221 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4222 if (!once_value_15) {
4223 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4224 REGB0 = TAG_Int(16);
4225 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4226 once_value_15 = fra.me.REG[4];
4227 register_static_object(&once_value_15);
4228 } else fra.me.REG[4] = once_value_15;
4229 fra.me.REG[4] = fra.me.REG[4];
4230 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4231 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4232 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4233 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4234 if (!once_value_16) {
4235 fra.me.REG[4] = BOX_NativeString(" variables ");
4236 REGB0 = TAG_Int(11);
4237 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4238 once_value_16 = fra.me.REG[4];
4239 register_static_object(&once_value_16);
4240 } else fra.me.REG[4] = once_value_16;
4241 fra.me.REG[4] = fra.me.REG[4];
4242 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4243 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4244 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4245 if (!once_value_17) {
4246 fra.me.REG[4] = BOX_NativeString(", found ");
4247 REGB0 = TAG_Int(8);
4248 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4249 once_value_17 = fra.me.REG[4];
4250 register_static_object(&once_value_17);
4251 } else fra.me.REG[4] = once_value_17;
4252 fra.me.REG[4] = fra.me.REG[4];
4253 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4254 /* ./../lib/standard//collection//array.nit:24 */
4255 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4256 if (UNTAG_Bool(REGB0)) {
4257 } else {
4258 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4259 }
4260 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4261 /* ./syntax//typing.nit:722 */
4262 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4263 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4264 if (!once_value_18) {
4265 fra.me.REG[4] = BOX_NativeString(".");
4266 REGB0 = TAG_Int(1);
4267 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4268 once_value_18 = fra.me.REG[4];
4269 register_static_object(&once_value_18);
4270 } else fra.me.REG[4] = once_value_18;
4271 fra.me.REG[4] = fra.me.REG[4];
4272 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4273 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4274 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4275 }
4276 /* ./syntax//typing.nit:724 */
4277 goto label2;
4278 }
4279 /* ./syntax//typing.nit:728 */
4280 REGB0 = TAG_Int(0);
4281 /* ./../lib/standard//collection//array.nit:24 */
4282 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4283 if (UNTAG_Bool(REGB1)) {
4284 } else {
4285 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4286 }
4287 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4288 /* ./../lib/standard//kernel.nit:352 */
4289 while(1) {
4290 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4291 if (UNTAG_Bool(REGB2)) {
4292 } else {
4293 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4294 }
4295 /* ./../lib/standard//kernel.nit:232 */
4296 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4297 /* ./../lib/standard//kernel.nit:352 */
4298 if (UNTAG_Bool(REGB2)) {
4299 /* ./syntax//typing.nit:728 */
4300 REGB2 = REGB0;
4301 /* ./../lib/standard//collection//array.nit:278 */
4302 fra.me.REG[5] = fra.me.REG[2];
4303 REGB3 = REGB2;
4304 /* ./../lib/standard//collection//array.nit:280 */
4305 REGB4 = TAG_Int(0);
4306 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4307 if (UNTAG_Bool(REGB5)) {
4308 } else {
4309 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4310 }
4311 /* ./../lib/standard//kernel.nit:233 */
4312 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4313 /* ./../lib/standard//collection//array.nit:280 */
4314 if (UNTAG_Bool(REGB4)) {
4315 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4316 if (UNTAG_Bool(REGB4)) {
4317 } else {
4318 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
4319 }
4320 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4321 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4322 if (UNTAG_Bool(REGB5)) {
4323 } else {
4324 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4325 }
4326 /* ./../lib/standard//kernel.nit:232 */
4327 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4328 } else {
4329 /* ./../lib/standard//collection//array.nit:280 */
4330 REGB5 = TAG_Bool(false);
4331 REGB4 = REGB5;
4332 }
4333 if (UNTAG_Bool(REGB4)) {
4334 } else {
4335 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
4336 }
4337 /* ./../lib/standard//collection//array.nit:281 */
4338 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4339 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4340 if (UNTAG_Bool(REGB4)) {
4341 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
4342 }
4343 /* ./../lib/standard//collection//array.nit:718 */
4344 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4345 /* ./../lib/standard//collection//array.nit:281 */
4346 goto label19;
4347 label19: while(0);
4348 /* ./syntax//typing.nit:729 */
4349 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4350 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4351 if (UNTAG_Bool(REGB2)) {
4352 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 729);
4353 }
4354 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4355 /* ./../lib/standard//kernel.nit:354 */
4356 REGB2 = TAG_Int(1);
4357 /* ./../lib/standard//kernel.nit:235 */
4358 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4359 /* ./../lib/standard//kernel.nit:354 */
4360 REGB0 = REGB2;
4361 } else {
4362 /* ./../lib/standard//kernel.nit:352 */
4363 goto label20;
4364 }
4365 }
4366 label20: while(0);
4367 label2: while(0);
4368 stack_frame_head = fra.me.prev;
4369 return;
4370 }
4371 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){
4372 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4373 fun_t CREG[1];
4374 val_t tmp;
4375 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4376 fra.me.file = LOCATE_syntax___typing;
4377 fra.me.line = 0;
4378 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4379 fra.me.has_broke = 0;
4380 fra.me.REG_size = 2;
4381 fra.me.REG[0] = NIT_NULL;
4382 fra.me.REG[1] = NIT_NULL;
4383 fra.me.closure_ctx = closctx_param;
4384 fra.me.closure_funs = CREG;
4385 fra.me.REG[0] = p0;
4386 CREG[0] = clos_fun0;
4387 /* ./syntax//typing.nit:680 */
4388 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4389 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4390 /* ./syntax//typing.nit:681 */
4391 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4392 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4393 /* ./syntax//typing.nit:682 */
4394 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4395 stack_frame_head = fra.me.prev;
4396 return;
4397 }
4398 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4399 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4400 val_t REGB0;
4401 val_t REGB1;
4402 val_t tmp;
4403 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4404 fra.me.file = LOCATE_syntax___typing;
4405 fra.me.line = 735;
4406 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4407 fra.me.has_broke = 0;
4408 fra.me.REG_size = 4;
4409 fra.me.REG[0] = NIT_NULL;
4410 fra.me.REG[1] = NIT_NULL;
4411 fra.me.REG[2] = NIT_NULL;
4412 fra.me.REG[3] = NIT_NULL;
4413 fra.me.REG[0] = p0;
4414 fra.me.REG[1] = p1;
4415 /* ./syntax//typing.nit:738 */
4416 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4417 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4418 /* ./syntax//typing.nit:739 */
4419 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4420 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4421 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4422 /* ./syntax//typing.nit:742 */
4423 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4424 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4425 if (UNTAG_Bool(REGB0)) {
4426 } else {
4427 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4428 if (UNTAG_Bool(REGB1)) {
4429 REGB1 = TAG_Bool(false);
4430 REGB0 = REGB1;
4431 } else {
4432 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4433 REGB0 = REGB1;
4434 }
4435 }
4436 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4437 if (UNTAG_Bool(REGB0)) {
4438 /* ./syntax//typing.nit:743 */
4439 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4440 /* ./syntax//typing.nit:744 */
4441 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4442 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4443 /* ./syntax//typing.nit:745 */
4444 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4445 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4446 /* ./syntax//typing.nit:746 */
4447 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4448 }
4449 /* ./syntax//typing.nit:750 */
4450 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4451 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4452 /* ./syntax//typing.nit:751 */
4453 REGB0 = TAG_Bool(true);
4454 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4455 stack_frame_head = fra.me.prev;
4456 return;
4457 }
4458 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4459 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4460 val_t REGB0;
4461 val_t tmp;
4462 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4463 fra.me.file = LOCATE_syntax___typing;
4464 fra.me.line = 757;
4465 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4466 fra.me.has_broke = 0;
4467 fra.me.REG_size = 2;
4468 fra.me.REG[0] = NIT_NULL;
4469 fra.me.REG[1] = NIT_NULL;
4470 fra.me.REG[0] = p0;
4471 /* ./syntax//typing.nit:757 */
4472 fra.me.REG[1] = fra.me.REG[0];
4473 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4474 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4475 if (UNTAG_Bool(REGB0)) {
4476 } else {
4477 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 757);
4478 }
4479 goto label1;
4480 label1: while(0);
4481 stack_frame_head = fra.me.prev;
4482 return fra.me.REG[1];
4483 }
4484 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4485 struct {struct stack_frame_t me;} fra;
4486 val_t tmp;
4487 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4488 fra.me.file = LOCATE_syntax___typing;
4489 fra.me.line = 761;
4490 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4491 fra.me.has_broke = 0;
4492 fra.me.REG_size = 1;
4493 fra.me.REG[0] = NIT_NULL;
4494 fra.me.REG[0] = p0;
4495 /* ./syntax//typing.nit:761 */
4496 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4497 goto label1;
4498 label1: while(0);
4499 stack_frame_head = fra.me.prev;
4500 return fra.me.REG[0];
4501 }
4502 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4503 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4504 val_t REGB0;
4505 val_t REGB1;
4506 val_t tmp;
4507 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4508 fra.me.file = LOCATE_syntax___typing;
4509 fra.me.line = 763;
4510 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4511 fra.me.has_broke = 0;
4512 fra.me.REG_size = 4;
4513 fra.me.REG[0] = NIT_NULL;
4514 fra.me.REG[1] = NIT_NULL;
4515 fra.me.REG[2] = NIT_NULL;
4516 fra.me.REG[3] = NIT_NULL;
4517 fra.me.REG[0] = p0;
4518 fra.me.REG[1] = p1;
4519 /* ./syntax//typing.nit:765 */
4520 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4521 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4522 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4523 /* ./syntax//typing.nit:766 */
4524 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4525 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4526 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4527 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4528 /* ./syntax//typing.nit:767 */
4529 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4530 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4531 if (UNTAG_Bool(REGB0)) {
4532 } else {
4533 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4534 if (UNTAG_Bool(REGB1)) {
4535 REGB1 = TAG_Bool(false);
4536 REGB0 = REGB1;
4537 } else {
4538 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4539 REGB0 = REGB1;
4540 }
4541 }
4542 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4543 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4544 stack_frame_head = fra.me.prev;
4545 return;
4546 }
4547 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4548 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4549 val_t REGB0;
4550 val_t REGB1;
4551 val_t tmp;
4552 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4553 fra.me.file = LOCATE_syntax___typing;
4554 fra.me.line = 772;
4555 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4556 fra.me.has_broke = 0;
4557 fra.me.REG_size = 5;
4558 fra.me.REG[0] = NIT_NULL;
4559 fra.me.REG[1] = NIT_NULL;
4560 fra.me.REG[2] = NIT_NULL;
4561 fra.me.REG[3] = NIT_NULL;
4562 fra.me.REG[4] = NIT_NULL;
4563 fra.me.REG[0] = p0;
4564 fra.me.REG[1] = p1;
4565 /* ./syntax//typing.nit:774 */
4566 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4567 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4568 /* ./syntax//typing.nit:777 */
4569 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4570 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4571 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4572 /* ./syntax//typing.nit:778 */
4573 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4574 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4575 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4576 if (UNTAG_Bool(REGB0)) {
4577 goto label1;
4578 }
4579 /* ./syntax//typing.nit:779 */
4580 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4581 if (UNTAG_Bool(REGB0)) {
4582 } else {
4583 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4584 if (UNTAG_Bool(REGB1)) {
4585 REGB1 = TAG_Bool(false);
4586 REGB0 = REGB1;
4587 } else {
4588 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4589 REGB0 = REGB1;
4590 }
4591 }
4592 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4593 if (UNTAG_Bool(REGB0)) {
4594 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4595 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]);
4596 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4597 } else {
4598 REGB1 = TAG_Bool(false);
4599 REGB0 = REGB1;
4600 }
4601 if (UNTAG_Bool(REGB0)) {
4602 goto label1;
4603 }
4604 /* ./syntax//typing.nit:782 */
4605 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4606 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4607 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4608 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4609 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]);
4610 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4611 /* ./syntax//typing.nit:784 */
4612 REGB0 = TAG_Bool(true);
4613 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4614 label1: while(0);
4615 stack_frame_head = fra.me.prev;
4616 return;
4617 }
4618 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4619 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4620 val_t REGB0;
4621 val_t REGB1;
4622 val_t tmp;
4623 static val_t once_value_2; /* Once value */
4624 static val_t once_value_3; /* Once value */
4625 static val_t once_value_4; /* Once value */
4626 static val_t once_value_5; /* Once value */
4627 static val_t once_value_6; /* Once value */
4628 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4629 fra.me.file = LOCATE_syntax___typing;
4630 fra.me.line = 789;
4631 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4632 fra.me.has_broke = 0;
4633 fra.me.REG_size = 8;
4634 fra.me.REG[0] = NIT_NULL;
4635 fra.me.REG[1] = NIT_NULL;
4636 fra.me.REG[2] = NIT_NULL;
4637 fra.me.REG[3] = NIT_NULL;
4638 fra.me.REG[4] = NIT_NULL;
4639 fra.me.REG[5] = NIT_NULL;
4640 fra.me.REG[6] = NIT_NULL;
4641 fra.me.REG[7] = NIT_NULL;
4642 fra.me.REG[0] = p0;
4643 fra.me.REG[1] = p1;
4644 fra.me.REG[2] = p2;
4645 /* ./syntax//typing.nit:794 */
4646 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4647 if (UNTAG_Bool(REGB0)) {
4648 } else {
4649 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4650 if (UNTAG_Bool(REGB1)) {
4651 REGB1 = TAG_Bool(false);
4652 REGB0 = REGB1;
4653 } else {
4654 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4655 REGB0 = REGB1;
4656 }
4657 }
4658 if (UNTAG_Bool(REGB0)) {
4659 /* ./syntax//typing.nit:795 */
4660 fra.me.REG[3] = NIT_NULL;
4661 goto label1;
4662 }
4663 /* ./syntax//typing.nit:797 */
4664 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
4665 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
4666 /* ./syntax//typing.nit:798 */
4667 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*/;
4668 if (UNTAG_Bool(REGB0)) {
4669 /* ./syntax//typing.nit:799 */
4670 REGB0 = TAG_Int(3);
4671 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4672 if (!once_value_2) {
4673 fra.me.REG[6] = BOX_NativeString("Error: Method '");
4674 REGB0 = TAG_Int(15);
4675 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4676 once_value_2 = fra.me.REG[6];
4677 register_static_object(&once_value_2);
4678 } else fra.me.REG[6] = once_value_2;
4679 fra.me.REG[6] = fra.me.REG[6];
4680 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4681 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4682 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4683 if (!once_value_3) {
4684 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
4685 REGB0 = TAG_Int(17);
4686 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
4687 once_value_3 = fra.me.REG[6];
4688 register_static_object(&once_value_3);
4689 } else fra.me.REG[6] = once_value_3;
4690 fra.me.REG[6] = fra.me.REG[6];
4691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
4692 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4693 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4694 /* ./syntax//typing.nit:800 */
4695 fra.me.REG[3] = NIT_NULL;
4696 goto label1;
4697 }
4698 /* ./syntax//typing.nit:802 */
4699 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4700 if (UNTAG_Bool(REGB0)) {
4701 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 802);
4702 }
4703 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
4704 /* ./syntax//typing.nit:803 */
4705 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4706 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4707 if (UNTAG_Bool(REGB0)) {
4708 /* ./syntax//typing.nit:804 */
4709 REGB0 = TAG_Int(5);
4710 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4711 if (!once_value_4) {
4712 fra.me.REG[7] = BOX_NativeString("Error: Method '");
4713 REGB0 = TAG_Int(15);
4714 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4715 once_value_4 = fra.me.REG[7];
4716 register_static_object(&once_value_4);
4717 } else fra.me.REG[7] = once_value_4;
4718 fra.me.REG[7] = fra.me.REG[7];
4719 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4720 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4721 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4722 if (!once_value_5) {
4723 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
4724 REGB0 = TAG_Int(20);
4725 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4726 once_value_5 = fra.me.REG[7];
4727 register_static_object(&once_value_5);
4728 } else fra.me.REG[7] = once_value_5;
4729 fra.me.REG[7] = fra.me.REG[7];
4730 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4731 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4732 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4733 if (!once_value_6) {
4734 fra.me.REG[7] = BOX_NativeString(".");
4735 REGB0 = TAG_Int(1);
4736 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4737 once_value_6 = fra.me.REG[7];
4738 register_static_object(&once_value_6);
4739 } else fra.me.REG[7] = once_value_6;
4740 fra.me.REG[7] = fra.me.REG[7];
4741 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4742 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4743 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
4744 /* ./syntax//typing.nit:805 */
4745 fra.me.REG[3] = NIT_NULL;
4746 goto label1;
4747 }
4748 /* ./syntax//typing.nit:807 */
4749 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4750 /* ./syntax//typing.nit:808 */
4751 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
4752 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4753 REGB0 = TAG_Bool(false);
4754 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);
4755 /* ./syntax//typing.nit:809 */
4756 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4757 /* ./syntax//typing.nit:810 */
4758 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
4759 /* ./syntax//typing.nit:811 */
4760 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4761 REGB0 = TAG_Int(0);
4762 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
4763 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
4764 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]);
4765 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4766 if (UNTAG_Bool(REGB0)) {
4767 fra.me.REG[3] = NIT_NULL;
4768 goto label1;
4769 }
4770 /* ./syntax//typing.nit:812 */
4771 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
4772 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4773 if (UNTAG_Bool(REGB0)) {
4774 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 812);
4775 }
4776 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
4777 fra.me.REG[3] = fra.me.REG[2];
4778 goto label1;
4779 label1: while(0);
4780 stack_frame_head = fra.me.prev;
4781 return fra.me.REG[3];
4782 }
4783 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
4784 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4785 val_t REGB0;
4786 val_t tmp;
4787 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4788 fra.me.file = LOCATE_syntax___typing;
4789 fra.me.line = 815;
4790 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
4791 fra.me.has_broke = 0;
4792 fra.me.REG_size = 2;
4793 fra.me.REG[0] = NIT_NULL;
4794 fra.me.REG[1] = NIT_NULL;
4795 fra.me.REG[0] = p0;
4796 /* ./syntax//typing.nit:815 */
4797 fra.me.REG[1] = fra.me.REG[0];
4798 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
4799 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4800 if (UNTAG_Bool(REGB0)) {
4801 } else {
4802 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 815);
4803 }
4804 goto label1;
4805 label1: while(0);
4806 stack_frame_head = fra.me.prev;
4807 return fra.me.REG[1];
4808 }
4809 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
4810 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4811 val_t REGB0;
4812 val_t REGB1;
4813 val_t tmp;
4814 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4815 fra.me.file = LOCATE_syntax___typing;
4816 fra.me.line = 820;
4817 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
4818 fra.me.has_broke = 0;
4819 fra.me.REG_size = 5;
4820 fra.me.REG[0] = NIT_NULL;
4821 fra.me.REG[1] = NIT_NULL;
4822 fra.me.REG[2] = NIT_NULL;
4823 fra.me.REG[3] = NIT_NULL;
4824 fra.me.REG[4] = NIT_NULL;
4825 fra.me.REG[0] = p0;
4826 fra.me.REG[1] = p1;
4827 /* ./syntax//typing.nit:822 */
4828 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4829 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4830 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4831 /* ./syntax//typing.nit:823 */
4832 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4833 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4834 /* ./syntax//typing.nit:824 */
4835 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4836 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4837 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
4838 /* ./syntax//typing.nit:825 */
4839 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]);
4840 /* ./syntax//typing.nit:826 */
4841 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4842 if (UNTAG_Bool(REGB0)) {
4843 } else {
4844 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4845 if (UNTAG_Bool(REGB1)) {
4846 REGB1 = TAG_Bool(false);
4847 REGB0 = REGB1;
4848 } else {
4849 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4850 REGB0 = REGB1;
4851 }
4852 }
4853 if (UNTAG_Bool(REGB0)) {
4854 goto label1;
4855 }
4856 /* ./syntax//typing.nit:829 */
4857 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4858 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4859 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
4860 /* ./syntax//typing.nit:830 */
4861 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4862 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4863 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4864 if (UNTAG_Bool(REGB0)) {
4865 goto label1;
4866 }
4867 /* ./syntax//typing.nit:831 */
4868 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4869 if (UNTAG_Bool(REGB0)) {
4870 } else {
4871 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4872 if (UNTAG_Bool(REGB1)) {
4873 REGB1 = TAG_Bool(false);
4874 REGB0 = REGB1;
4875 } else {
4876 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4877 REGB0 = REGB1;
4878 }
4879 }
4880 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4881 if (UNTAG_Bool(REGB0)) {
4882 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4883 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]);
4884 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4885 } else {
4886 REGB1 = TAG_Bool(false);
4887 REGB0 = REGB1;
4888 }
4889 if (UNTAG_Bool(REGB0)) {
4890 goto label1;
4891 }
4892 /* ./syntax//typing.nit:834 */
4893 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4894 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4895 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]);
4896 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4897 /* ./syntax//typing.nit:836 */
4898 REGB0 = TAG_Bool(true);
4899 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4900 label1: while(0);
4901 stack_frame_head = fra.me.prev;
4902 return;
4903 }
4904 val_t syntax___typing___AAssignOp___method_name(val_t p0){
4905 struct {struct stack_frame_t me;} fra;
4906 val_t tmp;
4907 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4908 fra.me.file = LOCATE_syntax___typing;
4909 fra.me.line = 841;
4910 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
4911 fra.me.has_broke = 0;
4912 fra.me.REG_size = 0;
4913 /* ./syntax//typing.nit:841 */
4914 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 841);
4915 stack_frame_head = fra.me.prev;
4916 return NIT_NULL;
4917 }
4918 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
4919 struct {struct stack_frame_t me;} fra;
4920 val_t REGB0;
4921 val_t tmp;
4922 static val_t once_value_1; /* Once value */
4923 static val_t once_value_2; /* Once value */
4924 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4925 fra.me.file = LOCATE_syntax___typing;
4926 fra.me.line = 844;
4927 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
4928 fra.me.has_broke = 0;
4929 fra.me.REG_size = 1;
4930 fra.me.REG[0] = NIT_NULL;
4931 fra.me.REG[0] = p0;
4932 /* ./syntax//typing.nit:844 */
4933 if (!once_value_1) {
4934 if (!once_value_2) {
4935 fra.me.REG[0] = BOX_NativeString("+");
4936 REGB0 = TAG_Int(1);
4937 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4938 once_value_2 = fra.me.REG[0];
4939 register_static_object(&once_value_2);
4940 } else fra.me.REG[0] = once_value_2;
4941 fra.me.REG[0] = fra.me.REG[0];
4942 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4943 once_value_1 = fra.me.REG[0];
4944 register_static_object(&once_value_1);
4945 } else fra.me.REG[0] = once_value_1;
4946 fra.me.REG[0] = fra.me.REG[0];
4947 goto label3;
4948 label3: while(0);
4949 stack_frame_head = fra.me.prev;
4950 return fra.me.REG[0];
4951 }
4952 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
4953 struct {struct stack_frame_t me;} fra;
4954 val_t REGB0;
4955 val_t tmp;
4956 static val_t once_value_1; /* Once value */
4957 static val_t once_value_2; /* Once value */
4958 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4959 fra.me.file = LOCATE_syntax___typing;
4960 fra.me.line = 847;
4961 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
4962 fra.me.has_broke = 0;
4963 fra.me.REG_size = 1;
4964 fra.me.REG[0] = NIT_NULL;
4965 fra.me.REG[0] = p0;
4966 /* ./syntax//typing.nit:847 */
4967 if (!once_value_1) {
4968 if (!once_value_2) {
4969 fra.me.REG[0] = BOX_NativeString("-");
4970 REGB0 = TAG_Int(1);
4971 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
4972 once_value_2 = fra.me.REG[0];
4973 register_static_object(&once_value_2);
4974 } else fra.me.REG[0] = once_value_2;
4975 fra.me.REG[0] = fra.me.REG[0];
4976 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4977 once_value_1 = fra.me.REG[0];
4978 register_static_object(&once_value_1);
4979 } else fra.me.REG[0] = once_value_1;
4980 fra.me.REG[0] = fra.me.REG[0];
4981 goto label3;
4982 label3: while(0);
4983 stack_frame_head = fra.me.prev;
4984 return fra.me.REG[0];
4985 }
4986 val_t syntax___typing___ASelfExpr___variable(val_t p0){
4987 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4988 val_t REGB0;
4989 val_t tmp;
4990 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4991 fra.me.file = LOCATE_syntax___typing;
4992 fra.me.line = 852;
4993 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
4994 fra.me.has_broke = 0;
4995 fra.me.REG_size = 2;
4996 fra.me.REG[0] = NIT_NULL;
4997 fra.me.REG[1] = NIT_NULL;
4998 fra.me.REG[0] = p0;
4999 /* ./syntax//typing.nit:852 */
5000 fra.me.REG[1] = fra.me.REG[0];
5001 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5002 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5003 if (UNTAG_Bool(REGB0)) {
5004 } else {
5005 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 852);
5006 }
5007 goto label1;
5008 label1: while(0);
5009 stack_frame_head = fra.me.prev;
5010 return fra.me.REG[1];
5011 }
5012 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5013 struct {struct stack_frame_t me;} fra;
5014 val_t tmp;
5015 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5016 fra.me.file = LOCATE_syntax___typing;
5017 fra.me.line = 854;
5018 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5019 fra.me.has_broke = 0;
5020 fra.me.REG_size = 1;
5021 fra.me.REG[0] = NIT_NULL;
5022 fra.me.REG[0] = p0;
5023 /* ./syntax//typing.nit:854 */
5024 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5025 goto label1;
5026 label1: while(0);
5027 stack_frame_head = fra.me.prev;
5028 return fra.me.REG[0];
5029 }
5030 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5031 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5032 val_t REGB0;
5033 val_t tmp;
5034 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5035 fra.me.file = LOCATE_syntax___typing;
5036 fra.me.line = 856;
5037 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5038 fra.me.has_broke = 0;
5039 fra.me.REG_size = 3;
5040 fra.me.REG[0] = NIT_NULL;
5041 fra.me.REG[1] = NIT_NULL;
5042 fra.me.REG[2] = NIT_NULL;
5043 fra.me.REG[0] = p0;
5044 fra.me.REG[1] = p1;
5045 /* ./syntax//typing.nit:858 */
5046 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5047 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5048 /* ./syntax//typing.nit:859 */
5049 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5050 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5051 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5052 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5053 /* ./syntax//typing.nit:860 */
5054 REGB0 = TAG_Bool(true);
5055 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5056 stack_frame_head = fra.me.prev;
5057 return;
5058 }
5059 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5060 struct {struct stack_frame_t me;} fra;
5061 val_t REGB0;
5062 val_t tmp;
5063 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5064 fra.me.file = LOCATE_syntax___typing;
5065 fra.me.line = 863;
5066 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5067 fra.me.has_broke = 0;
5068 fra.me.REG_size = 1;
5069 fra.me.REG[0] = NIT_NULL;
5070 fra.me.REG[0] = p0;
5071 /* ./syntax//typing.nit:863 */
5072 REGB0 = TAG_Bool(true);
5073 goto label1;
5074 label1: while(0);
5075 stack_frame_head = fra.me.prev;
5076 return REGB0;
5077 }
5078 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5079 struct {struct stack_frame_t me;} fra;
5080 val_t REGB0;
5081 val_t tmp;
5082 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5083 fra.me.file = LOCATE_syntax___typing;
5084 fra.me.line = 867;
5085 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5086 fra.me.has_broke = 0;
5087 fra.me.REG_size = 1;
5088 fra.me.REG[0] = NIT_NULL;
5089 fra.me.REG[0] = p0;
5090 /* ./syntax//typing.nit:867 */
5091 REGB0 = TAG_Bool(true);
5092 goto label1;
5093 label1: while(0);
5094 stack_frame_head = fra.me.prev;
5095 return REGB0;
5096 }
5097 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5098 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5099 val_t REGB0;
5100 val_t REGB1;
5101 val_t tmp;
5102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5103 fra.me.file = LOCATE_syntax___typing;
5104 fra.me.line = 871;
5105 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5106 fra.me.has_broke = 0;
5107 fra.me.REG_size = 5;
5108 fra.me.REG[0] = NIT_NULL;
5109 fra.me.REG[1] = NIT_NULL;
5110 fra.me.REG[2] = NIT_NULL;
5111 fra.me.REG[3] = NIT_NULL;
5112 fra.me.REG[4] = NIT_NULL;
5113 fra.me.REG[0] = p0;
5114 fra.me.REG[1] = p1;
5115 /* ./syntax//typing.nit:873 */
5116 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5117 /* ./syntax//typing.nit:876 */
5118 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5119 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5120 /* ./syntax//typing.nit:877 */
5121 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5122 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5123 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5124 /* ./syntax//typing.nit:880 */
5125 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5126 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5127 /* ./syntax//typing.nit:883 */
5128 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5129 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5130 /* ./syntax//typing.nit:886 */
5131 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5132 /* ./syntax//typing.nit:889 */
5133 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5134 /* ./syntax//typing.nit:890 */
5135 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5136 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5137 /* ./syntax//typing.nit:893 */
5138 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5139 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5140 /* ./syntax//typing.nit:896 */
5141 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5142 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5143 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]);
5144 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5145 /* ./syntax//typing.nit:898 */
5146 REGB0 = TAG_Int(2);
5147 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5148 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5150 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5151 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5152 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]);
5153 /* ./syntax//typing.nit:899 */
5154 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5155 if (UNTAG_Bool(REGB0)) {
5156 } else {
5157 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5158 if (UNTAG_Bool(REGB1)) {
5159 REGB1 = TAG_Bool(false);
5160 REGB0 = REGB1;
5161 } else {
5162 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5163 REGB0 = REGB1;
5164 }
5165 }
5166 if (UNTAG_Bool(REGB0)) {
5167 goto label1;
5168 }
5169 /* ./syntax//typing.nit:901 */
5170 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5171 /* ./syntax//typing.nit:902 */
5172 REGB0 = TAG_Bool(true);
5173 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5174 label1: while(0);
5175 stack_frame_head = fra.me.prev;
5176 return;
5177 }
5178 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5179 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5180 val_t REGB0;
5181 val_t tmp;
5182 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5183 fra.me.file = LOCATE_syntax___typing;
5184 fra.me.line = 907;
5185 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5186 fra.me.has_broke = 0;
5187 fra.me.REG_size = 2;
5188 fra.me.REG[0] = NIT_NULL;
5189 fra.me.REG[1] = NIT_NULL;
5190 fra.me.REG[0] = p0;
5191 fra.me.REG[1] = p1;
5192 /* ./syntax//typing.nit:909 */
5193 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5194 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5195 /* ./syntax//typing.nit:910 */
5196 REGB0 = TAG_Bool(true);
5197 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5198 stack_frame_head = fra.me.prev;
5199 return;
5200 }
5201 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5202 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5203 val_t REGB0;
5204 val_t REGB1;
5205 val_t tmp;
5206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5207 fra.me.file = LOCATE_syntax___typing;
5208 fra.me.line = 915;
5209 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5210 fra.me.has_broke = 0;
5211 fra.me.REG_size = 5;
5212 fra.me.REG[0] = NIT_NULL;
5213 fra.me.REG[1] = NIT_NULL;
5214 fra.me.REG[2] = NIT_NULL;
5215 fra.me.REG[3] = NIT_NULL;
5216 fra.me.REG[4] = NIT_NULL;
5217 fra.me.REG[0] = p0;
5218 fra.me.REG[1] = p1;
5219 /* ./syntax//typing.nit:917 */
5220 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5221 /* ./syntax//typing.nit:918 */
5222 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5223 /* ./syntax//typing.nit:919 */
5224 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5225 /* ./syntax//typing.nit:922 */
5226 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5227 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5228 /* ./syntax//typing.nit:925 */
5229 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5230 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5231 /* ./syntax//typing.nit:928 */
5232 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5233 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5234 /* ./syntax//typing.nit:929 */
5235 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5236 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5237 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5238 if (UNTAG_Bool(REGB0)) {
5239 } else {
5240 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5241 if (UNTAG_Bool(REGB1)) {
5242 REGB1 = TAG_Bool(false);
5243 REGB0 = REGB1;
5244 } else {
5245 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5246 REGB0 = REGB1;
5247 }
5248 }
5249 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5250 if (UNTAG_Bool(REGB0)) {
5251 /* ./syntax//typing.nit:930 */
5252 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5253 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5254 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5255 } else {
5256 /* ./syntax//typing.nit:932 */
5257 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5258 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5259 }
5260 /* ./syntax//typing.nit:935 */
5261 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5262 /* ./syntax//typing.nit:937 */
5263 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5264 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5265 /* ./syntax//typing.nit:938 */
5266 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5267 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5268 /* ./syntax//typing.nit:939 */
5269 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5270 /* ./syntax//typing.nit:940 */
5271 REGB0 = TAG_Bool(true);
5272 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5273 stack_frame_head = fra.me.prev;
5274 return;
5275 }
5276 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5277 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5278 val_t REGB0;
5279 val_t REGB1;
5280 val_t tmp;
5281 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5282 fra.me.file = LOCATE_syntax___typing;
5283 fra.me.line = 945;
5284 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5285 fra.me.has_broke = 0;
5286 fra.me.REG_size = 5;
5287 fra.me.REG[0] = NIT_NULL;
5288 fra.me.REG[1] = NIT_NULL;
5289 fra.me.REG[2] = NIT_NULL;
5290 fra.me.REG[3] = NIT_NULL;
5291 fra.me.REG[4] = NIT_NULL;
5292 fra.me.REG[0] = p0;
5293 fra.me.REG[1] = p1;
5294 /* ./syntax//typing.nit:947 */
5295 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5296 /* ./syntax//typing.nit:948 */
5297 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5298 /* ./syntax//typing.nit:951 */
5299 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5300 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5301 /* ./syntax//typing.nit:954 */
5302 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5303 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5304 /* ./syntax//typing.nit:957 */
5305 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5306 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5307 /* ./syntax//typing.nit:958 */
5308 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5309 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5310 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5311 if (UNTAG_Bool(REGB0)) {
5312 } else {
5313 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5314 if (UNTAG_Bool(REGB1)) {
5315 REGB1 = TAG_Bool(false);
5316 REGB0 = REGB1;
5317 } else {
5318 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5319 REGB0 = REGB1;
5320 }
5321 }
5322 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5323 if (UNTAG_Bool(REGB0)) {
5324 /* ./syntax//typing.nit:959 */
5325 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5326 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5327 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5328 } else {
5329 /* ./syntax//typing.nit:961 */
5330 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5331 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5332 }
5333 /* ./syntax//typing.nit:964 */
5334 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5335 /* ./syntax//typing.nit:966 */
5336 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5337 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5338 /* ./syntax//typing.nit:967 */
5339 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5340 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5341 /* ./syntax//typing.nit:968 */
5342 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5343 /* ./syntax//typing.nit:969 */
5344 REGB0 = TAG_Bool(true);
5345 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5346 stack_frame_head = fra.me.prev;
5347 return;
5348 }
5349 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5350 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5351 val_t REGB0;
5352 val_t tmp;
5353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5354 fra.me.file = LOCATE_syntax___typing;
5355 fra.me.line = 974;
5356 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5357 fra.me.has_broke = 0;
5358 fra.me.REG_size = 4;
5359 fra.me.REG[0] = NIT_NULL;
5360 fra.me.REG[1] = NIT_NULL;
5361 fra.me.REG[2] = NIT_NULL;
5362 fra.me.REG[3] = NIT_NULL;
5363 fra.me.REG[0] = p0;
5364 fra.me.REG[1] = p1;
5365 /* ./syntax//typing.nit:976 */
5366 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5367 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5368 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5369 /* ./syntax//typing.nit:979 */
5370 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5371 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5372 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5373 /* ./syntax//typing.nit:980 */
5374 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5375 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5376 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5377 /* ./syntax//typing.nit:982 */
5378 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5379 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5380 /* ./syntax//typing.nit:983 */
5381 REGB0 = TAG_Bool(true);
5382 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5383 stack_frame_head = fra.me.prev;
5384 return;
5385 }
5386 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5387 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5388 val_t REGB0;
5389 val_t REGB1;
5390 val_t tmp;
5391 static val_t once_value_1; /* Once value */
5392 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5393 fra.me.file = LOCATE_syntax___typing;
5394 fra.me.line = 988;
5395 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5396 fra.me.has_broke = 0;
5397 fra.me.REG_size = 7;
5398 fra.me.REG[0] = NIT_NULL;
5399 fra.me.REG[1] = NIT_NULL;
5400 fra.me.REG[2] = NIT_NULL;
5401 fra.me.REG[3] = NIT_NULL;
5402 fra.me.REG[4] = NIT_NULL;
5403 fra.me.REG[5] = NIT_NULL;
5404 fra.me.REG[6] = NIT_NULL;
5405 fra.me.REG[0] = p0;
5406 fra.me.REG[1] = p1;
5407 /* ./syntax//typing.nit:990 */
5408 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5409 /* ./syntax//typing.nit:993 */
5410 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5411 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5412 /* ./syntax//typing.nit:994 */
5413 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5414 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5415 /* ./syntax//typing.nit:997 */
5416 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5417 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5418 /* ./syntax//typing.nit:998 */
5419 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5420 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5421 if (UNTAG_Bool(REGB0)) {
5422 /* ./syntax//typing.nit:999 */
5423 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5424 if (!once_value_1) {
5425 fra.me.REG[5] = BOX_NativeString("Warning: left operant of a 'or else' is not a nullable type.");
5426 REGB0 = TAG_Int(60);
5427 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5428 once_value_1 = fra.me.REG[5];
5429 register_static_object(&once_value_1);
5430 } else fra.me.REG[5] = once_value_1;
5431 fra.me.REG[5] = fra.me.REG[5];
5432 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5433 } else {
5434 /* ./syntax//typing.nit:1001 */
5435 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5436 fra.me.REG[3] = fra.me.REG[5];
5437 }
5438 /* ./syntax//typing.nit:1005 */
5439 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5440 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5441 /* ./syntax//typing.nit:1006 */
5442 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5443 if (UNTAG_Bool(REGB0)) {
5444 } else {
5445 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5446 if (UNTAG_Bool(REGB1)) {
5447 REGB1 = TAG_Bool(false);
5448 REGB0 = REGB1;
5449 } else {
5450 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5451 REGB0 = REGB1;
5452 }
5453 }
5454 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5455 if (UNTAG_Bool(REGB0)) {
5456 /* ./syntax//typing.nit:1007 */
5457 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5458 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5459 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]);
5460 }
5461 /* ./syntax//typing.nit:1011 */
5462 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5463 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5464 /* ./syntax//typing.nit:1012 */
5465 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5466 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5467 /* ./syntax//typing.nit:1015 */
5468 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5469 /* ./syntax//typing.nit:1018 */
5470 REGB0 = TAG_Int(1);
5471 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5472 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5473 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5474 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]);
5475 /* ./syntax//typing.nit:1019 */
5476 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5477 if (UNTAG_Bool(REGB0)) {
5478 } else {
5479 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5480 if (UNTAG_Bool(REGB1)) {
5481 REGB1 = TAG_Bool(false);
5482 REGB0 = REGB1;
5483 } else {
5484 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5485 REGB0 = REGB1;
5486 }
5487 }
5488 if (UNTAG_Bool(REGB0)) {
5489 goto label2;
5490 }
5491 /* ./syntax//typing.nit:1021 */
5492 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5493 /* ./syntax//typing.nit:1022 */
5494 REGB0 = TAG_Bool(true);
5495 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5496 label2: while(0);
5497 stack_frame_head = fra.me.prev;
5498 return;
5499 }
5500 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5501 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5502 val_t REGB0;
5503 val_t tmp;
5504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5505 fra.me.file = LOCATE_syntax___typing;
5506 fra.me.line = 1027;
5507 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5508 fra.me.has_broke = 0;
5509 fra.me.REG_size = 2;
5510 fra.me.REG[0] = NIT_NULL;
5511 fra.me.REG[1] = NIT_NULL;
5512 fra.me.REG[0] = p0;
5513 fra.me.REG[1] = p1;
5514 /* ./syntax//typing.nit:1029 */
5515 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5516 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5517 /* ./syntax//typing.nit:1030 */
5518 REGB0 = TAG_Bool(true);
5519 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5520 stack_frame_head = fra.me.prev;
5521 return;
5522 }
5523 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5524 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5525 val_t REGB0;
5526 val_t tmp;
5527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5528 fra.me.file = LOCATE_syntax___typing;
5529 fra.me.line = 1035;
5530 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5531 fra.me.has_broke = 0;
5532 fra.me.REG_size = 2;
5533 fra.me.REG[0] = NIT_NULL;
5534 fra.me.REG[1] = NIT_NULL;
5535 fra.me.REG[0] = p0;
5536 fra.me.REG[1] = p1;
5537 /* ./syntax//typing.nit:1037 */
5538 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5539 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5540 /* ./syntax//typing.nit:1038 */
5541 REGB0 = TAG_Bool(true);
5542 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5543 stack_frame_head = fra.me.prev;
5544 return;
5545 }
5546 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5547 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5548 val_t REGB0;
5549 val_t tmp;
5550 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5551 fra.me.file = LOCATE_syntax___typing;
5552 fra.me.line = 1043;
5553 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5554 fra.me.has_broke = 0;
5555 fra.me.REG_size = 2;
5556 fra.me.REG[0] = NIT_NULL;
5557 fra.me.REG[1] = NIT_NULL;
5558 fra.me.REG[0] = p0;
5559 fra.me.REG[1] = p1;
5560 /* ./syntax//typing.nit:1045 */
5561 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5562 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5563 /* ./syntax//typing.nit:1046 */
5564 REGB0 = TAG_Bool(true);
5565 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5566 stack_frame_head = fra.me.prev;
5567 return;
5568 }
5569 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5570 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5571 val_t REGB0;
5572 val_t tmp;
5573 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5574 fra.me.file = LOCATE_syntax___typing;
5575 fra.me.line = 1051;
5576 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5577 fra.me.has_broke = 0;
5578 fra.me.REG_size = 2;
5579 fra.me.REG[0] = NIT_NULL;
5580 fra.me.REG[1] = NIT_NULL;
5581 fra.me.REG[0] = p0;
5582 fra.me.REG[1] = p1;
5583 /* ./syntax//typing.nit:1053 */
5584 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5585 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5586 /* ./syntax//typing.nit:1054 */
5587 REGB0 = TAG_Bool(true);
5588 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5589 stack_frame_head = fra.me.prev;
5590 return;
5591 }
5592 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5593 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5594 val_t REGB0;
5595 val_t tmp;
5596 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5597 fra.me.file = LOCATE_syntax___typing;
5598 fra.me.line = 1059;
5599 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
5600 fra.me.has_broke = 0;
5601 fra.me.REG_size = 2;
5602 fra.me.REG[0] = NIT_NULL;
5603 fra.me.REG[1] = NIT_NULL;
5604 fra.me.REG[0] = p0;
5605 /* ./syntax//typing.nit:1059 */
5606 fra.me.REG[1] = fra.me.REG[0];
5607 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
5608 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5609 if (UNTAG_Bool(REGB0)) {
5610 } else {
5611 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1059);
5612 }
5613 goto label1;
5614 label1: while(0);
5615 stack_frame_head = fra.me.prev;
5616 return fra.me.REG[1];
5617 }
5618 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
5619 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5620 val_t REGB0;
5621 val_t tmp;
5622 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5623 fra.me.file = LOCATE_syntax___typing;
5624 fra.me.line = 1061;
5625 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5626 fra.me.has_broke = 0;
5627 fra.me.REG_size = 5;
5628 fra.me.REG[0] = NIT_NULL;
5629 fra.me.REG[1] = NIT_NULL;
5630 fra.me.REG[2] = NIT_NULL;
5631 fra.me.REG[3] = NIT_NULL;
5632 fra.me.REG[4] = NIT_NULL;
5633 fra.me.REG[0] = p0;
5634 fra.me.REG[1] = p1;
5635 /* ./syntax//typing.nit:1063 */
5636 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
5637 /* ./syntax//typing.nit:1064 */
5638 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5639 /* ./syntax//typing.nit:1065 */
5640 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5641 /* ./syntax//typing.nit:1066 */
5642 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5643 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));
5644 /* ./syntax//typing.nit:1067 */
5645 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5646 /* ./syntax//typing.nit:1068 */
5647 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
5648 /* ./syntax//typing.nit:1069 */
5649 REGB0 = TAG_Bool(true);
5650 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5651 stack_frame_head = fra.me.prev;
5652 return;
5653 }
5654 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){
5655 struct {struct stack_frame_t me;} fra;
5656 fun_t CREG[1];
5657 val_t tmp;
5658 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5659 fra.me.file = LOCATE_syntax___typing;
5660 fra.me.line = 0;
5661 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
5662 fra.me.has_broke = 0;
5663 fra.me.REG_size = 1;
5664 fra.me.REG[0] = NIT_NULL;
5665 fra.me.closure_ctx = closctx_param;
5666 fra.me.closure_funs = CREG;
5667 fra.me.REG[0] = p0;
5668 CREG[0] = clos_fun0;
5669 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
5670 stack_frame_head = fra.me.prev;
5671 return;
5672 }
5673 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
5674 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5675 val_t REGB0;
5676 val_t tmp;
5677 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5678 fra.me.file = LOCATE_syntax___typing;
5679 fra.me.line = 1074;
5680 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
5681 fra.me.has_broke = 0;
5682 fra.me.REG_size = 2;
5683 fra.me.REG[0] = NIT_NULL;
5684 fra.me.REG[1] = NIT_NULL;
5685 fra.me.REG[0] = p0;
5686 fra.me.REG[1] = p1;
5687 /* ./syntax//typing.nit:1076 */
5688 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5689 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5690 /* ./syntax//typing.nit:1077 */
5691 REGB0 = TAG_Bool(true);
5692 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5693 stack_frame_head = fra.me.prev;
5694 return;
5695 }
5696 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
5697 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5698 val_t REGB0;
5699 val_t REGB1;
5700 val_t tmp;
5701 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5702 fra.me.file = LOCATE_syntax___typing;
5703 fra.me.line = 1082;
5704 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
5705 fra.me.has_broke = 0;
5706 fra.me.REG_size = 3;
5707 fra.me.REG[0] = NIT_NULL;
5708 fra.me.REG[1] = NIT_NULL;
5709 fra.me.REG[2] = NIT_NULL;
5710 fra.me.REG[0] = p0;
5711 fra.me.REG[1] = p1;
5712 /* ./syntax//typing.nit:1084 */
5713 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
5714 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]);
5715 /* ./syntax//typing.nit:1085 */
5716 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5717 if (UNTAG_Bool(REGB0)) {
5718 } else {
5719 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5720 if (UNTAG_Bool(REGB1)) {
5721 REGB1 = TAG_Bool(false);
5722 REGB0 = REGB1;
5723 } else {
5724 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5725 REGB0 = REGB1;
5726 }
5727 }
5728 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5729 if (UNTAG_Bool(REGB0)) {
5730 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
5731 }
5732 stack_frame_head = fra.me.prev;
5733 return;
5734 }
5735 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
5736 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5737 val_t REGB0;
5738 val_t tmp;
5739 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5740 fra.me.file = LOCATE_syntax___typing;
5741 fra.me.line = 1088;
5742 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
5743 fra.me.has_broke = 0;
5744 fra.me.REG_size = 3;
5745 fra.me.REG[0] = NIT_NULL;
5746 fra.me.REG[1] = NIT_NULL;
5747 fra.me.REG[2] = NIT_NULL;
5748 fra.me.REG[0] = p0;
5749 fra.me.REG[1] = p1;
5750 fra.me.REG[2] = p2;
5751 /* ./syntax//typing.nit:1090 */
5752 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5753 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5754 /* ./syntax//typing.nit:1091 */
5755 REGB0 = TAG_Bool(true);
5756 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5757 stack_frame_head = fra.me.prev;
5758 return;
5759 }
5760 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
5761 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5762 val_t REGB0;
5763 val_t REGB1;
5764 val_t tmp;
5765 static val_t once_value_2; /* Once value */
5766 static val_t once_value_3; /* Once value */
5767 static val_t once_value_4; /* Once value */
5768 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5769 fra.me.file = LOCATE_syntax___typing;
5770 fra.me.line = 1096;
5771 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
5772 fra.me.has_broke = 0;
5773 fra.me.REG_size = 6;
5774 fra.me.REG[0] = NIT_NULL;
5775 fra.me.REG[1] = NIT_NULL;
5776 fra.me.REG[2] = NIT_NULL;
5777 fra.me.REG[3] = NIT_NULL;
5778 fra.me.REG[4] = NIT_NULL;
5779 fra.me.REG[5] = NIT_NULL;
5780 fra.me.REG[0] = p0;
5781 fra.me.REG[1] = p1;
5782 /* ./syntax//typing.nit:1098 */
5783 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5784 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5785 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5786 if (UNTAG_Bool(REGB0)) {
5787 REGB0 = TAG_Bool(true);
5788 } else {
5789 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5790 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5791 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5792 REGB0 = REGB1;
5793 }
5794 if (UNTAG_Bool(REGB0)) {
5795 goto label1;
5796 }
5797 /* ./syntax//typing.nit:1099 */
5798 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5799 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
5800 /* ./syntax//typing.nit:1100 */
5801 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5802 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5803 /* ./syntax//typing.nit:1101 */
5804 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5805 if (UNTAG_Bool(REGB0)) {
5806 /* ./syntax//typing.nit:1102 */
5807 fra.me.REG[2] = fra.me.REG[3];
5808 } else {
5809 /* ./syntax//typing.nit:1103 */
5810 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5811 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5812 if (UNTAG_Bool(REGB0)) {
5813 /* ./syntax//typing.nit:1104 */
5814 REGB0 = TAG_Int(5);
5815 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5816 if (!once_value_2) {
5817 fra.me.REG[5] = BOX_NativeString("Type error: ");
5818 REGB0 = TAG_Int(12);
5819 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5820 once_value_2 = fra.me.REG[5];
5821 register_static_object(&once_value_2);
5822 } else fra.me.REG[5] = once_value_2;
5823 fra.me.REG[5] = fra.me.REG[5];
5824 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5825 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5826 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5827 if (!once_value_3) {
5828 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
5829 REGB0 = TAG_Int(19);
5830 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5831 once_value_3 = fra.me.REG[5];
5832 register_static_object(&once_value_3);
5833 } else fra.me.REG[5] = once_value_3;
5834 fra.me.REG[5] = fra.me.REG[5];
5835 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5836 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
5837 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5838 if (!once_value_4) {
5839 fra.me.REG[3] = BOX_NativeString(".");
5840 REGB0 = TAG_Int(1);
5841 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
5842 once_value_4 = fra.me.REG[3];
5843 register_static_object(&once_value_4);
5844 } else fra.me.REG[3] = once_value_4;
5845 fra.me.REG[3] = fra.me.REG[3];
5846 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5847 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5848 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
5849 /* ./syntax//typing.nit:1105 */
5850 goto label1;
5851 }
5852 }
5853 /* ./syntax//typing.nit:1107 */
5854 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
5855 /* ./syntax//typing.nit:1108 */
5856 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5857 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]);
5858 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5859 if (UNTAG_Bool(REGB0)) {
5860 REGB0 = TAG_Bool(true);
5861 } else {
5862 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5863 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]);
5864 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5865 REGB0 = REGB1;
5866 }
5867 if (UNTAG_Bool(REGB0)) {
5868 goto label1;
5869 }
5870 /* ./syntax//typing.nit:1109 */
5871 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5872 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5873 /* ./syntax//typing.nit:1110 */
5874 REGB0 = TAG_Bool(true);
5875 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5876 label1: while(0);
5877 stack_frame_head = fra.me.prev;
5878 return;
5879 }
5880 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
5881 struct {struct stack_frame_t me;} fra;
5882 val_t tmp;
5883 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5884 fra.me.file = LOCATE_syntax___typing;
5885 fra.me.line = 1115;
5886 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
5887 fra.me.has_broke = 0;
5888 fra.me.REG_size = 1;
5889 fra.me.REG[0] = NIT_NULL;
5890 fra.me.REG[0] = p0;
5891 /* ./syntax//typing.nit:1115 */
5892 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
5893 stack_frame_head = fra.me.prev;
5894 return fra.me.REG[0];
5895 }
5896 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
5897 struct {struct stack_frame_t me;} fra;
5898 val_t tmp;
5899 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5900 fra.me.file = LOCATE_syntax___typing;
5901 fra.me.line = 1116;
5902 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
5903 fra.me.has_broke = 0;
5904 fra.me.REG_size = 1;
5905 fra.me.REG[0] = NIT_NULL;
5906 fra.me.REG[0] = p0;
5907 /* ./syntax//typing.nit:1116 */
5908 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5909 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
5910 goto label1;
5911 label1: while(0);
5912 stack_frame_head = fra.me.prev;
5913 return fra.me.REG[0];
5914 }
5915 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
5916 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
5917 val_t REGB0;
5918 val_t REGB1;
5919 val_t REGB2;
5920 val_t tmp;
5921 static val_t once_value_1; /* Once value */
5922 static val_t once_value_2; /* Once value */
5923 static val_t once_value_3; /* Once value */
5924 static val_t once_value_5; /* Once value */
5925 static val_t once_value_6; /* Once value */
5926 static val_t once_value_8; /* Once value */
5927 static val_t once_value_9; /* Once value */
5928 static val_t once_value_10; /* Once value */
5929 static val_t once_value_11; /* Once value */
5930 static val_t once_value_12; /* Once value */
5931 static val_t once_value_13; /* Once value */
5932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5933 fra.me.file = LOCATE_syntax___typing;
5934 fra.me.line = 1117;
5935 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
5936 fra.me.has_broke = 0;
5937 fra.me.REG_size = 10;
5938 fra.me.REG[0] = NIT_NULL;
5939 fra.me.REG[1] = NIT_NULL;
5940 fra.me.REG[2] = NIT_NULL;
5941 fra.me.REG[3] = NIT_NULL;
5942 fra.me.REG[4] = NIT_NULL;
5943 fra.me.REG[5] = NIT_NULL;
5944 fra.me.REG[6] = NIT_NULL;
5945 fra.me.REG[7] = NIT_NULL;
5946 fra.me.REG[8] = NIT_NULL;
5947 fra.me.REG[9] = NIT_NULL;
5948 fra.me.REG[0] = p0;
5949 fra.me.REG[1] = p1;
5950 /* ./syntax//typing.nit:1117 */
5951 fra.me.REG[2] = fra.me.REG[0];
5952 /* ./syntax//typing.nit:1119 */
5953 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5954 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
5955 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
5956 /* ./syntax//typing.nit:1120 */
5957 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
5958 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5959 if (UNTAG_Bool(REGB0)) {
5960 /* ./syntax//typing.nit:1121 */
5961 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5962 REGB0 = TAG_Bool(true);
5963 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
5964 } else {
5965 /* ./syntax//typing.nit:1122 */
5966 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5967 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5968 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
5969 if (UNTAG_Bool(REGB0)) {
5970 /* ./syntax//typing.nit:1123 */
5971 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
5972 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
5973 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
5974 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
5975 /* ./../lib/standard//collection//array.nit:266 */
5976 fra.me.REG[4] = fra.me.REG[5];
5977 /* ./../lib/standard//collection//array.nit:269 */
5978 REGB0 = TAG_Int(0);
5979 /* ./../lib/standard//collection//array.nit:270 */
5980 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5981 if (UNTAG_Bool(REGB1)) {
5982 } else {
5983 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
5984 }
5985 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
5986 /* ./../lib/standard//collection//array.nit:271 */
5987 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
5988 /* ./../lib/standard//collection//array.nit:272 */
5989 while(1) {
5990 /* ./../lib/standard//collection//array.nit:24 */
5991 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5992 if (UNTAG_Bool(REGB1)) {
5993 } else {
5994 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5995 }
5996 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
5997 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
5998 if (UNTAG_Bool(REGB2)) {
5999 } else {
6000 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6001 }
6002 /* ./../lib/standard//kernel.nit:232 */
6003 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6004 /* ./../lib/standard//collection//array.nit:272 */
6005 if (UNTAG_Bool(REGB1)) {
6006 /* ./../lib/standard//collection//array.nit:273 */
6007 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6008 if (UNTAG_Bool(REGB1)) {
6009 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6010 }
6011 /* ./../lib/standard//collection//array.nit:718 */
6012 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6013 /* ./syntax//typing.nit:1125 */
6014 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6015 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6016 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6017 if (UNTAG_Bool(REGB1)) {
6018 /* ./syntax//typing.nit:1126 */
6019 REGB1 = TAG_Int(5);
6020 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6021 if (!once_value_1) {
6022 fra.me.REG[9] = BOX_NativeString("Error: ");
6023 REGB1 = TAG_Int(7);
6024 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6025 once_value_1 = fra.me.REG[9];
6026 register_static_object(&once_value_1);
6027 } else fra.me.REG[9] = once_value_1;
6028 fra.me.REG[9] = fra.me.REG[9];
6029 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6030 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6031 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6032 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6033 if (!once_value_2) {
6034 fra.me.REG[9] = BOX_NativeString("::");
6035 REGB1 = TAG_Int(2);
6036 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6037 once_value_2 = fra.me.REG[9];
6038 register_static_object(&once_value_2);
6039 } else fra.me.REG[9] = once_value_2;
6040 fra.me.REG[9] = fra.me.REG[9];
6041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6042 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6043 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6044 if (!once_value_3) {
6045 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6046 REGB1 = TAG_Int(22);
6047 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6048 once_value_3 = fra.me.REG[9];
6049 register_static_object(&once_value_3);
6050 } else fra.me.REG[9] = once_value_3;
6051 fra.me.REG[9] = fra.me.REG[9];
6052 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6053 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6054 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6055 } else {
6056 /* ./syntax//typing.nit:1128 */
6057 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6058 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6059 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6060 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6061 }
6062 /* ./../lib/standard//collection//array.nit:274 */
6063 REGB1 = TAG_Int(1);
6064 /* ./../lib/standard//kernel.nit:235 */
6065 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6066 /* ./../lib/standard//collection//array.nit:274 */
6067 REGB0 = REGB1;
6068 } else {
6069 /* ./../lib/standard//collection//array.nit:272 */
6070 goto label4;
6071 }
6072 }
6073 label4: while(0);
6074 /* ./syntax//typing.nit:1131 */
6075 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6076 if (UNTAG_Bool(REGB0)) {
6077 /* ./syntax//typing.nit:1132 */
6078 REGB0 = TAG_Int(3);
6079 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6080 if (!once_value_5) {
6081 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6082 REGB0 = TAG_Int(27);
6083 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6084 once_value_5 = fra.me.REG[4];
6085 register_static_object(&once_value_5);
6086 } else fra.me.REG[4] = once_value_5;
6087 fra.me.REG[4] = fra.me.REG[4];
6088 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6089 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6090 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6091 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6092 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6093 if (!once_value_6) {
6094 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6095 REGB0 = TAG_Int(17);
6096 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6097 once_value_6 = fra.me.REG[4];
6098 register_static_object(&once_value_6);
6099 } else fra.me.REG[4] = once_value_6;
6100 fra.me.REG[4] = fra.me.REG[4];
6101 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6102 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6103 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6104 /* ./syntax//typing.nit:1133 */
6105 goto label7;
6106 } else {
6107 /* ./../lib/standard//collection//array.nit:24 */
6108 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6109 if (UNTAG_Bool(REGB0)) {
6110 } else {
6111 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6112 }
6113 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6114 /* ./syntax//typing.nit:1134 */
6115 REGB1 = TAG_Int(1);
6116 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6117 if (UNTAG_Bool(REGB2)) {
6118 } else {
6119 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6120 }
6121 /* ./../lib/standard//kernel.nit:234 */
6122 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6123 /* ./syntax//typing.nit:1134 */
6124 if (UNTAG_Bool(REGB1)) {
6125 /* ./syntax//typing.nit:1135 */
6126 REGB1 = TAG_Int(5);
6127 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6128 if (!once_value_8) {
6129 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6130 REGB1 = TAG_Int(37);
6131 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6132 once_value_8 = fra.me.REG[4];
6133 register_static_object(&once_value_8);
6134 } else fra.me.REG[4] = once_value_8;
6135 fra.me.REG[4] = fra.me.REG[4];
6136 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6137 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6138 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6139 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6140 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6141 if (!once_value_9) {
6142 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6143 REGB1 = TAG_Int(18);
6144 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6145 once_value_9 = fra.me.REG[4];
6146 register_static_object(&once_value_9);
6147 } else fra.me.REG[4] = once_value_9;
6148 fra.me.REG[4] = fra.me.REG[4];
6149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6150 if (!once_value_10) {
6151 fra.me.REG[4] = BOX_NativeString(", ");
6152 REGB1 = TAG_Int(2);
6153 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6154 once_value_10 = fra.me.REG[4];
6155 register_static_object(&once_value_10);
6156 } else fra.me.REG[4] = once_value_10;
6157 fra.me.REG[4] = fra.me.REG[4];
6158 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6159 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6160 if (!once_value_11) {
6161 fra.me.REG[4] = BOX_NativeString(".");
6162 REGB1 = TAG_Int(1);
6163 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6164 once_value_11 = fra.me.REG[4];
6165 register_static_object(&once_value_11);
6166 } else fra.me.REG[4] = once_value_11;
6167 fra.me.REG[4] = fra.me.REG[4];
6168 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6169 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6170 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6171 /* ./syntax//typing.nit:1136 */
6172 goto label7;
6173 }
6174 }
6175 /* ./syntax//typing.nit:1138 */
6176 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6177 /* ./syntax//typing.nit:1139 */
6178 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6179 if (UNTAG_Bool(REGB1)) {
6180 } else {
6181 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1139);
6182 }
6183 /* ./syntax//typing.nit:1140 */
6184 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6185 /* ./syntax//typing.nit:1141 */
6186 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6187 /* ./syntax//typing.nit:1142 */
6188 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6189 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6190 REGB0 = TAG_Int(0);
6191 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6192 if (UNTAG_Bool(REGB2)) {
6193 } else {
6194 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6195 }
6196 /* ./../lib/standard//kernel.nit:234 */
6197 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6198 /* ./syntax//typing.nit:1142 */
6199 if (UNTAG_Bool(REGB0)) {
6200 /* ./syntax//typing.nit:1143 */
6201 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6202 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6203 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*/;
6204 if (UNTAG_Bool(REGB0)) {
6205 } else {
6206 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1143);
6207 }
6208 REGB0 = TAG_Bool(true);
6209 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);
6210 /* ./syntax//typing.nit:1144 */
6211 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6212 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6213 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]);
6214 }
6215 } else {
6216 /* ./syntax//typing.nit:1147 */
6217 REGB0 = TAG_Int(3);
6218 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6219 if (!once_value_12) {
6220 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6221 REGB0 = TAG_Int(35);
6222 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6223 once_value_12 = fra.me.REG[5];
6224 register_static_object(&once_value_12);
6225 } else fra.me.REG[5] = once_value_12;
6226 fra.me.REG[5] = fra.me.REG[5];
6227 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6228 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6229 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6230 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6231 if (!once_value_13) {
6232 fra.me.REG[5] = BOX_NativeString(".");
6233 REGB0 = TAG_Int(1);
6234 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6235 once_value_13 = fra.me.REG[5];
6236 register_static_object(&once_value_13);
6237 } else fra.me.REG[5] = once_value_13;
6238 fra.me.REG[5] = fra.me.REG[5];
6239 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6240 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6241 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6242 /* ./syntax//typing.nit:1148 */
6243 goto label7;
6244 }
6245 }
6246 /* ./syntax//typing.nit:1151 */
6247 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6248 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6249 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6250 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*/;
6251 if (UNTAG_Bool(REGB0)) {
6252 } else {
6253 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1151);
6254 }
6255 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6256 if (UNTAG_Bool(REGB0)) {
6257 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1151);
6258 }
6259 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6260 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6261 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6262 if (UNTAG_Bool(REGB0)) {
6263 } else {
6264 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6265 if (UNTAG_Bool(REGB1)) {
6266 REGB1 = TAG_Bool(false);
6267 REGB0 = REGB1;
6268 } else {
6269 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6270 REGB0 = REGB1;
6271 }
6272 }
6273 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6274 if (UNTAG_Bool(REGB0)) {
6275 /* ./syntax//typing.nit:1152 */
6276 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6277 /* ./syntax//typing.nit:1153 */
6278 fra.me.REG[4] = NIT_NULL;
6279 /* ./../lib/standard//collection//array.nit:269 */
6280 REGB0 = TAG_Int(0);
6281 /* ./../lib/standard//collection//array.nit:270 */
6282 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6283 if (UNTAG_Bool(REGB1)) {
6284 } else {
6285 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6286 }
6287 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6288 /* ./../lib/standard//collection//array.nit:271 */
6289 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6290 /* ./../lib/standard//collection//array.nit:272 */
6291 while(1) {
6292 /* ./../lib/standard//collection//array.nit:24 */
6293 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6294 if (UNTAG_Bool(REGB1)) {
6295 } else {
6296 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6297 }
6298 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6299 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6300 if (UNTAG_Bool(REGB2)) {
6301 } else {
6302 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6303 }
6304 /* ./../lib/standard//kernel.nit:232 */
6305 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6306 /* ./../lib/standard//collection//array.nit:272 */
6307 if (UNTAG_Bool(REGB1)) {
6308 /* ./../lib/standard//collection//array.nit:273 */
6309 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6310 if (UNTAG_Bool(REGB1)) {
6311 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6312 }
6313 /* ./../lib/standard//collection//array.nit:718 */
6314 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6315 /* ./syntax//typing.nit:1155 */
6316 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6317 if (UNTAG_Bool(REGB1)) {
6318 } else {
6319 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1155);
6320 }
6321 /* ./syntax//typing.nit:1156 */
6322 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6323 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6324 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*/;
6325 if (UNTAG_Bool(REGB1)) {
6326 } else {
6327 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1156);
6328 }
6329 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6330 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6331 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6332 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6333 if (UNTAG_Bool(REGB1)) {
6334 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6335 }
6336 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6337 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6338 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6339 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6340 if (UNTAG_Bool(REGB1)) {
6341 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
6342 }
6343 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6344 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6345 /* ./syntax//typing.nit:1157 */
6346 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6347 /* ./syntax//typing.nit:1158 */
6348 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6349 if (UNTAG_Bool(REGB1)) {
6350 } else {
6351 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6352 if (UNTAG_Bool(REGB2)) {
6353 REGB2 = TAG_Bool(false);
6354 REGB1 = REGB2;
6355 } else {
6356 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6357 REGB1 = REGB2;
6358 }
6359 }
6360 if (UNTAG_Bool(REGB1)) {
6361 REGB1 = TAG_Bool(true);
6362 } else {
6363 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6364 if (UNTAG_Bool(REGB2)) {
6365 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1158);
6366 }
6367 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6368 REGB1 = REGB2;
6369 }
6370 if (UNTAG_Bool(REGB1)) {
6371 /* ./syntax//typing.nit:1159 */
6372 fra.me.REG[4] = fra.me.REG[8];
6373 }
6374 /* ./../lib/standard//collection//array.nit:274 */
6375 REGB1 = TAG_Int(1);
6376 /* ./../lib/standard//kernel.nit:235 */
6377 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6378 /* ./../lib/standard//collection//array.nit:274 */
6379 REGB0 = REGB1;
6380 } else {
6381 /* ./../lib/standard//collection//array.nit:272 */
6382 goto label14;
6383 }
6384 }
6385 label14: while(0);
6386 /* ./../lib/standard//collection//array.nit:269 */
6387 REGB0 = TAG_Int(0);
6388 /* ./../lib/standard//collection//array.nit:270 */
6389 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6390 if (UNTAG_Bool(REGB1)) {
6391 } else {
6392 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6393 }
6394 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6395 /* ./../lib/standard//collection//array.nit:271 */
6396 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6397 /* ./../lib/standard//collection//array.nit:272 */
6398 while(1) {
6399 /* ./../lib/standard//collection//array.nit:24 */
6400 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6401 if (UNTAG_Bool(REGB1)) {
6402 } else {
6403 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6404 }
6405 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6406 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6407 if (UNTAG_Bool(REGB2)) {
6408 } else {
6409 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6410 }
6411 /* ./../lib/standard//kernel.nit:232 */
6412 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6413 /* ./../lib/standard//collection//array.nit:272 */
6414 if (UNTAG_Bool(REGB1)) {
6415 /* ./../lib/standard//collection//array.nit:273 */
6416 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6417 if (UNTAG_Bool(REGB1)) {
6418 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6419 }
6420 /* ./../lib/standard//collection//array.nit:718 */
6421 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6422 /* ./syntax//typing.nit:1163 */
6423 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6424 if (UNTAG_Bool(REGB1)) {
6425 } else {
6426 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1163);
6427 }
6428 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]);
6429 /* ./../lib/standard//collection//array.nit:274 */
6430 REGB1 = TAG_Int(1);
6431 /* ./../lib/standard//kernel.nit:235 */
6432 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6433 /* ./../lib/standard//collection//array.nit:274 */
6434 REGB0 = REGB1;
6435 } else {
6436 /* ./../lib/standard//collection//array.nit:272 */
6437 goto label15;
6438 }
6439 }
6440 label15: while(0);
6441 /* ./syntax//typing.nit:1165 */
6442 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6443 }
6444 /* ./syntax//typing.nit:1167 */
6445 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6446 /* ./syntax//typing.nit:1168 */
6447 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6448 if (UNTAG_Bool(REGB0)) {
6449 } else {
6450 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1168);
6451 }
6452 /* ./syntax//typing.nit:1169 */
6453 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6454 /* ./syntax//typing.nit:1170 */
6455 REGB0 = TAG_Bool(true);
6456 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6457 label7: while(0);
6458 stack_frame_head = fra.me.prev;
6459 return;
6460 }
6461 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6462 struct {struct stack_frame_t me;} fra;
6463 val_t tmp;
6464 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6465 fra.me.file = LOCATE_syntax___typing;
6466 fra.me.line = 1175;
6467 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6468 fra.me.has_broke = 0;
6469 fra.me.REG_size = 1;
6470 fra.me.REG[0] = NIT_NULL;
6471 fra.me.REG[0] = p0;
6472 /* ./syntax//typing.nit:1175 */
6473 fra.me.REG[0] = NIT_NULL;
6474 goto label1;
6475 label1: while(0);
6476 stack_frame_head = fra.me.prev;
6477 return fra.me.REG[0];
6478 }
6479 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6480 struct {struct stack_frame_t me;} fra;
6481 val_t tmp;
6482 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6483 fra.me.file = LOCATE_syntax___typing;
6484 fra.me.line = 1176;
6485 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6486 fra.me.has_broke = 0;
6487 fra.me.REG_size = 0;
6488 /* ./syntax//typing.nit:1176 */
6489 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1176);
6490 stack_frame_head = fra.me.prev;
6491 return NIT_NULL;
6492 }
6493 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6494 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6495 val_t REGB0;
6496 val_t REGB1;
6497 val_t tmp;
6498 static val_t once_value_1; /* Once value */
6499 static val_t once_value_2; /* Once value */
6500 static val_t once_value_4; /* Once value */
6501 static val_t once_value_5; /* Once value */
6502 static val_t once_value_6; /* Once value */
6503 static val_t once_value_7; /* Once value */
6504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6505 fra.me.file = LOCATE_syntax___typing;
6506 fra.me.line = 1178;
6507 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6508 fra.me.has_broke = 0;
6509 fra.me.REG_size = 8;
6510 fra.me.REG[0] = NIT_NULL;
6511 fra.me.REG[1] = NIT_NULL;
6512 fra.me.REG[2] = NIT_NULL;
6513 fra.me.REG[3] = NIT_NULL;
6514 fra.me.REG[4] = NIT_NULL;
6515 fra.me.REG[5] = NIT_NULL;
6516 fra.me.REG[6] = NIT_NULL;
6517 fra.me.REG[7] = NIT_NULL;
6518 fra.me.REG[0] = p0;
6519 fra.me.REG[1] = p1;
6520 /* ./syntax//typing.nit:1178 */
6521 fra.me.REG[2] = fra.me.REG[0];
6522 /* ./syntax//typing.nit:1180 */
6523 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6524 /* ./syntax//typing.nit:1181 */
6525 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6526 /* ./syntax//typing.nit:1188 */
6527 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6528 if (UNTAG_Bool(REGB0)) {
6529 } else {
6530 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6531 if (UNTAG_Bool(REGB1)) {
6532 REGB1 = TAG_Bool(false);
6533 REGB0 = REGB1;
6534 } else {
6535 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6536 REGB0 = REGB1;
6537 }
6538 }
6539 if (UNTAG_Bool(REGB0)) {
6540 /* ./syntax//typing.nit:1189 */
6541 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6542 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6543 } else {
6544 /* ./syntax//typing.nit:1191 */
6545 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6546 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6547 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6548 if (UNTAG_Bool(REGB0)) {
6549 /* ./syntax//typing.nit:1192 */
6550 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6551 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6552 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6553 /* ./syntax//typing.nit:1193 */
6554 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6555 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6556 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6557 fra.me.REG[5] = fra.me.REG[6];
6558 } else {
6559 /* ./syntax//typing.nit:1195 */
6560 REGB0 = TAG_Int(3);
6561 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6562 if (!once_value_1) {
6563 fra.me.REG[7] = BOX_NativeString("Error: class ");
6564 REGB0 = TAG_Int(13);
6565 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6566 once_value_1 = fra.me.REG[7];
6567 register_static_object(&once_value_1);
6568 } else fra.me.REG[7] = once_value_1;
6569 fra.me.REG[7] = fra.me.REG[7];
6570 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
6571 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6572 if (UNTAG_Bool(REGB0)) {
6573 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1195);
6574 }
6575 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6576 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6577 if (!once_value_2) {
6578 fra.me.REG[3] = BOX_NativeString(", not found.");
6579 REGB0 = TAG_Int(12);
6580 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6581 once_value_2 = fra.me.REG[3];
6582 register_static_object(&once_value_2);
6583 } else fra.me.REG[3] = once_value_2;
6584 fra.me.REG[3] = fra.me.REG[3];
6585 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6586 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6587 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6588 /* ./syntax//typing.nit:1196 */
6589 goto label3;
6590 }
6591 }
6592 /* ./syntax//typing.nit:1200 */
6593 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6594 if (UNTAG_Bool(REGB0)) {
6595 /* ./syntax//typing.nit:1201 */
6596 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
6597 /* ./syntax//typing.nit:1203 */
6598 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
6599 /* ./syntax//typing.nit:1205 */
6600 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6601 if (UNTAG_Bool(REGB0)) {
6602 } else {
6603 /* ./syntax//typing.nit:1208 */
6604 REGB0 = TAG_Int(3);
6605 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6606 if (!once_value_4) {
6607 fra.me.REG[7] = BOX_NativeString("Error: property ");
6608 REGB0 = TAG_Int(16);
6609 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6610 once_value_4 = fra.me.REG[7];
6611 register_static_object(&once_value_4);
6612 } else fra.me.REG[7] = once_value_4;
6613 fra.me.REG[7] = fra.me.REG[7];
6614 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6615 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6616 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6617 if (!once_value_5) {
6618 fra.me.REG[7] = BOX_NativeString(" is not a method.");
6619 REGB0 = TAG_Int(17);
6620 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6621 once_value_5 = fra.me.REG[7];
6622 register_static_object(&once_value_5);
6623 } else fra.me.REG[7] = once_value_5;
6624 fra.me.REG[7] = fra.me.REG[7];
6625 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6626 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6627 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6628 /* ./syntax//typing.nit:1209 */
6629 goto label3;
6630 }
6631 } else {
6632 /* ./syntax//typing.nit:1212 */
6633 REGB0 = TAG_Int(3);
6634 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6635 if (!once_value_6) {
6636 fra.me.REG[7] = BOX_NativeString("Error: property ");
6637 REGB0 = TAG_Int(16);
6638 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6639 once_value_6 = fra.me.REG[7];
6640 register_static_object(&once_value_6);
6641 } else fra.me.REG[7] = once_value_6;
6642 fra.me.REG[7] = fra.me.REG[7];
6643 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6644 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6645 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6646 if (!once_value_7) {
6647 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
6648 REGB0 = TAG_Int(27);
6649 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6650 once_value_7 = fra.me.REG[4];
6651 register_static_object(&once_value_7);
6652 } else fra.me.REG[4] = once_value_7;
6653 fra.me.REG[4] = fra.me.REG[4];
6654 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6655 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6656 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6657 /* ./syntax//typing.nit:1213 */
6658 goto label3;
6659 }
6660 /* ./syntax//typing.nit:1216 */
6661 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
6662 /* ./syntax//typing.nit:1217 */
6663 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6664 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6665 if (UNTAG_Bool(REGB0)) {
6666 } else {
6667 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1217);
6668 }
6669 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
6670 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6671 label3: while(0);
6672 stack_frame_head = fra.me.prev;
6673 return;
6674 }
6675 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
6676 struct {struct stack_frame_t me;} fra;
6677 val_t tmp;
6678 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6679 fra.me.file = LOCATE_syntax___typing;
6680 fra.me.line = 1222;
6681 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
6682 fra.me.has_broke = 0;
6683 fra.me.REG_size = 1;
6684 fra.me.REG[0] = NIT_NULL;
6685 fra.me.REG[0] = p0;
6686 /* ./syntax//typing.nit:1222 */
6687 fra.me.REG[0] = NIT_NULL;
6688 goto label1;
6689 label1: while(0);
6690 stack_frame_head = fra.me.prev;
6691 return fra.me.REG[0];
6692 }
6693 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
6694 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6695 val_t REGB0;
6696 val_t tmp;
6697 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6698 fra.me.file = LOCATE_syntax___typing;
6699 fra.me.line = 1223;
6700 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
6701 fra.me.has_broke = 0;
6702 fra.me.REG_size = 2;
6703 fra.me.REG[0] = NIT_NULL;
6704 fra.me.REG[1] = NIT_NULL;
6705 fra.me.REG[0] = p0;
6706 /* ./syntax//typing.nit:1223 */
6707 fra.me.REG[1] = fra.me.REG[0];
6708 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
6709 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
6710 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*/;
6711 if (UNTAG_Bool(REGB0)) {
6712 } else {
6713 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1223);
6714 }
6715 goto label1;
6716 label1: while(0);
6717 stack_frame_head = fra.me.prev;
6718 return fra.me.REG[1];
6719 }
6720 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
6721 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6722 val_t REGB0;
6723 val_t tmp;
6724 static val_t once_value_1; /* Once value */
6725 static val_t once_value_2; /* Once value */
6726 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6727 fra.me.file = LOCATE_syntax___typing;
6728 fra.me.line = 1227;
6729 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
6730 fra.me.has_broke = 0;
6731 fra.me.REG_size = 4;
6732 fra.me.REG[0] = NIT_NULL;
6733 fra.me.REG[1] = NIT_NULL;
6734 fra.me.REG[2] = NIT_NULL;
6735 fra.me.REG[3] = NIT_NULL;
6736 fra.me.REG[0] = p0;
6737 fra.me.REG[1] = p1;
6738 /* ./syntax//typing.nit:1229 */
6739 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6740 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
6741 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
6742 /* ./syntax//typing.nit:1230 */
6743 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
6744 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6745 if (UNTAG_Bool(REGB0)) {
6746 /* ./syntax//typing.nit:1231 */
6747 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6748 REGB0 = TAG_Bool(true);
6749 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
6750 } else {
6751 /* ./syntax//typing.nit:1233 */
6752 REGB0 = TAG_Int(3);
6753 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6754 if (!once_value_1) {
6755 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
6756 REGB0 = TAG_Int(35);
6757 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6758 once_value_1 = fra.me.REG[3];
6759 register_static_object(&once_value_1);
6760 } else fra.me.REG[3] = once_value_1;
6761 fra.me.REG[3] = fra.me.REG[3];
6762 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6763 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6764 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6765 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6766 if (!once_value_2) {
6767 fra.me.REG[3] = BOX_NativeString(".");
6768 REGB0 = TAG_Int(1);
6769 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6770 once_value_2 = fra.me.REG[3];
6771 register_static_object(&once_value_2);
6772 } else fra.me.REG[3] = once_value_2;
6773 fra.me.REG[3] = fra.me.REG[3];
6774 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6775 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6776 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
6777 /* ./syntax//typing.nit:1234 */
6778 goto label3;
6779 }
6780 label3: while(0);
6781 stack_frame_head = fra.me.prev;
6782 return;
6783 }
6784 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
6785 struct {struct stack_frame_t me;} fra;
6786 val_t tmp;
6787 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6788 fra.me.file = LOCATE_syntax___typing;
6789 fra.me.line = 1240;
6790 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
6791 fra.me.has_broke = 0;
6792 fra.me.REG_size = 1;
6793 fra.me.REG[0] = NIT_NULL;
6794 fra.me.REG[0] = p0;
6795 /* ./syntax//typing.nit:1240 */
6796 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6797 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6798 goto label1;
6799 label1: while(0);
6800 stack_frame_head = fra.me.prev;
6801 return fra.me.REG[0];
6802 }
6803 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
6804 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6805 val_t REGB0;
6806 val_t tmp;
6807 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6808 fra.me.file = LOCATE_syntax___typing;
6809 fra.me.line = 1241;
6810 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
6811 fra.me.has_broke = 0;
6812 fra.me.REG_size = 2;
6813 fra.me.REG[0] = NIT_NULL;
6814 fra.me.REG[1] = NIT_NULL;
6815 fra.me.REG[0] = p0;
6816 /* ./syntax//typing.nit:1241 */
6817 fra.me.REG[1] = fra.me.REG[0];
6818 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
6819 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
6820 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*/;
6821 if (UNTAG_Bool(REGB0)) {
6822 } else {
6823 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1241);
6824 }
6825 goto label1;
6826 label1: while(0);
6827 stack_frame_head = fra.me.prev;
6828 return fra.me.REG[1];
6829 }
6830 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
6831 struct {struct stack_frame_t me;} fra;
6832 val_t tmp;
6833 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6834 fra.me.file = LOCATE_syntax___typing;
6835 fra.me.line = 1245;
6836 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
6837 fra.me.has_broke = 0;
6838 fra.me.REG_size = 1;
6839 fra.me.REG[0] = NIT_NULL;
6840 fra.me.REG[0] = p0;
6841 /* ./syntax//typing.nit:1245 */
6842 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
6843 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6844 goto label1;
6845 label1: while(0);
6846 stack_frame_head = fra.me.prev;
6847 return fra.me.REG[0];
6848 }
6849 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
6850 struct {struct stack_frame_t me;} fra;
6851 val_t REGB0;
6852 val_t tmp;
6853 static val_t once_value_1; /* Once value */
6854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6855 fra.me.file = LOCATE_syntax___typing;
6856 fra.me.line = 1246;
6857 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
6858 fra.me.has_broke = 0;
6859 fra.me.REG_size = 1;
6860 fra.me.REG[0] = NIT_NULL;
6861 fra.me.REG[0] = p0;
6862 /* ./syntax//typing.nit:1246 */
6863 if (!once_value_1) {
6864 fra.me.REG[0] = BOX_NativeString("init");
6865 REGB0 = TAG_Int(4);
6866 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
6867 once_value_1 = fra.me.REG[0];
6868 register_static_object(&once_value_1);
6869 } else fra.me.REG[0] = once_value_1;
6870 fra.me.REG[0] = fra.me.REG[0];
6871 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
6872 goto label2;
6873 label2: while(0);
6874 stack_frame_head = fra.me.prev;
6875 return fra.me.REG[0];
6876 }
6877 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
6878 struct {struct stack_frame_t me;} fra;
6879 val_t tmp;
6880 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6881 fra.me.file = LOCATE_syntax___typing;
6882 fra.me.line = 1250;
6883 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
6884 fra.me.has_broke = 0;
6885 fra.me.REG_size = 0;
6886 /* ./syntax//typing.nit:1250 */
6887 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1250);
6888 stack_frame_head = fra.me.prev;
6889 return NIT_NULL;
6890 }
6891 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
6892 struct {struct stack_frame_t me;} fra;
6893 val_t tmp;
6894 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6895 fra.me.file = LOCATE_syntax___typing;
6896 fra.me.line = 1251;
6897 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
6898 fra.me.has_broke = 0;
6899 fra.me.REG_size = 0;
6900 /* ./syntax//typing.nit:1251 */
6901 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1251);
6902 stack_frame_head = fra.me.prev;
6903 return NIT_NULL;
6904 }
6905 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
6906 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
6907 val_t REGB0;
6908 val_t REGB1;
6909 val_t tmp;
6910 static val_t once_value_1; /* Once value */
6911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6912 fra.me.file = LOCATE_syntax___typing;
6913 fra.me.line = 1253;
6914 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
6915 fra.me.has_broke = 0;
6916 fra.me.REG_size = 4;
6917 fra.me.REG[0] = NIT_NULL;
6918 fra.me.REG[1] = NIT_NULL;
6919 fra.me.REG[2] = NIT_NULL;
6920 fra.me.REG[3] = NIT_NULL;
6921 fra.me.REG[0] = p0;
6922 fra.me.REG[1] = p1;
6923 /* ./syntax//typing.nit:1255 */
6924 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6925 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6926 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
6927 if (UNTAG_Bool(REGB0)) {
6928 } else {
6929 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6930 REGB0 = REGB1;
6931 }
6932 if (UNTAG_Bool(REGB0)) {
6933 /* ./syntax//typing.nit:1257 */
6934 if (!once_value_1) {
6935 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
6936 REGB0 = TAG_Int(44);
6937 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6938 once_value_1 = fra.me.REG[3];
6939 register_static_object(&once_value_1);
6940 } else fra.me.REG[3] = once_value_1;
6941 fra.me.REG[3] = fra.me.REG[3];
6942 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
6943 }
6944 /* ./syntax//typing.nit:1260 */
6945 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
6946 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
6947 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
6948 /* ./syntax//typing.nit:1261 */
6949 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6950 /* ./syntax//typing.nit:1262 */
6951 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6952 if (UNTAG_Bool(REGB0)) {
6953 } else {
6954 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1262);
6955 }
6956 /* ./syntax//typing.nit:1263 */
6957 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
6958 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6959 stack_frame_head = fra.me.prev;
6960 return;
6961 }
6962 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
6963 struct {struct stack_frame_t me;} fra;
6964 val_t tmp;
6965 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6966 fra.me.file = LOCATE_syntax___typing;
6967 fra.me.line = 1268;
6968 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
6969 fra.me.has_broke = 0;
6970 fra.me.REG_size = 1;
6971 fra.me.REG[0] = NIT_NULL;
6972 fra.me.REG[0] = p0;
6973 /* ./syntax//typing.nit:1268 */
6974 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
6975 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6976 goto label1;
6977 label1: while(0);
6978 stack_frame_head = fra.me.prev;
6979 return fra.me.REG[0];
6980 }
6981 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
6982 struct {struct stack_frame_t me;} fra;
6983 val_t tmp;
6984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6985 fra.me.file = LOCATE_syntax___typing;
6986 fra.me.line = 1269;
6987 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
6988 fra.me.has_broke = 0;
6989 fra.me.REG_size = 1;
6990 fra.me.REG[0] = NIT_NULL;
6991 fra.me.REG[0] = p0;
6992 /* ./syntax//typing.nit:1269 */
6993 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
6994 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
6995 goto label1;
6996 label1: while(0);
6997 stack_frame_head = fra.me.prev;
6998 return fra.me.REG[0];
6999 }
7000 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7001 struct {struct stack_frame_t me;} fra;
7002 val_t tmp;
7003 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7004 fra.me.file = LOCATE_syntax___typing;
7005 fra.me.line = 1273;
7006 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7007 fra.me.has_broke = 0;
7008 fra.me.REG_size = 1;
7009 fra.me.REG[0] = NIT_NULL;
7010 fra.me.REG[0] = p0;
7011 /* ./syntax//typing.nit:1273 */
7012 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7013 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7014 goto label1;
7015 label1: while(0);
7016 stack_frame_head = fra.me.prev;
7017 return fra.me.REG[0];
7018 }
7019 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7020 struct {struct stack_frame_t me;} fra;
7021 val_t tmp;
7022 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7023 fra.me.file = LOCATE_syntax___typing;
7024 fra.me.line = 1274;
7025 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7026 fra.me.has_broke = 0;
7027 fra.me.REG_size = 1;
7028 fra.me.REG[0] = NIT_NULL;
7029 fra.me.REG[0] = p0;
7030 /* ./syntax//typing.nit:1274 */
7031 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7032 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7033 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7034 goto label1;
7035 label1: while(0);
7036 stack_frame_head = fra.me.prev;
7037 return fra.me.REG[0];
7038 }
7039 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7040 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7041 val_t REGB0;
7042 val_t tmp;
7043 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7044 fra.me.file = LOCATE_syntax___typing;
7045 fra.me.line = 1278;
7046 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7047 fra.me.has_broke = 0;
7048 fra.me.REG_size = 2;
7049 fra.me.REG[0] = NIT_NULL;
7050 fra.me.REG[1] = NIT_NULL;
7051 fra.me.REG[0] = p0;
7052 /* ./syntax//typing.nit:1280 */
7053 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7054 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7055 /* ./syntax//typing.nit:1281 */
7056 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7057 if (UNTAG_Bool(REGB0)) {
7058 /* ./syntax//typing.nit:1283 */
7059 fra.me.REG[1] = fra.me.REG[0];
7060 goto label1;
7061 } else {
7062 /* ./syntax//typing.nit:1285 */
7063 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7064 fra.me.REG[1] = fra.me.REG[0];
7065 goto label1;
7066 }
7067 label1: while(0);
7068 stack_frame_head = fra.me.prev;
7069 return fra.me.REG[1];
7070 }
7071 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7072 struct {struct stack_frame_t me;} fra;
7073 val_t tmp;
7074 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7075 fra.me.file = LOCATE_syntax___typing;
7076 fra.me.line = 1288;
7077 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7078 fra.me.has_broke = 0;
7079 fra.me.REG_size = 1;
7080 fra.me.REG[0] = NIT_NULL;
7081 fra.me.REG[0] = p0;
7082 /* ./syntax//typing.nit:1288 */
7083 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7084 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7085 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7086 goto label1;
7087 label1: while(0);
7088 stack_frame_head = fra.me.prev;
7089 return fra.me.REG[0];
7090 }
7091 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7092 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7093 val_t REGB0;
7094 val_t tmp;
7095 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7096 fra.me.file = LOCATE_syntax___typing;
7097 fra.me.line = 1292;
7098 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7099 fra.me.has_broke = 0;
7100 fra.me.REG_size = 2;
7101 fra.me.REG[0] = NIT_NULL;
7102 fra.me.REG[1] = NIT_NULL;
7103 fra.me.REG[0] = p0;
7104 /* ./syntax//typing.nit:1292 */
7105 fra.me.REG[1] = fra.me.REG[0];
7106 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7107 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7108 if (UNTAG_Bool(REGB0)) {
7109 } else {
7110 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1292);
7111 }
7112 goto label1;
7113 label1: while(0);
7114 stack_frame_head = fra.me.prev;
7115 return fra.me.REG[1];
7116 }
7117 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7118 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7119 val_t REGB0;
7120 val_t tmp;
7121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7122 fra.me.file = LOCATE_syntax___typing;
7123 fra.me.line = 1295;
7124 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7125 fra.me.has_broke = 0;
7126 fra.me.REG_size = 2;
7127 fra.me.REG[0] = NIT_NULL;
7128 fra.me.REG[1] = NIT_NULL;
7129 fra.me.REG[0] = p0;
7130 /* ./syntax//typing.nit:1295 */
7131 fra.me.REG[1] = fra.me.REG[0];
7132 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7133 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7134 if (UNTAG_Bool(REGB0)) {
7135 } else {
7136 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1295);
7137 }
7138 goto label1;
7139 label1: while(0);
7140 stack_frame_head = fra.me.prev;
7141 return fra.me.REG[1];
7142 }
7143 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7144 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7145 val_t REGB0;
7146 val_t REGB1;
7147 val_t REGB2;
7148 val_t tmp;
7149 static val_t once_value_2; /* Once value */
7150 static val_t once_value_3; /* Once value */
7151 static val_t once_value_4; /* Once value */
7152 static val_t once_value_5; /* Once value */
7153 static val_t once_value_6; /* Once value */
7154 static val_t once_value_7; /* Once value */
7155 static val_t once_value_8; /* Once value */
7156 static val_t once_value_9; /* Once value */
7157 static val_t once_value_10; /* Once value */
7158 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7159 fra.me.file = LOCATE_syntax___typing;
7160 fra.me.line = 1298;
7161 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7162 fra.me.has_broke = 0;
7163 fra.me.REG_size = 7;
7164 fra.me.REG[0] = NIT_NULL;
7165 fra.me.REG[1] = NIT_NULL;
7166 fra.me.REG[2] = NIT_NULL;
7167 fra.me.REG[3] = NIT_NULL;
7168 fra.me.REG[4] = NIT_NULL;
7169 fra.me.REG[5] = NIT_NULL;
7170 fra.me.REG[6] = NIT_NULL;
7171 fra.me.REG[0] = p0;
7172 fra.me.REG[1] = p1;
7173 /* ./syntax//typing.nit:1301 */
7174 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7175 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7176 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7177 if (UNTAG_Bool(REGB0)) {
7178 goto label1;
7179 }
7180 /* ./syntax//typing.nit:1302 */
7181 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7182 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7183 /* ./syntax//typing.nit:1303 */
7184 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7185 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7186 /* ./syntax//typing.nit:1304 */
7187 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7188 if (UNTAG_Bool(REGB0)) {
7189 /* ./syntax//typing.nit:1305 */
7190 REGB0 = TAG_Int(3);
7191 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7192 if (!once_value_2) {
7193 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7194 REGB0 = TAG_Int(18);
7195 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7196 once_value_2 = fra.me.REG[5];
7197 register_static_object(&once_value_2);
7198 } else fra.me.REG[5] = once_value_2;
7199 fra.me.REG[5] = fra.me.REG[5];
7200 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7201 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7202 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7203 if (!once_value_3) {
7204 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7205 REGB0 = TAG_Int(19);
7206 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7207 once_value_3 = fra.me.REG[5];
7208 register_static_object(&once_value_3);
7209 } else fra.me.REG[5] = once_value_3;
7210 fra.me.REG[5] = fra.me.REG[5];
7211 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7212 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7213 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7214 /* ./syntax//typing.nit:1306 */
7215 goto label1;
7216 }
7217 /* ./syntax//typing.nit:1308 */
7218 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7219 /* ./syntax//typing.nit:1309 */
7220 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7221 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7222 if (UNTAG_Bool(REGB0)) {
7223 /* ./syntax//typing.nit:1310 */
7224 REGB0 = TAG_Int(5);
7225 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7226 if (!once_value_4) {
7227 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7228 REGB0 = TAG_Int(17);
7229 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7230 once_value_4 = fra.me.REG[6];
7231 register_static_object(&once_value_4);
7232 } else fra.me.REG[6] = once_value_4;
7233 fra.me.REG[6] = fra.me.REG[6];
7234 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7235 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7236 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7237 if (!once_value_5) {
7238 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7239 REGB0 = TAG_Int(19);
7240 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7241 once_value_5 = fra.me.REG[6];
7242 register_static_object(&once_value_5);
7243 } else fra.me.REG[6] = once_value_5;
7244 fra.me.REG[6] = fra.me.REG[6];
7245 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7246 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7247 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7248 if (!once_value_6) {
7249 fra.me.REG[6] = BOX_NativeString(".");
7250 REGB0 = TAG_Int(1);
7251 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7252 once_value_6 = fra.me.REG[6];
7253 register_static_object(&once_value_6);
7254 } else fra.me.REG[6] = once_value_6;
7255 fra.me.REG[6] = fra.me.REG[6];
7256 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7257 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7258 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7259 /* ./syntax//typing.nit:1311 */
7260 goto label1;
7261 }
7262 /* ./syntax//typing.nit:1313 */
7263 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7264 /* ./syntax//typing.nit:1314 */
7265 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7266 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7267 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7268 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7269 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7270 REGB1 = TAG_Int(3);
7271 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7272 if (UNTAG_Bool(REGB2)) {
7273 } else {
7274 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7275 }
7276 /* ./../lib/standard//kernel.nit:232 */
7277 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7278 /* ./syntax//typing.nit:1314 */
7279 if (UNTAG_Bool(REGB1)) {
7280 /* ./syntax//typing.nit:1315 */
7281 REGB1 = TAG_Int(7);
7282 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7283 if (!once_value_7) {
7284 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7285 REGB1 = TAG_Int(17);
7286 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7287 once_value_7 = fra.me.REG[5];
7288 register_static_object(&once_value_7);
7289 } else fra.me.REG[5] = once_value_7;
7290 fra.me.REG[5] = fra.me.REG[5];
7291 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7292 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7293 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7294 if (!once_value_8) {
7295 fra.me.REG[3] = BOX_NativeString(" from ");
7296 REGB1 = TAG_Int(6);
7297 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7298 once_value_8 = fra.me.REG[3];
7299 register_static_object(&once_value_8);
7300 } else fra.me.REG[3] = once_value_8;
7301 fra.me.REG[3] = fra.me.REG[3];
7302 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7303 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7304 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7305 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7306 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7307 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7308 if (!once_value_9) {
7309 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7310 REGB1 = TAG_Int(17);
7311 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7312 once_value_9 = fra.me.REG[3];
7313 register_static_object(&once_value_9);
7314 } else fra.me.REG[3] = once_value_9;
7315 fra.me.REG[3] = fra.me.REG[3];
7316 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7317 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7318 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7319 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7320 if (!once_value_10) {
7321 fra.me.REG[3] = BOX_NativeString("");
7322 REGB1 = TAG_Int(0);
7323 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7324 once_value_10 = fra.me.REG[3];
7325 register_static_object(&once_value_10);
7326 } else fra.me.REG[3] = once_value_10;
7327 fra.me.REG[3] = fra.me.REG[3];
7328 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7329 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7330 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7331 }
7332 /* ./syntax//typing.nit:1317 */
7333 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7334 /* ./syntax//typing.nit:1318 */
7335 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7336 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7337 /* ./syntax//typing.nit:1319 */
7338 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7339 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7340 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7341 if (UNTAG_Bool(REGB1)) {
7342 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7343 if (UNTAG_Bool(REGB1)) {
7344 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1319);
7345 }
7346 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7347 fra.me.REG[2] = fra.me.REG[4];
7348 }
7349 /* ./syntax//typing.nit:1320 */
7350 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7351 label1: while(0);
7352 stack_frame_head = fra.me.prev;
7353 return;
7354 }
7355 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7356 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7357 val_t REGB0;
7358 val_t REGB1;
7359 val_t tmp;
7360 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7361 fra.me.file = LOCATE_syntax___typing;
7362 fra.me.line = 1325;
7363 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7364 fra.me.has_broke = 0;
7365 fra.me.REG_size = 2;
7366 fra.me.REG[0] = NIT_NULL;
7367 fra.me.REG[1] = NIT_NULL;
7368 fra.me.REG[0] = p0;
7369 fra.me.REG[1] = p1;
7370 /* ./syntax//typing.nit:1327 */
7371 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7372 /* ./syntax//typing.nit:1328 */
7373 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7374 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7375 if (UNTAG_Bool(REGB0)) {
7376 } else {
7377 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7378 if (UNTAG_Bool(REGB1)) {
7379 REGB1 = TAG_Bool(false);
7380 REGB0 = REGB1;
7381 } else {
7382 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7383 REGB0 = REGB1;
7384 }
7385 }
7386 if (UNTAG_Bool(REGB0)) {
7387 goto label1;
7388 }
7389 /* ./syntax//typing.nit:1329 */
7390 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7391 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7392 /* ./syntax//typing.nit:1330 */
7393 REGB0 = TAG_Bool(true);
7394 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7395 label1: while(0);
7396 stack_frame_head = fra.me.prev;
7397 return;
7398 }
7399 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7400 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7401 val_t REGB0;
7402 val_t REGB1;
7403 val_t tmp;
7404 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7405 fra.me.file = LOCATE_syntax___typing;
7406 fra.me.line = 1335;
7407 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7408 fra.me.has_broke = 0;
7409 fra.me.REG_size = 4;
7410 fra.me.REG[0] = NIT_NULL;
7411 fra.me.REG[1] = NIT_NULL;
7412 fra.me.REG[2] = NIT_NULL;
7413 fra.me.REG[3] = NIT_NULL;
7414 fra.me.REG[0] = p0;
7415 fra.me.REG[1] = p1;
7416 /* ./syntax//typing.nit:1337 */
7417 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7418 /* ./syntax//typing.nit:1338 */
7419 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7420 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7421 if (UNTAG_Bool(REGB0)) {
7422 } else {
7423 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7424 if (UNTAG_Bool(REGB1)) {
7425 REGB1 = TAG_Bool(false);
7426 REGB0 = REGB1;
7427 } else {
7428 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7429 REGB0 = REGB1;
7430 }
7431 }
7432 if (UNTAG_Bool(REGB0)) {
7433 goto label1;
7434 }
7435 /* ./syntax//typing.nit:1339 */
7436 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7437 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7438 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]);
7439 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7440 if (UNTAG_Bool(REGB0)) {
7441 goto label1;
7442 }
7443 /* ./syntax//typing.nit:1340 */
7444 REGB0 = TAG_Bool(true);
7445 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7446 label1: while(0);
7447 stack_frame_head = fra.me.prev;
7448 return;
7449 }
7450 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7451 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7452 val_t REGB0;
7453 val_t REGB1;
7454 val_t tmp;
7455 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7456 fra.me.file = LOCATE_syntax___typing;
7457 fra.me.line = 1345;
7458 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7459 fra.me.has_broke = 0;
7460 fra.me.REG_size = 4;
7461 fra.me.REG[0] = NIT_NULL;
7462 fra.me.REG[1] = NIT_NULL;
7463 fra.me.REG[2] = NIT_NULL;
7464 fra.me.REG[3] = NIT_NULL;
7465 fra.me.REG[0] = p0;
7466 fra.me.REG[1] = p1;
7467 /* ./syntax//typing.nit:1347 */
7468 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7469 /* ./syntax//typing.nit:1348 */
7470 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7471 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7472 if (UNTAG_Bool(REGB0)) {
7473 } else {
7474 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7475 if (UNTAG_Bool(REGB1)) {
7476 REGB1 = TAG_Bool(false);
7477 REGB0 = REGB1;
7478 } else {
7479 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7480 REGB0 = REGB1;
7481 }
7482 }
7483 if (UNTAG_Bool(REGB0)) {
7484 goto label1;
7485 }
7486 /* ./syntax//typing.nit:1349 */
7487 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7488 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]);
7489 /* ./syntax//typing.nit:1350 */
7490 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7491 if (UNTAG_Bool(REGB0)) {
7492 } else {
7493 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7494 if (UNTAG_Bool(REGB1)) {
7495 REGB1 = TAG_Bool(false);
7496 REGB0 = REGB1;
7497 } else {
7498 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7499 REGB0 = REGB1;
7500 }
7501 }
7502 if (UNTAG_Bool(REGB0)) {
7503 goto label1;
7504 }
7505 /* ./syntax//typing.nit:1351 */
7506 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7507 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7508 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]);
7509 /* ./syntax//typing.nit:1352 */
7510 REGB0 = TAG_Bool(true);
7511 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7512 label1: while(0);
7513 stack_frame_head = fra.me.prev;
7514 return;
7515 }
7516 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7517 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7518 val_t REGB0;
7519 val_t REGB1;
7520 val_t tmp;
7521 static val_t once_value_2; /* Once value */
7522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7523 fra.me.file = LOCATE_syntax___typing;
7524 fra.me.line = 1357;
7525 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
7526 fra.me.has_broke = 0;
7527 fra.me.REG_size = 3;
7528 fra.me.REG[0] = NIT_NULL;
7529 fra.me.REG[1] = NIT_NULL;
7530 fra.me.REG[2] = NIT_NULL;
7531 fra.me.REG[0] = p0;
7532 fra.me.REG[1] = p1;
7533 /* ./syntax//typing.nit:1359 */
7534 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7535 /* ./syntax//typing.nit:1360 */
7536 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7537 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7538 if (UNTAG_Bool(REGB0)) {
7539 } else {
7540 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7541 if (UNTAG_Bool(REGB1)) {
7542 REGB1 = TAG_Bool(false);
7543 REGB0 = REGB1;
7544 } else {
7545 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7546 REGB0 = REGB1;
7547 }
7548 }
7549 if (UNTAG_Bool(REGB0)) {
7550 goto label1;
7551 }
7552 /* ./syntax//typing.nit:1361 */
7553 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7554 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
7555 if (UNTAG_Bool(REGB0)) {
7556 /* ./syntax//typing.nit:1362 */
7557 if (!once_value_2) {
7558 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
7559 REGB0 = TAG_Int(37);
7560 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7561 once_value_2 = fra.me.REG[2];
7562 register_static_object(&once_value_2);
7563 } else fra.me.REG[2] = once_value_2;
7564 fra.me.REG[2] = fra.me.REG[2];
7565 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7566 }
7567 /* ./syntax//typing.nit:1364 */
7568 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
7569 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7570 /* ./syntax//typing.nit:1365 */
7571 REGB0 = TAG_Bool(true);
7572 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7573 label1: while(0);
7574 stack_frame_head = fra.me.prev;
7575 return;
7576 }
7577 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
7578 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7579 val_t REGB0;
7580 val_t tmp;
7581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7582 fra.me.file = LOCATE_syntax___typing;
7583 fra.me.line = 1370;
7584 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
7585 fra.me.has_broke = 0;
7586 fra.me.REG_size = 2;
7587 fra.me.REG[0] = NIT_NULL;
7588 fra.me.REG[1] = NIT_NULL;
7589 fra.me.REG[0] = p0;
7590 /* ./syntax//typing.nit:1370 */
7591 fra.me.REG[1] = fra.me.REG[0];
7592 /* ./syntax//typing.nit:1371 */
7593 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
7594 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7595 if (UNTAG_Bool(REGB0)) {
7596 } else {
7597 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1371);
7598 }
7599 goto label1;
7600 label1: while(0);
7601 stack_frame_head = fra.me.prev;
7602 return fra.me.REG[1];
7603 }
7604 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
7605 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7606 val_t REGB0;
7607 val_t REGB1;
7608 val_t tmp;
7609 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7610 fra.me.file = LOCATE_syntax___typing;
7611 fra.me.line = 1374;
7612 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
7613 fra.me.has_broke = 0;
7614 fra.me.REG_size = 4;
7615 fra.me.REG[0] = NIT_NULL;
7616 fra.me.REG[1] = NIT_NULL;
7617 fra.me.REG[2] = NIT_NULL;
7618 fra.me.REG[3] = NIT_NULL;
7619 fra.me.REG[0] = p0;
7620 /* ./syntax//typing.nit:1377 */
7621 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
7622 /* ./syntax//typing.nit:1378 */
7623 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7624 if (UNTAG_Bool(REGB0)) {
7625 } else {
7626 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7627 if (UNTAG_Bool(REGB1)) {
7628 REGB1 = TAG_Bool(false);
7629 REGB0 = REGB1;
7630 } else {
7631 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7632 REGB0 = REGB1;
7633 }
7634 }
7635 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7636 if (UNTAG_Bool(REGB0)) {
7637 /* ./syntax//typing.nit:1379 */
7638 fra.me.REG[2] = fra.me.REG[1];
7639 goto label1;
7640 } else {
7641 /* ./syntax//typing.nit:1381 */
7642 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
7643 fra.me.REG[1] = fra.me.REG[3];
7644 /* ./syntax//typing.nit:1382 */
7645 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7646 if (UNTAG_Bool(REGB0)) {
7647 } else {
7648 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7649 if (UNTAG_Bool(REGB1)) {
7650 REGB1 = TAG_Bool(false);
7651 REGB0 = REGB1;
7652 } else {
7653 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7654 REGB0 = REGB1;
7655 }
7656 }
7657 if (UNTAG_Bool(REGB0)) {
7658 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
7659 fra.me.REG[1] = fra.me.REG[3];
7660 }
7661 /* ./syntax//typing.nit:1383 */
7662 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
7663 /* ./syntax//typing.nit:1384 */
7664 fra.me.REG[2] = fra.me.REG[1];
7665 goto label1;
7666 }
7667 label1: while(0);
7668 stack_frame_head = fra.me.prev;
7669 return fra.me.REG[2];
7670 }
7671 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
7672 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7673 val_t REGB0;
7674 val_t tmp;
7675 static val_t once_value_1; /* Once value */
7676 static val_t once_value_2; /* Once value */
7677 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7678 fra.me.file = LOCATE_syntax___typing;
7679 fra.me.line = 1390;
7680 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
7681 fra.me.has_broke = 0;
7682 fra.me.REG_size = 3;
7683 fra.me.REG[0] = NIT_NULL;
7684 fra.me.REG[1] = NIT_NULL;
7685 fra.me.REG[2] = NIT_NULL;
7686 fra.me.REG[0] = p0;
7687 /* ./syntax//typing.nit:1392 */
7688 REGB0 = TAG_Int(3);
7689 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7690 if (!once_value_1) {
7691 fra.me.REG[2] = BOX_NativeString("");
7692 REGB0 = TAG_Int(0);
7693 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7694 once_value_1 = fra.me.REG[2];
7695 register_static_object(&once_value_1);
7696 } else fra.me.REG[2] = once_value_1;
7697 fra.me.REG[2] = fra.me.REG[2];
7698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7699 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
7700 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7701 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7702 if (!once_value_2) {
7703 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
7704 REGB0 = TAG_Int(25);
7705 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
7706 once_value_2 = fra.me.REG[2];
7707 register_static_object(&once_value_2);
7708 } else fra.me.REG[2] = once_value_2;
7709 fra.me.REG[2] = fra.me.REG[2];
7710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7711 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
7712 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7713 /* ./syntax//typing.nit:1393 */
7714 fra.me.REG[1] = NIT_NULL;
7715 goto label3;
7716 label3: while(0);
7717 stack_frame_head = fra.me.prev;
7718 return fra.me.REG[1];
7719 }
7720 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
7721 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7722 val_t REGB0;
7723 val_t REGB1;
7724 val_t REGB2;
7725 val_t REGB3;
7726 val_t REGB4;
7727 val_t REGB5;
7728 val_t REGB6;
7729 val_t REGB7;
7730 val_t REGB8;
7731 val_t REGB9;
7732 val_t REGB10;
7733 val_t REGB11;
7734 val_t tmp;
7735 static val_t once_value_1; /* Once value */
7736 static val_t once_value_2; /* Once value */
7737 static val_t once_value_3; /* Once value */
7738 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7739 fra.me.file = LOCATE_syntax___typing;
7740 fra.me.line = 1396;
7741 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
7742 fra.me.has_broke = 0;
7743 fra.me.REG_size = 7;
7744 fra.me.REG[0] = NIT_NULL;
7745 fra.me.REG[1] = NIT_NULL;
7746 fra.me.REG[2] = NIT_NULL;
7747 fra.me.REG[3] = NIT_NULL;
7748 fra.me.REG[4] = NIT_NULL;
7749 fra.me.REG[5] = NIT_NULL;
7750 fra.me.REG[6] = NIT_NULL;
7751 fra.me.REG[0] = p0;
7752 fra.me.REG[1] = p1;
7753 fra.me.REG[2] = p2;
7754 fra.me.REG[3] = p3;
7755 fra.me.REG[4] = p4;
7756 /* ./syntax//typing.nit:1399 */
7757 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
7758 /* ./syntax//typing.nit:1400 */
7759 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
7760 /* ./syntax//typing.nit:1402 */
7761 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7762 if (UNTAG_Bool(REGB2)) {
7763 } else {
7764 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7765 if (UNTAG_Bool(REGB3)) {
7766 REGB3 = TAG_Bool(false);
7767 REGB2 = REGB3;
7768 } else {
7769 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
7770 REGB2 = REGB3;
7771 }
7772 }
7773 if (UNTAG_Bool(REGB2)) {
7774 REGB2 = TAG_Int(0);
7775 } else {
7776 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7777 if (UNTAG_Bool(REGB3)) {
7778 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1402);
7779 }
7780 /* ./../lib/standard//collection//array.nit:24 */
7781 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
7782 if (UNTAG_Bool(REGB3)) {
7783 } else {
7784 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
7785 }
7786 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
7787 /* ./syntax//typing.nit:1402 */
7788 REGB2 = REGB3;
7789 }
7790 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
7791 if (UNTAG_Bool(REGB3)) {
7792 } else {
7793 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7794 }
7795 /* ./../lib/standard//kernel.nit:234 */
7796 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
7797 /* ./syntax//typing.nit:1403 */
7798 if (UNTAG_Bool(REGB3)) {
7799 REGB3 = TAG_Bool(true);
7800 } else {
7801 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
7802 if (UNTAG_Bool(REGB4)) {
7803 } else {
7804 /* ./../lib/standard//kernel.nit:227 */
7805 REGB5 = TAG_Bool((REGB1)==(REGB2));
7806 /* ./syntax//typing.nit:1403 */
7807 REGB4 = REGB5;
7808 }
7809 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
7810 if (UNTAG_Bool(REGB4)) {
7811 REGB4 = TAG_Int(1);
7812 /* ./../lib/standard//kernel.nit:236 */
7813 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
7814 /* ./syntax//typing.nit:1403 */
7815 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
7816 if (UNTAG_Bool(REGB5)) {
7817 } else {
7818 /* ./../lib/standard//kernel.nit:227 */
7819 REGB4 = TAG_Bool((REGB0)==(REGB4));
7820 /* ./syntax//typing.nit:1403 */
7821 REGB5 = REGB4;
7822 }
7823 } else {
7824 REGB4 = TAG_Bool(false);
7825 REGB5 = REGB4;
7826 }
7827 REGB3 = REGB5;
7828 }
7829 if (UNTAG_Bool(REGB3)) {
7830 /* ./syntax//typing.nit:1404 */
7831 REGB3 = TAG_Int(5);
7832 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
7833 if (!once_value_1) {
7834 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
7835 REGB3 = TAG_Int(37);
7836 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
7837 once_value_1 = fra.me.REG[6];
7838 register_static_object(&once_value_1);
7839 } else fra.me.REG[6] = once_value_1;
7840 fra.me.REG[6] = fra.me.REG[6];
7841 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7842 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7843 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7844 if (!once_value_2) {
7845 fra.me.REG[3] = BOX_NativeString("");
7846 REGB3 = TAG_Int(0);
7847 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7848 once_value_2 = fra.me.REG[3];
7849 register_static_object(&once_value_2);
7850 } else fra.me.REG[3] = once_value_2;
7851 fra.me.REG[3] = fra.me.REG[3];
7852 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7853 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7854 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7855 if (!once_value_3) {
7856 fra.me.REG[3] = BOX_NativeString("'.");
7857 REGB3 = TAG_Int(2);
7858 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
7859 once_value_3 = fra.me.REG[3];
7860 register_static_object(&once_value_3);
7861 } else fra.me.REG[3] = once_value_3;
7862 fra.me.REG[3] = fra.me.REG[3];
7863 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
7864 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7865 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7866 /* ./syntax//typing.nit:1405 */
7867 REGB3 = TAG_Bool(false);
7868 goto label4;
7869 }
7870 /* ./syntax//typing.nit:1407 */
7871 REGB5 = TAG_Int(0);
7872 /* ./syntax//typing.nit:1408 */
7873 REGB4 = TAG_Int(0);
7874 /* ./../lib/standard//kernel.nit:347 */
7875 REGB6 = REGB1;
7876 /* ./../lib/standard//kernel.nit:352 */
7877 while(1) {
7878 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
7879 if (UNTAG_Bool(REGB7)) {
7880 } else {
7881 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7882 }
7883 /* ./../lib/standard//kernel.nit:232 */
7884 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
7885 /* ./../lib/standard//kernel.nit:352 */
7886 if (UNTAG_Bool(REGB7)) {
7887 /* ./syntax//typing.nit:1408 */
7888 REGB7 = REGB4;
7889 /* ./syntax//typing.nit:1410 */
7890 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
7891 /* ./syntax//typing.nit:1411 */
7892 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
7893 if (UNTAG_Bool(REGB8)) {
7894 } else {
7895 /* ./../lib/standard//kernel.nit:227 */
7896 REGB7 = TAG_Bool((REGB7)==(REGB0));
7897 /* ./syntax//typing.nit:1411 */
7898 REGB8 = REGB7;
7899 }
7900 if (UNTAG_Bool(REGB8)) {
7901 /* ./syntax//typing.nit:1412 */
7902 REGB8 = TAG_Int(0);
7903 /* ./../lib/standard//kernel.nit:237 */
7904 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
7905 /* ./../lib/standard//kernel.nit:341 */
7906 while(1) {
7907 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
7908 if (UNTAG_Bool(REGB9)) {
7909 } else {
7910 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7911 }
7912 /* ./../lib/standard//kernel.nit:231 */
7913 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
7914 /* ./../lib/standard//kernel.nit:341 */
7915 if (UNTAG_Bool(REGB9)) {
7916 /* ./syntax//typing.nit:1413 */
7917 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7918 if (UNTAG_Bool(REGB9)) {
7919 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1413);
7920 }
7921 /* ./../lib/standard//collection//array.nit:278 */
7922 fra.me.REG[0] = fra.me.REG[4];
7923 REGB9 = REGB5;
7924 /* ./../lib/standard//collection//array.nit:280 */
7925 REGB10 = TAG_Int(0);
7926 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
7927 if (UNTAG_Bool(REGB11)) {
7928 } else {
7929 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7930 }
7931 /* ./../lib/standard//kernel.nit:233 */
7932 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
7933 /* ./../lib/standard//collection//array.nit:280 */
7934 if (UNTAG_Bool(REGB10)) {
7935 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
7936 if (UNTAG_Bool(REGB10)) {
7937 } else {
7938 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
7939 }
7940 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
7941 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
7942 if (UNTAG_Bool(REGB11)) {
7943 } else {
7944 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7945 }
7946 /* ./../lib/standard//kernel.nit:232 */
7947 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
7948 } else {
7949 /* ./../lib/standard//collection//array.nit:280 */
7950 REGB11 = TAG_Bool(false);
7951 REGB10 = REGB11;
7952 }
7953 if (UNTAG_Bool(REGB10)) {
7954 } else {
7955 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
7956 }
7957 /* ./../lib/standard//collection//array.nit:281 */
7958 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
7959 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
7960 if (UNTAG_Bool(REGB10)) {
7961 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
7962 }
7963 /* ./../lib/standard//collection//array.nit:718 */
7964 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
7965 /* ./../lib/standard//collection//array.nit:281 */
7966 goto label5;
7967 label5: while(0);
7968 /* ./syntax//typing.nit:1414 */
7969 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7970 /* ./syntax//typing.nit:1415 */
7971 REGB9 = TAG_Int(1);
7972 /* ./../lib/standard//kernel.nit:235 */
7973 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
7974 /* ./syntax//typing.nit:1415 */
7975 REGB5 = REGB9;
7976 /* ./../lib/standard//kernel.nit:343 */
7977 REGB9 = TAG_Int(1);
7978 /* ./../lib/standard//kernel.nit:235 */
7979 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
7980 /* ./../lib/standard//kernel.nit:343 */
7981 REGB8 = REGB9;
7982 } else {
7983 /* ./../lib/standard//kernel.nit:341 */
7984 goto label6;
7985 }
7986 }
7987 label6: while(0);
7988 } else {
7989 /* ./syntax//typing.nit:1418 */
7990 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
7991 if (UNTAG_Bool(REGB8)) {
7992 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1418);
7993 }
7994 /* ./../lib/standard//collection//array.nit:278 */
7995 fra.me.REG[3] = fra.me.REG[4];
7996 REGB8 = REGB5;
7997 /* ./../lib/standard//collection//array.nit:280 */
7998 REGB7 = TAG_Int(0);
7999 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8000 if (UNTAG_Bool(REGB9)) {
8001 } else {
8002 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8003 }
8004 /* ./../lib/standard//kernel.nit:233 */
8005 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8006 /* ./../lib/standard//collection//array.nit:280 */
8007 if (UNTAG_Bool(REGB7)) {
8008 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8009 if (UNTAG_Bool(REGB7)) {
8010 } else {
8011 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8012 }
8013 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8014 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8015 if (UNTAG_Bool(REGB9)) {
8016 } else {
8017 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8018 }
8019 /* ./../lib/standard//kernel.nit:232 */
8020 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8021 } else {
8022 /* ./../lib/standard//collection//array.nit:280 */
8023 REGB9 = TAG_Bool(false);
8024 REGB7 = REGB9;
8025 }
8026 if (UNTAG_Bool(REGB7)) {
8027 } else {
8028 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8029 }
8030 /* ./../lib/standard//collection//array.nit:281 */
8031 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8032 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8033 if (UNTAG_Bool(REGB7)) {
8034 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8035 }
8036 /* ./../lib/standard//collection//array.nit:718 */
8037 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8038 /* ./../lib/standard//collection//array.nit:281 */
8039 goto label7;
8040 label7: while(0);
8041 /* ./syntax//typing.nit:1418 */
8042 fra.me.REG[0] = fra.me.REG[3];
8043 /* ./syntax//typing.nit:1419 */
8044 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8045 /* ./syntax//typing.nit:1420 */
8046 REGB8 = TAG_Int(1);
8047 /* ./../lib/standard//kernel.nit:235 */
8048 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8049 /* ./syntax//typing.nit:1420 */
8050 REGB5 = REGB8;
8051 }
8052 /* ./../lib/standard//kernel.nit:354 */
8053 REGB8 = TAG_Int(1);
8054 /* ./../lib/standard//kernel.nit:235 */
8055 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8056 /* ./../lib/standard//kernel.nit:354 */
8057 REGB4 = REGB8;
8058 } else {
8059 /* ./../lib/standard//kernel.nit:352 */
8060 goto label8;
8061 }
8062 }
8063 label8: while(0);
8064 /* ./syntax//typing.nit:1423 */
8065 REGB4 = TAG_Bool(true);
8066 REGB3 = REGB4;
8067 goto label4;
8068 label4: while(0);
8069 stack_frame_head = fra.me.prev;
8070 return REGB3;
8071 }
8072 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8073 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8074 val_t REGB0;
8075 val_t REGB1;
8076 val_t REGB2;
8077 val_t REGB3;
8078 val_t REGB4;
8079 val_t REGB5;
8080 val_t tmp;
8081 static val_t once_value_2; /* Once value */
8082 static val_t once_value_3; /* Once value */
8083 static val_t once_value_4; /* Once value */
8084 static val_t once_value_5; /* Once value */
8085 static val_t once_value_6; /* Once value */
8086 static val_t once_value_7; /* Once value */
8087 static val_t once_value_8; /* Once value */
8088 static val_t once_value_11; /* Once value */
8089 static val_t once_value_12; /* Once value */
8090 static val_t once_value_13; /* Once value */
8091 static val_t once_value_14; /* Once value */
8092 static val_t once_value_15; /* Once value */
8093 static val_t once_value_16; /* Once value */
8094 static val_t once_value_18; /* Once value */
8095 static val_t once_value_19; /* Once value */
8096 static val_t once_value_20; /* Once value */
8097 static val_t once_value_21; /* Once value */
8098 static val_t once_value_22; /* Once value */
8099 static val_t once_value_24; /* Once value */
8100 static val_t once_value_25; /* Once value */
8101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8102 fra.me.file = LOCATE_syntax___typing;
8103 fra.me.line = 1426;
8104 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8105 fra.me.has_broke = 0;
8106 fra.me.REG_size = 17;
8107 fra.me.REG[0] = NIT_NULL;
8108 fra.me.REG[1] = NIT_NULL;
8109 fra.me.REG[2] = NIT_NULL;
8110 fra.me.REG[3] = NIT_NULL;
8111 fra.me.REG[4] = NIT_NULL;
8112 fra.me.REG[5] = NIT_NULL;
8113 fra.me.REG[6] = NIT_NULL;
8114 fra.me.REG[7] = NIT_NULL;
8115 fra.me.REG[8] = NIT_NULL;
8116 fra.me.REG[9] = NIT_NULL;
8117 fra.me.REG[10] = NIT_NULL;
8118 fra.me.REG[11] = NIT_NULL;
8119 fra.me.REG[12] = NIT_NULL;
8120 fra.me.REG[13] = NIT_NULL;
8121 fra.me.REG[14] = NIT_NULL;
8122 fra.me.REG[15] = NIT_NULL;
8123 fra.me.REG[16] = NIT_NULL;
8124 fra.me.REG[0] = p0;
8125 fra.me.REG[1] = p1;
8126 fra.me.REG[2] = p2;
8127 fra.me.REG[3] = p3;
8128 fra.me.REG[4] = p4;
8129 /* ./syntax//typing.nit:1429 */
8130 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8131 /* ./syntax//typing.nit:1430 */
8132 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8133 /* ./syntax//typing.nit:1431 */
8134 REGB0 = TAG_Int(0);
8135 /* ./../lib/standard//collection//array.nit:266 */
8136 fra.me.REG[7] = fra.me.REG[6];
8137 /* ./../lib/standard//collection//array.nit:269 */
8138 REGB1 = TAG_Int(0);
8139 /* ./../lib/standard//collection//array.nit:270 */
8140 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8141 if (UNTAG_Bool(REGB2)) {
8142 } else {
8143 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8144 }
8145 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8146 /* ./../lib/standard//collection//array.nit:271 */
8147 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8148 /* ./../lib/standard//collection//array.nit:272 */
8149 while(1) {
8150 /* ./../lib/standard//collection//array.nit:24 */
8151 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8152 if (UNTAG_Bool(REGB2)) {
8153 } else {
8154 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8155 }
8156 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8157 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8158 if (UNTAG_Bool(REGB3)) {
8159 } else {
8160 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8161 }
8162 /* ./../lib/standard//kernel.nit:232 */
8163 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8164 /* ./../lib/standard//collection//array.nit:272 */
8165 if (UNTAG_Bool(REGB2)) {
8166 /* ./../lib/standard//collection//array.nit:273 */
8167 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8168 if (UNTAG_Bool(REGB2)) {
8169 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8170 }
8171 /* ./../lib/standard//collection//array.nit:718 */
8172 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8173 /* ./syntax//typing.nit:1433 */
8174 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8175 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8176 if (UNTAG_Bool(REGB2)) {
8177 REGB2 = TAG_Int(1);
8178 /* ./../lib/standard//kernel.nit:235 */
8179 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8180 /* ./syntax//typing.nit:1433 */
8181 REGB0 = REGB2;
8182 }
8183 /* ./../lib/standard//collection//array.nit:274 */
8184 REGB2 = TAG_Int(1);
8185 /* ./../lib/standard//kernel.nit:235 */
8186 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8187 /* ./../lib/standard//collection//array.nit:274 */
8188 REGB1 = REGB2;
8189 } else {
8190 /* ./../lib/standard//collection//array.nit:272 */
8191 goto label1;
8192 }
8193 }
8194 label1: while(0);
8195 /* ./syntax//typing.nit:1435 */
8196 REGB1 = TAG_Int(0);
8197 /* ./syntax//typing.nit:1436 */
8198 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8199 if (UNTAG_Bool(REGB2)) {
8200 } else {
8201 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8202 if (UNTAG_Bool(REGB3)) {
8203 REGB3 = TAG_Bool(false);
8204 REGB2 = REGB3;
8205 } else {
8206 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8207 REGB2 = REGB3;
8208 }
8209 }
8210 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8211 if (UNTAG_Bool(REGB2)) {
8212 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8213 if (UNTAG_Bool(REGB2)) {
8214 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1436);
8215 }
8216 /* ./../lib/standard//collection//array.nit:24 */
8217 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8218 if (UNTAG_Bool(REGB2)) {
8219 } else {
8220 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8221 }
8222 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8223 /* ./syntax//typing.nit:1436 */
8224 REGB1 = REGB2;
8225 }
8226 /* ./../lib/standard//collection//array.nit:24 */
8227 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8228 if (UNTAG_Bool(REGB2)) {
8229 } else {
8230 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8231 }
8232 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8233 /* ./syntax//typing.nit:1437 */
8234 REGB3 = TAG_Int(0);
8235 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8236 if (UNTAG_Bool(REGB4)) {
8237 } else {
8238 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8239 }
8240 /* ./../lib/standard//kernel.nit:234 */
8241 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8242 /* ./syntax//typing.nit:1437 */
8243 if (UNTAG_Bool(REGB3)) {
8244 /* ./syntax//typing.nit:1438 */
8245 REGB3 = TAG_Int(0);
8246 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8247 if (UNTAG_Bool(REGB2)) {
8248 } else {
8249 /* ./../lib/standard//kernel.nit:227 */
8250 REGB3 = TAG_Bool((REGB1)==(REGB3));
8251 /* ./syntax//typing.nit:1438 */
8252 REGB2 = REGB3;
8253 }
8254 if (UNTAG_Bool(REGB2)) {
8255 REGB2 = TAG_Int(0);
8256 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8257 if (UNTAG_Bool(REGB3)) {
8258 } else {
8259 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8260 }
8261 /* ./../lib/standard//kernel.nit:234 */
8262 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8263 } else {
8264 /* ./syntax//typing.nit:1438 */
8265 REGB3 = TAG_Bool(false);
8266 REGB2 = REGB3;
8267 }
8268 if (UNTAG_Bool(REGB2)) {
8269 /* ./syntax//typing.nit:1439 */
8270 REGB2 = TAG_Int(5);
8271 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8272 if (!once_value_2) {
8273 fra.me.REG[7] = BOX_NativeString("Error: ");
8274 REGB2 = TAG_Int(7);
8275 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8276 once_value_2 = fra.me.REG[7];
8277 register_static_object(&once_value_2);
8278 } else fra.me.REG[7] = once_value_2;
8279 fra.me.REG[7] = fra.me.REG[7];
8280 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8281 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8282 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8283 if (!once_value_3) {
8284 fra.me.REG[7] = BOX_NativeString(" requires ");
8285 REGB2 = TAG_Int(10);
8286 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8287 once_value_3 = fra.me.REG[7];
8288 register_static_object(&once_value_3);
8289 } else fra.me.REG[7] = once_value_3;
8290 fra.me.REG[7] = fra.me.REG[7];
8291 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8292 /* ./../lib/standard//collection//array.nit:24 */
8293 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8294 if (UNTAG_Bool(REGB2)) {
8295 } else {
8296 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8297 }
8298 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8299 /* ./syntax//typing.nit:1439 */
8300 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8301 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8302 if (!once_value_4) {
8303 fra.me.REG[7] = BOX_NativeString(" blocks.");
8304 REGB2 = TAG_Int(8);
8305 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8306 once_value_4 = fra.me.REG[7];
8307 register_static_object(&once_value_4);
8308 } else fra.me.REG[7] = once_value_4;
8309 fra.me.REG[7] = fra.me.REG[7];
8310 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8311 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8312 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8313 } else {
8314 /* ./../lib/standard//collection//array.nit:24 */
8315 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8316 if (UNTAG_Bool(REGB2)) {
8317 } else {
8318 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8319 }
8320 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8321 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8322 if (UNTAG_Bool(REGB3)) {
8323 } else {
8324 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8325 }
8326 /* ./../lib/standard//kernel.nit:234 */
8327 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8328 /* ./syntax//typing.nit:1440 */
8329 if (UNTAG_Bool(REGB2)) {
8330 REGB2 = TAG_Bool(true);
8331 } else {
8332 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8333 if (UNTAG_Bool(REGB3)) {
8334 } else {
8335 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8336 }
8337 /* ./../lib/standard//kernel.nit:232 */
8338 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8339 /* ./syntax//typing.nit:1440 */
8340 REGB2 = REGB0;
8341 }
8342 if (UNTAG_Bool(REGB2)) {
8343 /* ./syntax//typing.nit:1441 */
8344 REGB2 = TAG_Int(7);
8345 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8346 if (!once_value_5) {
8347 fra.me.REG[7] = BOX_NativeString("Error: ");
8348 REGB2 = TAG_Int(7);
8349 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8350 once_value_5 = fra.me.REG[7];
8351 register_static_object(&once_value_5);
8352 } else fra.me.REG[7] = once_value_5;
8353 fra.me.REG[7] = fra.me.REG[7];
8354 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8355 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8356 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8357 if (!once_value_6) {
8358 fra.me.REG[7] = BOX_NativeString(" requires ");
8359 REGB2 = TAG_Int(10);
8360 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8361 once_value_6 = fra.me.REG[7];
8362 register_static_object(&once_value_6);
8363 } else fra.me.REG[7] = once_value_6;
8364 fra.me.REG[7] = fra.me.REG[7];
8365 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8366 /* ./../lib/standard//collection//array.nit:24 */
8367 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8368 if (UNTAG_Bool(REGB2)) {
8369 } else {
8370 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8371 }
8372 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8373 /* ./syntax//typing.nit:1441 */
8374 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8375 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8376 if (!once_value_7) {
8377 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8378 REGB2 = TAG_Int(9);
8379 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8380 once_value_7 = fra.me.REG[7];
8381 register_static_object(&once_value_7);
8382 } else fra.me.REG[7] = once_value_7;
8383 fra.me.REG[7] = fra.me.REG[7];
8384 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8385 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8386 if (UNTAG_Bool(REGB2)) {
8387 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1441);
8388 }
8389 /* ./../lib/standard//collection//array.nit:24 */
8390 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8391 if (UNTAG_Bool(REGB2)) {
8392 } else {
8393 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8394 }
8395 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8396 /* ./syntax//typing.nit:1441 */
8397 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8398 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8399 if (!once_value_8) {
8400 fra.me.REG[7] = BOX_NativeString(" found.");
8401 REGB2 = TAG_Int(7);
8402 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8403 once_value_8 = fra.me.REG[7];
8404 register_static_object(&once_value_8);
8405 } else fra.me.REG[7] = once_value_8;
8406 fra.me.REG[7] = fra.me.REG[7];
8407 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8408 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8409 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8410 } else {
8411 /* ./syntax//typing.nit:1444 */
8412 fra.me.REG[8] = NIT_NULL;
8413 /* ./syntax//typing.nit:1445 */
8414 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8415 if (UNTAG_Bool(REGB2)) {
8416 } else {
8417 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8418 if (UNTAG_Bool(REGB0)) {
8419 REGB0 = TAG_Bool(false);
8420 REGB2 = REGB0;
8421 } else {
8422 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8423 REGB2 = REGB0;
8424 }
8425 }
8426 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8427 if (UNTAG_Bool(REGB2)) {
8428 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8429 fra.me.REG[8] = fra.me.REG[7];
8430 }
8431 /* ./syntax//typing.nit:1448 */
8432 REGB2 = TAG_Int(0);
8433 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8434 if (UNTAG_Bool(REGB0)) {
8435 } else {
8436 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8437 }
8438 /* ./../lib/standard//kernel.nit:234 */
8439 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8440 /* ./syntax//typing.nit:1448 */
8441 if (UNTAG_Bool(REGB2)) {
8442 REGB2 = TAG_Int(1);
8443 /* ./../lib/standard//kernel.nit:237 */
8444 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8445 /* ./syntax//typing.nit:1448 */
8446 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8447 if (UNTAG_Bool(REGB0)) {
8448 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8449 }
8450 /* ./../lib/standard//collection//array.nit:278 */
8451 fra.me.REG[7] = fra.me.REG[4];
8452 /* ./../lib/standard//collection//array.nit:280 */
8453 REGB0 = TAG_Int(0);
8454 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8455 if (UNTAG_Bool(REGB3)) {
8456 } else {
8457 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8458 }
8459 /* ./../lib/standard//kernel.nit:233 */
8460 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8461 /* ./../lib/standard//collection//array.nit:280 */
8462 if (UNTAG_Bool(REGB0)) {
8463 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8464 if (UNTAG_Bool(REGB0)) {
8465 } else {
8466 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8467 }
8468 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8469 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8470 if (UNTAG_Bool(REGB3)) {
8471 } else {
8472 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8473 }
8474 /* ./../lib/standard//kernel.nit:232 */
8475 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8476 } else {
8477 /* ./../lib/standard//collection//array.nit:280 */
8478 REGB3 = TAG_Bool(false);
8479 REGB0 = REGB3;
8480 }
8481 if (UNTAG_Bool(REGB0)) {
8482 } else {
8483 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8484 }
8485 /* ./../lib/standard//collection//array.nit:281 */
8486 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8487 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8488 if (UNTAG_Bool(REGB0)) {
8489 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8490 }
8491 /* ./../lib/standard//collection//array.nit:718 */
8492 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8493 /* ./../lib/standard//collection//array.nit:281 */
8494 goto label9;
8495 label9: while(0);
8496 /* ./syntax//typing.nit:1448 */
8497 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8498 if (UNTAG_Bool(REGB2)) {
8499 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
8500 }
8501 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8502 } else {
8503 fra.me.REG[7] = NIT_NULL;
8504 }
8505 /* ./syntax//typing.nit:1451 */
8506 REGB2 = TAG_Int(0);
8507 /* ./../lib/standard//kernel.nit:347 */
8508 REGB0 = REGB1;
8509 /* ./../lib/standard//kernel.nit:352 */
8510 while(1) {
8511 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8512 if (UNTAG_Bool(REGB3)) {
8513 } else {
8514 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8515 }
8516 /* ./../lib/standard//kernel.nit:232 */
8517 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8518 /* ./../lib/standard//kernel.nit:352 */
8519 if (UNTAG_Bool(REGB3)) {
8520 /* ./syntax//typing.nit:1451 */
8521 REGB3 = REGB2;
8522 /* ./syntax//typing.nit:1452 */
8523 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8524 if (UNTAG_Bool(REGB4)) {
8525 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1452);
8526 }
8527 /* ./../lib/standard//collection//array.nit:278 */
8528 fra.me.REG[9] = fra.me.REG[4];
8529 /* ./../lib/standard//collection//array.nit:280 */
8530 REGB4 = TAG_Int(0);
8531 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8532 if (UNTAG_Bool(REGB5)) {
8533 } else {
8534 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8535 }
8536 /* ./../lib/standard//kernel.nit:233 */
8537 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
8538 /* ./../lib/standard//collection//array.nit:280 */
8539 if (UNTAG_Bool(REGB4)) {
8540 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
8541 if (UNTAG_Bool(REGB4)) {
8542 } else {
8543 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8544 }
8545 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
8546 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
8547 if (UNTAG_Bool(REGB5)) {
8548 } else {
8549 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8550 }
8551 /* ./../lib/standard//kernel.nit:232 */
8552 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
8553 } else {
8554 /* ./../lib/standard//collection//array.nit:280 */
8555 REGB5 = TAG_Bool(false);
8556 REGB4 = REGB5;
8557 }
8558 if (UNTAG_Bool(REGB4)) {
8559 } else {
8560 nit_abort("Assert %s failed", "'index'", LOCATE_standard___collection___array, 280);
8561 }
8562 /* ./../lib/standard//collection//array.nit:281 */
8563 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
8564 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
8565 if (UNTAG_Bool(REGB4)) {
8566 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8567 }
8568 /* ./../lib/standard//collection//array.nit:718 */
8569 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
8570 /* ./../lib/standard//collection//array.nit:281 */
8571 goto label10;
8572 label10: while(0);
8573 /* ./syntax//typing.nit:1453 */
8574 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8575 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
8576 /* ./syntax//typing.nit:1454 */
8577 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
8578 /* ./syntax//typing.nit:1455 */
8579 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8580 if (UNTAG_Bool(REGB3)) {
8581 } else {
8582 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
8583 if (UNTAG_Bool(REGB4)) {
8584 REGB4 = TAG_Bool(false);
8585 REGB3 = REGB4;
8586 } else {
8587 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
8588 REGB3 = REGB4;
8589 }
8590 }
8591 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
8592 if (UNTAG_Bool(REGB3)) {
8593 /* ./syntax//typing.nit:1456 */
8594 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
8595 /* ./syntax//typing.nit:1457 */
8596 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8597 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
8598 /* ./syntax//typing.nit:1458 */
8599 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
8600 /* ./syntax//typing.nit:1459 */
8601 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
8602 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
8603 } else {
8604 /* ./../lib/standard//collection//array.nit:24 */
8605 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8606 if (UNTAG_Bool(REGB3)) {
8607 } else {
8608 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8609 }
8610 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8611 /* ./syntax//typing.nit:1460 */
8612 REGB4 = TAG_Int(1);
8613 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
8614 if (UNTAG_Bool(REGB5)) {
8615 } else {
8616 /* ./../lib/standard//kernel.nit:227 */
8617 REGB4 = TAG_Bool((REGB3)==(REGB4));
8618 /* ./syntax//typing.nit:1460 */
8619 REGB5 = REGB4;
8620 }
8621 if (UNTAG_Bool(REGB5)) {
8622 /* ./syntax//typing.nit:1461 */
8623 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8624 REGB5 = TAG_Int(7);
8625 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8626 if (!once_value_11) {
8627 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
8628 REGB5 = TAG_Int(26);
8629 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8630 once_value_11 = fra.me.REG[13];
8631 register_static_object(&once_value_11);
8632 } else fra.me.REG[13] = once_value_11;
8633 fra.me.REG[13] = fra.me.REG[13];
8634 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8635 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8636 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8637 if (!once_value_12) {
8638 fra.me.REG[13] = BOX_NativeString("' in ");
8639 REGB5 = TAG_Int(5);
8640 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8641 once_value_12 = fra.me.REG[13];
8642 register_static_object(&once_value_12);
8643 } else fra.me.REG[13] = once_value_12;
8644 fra.me.REG[13] = fra.me.REG[13];
8645 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8646 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8647 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8648 if (!once_value_13) {
8649 fra.me.REG[13] = BOX_NativeString("; only closure is !");
8650 REGB5 = TAG_Int(19);
8651 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8652 once_value_13 = fra.me.REG[13];
8653 register_static_object(&once_value_13);
8654 } else fra.me.REG[13] = once_value_13;
8655 fra.me.REG[13] = fra.me.REG[13];
8656 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8657 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
8658 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8659 if (UNTAG_Bool(REGB5)) {
8660 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1461);
8661 }
8662 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
8663 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8664 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8665 if (!once_value_14) {
8666 fra.me.REG[13] = BOX_NativeString(".");
8667 REGB5 = TAG_Int(1);
8668 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
8669 once_value_14 = fra.me.REG[13];
8670 register_static_object(&once_value_14);
8671 } else fra.me.REG[13] = once_value_14;
8672 fra.me.REG[13] = fra.me.REG[13];
8673 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
8674 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
8675 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
8676 } else {
8677 /* ./syntax//typing.nit:1463 */
8678 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
8679 /* ./../lib/standard//collection//array.nit:266 */
8680 fra.me.REG[11] = fra.me.REG[6];
8681 /* ./../lib/standard//collection//array.nit:269 */
8682 REGB5 = TAG_Int(0);
8683 /* ./../lib/standard//collection//array.nit:270 */
8684 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8685 if (UNTAG_Bool(REGB4)) {
8686 } else {
8687 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8688 }
8689 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8690 /* ./../lib/standard//collection//array.nit:271 */
8691 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
8692 /* ./../lib/standard//collection//array.nit:272 */
8693 while(1) {
8694 /* ./../lib/standard//collection//array.nit:24 */
8695 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
8696 if (UNTAG_Bool(REGB4)) {
8697 } else {
8698 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8699 }
8700 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
8701 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
8702 if (UNTAG_Bool(REGB3)) {
8703 } else {
8704 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8705 }
8706 /* ./../lib/standard//kernel.nit:232 */
8707 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
8708 /* ./../lib/standard//collection//array.nit:272 */
8709 if (UNTAG_Bool(REGB4)) {
8710 /* ./../lib/standard//collection//array.nit:273 */
8711 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
8712 if (UNTAG_Bool(REGB4)) {
8713 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8714 }
8715 /* ./../lib/standard//collection//array.nit:718 */
8716 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
8717 /* ./syntax//typing.nit:1465 */
8718 REGB4 = TAG_Int(3);
8719 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
8720 if (!once_value_15) {
8721 fra.me.REG[16] = BOX_NativeString("!");
8722 REGB4 = TAG_Int(1);
8723 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
8724 once_value_15 = fra.me.REG[16];
8725 register_static_object(&once_value_15);
8726 } else fra.me.REG[16] = once_value_15;
8727 fra.me.REG[16] = fra.me.REG[16];
8728 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
8729 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
8730 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
8731 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8732 if (!once_value_16) {
8733 fra.me.REG[14] = BOX_NativeString("");
8734 REGB4 = TAG_Int(0);
8735 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
8736 once_value_16 = fra.me.REG[14];
8737 register_static_object(&once_value_16);
8738 } else fra.me.REG[14] = once_value_16;
8739 fra.me.REG[14] = fra.me.REG[14];
8740 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
8741 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
8742 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
8743 /* ./../lib/standard//collection//array.nit:274 */
8744 REGB4 = TAG_Int(1);
8745 /* ./../lib/standard//kernel.nit:235 */
8746 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
8747 /* ./../lib/standard//collection//array.nit:274 */
8748 REGB5 = REGB4;
8749 } else {
8750 /* ./../lib/standard//collection//array.nit:272 */
8751 goto label17;
8752 }
8753 }
8754 label17: while(0);
8755 /* ./syntax//typing.nit:1467 */
8756 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
8757 REGB5 = TAG_Int(7);
8758 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
8759 if (!once_value_18) {
8760 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
8761 REGB5 = TAG_Int(26);
8762 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
8763 once_value_18 = fra.me.REG[11];
8764 register_static_object(&once_value_18);
8765 } else fra.me.REG[11] = once_value_18;
8766 fra.me.REG[11] = fra.me.REG[11];
8767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
8768 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
8769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8770 if (!once_value_19) {
8771 fra.me.REG[10] = BOX_NativeString("' in ");
8772 REGB5 = TAG_Int(5);
8773 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8774 once_value_19 = fra.me.REG[10];
8775 register_static_object(&once_value_19);
8776 } else fra.me.REG[10] = once_value_19;
8777 fra.me.REG[10] = fra.me.REG[10];
8778 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8779 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8780 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8781 if (!once_value_20) {
8782 fra.me.REG[10] = BOX_NativeString("; only closures are ");
8783 REGB5 = TAG_Int(20);
8784 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8785 once_value_20 = fra.me.REG[10];
8786 register_static_object(&once_value_20);
8787 } else fra.me.REG[10] = once_value_20;
8788 fra.me.REG[10] = fra.me.REG[10];
8789 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8790 if (!once_value_21) {
8791 fra.me.REG[10] = BOX_NativeString(",");
8792 REGB5 = TAG_Int(1);
8793 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8794 once_value_21 = fra.me.REG[10];
8795 register_static_object(&once_value_21);
8796 } else fra.me.REG[10] = once_value_21;
8797 fra.me.REG[10] = fra.me.REG[10];
8798 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
8799 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8800 if (!once_value_22) {
8801 fra.me.REG[10] = BOX_NativeString(".");
8802 REGB5 = TAG_Int(1);
8803 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
8804 once_value_22 = fra.me.REG[10];
8805 register_static_object(&once_value_22);
8806 } else fra.me.REG[10] = once_value_22;
8807 fra.me.REG[10] = fra.me.REG[10];
8808 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
8809 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
8810 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
8811 }
8812 }
8813 /* ./../lib/standard//kernel.nit:354 */
8814 REGB5 = TAG_Int(1);
8815 /* ./../lib/standard//kernel.nit:235 */
8816 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
8817 /* ./../lib/standard//kernel.nit:354 */
8818 REGB2 = REGB5;
8819 } else {
8820 /* ./../lib/standard//kernel.nit:352 */
8821 goto label23;
8822 }
8823 }
8824 label23: while(0);
8825 /* ./syntax//typing.nit:1472 */
8826 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8827 if (UNTAG_Bool(REGB2)) {
8828 } else {
8829 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8830 if (UNTAG_Bool(REGB0)) {
8831 REGB0 = TAG_Bool(false);
8832 REGB2 = REGB0;
8833 } else {
8834 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
8835 REGB2 = REGB0;
8836 }
8837 }
8838 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8839 if (UNTAG_Bool(REGB2)) {
8840 /* ./syntax//typing.nit:1473 */
8841 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]);
8842 fra.me.REG[5] = fra.me.REG[8];
8843 }
8844 }
8845 }
8846 } else {
8847 /* ./syntax//typing.nit:1476 */
8848 REGB2 = TAG_Int(0);
8849 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8850 if (UNTAG_Bool(REGB0)) {
8851 } else {
8852 /* ./../lib/standard//kernel.nit:227 */
8853 REGB2 = TAG_Bool((REGB1)==(REGB2));
8854 /* ./syntax//typing.nit:1476 */
8855 REGB0 = REGB2;
8856 }
8857 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8858 if (UNTAG_Bool(REGB0)) {
8859 /* ./syntax//typing.nit:1477 */
8860 REGB0 = TAG_Int(3);
8861 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8862 if (!once_value_24) {
8863 fra.me.REG[6] = BOX_NativeString("Error: ");
8864 REGB0 = TAG_Int(7);
8865 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
8866 once_value_24 = fra.me.REG[6];
8867 register_static_object(&once_value_24);
8868 } else fra.me.REG[6] = once_value_24;
8869 fra.me.REG[6] = fra.me.REG[6];
8870 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
8871 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8872 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8873 if (!once_value_25) {
8874 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
8875 REGB0 = TAG_Int(25);
8876 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
8877 once_value_25 = fra.me.REG[3];
8878 register_static_object(&once_value_25);
8879 } else fra.me.REG[3] = once_value_25;
8880 fra.me.REG[3] = fra.me.REG[3];
8881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
8882 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8883 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8884 }
8885 }
8886 /* ./syntax//typing.nit:1479 */
8887 goto label26;
8888 label26: while(0);
8889 stack_frame_head = fra.me.prev;
8890 return fra.me.REG[5];
8891 }
8892 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){
8893 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8894 val_t REGB0;
8895 val_t REGB1;
8896 val_t REGB2;
8897 val_t tmp;
8898 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8899 fra.me.file = LOCATE_syntax___typing;
8900 fra.me.line = 1484;
8901 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
8902 fra.me.has_broke = 0;
8903 fra.me.REG_size = 7;
8904 fra.me.REG[0] = NIT_NULL;
8905 fra.me.REG[1] = NIT_NULL;
8906 fra.me.REG[2] = NIT_NULL;
8907 fra.me.REG[3] = NIT_NULL;
8908 fra.me.REG[4] = NIT_NULL;
8909 fra.me.REG[5] = NIT_NULL;
8910 fra.me.REG[6] = NIT_NULL;
8911 fra.me.REG[0] = p0;
8912 fra.me.REG[1] = p1;
8913 fra.me.REG[2] = p2;
8914 REGB0 = p3;
8915 REGB1 = p4;
8916 fra.me.REG[3] = p5;
8917 fra.me.REG[4] = p6;
8918 fra.me.REG[5] = p7;
8919 /* ./syntax//typing.nit:1487 */
8920 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]);
8921 /* ./syntax//typing.nit:1488 */
8922 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8923 if (UNTAG_Bool(REGB0)) {
8924 } else {
8925 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8926 if (UNTAG_Bool(REGB2)) {
8927 REGB2 = TAG_Bool(false);
8928 REGB0 = REGB2;
8929 } else {
8930 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
8931 REGB0 = REGB2;
8932 }
8933 }
8934 if (UNTAG_Bool(REGB0)) {
8935 goto label1;
8936 }
8937 /* ./syntax//typing.nit:1489 */
8938 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);
8939 /* ./syntax//typing.nit:1490 */
8940 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8941 if (UNTAG_Bool(REGB1)) {
8942 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1490);
8943 }
8944 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8945 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]);
8946 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8947 if (UNTAG_Bool(REGB1)) {
8948 goto label1;
8949 }
8950 /* ./syntax//typing.nit:1491 */
8951 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8952 if (UNTAG_Bool(REGB1)) {
8953 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1491);
8954 }
8955 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
8956 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]);
8957 /* ./syntax//typing.nit:1492 */
8958 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8959 if (UNTAG_Bool(REGB1)) {
8960 } else {
8961 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8962 if (UNTAG_Bool(REGB0)) {
8963 REGB0 = TAG_Bool(false);
8964 REGB1 = REGB0;
8965 } else {
8966 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8967 REGB1 = REGB0;
8968 }
8969 }
8970 if (UNTAG_Bool(REGB1)) {
8971 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8972 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8973 if (UNTAG_Bool(REGB1)) {
8974 } else {
8975 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8976 if (UNTAG_Bool(REGB0)) {
8977 REGB0 = TAG_Bool(false);
8978 REGB1 = REGB0;
8979 } else {
8980 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8981 REGB1 = REGB0;
8982 }
8983 }
8984 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
8985 } else {
8986 REGB0 = TAG_Bool(false);
8987 REGB1 = REGB0;
8988 }
8989 if (UNTAG_Bool(REGB1)) {
8990 goto label1;
8991 }
8992 /* ./syntax//typing.nit:1493 */
8993 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
8994 /* ./syntax//typing.nit:1494 */
8995 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
8996 /* ./syntax//typing.nit:1495 */
8997 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
8998 label1: while(0);
8999 stack_frame_head = fra.me.prev;
9000 return;
9001 }
9002 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9003 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9004 val_t REGB0;
9005 val_t REGB1;
9006 val_t REGB2;
9007 val_t REGB3;
9008 val_t tmp;
9009 static val_t once_value_1; /* Once value */
9010 static val_t once_value_2; /* Once value */
9011 static val_t once_value_3; /* Once value */
9012 static val_t once_value_4; /* Once value */
9013 static val_t once_value_5; /* Once value */
9014 static val_t once_value_6; /* Once value */
9015 static val_t once_value_8; /* Once value */
9016 static val_t once_value_9; /* Once value */
9017 static val_t once_value_10; /* Once value */
9018 static val_t once_value_11; /* Once value */
9019 static val_t once_value_12; /* Once value */
9020 static val_t once_value_13; /* Once value */
9021 static val_t once_value_14; /* Once value */
9022 static val_t once_value_15; /* Once value */
9023 static val_t once_value_16; /* Once value */
9024 static val_t once_value_17; /* Once value */
9025 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9026 fra.me.file = LOCATE_syntax___typing;
9027 fra.me.line = 1498;
9028 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9029 fra.me.has_broke = 0;
9030 fra.me.REG_size = 10;
9031 fra.me.REG[0] = NIT_NULL;
9032 fra.me.REG[1] = NIT_NULL;
9033 fra.me.REG[2] = NIT_NULL;
9034 fra.me.REG[3] = NIT_NULL;
9035 fra.me.REG[4] = NIT_NULL;
9036 fra.me.REG[5] = NIT_NULL;
9037 fra.me.REG[6] = NIT_NULL;
9038 fra.me.REG[7] = NIT_NULL;
9039 fra.me.REG[8] = NIT_NULL;
9040 fra.me.REG[9] = NIT_NULL;
9041 fra.me.REG[0] = p0;
9042 fra.me.REG[1] = p1;
9043 fra.me.REG[2] = p2;
9044 REGB0 = p3;
9045 fra.me.REG[3] = p4;
9046 /* ./syntax//typing.nit:1500 */
9047 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9048 if (UNTAG_Bool(REGB1)) {
9049 /* ./syntax//typing.nit:1501 */
9050 if (!once_value_1) {
9051 if (!once_value_2) {
9052 fra.me.REG[4] = BOX_NativeString("==");
9053 REGB1 = TAG_Int(2);
9054 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
9055 once_value_2 = fra.me.REG[4];
9056 register_static_object(&once_value_2);
9057 } else fra.me.REG[4] = once_value_2;
9058 fra.me.REG[4] = fra.me.REG[4];
9059 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9060 once_value_1 = fra.me.REG[4];
9061 register_static_object(&once_value_1);
9062 } else fra.me.REG[4] = once_value_1;
9063 fra.me.REG[4] = fra.me.REG[4];
9064 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9065 if (UNTAG_Bool(REGB1)) {
9066 } else {
9067 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9068 REGB1 = REGB2;
9069 }
9070 if (UNTAG_Bool(REGB1)) {
9071 REGB1 = TAG_Bool(true);
9072 } else {
9073 if (!once_value_3) {
9074 if (!once_value_4) {
9075 fra.me.REG[4] = BOX_NativeString("!=");
9076 REGB2 = TAG_Int(2);
9077 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
9078 once_value_4 = fra.me.REG[4];
9079 register_static_object(&once_value_4);
9080 } else fra.me.REG[4] = once_value_4;
9081 fra.me.REG[4] = fra.me.REG[4];
9082 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9083 once_value_3 = fra.me.REG[4];
9084 register_static_object(&once_value_3);
9085 } else fra.me.REG[4] = once_value_3;
9086 fra.me.REG[4] = fra.me.REG[4];
9087 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9088 if (UNTAG_Bool(REGB2)) {
9089 } else {
9090 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9091 REGB2 = REGB3;
9092 }
9093 REGB1 = REGB2;
9094 }
9095 if (UNTAG_Bool(REGB1)) {
9096 /* ./syntax//typing.nit:1503 */
9097 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9098 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9099 fra.me.REG[2] = fra.me.REG[4];
9100 } else {
9101 /* ./syntax//typing.nit:1505 */
9102 REGB1 = TAG_Int(3);
9103 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9104 if (!once_value_5) {
9105 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9106 REGB1 = TAG_Int(15);
9107 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9108 once_value_5 = fra.me.REG[5];
9109 register_static_object(&once_value_5);
9110 } else fra.me.REG[5] = once_value_5;
9111 fra.me.REG[5] = fra.me.REG[5];
9112 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9113 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9114 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9115 if (!once_value_6) {
9116 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9117 REGB1 = TAG_Int(17);
9118 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9119 once_value_6 = fra.me.REG[5];
9120 register_static_object(&once_value_6);
9121 } else fra.me.REG[5] = once_value_6;
9122 fra.me.REG[5] = fra.me.REG[5];
9123 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9124 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9125 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9126 /* ./syntax//typing.nit:1506 */
9127 fra.me.REG[4] = NIT_NULL;
9128 goto label7;
9129 }
9130 }
9131 /* ./syntax//typing.nit:1509 */
9132 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9133 /* ./syntax//typing.nit:1510 */
9134 fra.me.REG[6] = NIT_NULL;
9135 /* ./syntax//typing.nit:1511 */
9136 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9137 if (UNTAG_Bool(REGB1)) {
9138 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9139 fra.me.REG[6] = fra.me.REG[7];
9140 }
9141 /* ./syntax//typing.nit:1512 */
9142 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9143 if (UNTAG_Bool(REGB1)) {
9144 } else {
9145 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9146 if (UNTAG_Bool(REGB2)) {
9147 REGB2 = TAG_Bool(false);
9148 REGB1 = REGB2;
9149 } else {
9150 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9151 REGB1 = REGB2;
9152 }
9153 }
9154 if (UNTAG_Bool(REGB1)) {
9155 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9156 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9157 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
9158 } else {
9159 REGB2 = TAG_Bool(false);
9160 REGB1 = REGB2;
9161 }
9162 if (UNTAG_Bool(REGB1)) {
9163 /* ./syntax//typing.nit:1513 */
9164 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9165 /* ./../lib/standard//collection//array.nit:24 */
9166 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9167 if (UNTAG_Bool(REGB1)) {
9168 } else {
9169 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9170 }
9171 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9172 /* ./syntax//typing.nit:1514 */
9173 REGB2 = TAG_Int(1);
9174 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9175 if (UNTAG_Bool(REGB3)) {
9176 } else {
9177 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9178 }
9179 /* ./../lib/standard//kernel.nit:234 */
9180 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9181 /* ./syntax//typing.nit:1514 */
9182 if (UNTAG_Bool(REGB2)) {
9183 /* ./syntax//typing.nit:1515 */
9184 REGB2 = TAG_Int(5);
9185 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9186 if (!once_value_8) {
9187 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9188 REGB2 = TAG_Int(29);
9189 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9190 once_value_8 = fra.me.REG[9];
9191 register_static_object(&once_value_8);
9192 } else fra.me.REG[9] = once_value_8;
9193 fra.me.REG[9] = fra.me.REG[9];
9194 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9195 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9196 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9197 if (!once_value_9) {
9198 fra.me.REG[9] = BOX_NativeString("' for ");
9199 REGB2 = TAG_Int(6);
9200 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9201 once_value_9 = fra.me.REG[9];
9202 register_static_object(&once_value_9);
9203 } else fra.me.REG[9] = once_value_9;
9204 fra.me.REG[9] = fra.me.REG[9];
9205 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9206 if (!once_value_10) {
9207 fra.me.REG[9] = BOX_NativeString(", ");
9208 REGB2 = TAG_Int(2);
9209 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9210 once_value_10 = fra.me.REG[9];
9211 register_static_object(&once_value_10);
9212 } else fra.me.REG[9] = once_value_10;
9213 fra.me.REG[9] = fra.me.REG[9];
9214 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9215 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9216 if (!once_value_11) {
9217 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9218 REGB2 = TAG_Int(27);
9219 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9220 once_value_11 = fra.me.REG[9];
9221 register_static_object(&once_value_11);
9222 } else fra.me.REG[9] = once_value_11;
9223 fra.me.REG[9] = fra.me.REG[9];
9224 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9225 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9226 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9227 /* ./syntax//typing.nit:1516 */
9228 fra.me.REG[4] = NIT_NULL;
9229 goto label7;
9230 } else {
9231 /* ./../lib/standard//collection//array.nit:24 */
9232 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9233 if (UNTAG_Bool(REGB2)) {
9234 } else {
9235 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9236 }
9237 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9238 /* ./syntax//typing.nit:1517 */
9239 REGB1 = TAG_Int(1);
9240 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9241 if (UNTAG_Bool(REGB3)) {
9242 } else {
9243 /* ./../lib/standard//kernel.nit:227 */
9244 REGB1 = TAG_Bool((REGB2)==(REGB1));
9245 /* ./syntax//typing.nit:1517 */
9246 REGB3 = REGB1;
9247 }
9248 if (UNTAG_Bool(REGB3)) {
9249 /* ./syntax//typing.nit:1518 */
9250 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9251 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9252 if (UNTAG_Bool(REGB3)) {
9253 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1518);
9254 }
9255 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9256 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9257 /* ./syntax//typing.nit:1519 */
9258 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9259 if (UNTAG_Bool(REGB3)) {
9260 } else {
9261 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1519);
9262 }
9263 /* ./syntax//typing.nit:1520 */
9264 fra.me.REG[6] = fra.me.REG[7];
9265 }
9266 }
9267 }
9268 /* ./syntax//typing.nit:1524 */
9269 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9270 if (UNTAG_Bool(REGB3)) {
9271 } else {
9272 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9273 if (UNTAG_Bool(REGB1)) {
9274 REGB1 = TAG_Bool(false);
9275 REGB3 = REGB1;
9276 } else {
9277 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9278 REGB3 = REGB1;
9279 }
9280 }
9281 if (UNTAG_Bool(REGB3)) {
9282 /* ./syntax//typing.nit:1525 */
9283 if (UNTAG_Bool(REGB0)) {
9284 /* ./syntax//typing.nit:1526 */
9285 REGB0 = TAG_Int(5);
9286 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9287 if (!once_value_12) {
9288 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9289 REGB0 = TAG_Int(27);
9290 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9291 once_value_12 = fra.me.REG[5];
9292 register_static_object(&once_value_12);
9293 } else fra.me.REG[5] = once_value_12;
9294 fra.me.REG[5] = fra.me.REG[5];
9295 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9296 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9297 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9298 if (!once_value_13) {
9299 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9300 REGB0 = TAG_Int(13);
9301 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9302 once_value_13 = fra.me.REG[5];
9303 register_static_object(&once_value_13);
9304 } else fra.me.REG[5] = once_value_13;
9305 fra.me.REG[5] = fra.me.REG[5];
9306 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9307 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9308 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9309 if (!once_value_14) {
9310 fra.me.REG[5] = BOX_NativeString(".");
9311 REGB0 = TAG_Int(1);
9312 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9313 once_value_14 = fra.me.REG[5];
9314 register_static_object(&once_value_14);
9315 } else fra.me.REG[5] = once_value_14;
9316 fra.me.REG[5] = fra.me.REG[5];
9317 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9318 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9319 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9320 } else {
9321 /* ./syntax//typing.nit:1528 */
9322 REGB0 = TAG_Int(5);
9323 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9324 if (!once_value_15) {
9325 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9326 REGB0 = TAG_Int(15);
9327 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9328 once_value_15 = fra.me.REG[5];
9329 register_static_object(&once_value_15);
9330 } else fra.me.REG[5] = once_value_15;
9331 fra.me.REG[5] = fra.me.REG[5];
9332 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9333 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9334 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9335 if (!once_value_16) {
9336 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9337 REGB0 = TAG_Int(20);
9338 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9339 once_value_16 = fra.me.REG[3];
9340 register_static_object(&once_value_16);
9341 } else fra.me.REG[3] = once_value_16;
9342 fra.me.REG[3] = fra.me.REG[3];
9343 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9344 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9345 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9346 if (!once_value_17) {
9347 fra.me.REG[2] = BOX_NativeString(".");
9348 REGB0 = TAG_Int(1);
9349 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9350 once_value_17 = fra.me.REG[2];
9351 register_static_object(&once_value_17);
9352 } else fra.me.REG[2] = once_value_17;
9353 fra.me.REG[2] = fra.me.REG[2];
9354 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9355 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9356 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9357 }
9358 /* ./syntax//typing.nit:1530 */
9359 fra.me.REG[4] = NIT_NULL;
9360 goto label7;
9361 }
9362 /* ./syntax//typing.nit:1532 */
9363 fra.me.REG[4] = fra.me.REG[6];
9364 goto label7;
9365 label7: while(0);
9366 stack_frame_head = fra.me.prev;
9367 return fra.me.REG[4];
9368 }
9369 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9370 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9371 val_t REGB0;
9372 val_t tmp;
9373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9374 fra.me.file = LOCATE_syntax___typing;
9375 fra.me.line = 1535;
9376 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9377 fra.me.has_broke = 0;
9378 fra.me.REG_size = 6;
9379 fra.me.REG[0] = NIT_NULL;
9380 fra.me.REG[1] = NIT_NULL;
9381 fra.me.REG[2] = NIT_NULL;
9382 fra.me.REG[3] = NIT_NULL;
9383 fra.me.REG[4] = NIT_NULL;
9384 fra.me.REG[5] = NIT_NULL;
9385 fra.me.REG[0] = p0;
9386 fra.me.REG[1] = p1;
9387 fra.me.REG[2] = p2;
9388 fra.me.REG[3] = p3;
9389 REGB0 = p4;
9390 /* ./syntax//typing.nit:1538 */
9391 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9392 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9393 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);
9394 /* ./syntax//typing.nit:1539 */
9395 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9396 /* ./syntax//typing.nit:1540 */
9397 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9398 if (UNTAG_Bool(REGB0)) {
9399 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9400 fra.me.REG[2] = fra.me.REG[3];
9401 }
9402 /* ./syntax//typing.nit:1541 */
9403 goto label1;
9404 label1: while(0);
9405 stack_frame_head = fra.me.prev;
9406 return fra.me.REG[2];
9407 }
9408 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9409 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9410 val_t REGB0;
9411 val_t tmp;
9412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9413 fra.me.file = LOCATE_syntax___typing;
9414 fra.me.line = 1544;
9415 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9416 fra.me.has_broke = 0;
9417 fra.me.REG_size = 2;
9418 fra.me.REG[0] = NIT_NULL;
9419 fra.me.REG[1] = NIT_NULL;
9420 fra.me.REG[0] = p0;
9421 /* ./syntax//typing.nit:1544 */
9422 fra.me.REG[1] = fra.me.REG[0];
9423 /* ./syntax//typing.nit:1545 */
9424 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9425 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9426 if (UNTAG_Bool(REGB0)) {
9427 } else {
9428 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1545);
9429 }
9430 goto label1;
9431 label1: while(0);
9432 stack_frame_head = fra.me.prev;
9433 return fra.me.REG[1];
9434 }
9435 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9436 struct {struct stack_frame_t me;} fra;
9437 val_t tmp;
9438 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9439 fra.me.file = LOCATE_syntax___typing;
9440 fra.me.line = 1548;
9441 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9442 fra.me.has_broke = 0;
9443 fra.me.REG_size = 1;
9444 fra.me.REG[0] = NIT_NULL;
9445 fra.me.REG[0] = p0;
9446 /* ./syntax//typing.nit:1548 */
9447 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9448 stack_frame_head = fra.me.prev;
9449 return fra.me.REG[0];
9450 }
9451 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9452 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
9453 val_t REGB0;
9454 val_t REGB1;
9455 val_t REGB2;
9456 val_t tmp;
9457 static val_t once_value_1; /* Once value */
9458 static val_t once_value_2; /* Once value */
9459 static val_t once_value_3; /* Once value */
9460 static val_t once_value_4; /* Once value */
9461 static val_t once_value_5; /* Once value */
9462 static val_t once_value_6; /* Once value */
9463 static val_t once_value_7; /* Once value */
9464 static val_t once_value_8; /* Once value */
9465 static val_t once_value_9; /* Once value */
9466 static val_t once_value_10; /* Once value */
9467 static val_t once_value_11; /* Once value */
9468 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9469 fra.me.file = LOCATE_syntax___typing;
9470 fra.me.line = 1555;
9471 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9472 fra.me.has_broke = 0;
9473 fra.me.REG_size = 11;
9474 fra.me.REG[0] = NIT_NULL;
9475 fra.me.REG[1] = NIT_NULL;
9476 fra.me.REG[2] = NIT_NULL;
9477 fra.me.REG[3] = NIT_NULL;
9478 fra.me.REG[4] = NIT_NULL;
9479 fra.me.REG[5] = NIT_NULL;
9480 fra.me.REG[6] = NIT_NULL;
9481 fra.me.REG[7] = NIT_NULL;
9482 fra.me.REG[8] = NIT_NULL;
9483 fra.me.REG[9] = NIT_NULL;
9484 fra.me.REG[10] = NIT_NULL;
9485 fra.me.REG[0] = p0;
9486 fra.me.REG[1] = p1;
9487 fra.me.REG[2] = p2;
9488 /* ./syntax//typing.nit:1555 */
9489 fra.me.REG[3] = fra.me.REG[0];
9490 /* ./syntax//typing.nit:1557 */
9491 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9492 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9493 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9494 if (UNTAG_Bool(REGB0)) {
9495 } else {
9496 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9497 if (UNTAG_Bool(REGB1)) {
9498 REGB1 = TAG_Bool(false);
9499 REGB0 = REGB1;
9500 } else {
9501 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9502 REGB0 = REGB1;
9503 }
9504 }
9505 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9506 if (UNTAG_Bool(REGB0)) {
9507 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9508 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
9509 if (UNTAG_Bool(REGB0)) {
9510 } else {
9511 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
9512 REGB0 = REGB1;
9513 }
9514 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9515 } else {
9516 REGB1 = TAG_Bool(false);
9517 REGB0 = REGB1;
9518 }
9519 if (UNTAG_Bool(REGB0)) {
9520 /* ./syntax//typing.nit:1558 */
9521 REGB0 = TAG_Int(3);
9522 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9523 if (!once_value_1) {
9524 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
9525 REGB0 = TAG_Int(30);
9526 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9527 once_value_1 = fra.me.REG[4];
9528 register_static_object(&once_value_1);
9529 } else fra.me.REG[4] = once_value_1;
9530 fra.me.REG[4] = fra.me.REG[4];
9531 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9532 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9534 if (!once_value_2) {
9535 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
9536 REGB0 = TAG_Int(29);
9537 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9538 once_value_2 = fra.me.REG[4];
9539 register_static_object(&once_value_2);
9540 } else fra.me.REG[4] = once_value_2;
9541 fra.me.REG[4] = fra.me.REG[4];
9542 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9543 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9544 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
9545 }
9546 /* ./syntax//typing.nit:1560 */
9547 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9548 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
9549 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
9550 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
9551 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
9552 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
9553 /* ./syntax//typing.nit:1561 */
9554 fra.me.REG[5] = NIT_NULL;
9555 /* ./syntax//typing.nit:1562 */
9556 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
9557 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
9558 if (UNTAG_Bool(REGB0)) {
9559 } else {
9560 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1562);
9561 }
9562 /* ./syntax//typing.nit:1563 */
9563 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
9564 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9565 if (UNTAG_Bool(REGB0)) {
9566 /* ./syntax//typing.nit:1564 */
9567 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
9568 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
9569 if (UNTAG_Bool(REGB0)) {
9570 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1564);
9571 }
9572 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
9573 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
9574 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
9575 fra.me.REG[5] = fra.me.REG[0];
9576 }
9577 /* ./syntax//typing.nit:1566 */
9578 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9579 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
9580 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
9581 /* ./syntax//typing.nit:1567 */
9582 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
9583 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
9584 if (UNTAG_Bool(REGB0)) {
9585 } else {
9586 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
9587 REGB0 = REGB1;
9588 }
9589 if (UNTAG_Bool(REGB0)) {
9590 /* ./syntax//typing.nit:1568 */
9591 REGB0 = TAG_Bool(true);
9592 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
9593 } else {
9594 /* ./syntax//typing.nit:1569 */
9595 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
9596 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9597 if (UNTAG_Bool(REGB0)) {
9598 /* ./syntax//typing.nit:1570 */
9599 REGB0 = TAG_Int(5);
9600 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9601 if (!once_value_3) {
9602 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
9603 REGB0 = TAG_Int(28);
9604 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9605 once_value_3 = fra.me.REG[8];
9606 register_static_object(&once_value_3);
9607 } else fra.me.REG[8] = once_value_3;
9608 fra.me.REG[8] = fra.me.REG[8];
9609 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9610 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9611 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9612 if (!once_value_4) {
9613 fra.me.REG[8] = BOX_NativeString(" must be one in ");
9614 REGB0 = TAG_Int(16);
9615 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9616 once_value_4 = fra.me.REG[8];
9617 register_static_object(&once_value_4);
9618 } else fra.me.REG[8] = once_value_4;
9619 fra.me.REG[8] = fra.me.REG[8];
9620 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9621 if (!once_value_5) {
9622 fra.me.REG[8] = BOX_NativeString(", ");
9623 REGB0 = TAG_Int(2);
9624 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9625 once_value_5 = fra.me.REG[8];
9626 register_static_object(&once_value_5);
9627 } else fra.me.REG[8] = once_value_5;
9628 fra.me.REG[8] = fra.me.REG[8];
9629 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
9630 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9631 if (!once_value_6) {
9632 fra.me.REG[8] = BOX_NativeString(".");
9633 REGB0 = TAG_Int(1);
9634 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9635 once_value_6 = fra.me.REG[8];
9636 register_static_object(&once_value_6);
9637 } else fra.me.REG[8] = once_value_6;
9638 fra.me.REG[8] = fra.me.REG[8];
9639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9640 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9641 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
9642 } else {
9643 /* ./syntax//typing.nit:1571 */
9644 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
9645 if (UNTAG_Bool(REGB0)) {
9646 } else {
9647 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9648 REGB0 = REGB1;
9649 }
9650 if (UNTAG_Bool(REGB0)) {
9651 /* ./syntax//typing.nit:1572 */
9652 REGB0 = TAG_Int(3);
9653 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9654 if (!once_value_7) {
9655 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
9656 REGB0 = TAG_Int(54);
9657 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9658 once_value_7 = fra.me.REG[8];
9659 register_static_object(&once_value_7);
9660 } else fra.me.REG[8] = once_value_7;
9661 fra.me.REG[8] = fra.me.REG[8];
9662 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9663 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9664 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9665 if (!once_value_8) {
9666 fra.me.REG[8] = BOX_NativeString(" is allowed.");
9667 REGB0 = TAG_Int(12);
9668 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
9669 once_value_8 = fra.me.REG[8];
9670 register_static_object(&once_value_8);
9671 } else fra.me.REG[8] = once_value_8;
9672 fra.me.REG[8] = fra.me.REG[8];
9673 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
9674 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9675 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
9676 } else {
9677 /* ./../lib/standard//collection//array.nit:269 */
9678 REGB0 = TAG_Int(0);
9679 /* ./../lib/standard//collection//array.nit:270 */
9680 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9681 if (UNTAG_Bool(REGB1)) {
9682 } else {
9683 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
9684 }
9685 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9686 /* ./../lib/standard//collection//array.nit:271 */
9687 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
9688 /* ./../lib/standard//collection//array.nit:272 */
9689 while(1) {
9690 /* ./../lib/standard//collection//array.nit:24 */
9691 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
9692 if (UNTAG_Bool(REGB1)) {
9693 } else {
9694 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9695 }
9696 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
9697 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
9698 if (UNTAG_Bool(REGB2)) {
9699 } else {
9700 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9701 }
9702 /* ./../lib/standard//kernel.nit:232 */
9703 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
9704 /* ./../lib/standard//collection//array.nit:272 */
9705 if (UNTAG_Bool(REGB1)) {
9706 /* ./../lib/standard//collection//array.nit:273 */
9707 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9708 if (UNTAG_Bool(REGB1)) {
9709 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
9710 }
9711 /* ./../lib/standard//collection//array.nit:718 */
9712 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
9713 /* ./syntax//typing.nit:1575 */
9714 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[5]));
9715 if (UNTAG_Bool(REGB1)) {
9716 } else {
9717 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
9718 REGB1 = REGB2;
9719 }
9720 if (UNTAG_Bool(REGB1)) {
9721 /* ./syntax//typing.nit:1576 */
9722 fra.me.REG[5] = NIT_NULL;
9723 } else {
9724 /* ./syntax//typing.nit:1577 */
9725 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[4]));
9726 if (UNTAG_Bool(REGB1)) {
9727 } else {
9728 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
9729 REGB1 = REGB2;
9730 }
9731 if (UNTAG_Bool(REGB1)) {
9732 /* ./syntax//typing.nit:1578 */
9733 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9734 if (UNTAG_Bool(REGB1)) {
9735 } else {
9736 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9737 if (UNTAG_Bool(REGB2)) {
9738 REGB2 = TAG_Bool(false);
9739 REGB1 = REGB2;
9740 } else {
9741 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9742 REGB1 = REGB2;
9743 }
9744 }
9745 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9746 if (UNTAG_Bool(REGB1)) {
9747 /* ./syntax//typing.nit:1579 */
9748 REGB1 = TAG_Int(5);
9749 fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9750 if (!once_value_9) {
9751 fra.me.REG[10] = BOX_NativeString("Error: Constructor of ");
9752 REGB1 = TAG_Int(22);
9753 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
9754 once_value_9 = fra.me.REG[10];
9755 register_static_object(&once_value_9);
9756 } else fra.me.REG[10] = once_value_9;
9757 fra.me.REG[10] = fra.me.REG[10];
9758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
9759 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9760 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9761 if (!once_value_10) {
9762 fra.me.REG[8] = BOX_NativeString(" must be invoked before constructor of ");
9763 REGB1 = TAG_Int(39);
9764 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9765 once_value_10 = fra.me.REG[8];
9766 register_static_object(&once_value_10);
9767 } else fra.me.REG[8] = once_value_10;
9768 fra.me.REG[8] = fra.me.REG[8];
9769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9770 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
9771 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9772 if (!once_value_11) {
9773 fra.me.REG[8] = BOX_NativeString("");
9774 REGB1 = TAG_Int(0);
9775 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
9776 once_value_11 = fra.me.REG[8];
9777 register_static_object(&once_value_11);
9778 } else fra.me.REG[8] = once_value_11;
9779 fra.me.REG[8] = fra.me.REG[8];
9780 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
9781 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
9782 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[9]);
9783 }
9784 /* ./syntax//typing.nit:1581 */
9785 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
9786 /* ./syntax//typing.nit:1582 */
9787 goto label12;
9788 }
9789 }
9790 /* ./../lib/standard//collection//array.nit:274 */
9791 REGB1 = TAG_Int(1);
9792 /* ./../lib/standard//kernel.nit:235 */
9793 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
9794 /* ./../lib/standard//collection//array.nit:274 */
9795 REGB0 = REGB1;
9796 } else {
9797 /* ./../lib/standard//collection//array.nit:272 */
9798 goto label13;
9799 }
9800 }
9801 label13: while(0);
9802 label12: while(0);
9803 }
9804 }
9805 }
9806 stack_frame_head = fra.me.prev;
9807 return;
9808 }
9809 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
9810 struct {struct stack_frame_t me;} fra;
9811 val_t tmp;
9812 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9813 fra.me.file = LOCATE_syntax___typing;
9814 fra.me.line = 1591;
9815 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
9816 fra.me.has_broke = 0;
9817 fra.me.REG_size = 1;
9818 fra.me.REG[0] = NIT_NULL;
9819 fra.me.REG[0] = p0;
9820 /* ./syntax//typing.nit:1591 */
9821 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
9822 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
9823 goto label1;
9824 label1: while(0);
9825 stack_frame_head = fra.me.prev;
9826 return fra.me.REG[0];
9827 }
9828 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
9829 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
9830 val_t REGB0;
9831 val_t REGB1;
9832 val_t tmp;
9833 static val_t once_value_2; /* Once value */
9834 static val_t once_value_3; /* Once value */
9835 static val_t once_value_4; /* Once value */
9836 static val_t once_value_5; /* Once value */
9837 static val_t once_value_6; /* Once value */
9838 static val_t once_value_7; /* Once value */
9839 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9840 fra.me.file = LOCATE_syntax___typing;
9841 fra.me.line = 1592;
9842 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
9843 fra.me.has_broke = 0;
9844 fra.me.REG_size = 5;
9845 fra.me.REG[0] = NIT_NULL;
9846 fra.me.REG[1] = NIT_NULL;
9847 fra.me.REG[2] = NIT_NULL;
9848 fra.me.REG[3] = NIT_NULL;
9849 fra.me.REG[4] = NIT_NULL;
9850 fra.me.REG[0] = p0;
9851 fra.me.REG[1] = p1;
9852 /* ./syntax//typing.nit:1594 */
9853 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9854 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
9855 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9856 if (UNTAG_Bool(REGB0)) {
9857 goto label1;
9858 }
9859 /* ./syntax//typing.nit:1595 */
9860 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
9861 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
9862 /* ./syntax//typing.nit:1596 */
9863 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9864 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
9865 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
9866 if (UNTAG_Bool(REGB0)) {
9867 /* ./syntax//typing.nit:1597 */
9868 REGB0 = TAG_Int(3);
9869 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9870 if (!once_value_2) {
9871 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
9872 REGB0 = TAG_Int(41);
9873 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9874 once_value_2 = fra.me.REG[4];
9875 register_static_object(&once_value_2);
9876 } else fra.me.REG[4] = once_value_2;
9877 fra.me.REG[4] = fra.me.REG[4];
9878 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9879 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9880 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9882 if (!once_value_3) {
9883 fra.me.REG[4] = BOX_NativeString(".");
9884 REGB0 = TAG_Int(1);
9885 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
9886 once_value_3 = fra.me.REG[4];
9887 register_static_object(&once_value_3);
9888 } else fra.me.REG[4] = once_value_3;
9889 fra.me.REG[4] = fra.me.REG[4];
9890 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9891 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9892 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
9893 /* ./syntax//typing.nit:1598 */
9894 goto label1;
9895 }
9896 /* ./syntax//typing.nit:1601 */
9897 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9898 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9899 if (UNTAG_Bool(REGB0)) {
9900 } else {
9901 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9902 if (UNTAG_Bool(REGB1)) {
9903 REGB1 = TAG_Bool(false);
9904 REGB0 = REGB1;
9905 } else {
9906 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9907 REGB0 = REGB1;
9908 }
9909 }
9910 if (UNTAG_Bool(REGB0)) {
9911 /* ./syntax//typing.nit:1602 */
9912 if (!once_value_4) {
9913 if (!once_value_5) {
9914 fra.me.REG[3] = BOX_NativeString("init");
9915 REGB0 = TAG_Int(4);
9916 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9917 once_value_5 = fra.me.REG[3];
9918 register_static_object(&once_value_5);
9919 } else fra.me.REG[3] = once_value_5;
9920 fra.me.REG[3] = fra.me.REG[3];
9921 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
9922 once_value_4 = fra.me.REG[3];
9923 register_static_object(&once_value_4);
9924 } else fra.me.REG[3] = once_value_4;
9925 fra.me.REG[3] = fra.me.REG[3];
9926 } else {
9927 /* ./syntax//typing.nit:1604 */
9928 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
9929 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9930 if (UNTAG_Bool(REGB0)) {
9931 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1604);
9932 }
9933 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9934 fra.me.REG[3] = fra.me.REG[4];
9935 }
9936 /* ./syntax//typing.nit:1607 */
9937 REGB0 = TAG_Bool(false);
9938 REGB1 = TAG_Bool(false);
9939 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
9940 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);
9941 /* ./syntax//typing.nit:1608 */
9942 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
9943 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9944 if (UNTAG_Bool(REGB1)) {
9945 } else {
9946 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9947 if (UNTAG_Bool(REGB0)) {
9948 REGB0 = TAG_Bool(false);
9949 REGB1 = REGB0;
9950 } else {
9951 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9952 REGB1 = REGB0;
9953 }
9954 }
9955 if (UNTAG_Bool(REGB1)) {
9956 goto label1;
9957 }
9958 /* ./syntax//typing.nit:1610 */
9959 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9960 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
9961 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
9962 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9963 if (UNTAG_Bool(REGB1)) {
9964 /* ./syntax//typing.nit:1611 */
9965 REGB1 = TAG_Int(3);
9966 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9967 if (!once_value_6) {
9968 fra.me.REG[3] = BOX_NativeString("Error: ");
9969 REGB1 = TAG_Int(7);
9970 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9971 once_value_6 = fra.me.REG[3];
9972 register_static_object(&once_value_6);
9973 } else fra.me.REG[3] = once_value_6;
9974 fra.me.REG[3] = fra.me.REG[3];
9975 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9976 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
9977 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9978 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9979 if (!once_value_7) {
9980 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
9981 REGB1 = TAG_Int(22);
9982 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
9983 once_value_7 = fra.me.REG[3];
9984 register_static_object(&once_value_7);
9985 } else fra.me.REG[3] = once_value_7;
9986 fra.me.REG[3] = fra.me.REG[3];
9987 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
9988 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9989 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9990 /* ./syntax//typing.nit:1612 */
9991 goto label1;
9992 }
9993 /* ./syntax//typing.nit:1614 */
9994 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
9995 /* ./syntax//typing.nit:1615 */
9996 REGB1 = TAG_Bool(true);
9997 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
9998 label1: while(0);
9999 stack_frame_head = fra.me.prev;
10000 return;
10001 }
10002 val_t syntax___typing___ASendExpr___name(val_t p0){
10003 struct {struct stack_frame_t me;} fra;
10004 val_t tmp;
10005 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10006 fra.me.file = LOCATE_syntax___typing;
10007 fra.me.line = 1621;
10008 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10009 fra.me.has_broke = 0;
10010 fra.me.REG_size = 0;
10011 /* ./syntax//typing.nit:1621 */
10012 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1621);
10013 stack_frame_head = fra.me.prev;
10014 return NIT_NULL;
10015 }
10016 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10017 struct {struct stack_frame_t me;} fra;
10018 val_t tmp;
10019 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10020 fra.me.file = LOCATE_syntax___typing;
10021 fra.me.line = 1624;
10022 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10023 fra.me.has_broke = 0;
10024 fra.me.REG_size = 1;
10025 fra.me.REG[0] = NIT_NULL;
10026 fra.me.REG[0] = p0;
10027 /* ./syntax//typing.nit:1625 */
10028 fra.me.REG[0] = NIT_NULL;
10029 goto label1;
10030 label1: while(0);
10031 stack_frame_head = fra.me.prev;
10032 return fra.me.REG[0];
10033 }
10034 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10035 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10036 val_t tmp;
10037 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10038 fra.me.file = LOCATE_syntax___typing;
10039 fra.me.line = 1627;
10040 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10041 fra.me.has_broke = 0;
10042 fra.me.REG_size = 2;
10043 fra.me.REG[0] = NIT_NULL;
10044 fra.me.REG[1] = NIT_NULL;
10045 fra.me.REG[0] = p0;
10046 fra.me.REG[1] = p1;
10047 /* ./syntax//typing.nit:1629 */
10048 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10049 stack_frame_head = fra.me.prev;
10050 return;
10051 }
10052 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10053 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10054 val_t REGB0;
10055 val_t REGB1;
10056 val_t tmp;
10057 static val_t once_value_2; /* Once value */
10058 static val_t once_value_3; /* Once value */
10059 static val_t once_value_4; /* Once value */
10060 static val_t once_value_5; /* Once value */
10061 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10062 fra.me.file = LOCATE_syntax___typing;
10063 fra.me.line = 1632;
10064 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10065 fra.me.has_broke = 0;
10066 fra.me.REG_size = 7;
10067 fra.me.REG[0] = NIT_NULL;
10068 fra.me.REG[1] = NIT_NULL;
10069 fra.me.REG[2] = NIT_NULL;
10070 fra.me.REG[3] = NIT_NULL;
10071 fra.me.REG[4] = NIT_NULL;
10072 fra.me.REG[5] = NIT_NULL;
10073 fra.me.REG[6] = NIT_NULL;
10074 fra.me.REG[0] = p0;
10075 fra.me.REG[1] = p1;
10076 /* ./syntax//typing.nit:1632 */
10077 fra.me.REG[2] = fra.me.REG[0];
10078 /* ./syntax//typing.nit:1634 */
10079 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10080 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10081 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10082 if (UNTAG_Bool(REGB0)) {
10083 goto label1;
10084 }
10085 /* ./syntax//typing.nit:1635 */
10086 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10087 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10088 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10089 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10090 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10091 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10092 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10093 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10094 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10095 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]);
10096 /* ./syntax//typing.nit:1636 */
10097 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10098 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10099 if (UNTAG_Bool(REGB1)) {
10100 } else {
10101 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10102 if (UNTAG_Bool(REGB0)) {
10103 REGB0 = TAG_Bool(false);
10104 REGB1 = REGB0;
10105 } else {
10106 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10107 REGB1 = REGB0;
10108 }
10109 }
10110 if (UNTAG_Bool(REGB1)) {
10111 goto label1;
10112 }
10113 /* ./syntax//typing.nit:1637 */
10114 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10115 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10116 if (UNTAG_Bool(REGB1)) {
10117 } else {
10118 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1637);
10119 }
10120 /* ./syntax//typing.nit:1639 */
10121 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10122 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10123 if (UNTAG_Bool(REGB1)) {
10124 /* ./syntax//typing.nit:1640 */
10125 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10126 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10127 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10128 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10129 if (UNTAG_Bool(REGB1)) {
10130 /* ./syntax//typing.nit:1641 */
10131 REGB1 = TAG_Int(3);
10132 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10133 if (!once_value_2) {
10134 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10135 REGB1 = TAG_Int(33);
10136 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10137 once_value_2 = fra.me.REG[5];
10138 register_static_object(&once_value_2);
10139 } else fra.me.REG[5] = once_value_2;
10140 fra.me.REG[5] = fra.me.REG[5];
10141 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10142 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10143 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10144 if (!once_value_3) {
10145 fra.me.REG[5] = BOX_NativeString(" in a method.");
10146 REGB1 = TAG_Int(13);
10147 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10148 once_value_3 = fra.me.REG[5];
10149 register_static_object(&once_value_3);
10150 } else fra.me.REG[5] = once_value_3;
10151 fra.me.REG[5] = fra.me.REG[5];
10152 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10153 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10154 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10155 } else {
10156 /* ./syntax//typing.nit:1642 */
10157 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10158 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10159 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10160 if (UNTAG_Bool(REGB1)) {
10161 /* ./syntax//typing.nit:1643 */
10162 REGB1 = TAG_Int(3);
10163 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10164 if (!once_value_4) {
10165 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10166 REGB1 = TAG_Int(19);
10167 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10168 once_value_4 = fra.me.REG[5];
10169 register_static_object(&once_value_4);
10170 } else fra.me.REG[5] = once_value_4;
10171 fra.me.REG[5] = fra.me.REG[5];
10172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10173 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10174 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10175 if (!once_value_5) {
10176 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10177 REGB1 = TAG_Int(26);
10178 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10179 once_value_5 = fra.me.REG[5];
10180 register_static_object(&once_value_5);
10181 } else fra.me.REG[5] = once_value_5;
10182 fra.me.REG[5] = fra.me.REG[5];
10183 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10184 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10185 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10186 } else {
10187 /* ./syntax//typing.nit:1645 */
10188 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10189 }
10190 }
10191 }
10192 /* ./syntax//typing.nit:1649 */
10193 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10194 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10195 /* ./syntax//typing.nit:1650 */
10196 REGB1 = TAG_Bool(true);
10197 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10198 label1: while(0);
10199 stack_frame_head = fra.me.prev;
10200 return;
10201 }
10202 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10203 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10204 val_t REGB0;
10205 val_t tmp;
10206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10207 fra.me.file = LOCATE_syntax___typing;
10208 fra.me.line = 1655;
10209 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10210 fra.me.has_broke = 0;
10211 fra.me.REG_size = 2;
10212 fra.me.REG[0] = NIT_NULL;
10213 fra.me.REG[1] = NIT_NULL;
10214 fra.me.REG[0] = p0;
10215 /* ./syntax//typing.nit:1655 */
10216 fra.me.REG[1] = fra.me.REG[0];
10217 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10218 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10219 if (UNTAG_Bool(REGB0)) {
10220 } else {
10221 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1655);
10222 }
10223 goto label1;
10224 label1: while(0);
10225 stack_frame_head = fra.me.prev;
10226 return fra.me.REG[1];
10227 }
10228 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10229 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10230 val_t REGB0;
10231 val_t REGB1;
10232 val_t REGB2;
10233 val_t tmp;
10234 static val_t once_value_2; /* Once value */
10235 static val_t once_value_3; /* Once value */
10236 static val_t once_value_4; /* Once value */
10237 static val_t once_value_5; /* Once value */
10238 static val_t once_value_6; /* Once value */
10239 static val_t once_value_7; /* Once value */
10240 static val_t once_value_8; /* Once value */
10241 static val_t once_value_9; /* Once value */
10242 static val_t once_value_10; /* Once value */
10243 static val_t once_value_11; /* Once value */
10244 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10245 fra.me.file = LOCATE_syntax___typing;
10246 fra.me.line = 1657;
10247 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10248 fra.me.has_broke = 0;
10249 fra.me.REG_size = 7;
10250 fra.me.REG[0] = NIT_NULL;
10251 fra.me.REG[1] = NIT_NULL;
10252 fra.me.REG[2] = NIT_NULL;
10253 fra.me.REG[3] = NIT_NULL;
10254 fra.me.REG[4] = NIT_NULL;
10255 fra.me.REG[5] = NIT_NULL;
10256 fra.me.REG[6] = NIT_NULL;
10257 fra.me.REG[0] = p0;
10258 fra.me.REG[1] = p1;
10259 /* ./syntax//typing.nit:1657 */
10260 fra.me.REG[2] = fra.me.REG[0];
10261 /* ./syntax//typing.nit:1659 */
10262 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10263 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10264 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10265 if (UNTAG_Bool(REGB0)) {
10266 goto label1;
10267 }
10268 /* ./syntax//typing.nit:1660 */
10269 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10270 /* ./syntax//typing.nit:1661 */
10271 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10272 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10273 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10274 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10275 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10276 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10277 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10278 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);
10279 /* ./syntax//typing.nit:1662 */
10280 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10281 /* ./syntax//typing.nit:1663 */
10282 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10283 if (UNTAG_Bool(REGB1)) {
10284 } else {
10285 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10286 if (UNTAG_Bool(REGB0)) {
10287 REGB0 = TAG_Bool(false);
10288 REGB1 = REGB0;
10289 } else {
10290 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10291 REGB1 = REGB0;
10292 }
10293 }
10294 if (UNTAG_Bool(REGB1)) {
10295 goto label1;
10296 }
10297 /* ./syntax//typing.nit:1664 */
10298 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10299 if (UNTAG_Bool(REGB1)) {
10300 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1664);
10301 }
10302 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10303 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10304 if (UNTAG_Bool(REGB1)) {
10305 /* ./syntax//typing.nit:1665 */
10306 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10307 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10308 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10309 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10310 if (UNTAG_Bool(REGB1)) {
10311 /* ./syntax//typing.nit:1666 */
10312 REGB1 = TAG_Int(3);
10313 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10314 if (!once_value_2) {
10315 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10316 REGB1 = TAG_Int(33);
10317 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10318 once_value_2 = fra.me.REG[6];
10319 register_static_object(&once_value_2);
10320 } else fra.me.REG[6] = once_value_2;
10321 fra.me.REG[6] = fra.me.REG[6];
10322 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10323 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10324 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10325 if (!once_value_3) {
10326 fra.me.REG[6] = BOX_NativeString(" in a method.");
10327 REGB1 = TAG_Int(13);
10328 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10329 once_value_3 = fra.me.REG[6];
10330 register_static_object(&once_value_3);
10331 } else fra.me.REG[6] = once_value_3;
10332 fra.me.REG[6] = fra.me.REG[6];
10333 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10334 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10335 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10336 } else {
10337 /* ./syntax//typing.nit:1667 */
10338 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10339 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10340 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10341 if (UNTAG_Bool(REGB1)) {
10342 /* ./syntax//typing.nit:1668 */
10343 REGB1 = TAG_Int(3);
10344 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10345 if (!once_value_4) {
10346 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10347 REGB1 = TAG_Int(19);
10348 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10349 once_value_4 = fra.me.REG[6];
10350 register_static_object(&once_value_4);
10351 } else fra.me.REG[6] = once_value_4;
10352 fra.me.REG[6] = fra.me.REG[6];
10353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10354 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10355 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10356 if (!once_value_5) {
10357 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10358 REGB1 = TAG_Int(26);
10359 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10360 once_value_5 = fra.me.REG[6];
10361 register_static_object(&once_value_5);
10362 } else fra.me.REG[6] = once_value_5;
10363 fra.me.REG[6] = fra.me.REG[6];
10364 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10365 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10366 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10367 }
10368 }
10369 }
10370 /* ./syntax//typing.nit:1671 */
10371 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10372 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10373 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10374 if (UNTAG_Bool(REGB1)) {
10375 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1671);
10376 }
10377 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10378 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10379 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*/;
10380 if (UNTAG_Bool(REGB1)) {
10381 } else {
10382 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1671);
10383 }
10384 /* ./syntax//typing.nit:1672 */
10385 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10386 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10387 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10388 if (UNTAG_Bool(REGB1)) {
10389 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10390 fra.me.REG[4] = fra.me.REG[0];
10391 }
10392 /* ./syntax//typing.nit:1674 */
10393 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]);
10394 /* ./syntax//typing.nit:1675 */
10395 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10396 if (UNTAG_Bool(REGB1)) {
10397 } else {
10398 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10399 if (UNTAG_Bool(REGB0)) {
10400 REGB0 = TAG_Bool(false);
10401 REGB1 = REGB0;
10402 } else {
10403 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10404 REGB1 = REGB0;
10405 }
10406 }
10407 if (UNTAG_Bool(REGB1)) {
10408 goto label1;
10409 }
10410 /* ./syntax//typing.nit:1676 */
10411 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10412 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10413 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]);
10414 /* ./syntax//typing.nit:1678 */
10415 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10416 /* ./syntax//typing.nit:1679 */
10417 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10418 fra.me.REG[3] = fra.me.REG[0];
10419 /* ./syntax//typing.nit:1680 */
10420 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10421 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10422 /* ./syntax//typing.nit:1682 */
10423 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10424 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10425 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10426 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10427 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10428 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10429 REGB2 = TAG_Int(3);
10430 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10431 if (!once_value_6) {
10432 fra.me.REG[6] = BOX_NativeString("");
10433 REGB2 = TAG_Int(0);
10434 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10435 once_value_6 = fra.me.REG[6];
10436 register_static_object(&once_value_6);
10437 } else fra.me.REG[6] = once_value_6;
10438 fra.me.REG[6] = fra.me.REG[6];
10439 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10440 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10441 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10443 if (!once_value_7) {
10444 fra.me.REG[6] = BOX_NativeString("=");
10445 REGB2 = TAG_Int(1);
10446 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10447 once_value_7 = fra.me.REG[6];
10448 register_static_object(&once_value_7);
10449 } else fra.me.REG[6] = once_value_7;
10450 fra.me.REG[6] = fra.me.REG[6];
10451 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10452 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10453 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10454 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);
10455 /* ./syntax//typing.nit:1683 */
10456 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10457 if (UNTAG_Bool(REGB0)) {
10458 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1683);
10459 }
10460 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10461 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10462 if (UNTAG_Bool(REGB0)) {
10463 /* ./syntax//typing.nit:1684 */
10464 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10465 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10466 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10467 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10468 if (UNTAG_Bool(REGB0)) {
10469 /* ./syntax//typing.nit:1685 */
10470 REGB0 = TAG_Int(3);
10471 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10472 if (!once_value_8) {
10473 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
10474 REGB0 = TAG_Int(33);
10475 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10476 once_value_8 = fra.me.REG[4];
10477 register_static_object(&once_value_8);
10478 } else fra.me.REG[4] = once_value_8;
10479 fra.me.REG[4] = fra.me.REG[4];
10480 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10481 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10482 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10483 if (!once_value_9) {
10484 fra.me.REG[4] = BOX_NativeString(" in a method.");
10485 REGB0 = TAG_Int(13);
10486 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10487 once_value_9 = fra.me.REG[4];
10488 register_static_object(&once_value_9);
10489 } else fra.me.REG[4] = once_value_9;
10490 fra.me.REG[4] = fra.me.REG[4];
10491 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10492 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10493 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10494 } else {
10495 /* ./syntax//typing.nit:1686 */
10496 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10497 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10498 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10499 if (UNTAG_Bool(REGB0)) {
10500 /* ./syntax//typing.nit:1687 */
10501 REGB0 = TAG_Int(3);
10502 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10503 if (!once_value_10) {
10504 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
10505 REGB0 = TAG_Int(19);
10506 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10507 once_value_10 = fra.me.REG[4];
10508 register_static_object(&once_value_10);
10509 } else fra.me.REG[4] = once_value_10;
10510 fra.me.REG[4] = fra.me.REG[4];
10511 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10512 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10513 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10514 if (!once_value_11) {
10515 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10516 REGB0 = TAG_Int(26);
10517 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
10518 once_value_11 = fra.me.REG[5];
10519 register_static_object(&once_value_11);
10520 } else fra.me.REG[5] = once_value_11;
10521 fra.me.REG[5] = fra.me.REG[5];
10522 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10523 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10524 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10525 }
10526 }
10527 }
10528 /* ./syntax//typing.nit:1691 */
10529 REGB0 = TAG_Bool(true);
10530 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
10531 label1: while(0);
10532 stack_frame_head = fra.me.prev;
10533 return;
10534 }
10535 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
10536 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10537 val_t REGB0;
10538 val_t tmp;
10539 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10540 fra.me.file = LOCATE_syntax___typing;
10541 fra.me.line = 1696;
10542 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
10543 fra.me.has_broke = 0;
10544 fra.me.REG_size = 2;
10545 fra.me.REG[0] = NIT_NULL;
10546 fra.me.REG[1] = NIT_NULL;
10547 fra.me.REG[0] = p0;
10548 /* ./syntax//typing.nit:1696 */
10549 REGB0 = TAG_Int(1);
10550 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10551 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
10552 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
10553 goto label1;
10554 label1: while(0);
10555 stack_frame_head = fra.me.prev;
10556 return fra.me.REG[1];
10557 }
10558 val_t syntax___typing___AEqExpr___name(val_t p0){
10559 struct {struct stack_frame_t me;} fra;
10560 val_t REGB0;
10561 val_t tmp;
10562 static val_t once_value_1; /* Once value */
10563 static val_t once_value_2; /* Once value */
10564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10565 fra.me.file = LOCATE_syntax___typing;
10566 fra.me.line = 1699;
10567 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
10568 fra.me.has_broke = 0;
10569 fra.me.REG_size = 1;
10570 fra.me.REG[0] = NIT_NULL;
10571 fra.me.REG[0] = p0;
10572 /* ./syntax//typing.nit:1699 */
10573 if (!once_value_1) {
10574 if (!once_value_2) {
10575 fra.me.REG[0] = BOX_NativeString("==");
10576 REGB0 = TAG_Int(2);
10577 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10578 once_value_2 = fra.me.REG[0];
10579 register_static_object(&once_value_2);
10580 } else fra.me.REG[0] = once_value_2;
10581 fra.me.REG[0] = fra.me.REG[0];
10582 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10583 once_value_1 = fra.me.REG[0];
10584 register_static_object(&once_value_1);
10585 } else fra.me.REG[0] = once_value_1;
10586 fra.me.REG[0] = fra.me.REG[0];
10587 goto label3;
10588 label3: while(0);
10589 stack_frame_head = fra.me.prev;
10590 return fra.me.REG[0];
10591 }
10592 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
10593 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10594 val_t REGB0;
10595 val_t REGB1;
10596 val_t tmp;
10597 static val_t once_value_2; /* Once value */
10598 static val_t once_value_3; /* Once value */
10599 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10600 fra.me.file = LOCATE_syntax___typing;
10601 fra.me.line = 1700;
10602 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
10603 fra.me.has_broke = 0;
10604 fra.me.REG_size = 4;
10605 fra.me.REG[0] = NIT_NULL;
10606 fra.me.REG[1] = NIT_NULL;
10607 fra.me.REG[2] = NIT_NULL;
10608 fra.me.REG[3] = NIT_NULL;
10609 fra.me.REG[0] = p0;
10610 fra.me.REG[1] = p1;
10611 /* ./syntax//typing.nit:1700 */
10612 fra.me.REG[2] = fra.me.REG[0];
10613 fra.me.REG[3] = fra.me.REG[1];
10614 /* ./syntax//typing.nit:1702 */
10615 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10616 /* ./syntax//typing.nit:1703 */
10617 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10618 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10619 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10620 if (UNTAG_Bool(REGB0)) {
10621 REGB0 = TAG_Bool(true);
10622 } else {
10623 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10624 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10625 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10626 REGB0 = REGB1;
10627 }
10628 if (UNTAG_Bool(REGB0)) {
10629 goto label1;
10630 }
10631 /* ./syntax//typing.nit:1704 */
10632 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10633 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10634 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10635 if (UNTAG_Bool(REGB0)) {
10636 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10637 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10638 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10639 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10640 } else {
10641 REGB1 = TAG_Bool(false);
10642 REGB0 = REGB1;
10643 }
10644 if (UNTAG_Bool(REGB0)) {
10645 REGB0 = TAG_Bool(true);
10646 } else {
10647 /* ./syntax//typing.nit:1705 */
10648 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10649 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10650 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10651 /* ./syntax//typing.nit:1704 */
10652 REGB0 = REGB1;
10653 }
10654 if (UNTAG_Bool(REGB0)) {
10655 /* ./syntax//typing.nit:1705 */
10656 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10657 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10658 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10659 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10660 } else {
10661 /* ./syntax//typing.nit:1704 */
10662 REGB1 = TAG_Bool(false);
10663 REGB0 = REGB1;
10664 }
10665 if (UNTAG_Bool(REGB0)) {
10666 /* ./syntax//typing.nit:1706 */
10667 if (!once_value_2) {
10668 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10669 REGB0 = TAG_Int(59);
10670 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10671 once_value_2 = fra.me.REG[1];
10672 register_static_object(&once_value_2);
10673 } else fra.me.REG[1] = once_value_2;
10674 fra.me.REG[1] = fra.me.REG[1];
10675 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10676 }
10677 /* ./syntax//typing.nit:1709 */
10678 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10679 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10680 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10681 if (UNTAG_Bool(REGB0)) {
10682 /* ./syntax//typing.nit:1710 */
10683 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10684 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10685 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10686 if (UNTAG_Bool(REGB0)) {
10687 /* ./syntax//typing.nit:1711 */
10688 if (!once_value_3) {
10689 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10690 REGB0 = TAG_Int(43);
10691 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10692 once_value_3 = fra.me.REG[1];
10693 register_static_object(&once_value_3);
10694 } else fra.me.REG[1] = once_value_3;
10695 fra.me.REG[1] = fra.me.REG[1];
10696 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10697 } else {
10698 /* ./syntax//typing.nit:1713 */
10699 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10700 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10701 }
10702 } else {
10703 /* ./syntax//typing.nit:1715 */
10704 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10705 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10706 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10707 if (UNTAG_Bool(REGB0)) {
10708 /* ./syntax//typing.nit:1716 */
10709 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10710 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10711 }
10712 }
10713 label1: while(0);
10714 stack_frame_head = fra.me.prev;
10715 return;
10716 }
10717 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10718 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10719 val_t REGB0;
10720 val_t REGB1;
10721 val_t tmp;
10722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10723 fra.me.file = LOCATE_syntax___typing;
10724 fra.me.line = 1720;
10725 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
10726 fra.me.has_broke = 0;
10727 fra.me.REG_size = 5;
10728 fra.me.REG[0] = NIT_NULL;
10729 fra.me.REG[1] = NIT_NULL;
10730 fra.me.REG[2] = NIT_NULL;
10731 fra.me.REG[3] = NIT_NULL;
10732 fra.me.REG[4] = NIT_NULL;
10733 fra.me.REG[0] = p0;
10734 fra.me.REG[1] = p1;
10735 fra.me.REG[2] = p2;
10736 /* ./syntax//typing.nit:1722 */
10737 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10738 /* ./syntax//typing.nit:1723 */
10739 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10740 if (UNTAG_Bool(REGB0)) {
10741 } else {
10742 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10743 if (UNTAG_Bool(REGB1)) {
10744 REGB1 = TAG_Bool(false);
10745 REGB0 = REGB1;
10746 } else {
10747 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10748 REGB0 = REGB1;
10749 }
10750 }
10751 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10752 if (UNTAG_Bool(REGB0)) {
10753 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10754 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10755 } else {
10756 REGB1 = TAG_Bool(false);
10757 REGB0 = REGB1;
10758 }
10759 if (UNTAG_Bool(REGB0)) {
10760 /* ./syntax//typing.nit:1724 */
10761 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10762 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10763 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10764 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]);
10765 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10766 /* ./syntax//typing.nit:1725 */
10767 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10768 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10769 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]);
10770 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10771 }
10772 stack_frame_head = fra.me.prev;
10773 return;
10774 }
10775 val_t syntax___typing___ANeExpr___name(val_t p0){
10776 struct {struct stack_frame_t me;} fra;
10777 val_t REGB0;
10778 val_t tmp;
10779 static val_t once_value_1; /* Once value */
10780 static val_t once_value_2; /* Once value */
10781 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10782 fra.me.file = LOCATE_syntax___typing;
10783 fra.me.line = 1730;
10784 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
10785 fra.me.has_broke = 0;
10786 fra.me.REG_size = 1;
10787 fra.me.REG[0] = NIT_NULL;
10788 fra.me.REG[0] = p0;
10789 /* ./syntax//typing.nit:1730 */
10790 if (!once_value_1) {
10791 if (!once_value_2) {
10792 fra.me.REG[0] = BOX_NativeString("!=");
10793 REGB0 = TAG_Int(2);
10794 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
10795 once_value_2 = fra.me.REG[0];
10796 register_static_object(&once_value_2);
10797 } else fra.me.REG[0] = once_value_2;
10798 fra.me.REG[0] = fra.me.REG[0];
10799 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
10800 once_value_1 = fra.me.REG[0];
10801 register_static_object(&once_value_1);
10802 } else fra.me.REG[0] = once_value_1;
10803 fra.me.REG[0] = fra.me.REG[0];
10804 goto label3;
10805 label3: while(0);
10806 stack_frame_head = fra.me.prev;
10807 return fra.me.REG[0];
10808 }
10809 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
10810 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
10811 val_t REGB0;
10812 val_t REGB1;
10813 val_t tmp;
10814 static val_t once_value_2; /* Once value */
10815 static val_t once_value_3; /* Once value */
10816 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10817 fra.me.file = LOCATE_syntax___typing;
10818 fra.me.line = 1731;
10819 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
10820 fra.me.has_broke = 0;
10821 fra.me.REG_size = 4;
10822 fra.me.REG[0] = NIT_NULL;
10823 fra.me.REG[1] = NIT_NULL;
10824 fra.me.REG[2] = NIT_NULL;
10825 fra.me.REG[3] = NIT_NULL;
10826 fra.me.REG[0] = p0;
10827 fra.me.REG[1] = p1;
10828 /* ./syntax//typing.nit:1731 */
10829 fra.me.REG[2] = fra.me.REG[0];
10830 fra.me.REG[3] = fra.me.REG[1];
10831 /* ./syntax//typing.nit:1733 */
10832 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10833 /* ./syntax//typing.nit:1734 */
10834 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10835 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10836 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10837 if (UNTAG_Bool(REGB0)) {
10838 REGB0 = TAG_Bool(true);
10839 } else {
10840 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10841 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
10842 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10843 REGB0 = REGB1;
10844 }
10845 if (UNTAG_Bool(REGB0)) {
10846 goto label1;
10847 }
10848 /* ./syntax//typing.nit:1735 */
10849 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10850 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10851 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10852 if (UNTAG_Bool(REGB0)) {
10853 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10854 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10855 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10856 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10857 } else {
10858 REGB1 = TAG_Bool(false);
10859 REGB0 = REGB1;
10860 }
10861 if (UNTAG_Bool(REGB0)) {
10862 REGB0 = TAG_Bool(true);
10863 } else {
10864 /* ./syntax//typing.nit:1736 */
10865 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10866 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10867 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10868 /* ./syntax//typing.nit:1735 */
10869 REGB0 = REGB1;
10870 }
10871 if (UNTAG_Bool(REGB0)) {
10872 /* ./syntax//typing.nit:1736 */
10873 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10874 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10875 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
10876 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10877 } else {
10878 /* ./syntax//typing.nit:1735 */
10879 REGB1 = TAG_Bool(false);
10880 REGB0 = REGB1;
10881 }
10882 if (UNTAG_Bool(REGB0)) {
10883 /* ./syntax//typing.nit:1737 */
10884 if (!once_value_2) {
10885 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
10886 REGB0 = TAG_Int(59);
10887 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10888 once_value_2 = fra.me.REG[1];
10889 register_static_object(&once_value_2);
10890 } else fra.me.REG[1] = once_value_2;
10891 fra.me.REG[1] = fra.me.REG[1];
10892 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10893 }
10894 /* ./syntax//typing.nit:1740 */
10895 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10896 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10897 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10898 if (UNTAG_Bool(REGB0)) {
10899 /* ./syntax//typing.nit:1741 */
10900 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10901 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10902 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10903 if (UNTAG_Bool(REGB0)) {
10904 /* ./syntax//typing.nit:1742 */
10905 if (!once_value_3) {
10906 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between 2 null values.");
10907 REGB0 = TAG_Int(43);
10908 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
10909 once_value_3 = fra.me.REG[1];
10910 register_static_object(&once_value_3);
10911 } else fra.me.REG[1] = once_value_3;
10912 fra.me.REG[1] = fra.me.REG[1];
10913 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
10914 } else {
10915 /* ./syntax//typing.nit:1744 */
10916 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10917 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10918 }
10919 } else {
10920 /* ./syntax//typing.nit:1746 */
10921 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
10922 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
10923 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
10924 if (UNTAG_Bool(REGB0)) {
10925 /* ./syntax//typing.nit:1747 */
10926 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10927 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
10928 }
10929 }
10930 label1: while(0);
10931 stack_frame_head = fra.me.prev;
10932 return;
10933 }
10934 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
10935 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10936 val_t REGB0;
10937 val_t REGB1;
10938 val_t tmp;
10939 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10940 fra.me.file = LOCATE_syntax___typing;
10941 fra.me.line = 1751;
10942 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
10943 fra.me.has_broke = 0;
10944 fra.me.REG_size = 5;
10945 fra.me.REG[0] = NIT_NULL;
10946 fra.me.REG[1] = NIT_NULL;
10947 fra.me.REG[2] = NIT_NULL;
10948 fra.me.REG[3] = NIT_NULL;
10949 fra.me.REG[4] = NIT_NULL;
10950 fra.me.REG[0] = p0;
10951 fra.me.REG[1] = p1;
10952 fra.me.REG[2] = p2;
10953 /* ./syntax//typing.nit:1753 */
10954 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
10955 /* ./syntax//typing.nit:1754 */
10956 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10957 if (UNTAG_Bool(REGB0)) {
10958 } else {
10959 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10960 if (UNTAG_Bool(REGB1)) {
10961 REGB1 = TAG_Bool(false);
10962 REGB0 = REGB1;
10963 } else {
10964 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10965 REGB0 = REGB1;
10966 }
10967 }
10968 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10969 if (UNTAG_Bool(REGB0)) {
10970 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10971 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
10972 } else {
10973 REGB1 = TAG_Bool(false);
10974 REGB0 = REGB1;
10975 }
10976 if (UNTAG_Bool(REGB0)) {
10977 /* ./syntax//typing.nit:1755 */
10978 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10979 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
10980 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
10981 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]);
10982 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
10983 /* ./syntax//typing.nit:1756 */
10984 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
10985 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
10986 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]);
10987 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
10988 }
10989 stack_frame_head = fra.me.prev;
10990 return;
10991 }
10992 val_t syntax___typing___ALtExpr___name(val_t p0){
10993 struct {struct stack_frame_t me;} fra;
10994 val_t REGB0;
10995 val_t tmp;
10996 static val_t once_value_1; /* Once value */
10997 static val_t once_value_2; /* Once value */
10998 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10999 fra.me.file = LOCATE_syntax___typing;
11000 fra.me.line = 1761;
11001 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11002 fra.me.has_broke = 0;
11003 fra.me.REG_size = 1;
11004 fra.me.REG[0] = NIT_NULL;
11005 fra.me.REG[0] = p0;
11006 /* ./syntax//typing.nit:1761 */
11007 if (!once_value_1) {
11008 if (!once_value_2) {
11009 fra.me.REG[0] = BOX_NativeString("<");
11010 REGB0 = TAG_Int(1);
11011 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11012 once_value_2 = fra.me.REG[0];
11013 register_static_object(&once_value_2);
11014 } else fra.me.REG[0] = once_value_2;
11015 fra.me.REG[0] = fra.me.REG[0];
11016 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11017 once_value_1 = fra.me.REG[0];
11018 register_static_object(&once_value_1);
11019 } else fra.me.REG[0] = once_value_1;
11020 fra.me.REG[0] = fra.me.REG[0];
11021 goto label3;
11022 label3: while(0);
11023 stack_frame_head = fra.me.prev;
11024 return fra.me.REG[0];
11025 }
11026 val_t syntax___typing___ALeExpr___name(val_t p0){
11027 struct {struct stack_frame_t me;} fra;
11028 val_t REGB0;
11029 val_t tmp;
11030 static val_t once_value_1; /* Once value */
11031 static val_t once_value_2; /* Once value */
11032 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11033 fra.me.file = LOCATE_syntax___typing;
11034 fra.me.line = 1764;
11035 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11036 fra.me.has_broke = 0;
11037 fra.me.REG_size = 1;
11038 fra.me.REG[0] = NIT_NULL;
11039 fra.me.REG[0] = p0;
11040 /* ./syntax//typing.nit:1764 */
11041 if (!once_value_1) {
11042 if (!once_value_2) {
11043 fra.me.REG[0] = BOX_NativeString("<=");
11044 REGB0 = TAG_Int(2);
11045 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11046 once_value_2 = fra.me.REG[0];
11047 register_static_object(&once_value_2);
11048 } else fra.me.REG[0] = once_value_2;
11049 fra.me.REG[0] = fra.me.REG[0];
11050 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11051 once_value_1 = fra.me.REG[0];
11052 register_static_object(&once_value_1);
11053 } else fra.me.REG[0] = once_value_1;
11054 fra.me.REG[0] = fra.me.REG[0];
11055 goto label3;
11056 label3: while(0);
11057 stack_frame_head = fra.me.prev;
11058 return fra.me.REG[0];
11059 }
11060 val_t syntax___typing___ALlExpr___name(val_t p0){
11061 struct {struct stack_frame_t me;} fra;
11062 val_t REGB0;
11063 val_t tmp;
11064 static val_t once_value_1; /* Once value */
11065 static val_t once_value_2; /* Once value */
11066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11067 fra.me.file = LOCATE_syntax___typing;
11068 fra.me.line = 1767;
11069 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11070 fra.me.has_broke = 0;
11071 fra.me.REG_size = 1;
11072 fra.me.REG[0] = NIT_NULL;
11073 fra.me.REG[0] = p0;
11074 /* ./syntax//typing.nit:1767 */
11075 if (!once_value_1) {
11076 if (!once_value_2) {
11077 fra.me.REG[0] = BOX_NativeString("<<");
11078 REGB0 = TAG_Int(2);
11079 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11080 once_value_2 = fra.me.REG[0];
11081 register_static_object(&once_value_2);
11082 } else fra.me.REG[0] = once_value_2;
11083 fra.me.REG[0] = fra.me.REG[0];
11084 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11085 once_value_1 = fra.me.REG[0];
11086 register_static_object(&once_value_1);
11087 } else fra.me.REG[0] = once_value_1;
11088 fra.me.REG[0] = fra.me.REG[0];
11089 goto label3;
11090 label3: while(0);
11091 stack_frame_head = fra.me.prev;
11092 return fra.me.REG[0];
11093 }
11094 val_t syntax___typing___AGtExpr___name(val_t p0){
11095 struct {struct stack_frame_t me;} fra;
11096 val_t REGB0;
11097 val_t tmp;
11098 static val_t once_value_1; /* Once value */
11099 static val_t once_value_2; /* Once value */
11100 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11101 fra.me.file = LOCATE_syntax___typing;
11102 fra.me.line = 1770;
11103 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11104 fra.me.has_broke = 0;
11105 fra.me.REG_size = 1;
11106 fra.me.REG[0] = NIT_NULL;
11107 fra.me.REG[0] = p0;
11108 /* ./syntax//typing.nit:1770 */
11109 if (!once_value_1) {
11110 if (!once_value_2) {
11111 fra.me.REG[0] = BOX_NativeString(">");
11112 REGB0 = TAG_Int(1);
11113 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11114 once_value_2 = fra.me.REG[0];
11115 register_static_object(&once_value_2);
11116 } else fra.me.REG[0] = once_value_2;
11117 fra.me.REG[0] = fra.me.REG[0];
11118 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11119 once_value_1 = fra.me.REG[0];
11120 register_static_object(&once_value_1);
11121 } else fra.me.REG[0] = once_value_1;
11122 fra.me.REG[0] = fra.me.REG[0];
11123 goto label3;
11124 label3: while(0);
11125 stack_frame_head = fra.me.prev;
11126 return fra.me.REG[0];
11127 }
11128 val_t syntax___typing___AGeExpr___name(val_t p0){
11129 struct {struct stack_frame_t me;} fra;
11130 val_t REGB0;
11131 val_t tmp;
11132 static val_t once_value_1; /* Once value */
11133 static val_t once_value_2; /* Once value */
11134 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11135 fra.me.file = LOCATE_syntax___typing;
11136 fra.me.line = 1773;
11137 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11138 fra.me.has_broke = 0;
11139 fra.me.REG_size = 1;
11140 fra.me.REG[0] = NIT_NULL;
11141 fra.me.REG[0] = p0;
11142 /* ./syntax//typing.nit:1773 */
11143 if (!once_value_1) {
11144 if (!once_value_2) {
11145 fra.me.REG[0] = BOX_NativeString(">=");
11146 REGB0 = TAG_Int(2);
11147 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11148 once_value_2 = fra.me.REG[0];
11149 register_static_object(&once_value_2);
11150 } else fra.me.REG[0] = once_value_2;
11151 fra.me.REG[0] = fra.me.REG[0];
11152 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11153 once_value_1 = fra.me.REG[0];
11154 register_static_object(&once_value_1);
11155 } else fra.me.REG[0] = once_value_1;
11156 fra.me.REG[0] = fra.me.REG[0];
11157 goto label3;
11158 label3: while(0);
11159 stack_frame_head = fra.me.prev;
11160 return fra.me.REG[0];
11161 }
11162 val_t syntax___typing___AGgExpr___name(val_t p0){
11163 struct {struct stack_frame_t me;} fra;
11164 val_t REGB0;
11165 val_t tmp;
11166 static val_t once_value_1; /* Once value */
11167 static val_t once_value_2; /* Once value */
11168 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11169 fra.me.file = LOCATE_syntax___typing;
11170 fra.me.line = 1776;
11171 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
11172 fra.me.has_broke = 0;
11173 fra.me.REG_size = 1;
11174 fra.me.REG[0] = NIT_NULL;
11175 fra.me.REG[0] = p0;
11176 /* ./syntax//typing.nit:1776 */
11177 if (!once_value_1) {
11178 if (!once_value_2) {
11179 fra.me.REG[0] = BOX_NativeString(">>");
11180 REGB0 = TAG_Int(2);
11181 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11182 once_value_2 = fra.me.REG[0];
11183 register_static_object(&once_value_2);
11184 } else fra.me.REG[0] = once_value_2;
11185 fra.me.REG[0] = fra.me.REG[0];
11186 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11187 once_value_1 = fra.me.REG[0];
11188 register_static_object(&once_value_1);
11189 } else fra.me.REG[0] = once_value_1;
11190 fra.me.REG[0] = fra.me.REG[0];
11191 goto label3;
11192 label3: while(0);
11193 stack_frame_head = fra.me.prev;
11194 return fra.me.REG[0];
11195 }
11196 val_t syntax___typing___APlusExpr___name(val_t p0){
11197 struct {struct stack_frame_t me;} fra;
11198 val_t REGB0;
11199 val_t tmp;
11200 static val_t once_value_1; /* Once value */
11201 static val_t once_value_2; /* Once value */
11202 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11203 fra.me.file = LOCATE_syntax___typing;
11204 fra.me.line = 1779;
11205 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11206 fra.me.has_broke = 0;
11207 fra.me.REG_size = 1;
11208 fra.me.REG[0] = NIT_NULL;
11209 fra.me.REG[0] = p0;
11210 /* ./syntax//typing.nit:1779 */
11211 if (!once_value_1) {
11212 if (!once_value_2) {
11213 fra.me.REG[0] = BOX_NativeString("+");
11214 REGB0 = TAG_Int(1);
11215 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11216 once_value_2 = fra.me.REG[0];
11217 register_static_object(&once_value_2);
11218 } else fra.me.REG[0] = once_value_2;
11219 fra.me.REG[0] = fra.me.REG[0];
11220 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11221 once_value_1 = fra.me.REG[0];
11222 register_static_object(&once_value_1);
11223 } else fra.me.REG[0] = once_value_1;
11224 fra.me.REG[0] = fra.me.REG[0];
11225 goto label3;
11226 label3: while(0);
11227 stack_frame_head = fra.me.prev;
11228 return fra.me.REG[0];
11229 }
11230 val_t syntax___typing___AMinusExpr___name(val_t p0){
11231 struct {struct stack_frame_t me;} fra;
11232 val_t REGB0;
11233 val_t tmp;
11234 static val_t once_value_1; /* Once value */
11235 static val_t once_value_2; /* Once value */
11236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11237 fra.me.file = LOCATE_syntax___typing;
11238 fra.me.line = 1782;
11239 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11240 fra.me.has_broke = 0;
11241 fra.me.REG_size = 1;
11242 fra.me.REG[0] = NIT_NULL;
11243 fra.me.REG[0] = p0;
11244 /* ./syntax//typing.nit:1782 */
11245 if (!once_value_1) {
11246 if (!once_value_2) {
11247 fra.me.REG[0] = BOX_NativeString("-");
11248 REGB0 = TAG_Int(1);
11249 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11250 once_value_2 = fra.me.REG[0];
11251 register_static_object(&once_value_2);
11252 } else fra.me.REG[0] = once_value_2;
11253 fra.me.REG[0] = fra.me.REG[0];
11254 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11255 once_value_1 = fra.me.REG[0];
11256 register_static_object(&once_value_1);
11257 } else fra.me.REG[0] = once_value_1;
11258 fra.me.REG[0] = fra.me.REG[0];
11259 goto label3;
11260 label3: while(0);
11261 stack_frame_head = fra.me.prev;
11262 return fra.me.REG[0];
11263 }
11264 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11265 struct {struct stack_frame_t me;} fra;
11266 val_t REGB0;
11267 val_t tmp;
11268 static val_t once_value_1; /* Once value */
11269 static val_t once_value_2; /* Once value */
11270 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11271 fra.me.file = LOCATE_syntax___typing;
11272 fra.me.line = 1785;
11273 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11274 fra.me.has_broke = 0;
11275 fra.me.REG_size = 1;
11276 fra.me.REG[0] = NIT_NULL;
11277 fra.me.REG[0] = p0;
11278 /* ./syntax//typing.nit:1785 */
11279 if (!once_value_1) {
11280 if (!once_value_2) {
11281 fra.me.REG[0] = BOX_NativeString("<=>");
11282 REGB0 = TAG_Int(3);
11283 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11284 once_value_2 = fra.me.REG[0];
11285 register_static_object(&once_value_2);
11286 } else fra.me.REG[0] = once_value_2;
11287 fra.me.REG[0] = fra.me.REG[0];
11288 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11289 once_value_1 = fra.me.REG[0];
11290 register_static_object(&once_value_1);
11291 } else fra.me.REG[0] = once_value_1;
11292 fra.me.REG[0] = fra.me.REG[0];
11293 goto label3;
11294 label3: while(0);
11295 stack_frame_head = fra.me.prev;
11296 return fra.me.REG[0];
11297 }
11298 val_t syntax___typing___AStarExpr___name(val_t p0){
11299 struct {struct stack_frame_t me;} fra;
11300 val_t REGB0;
11301 val_t tmp;
11302 static val_t once_value_1; /* Once value */
11303 static val_t once_value_2; /* Once value */
11304 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11305 fra.me.file = LOCATE_syntax___typing;
11306 fra.me.line = 1788;
11307 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11308 fra.me.has_broke = 0;
11309 fra.me.REG_size = 1;
11310 fra.me.REG[0] = NIT_NULL;
11311 fra.me.REG[0] = p0;
11312 /* ./syntax//typing.nit:1788 */
11313 if (!once_value_1) {
11314 if (!once_value_2) {
11315 fra.me.REG[0] = BOX_NativeString("*");
11316 REGB0 = TAG_Int(1);
11317 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11318 once_value_2 = fra.me.REG[0];
11319 register_static_object(&once_value_2);
11320 } else fra.me.REG[0] = once_value_2;
11321 fra.me.REG[0] = fra.me.REG[0];
11322 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11323 once_value_1 = fra.me.REG[0];
11324 register_static_object(&once_value_1);
11325 } else fra.me.REG[0] = once_value_1;
11326 fra.me.REG[0] = fra.me.REG[0];
11327 goto label3;
11328 label3: while(0);
11329 stack_frame_head = fra.me.prev;
11330 return fra.me.REG[0];
11331 }
11332 val_t syntax___typing___ASlashExpr___name(val_t p0){
11333 struct {struct stack_frame_t me;} fra;
11334 val_t REGB0;
11335 val_t tmp;
11336 static val_t once_value_1; /* Once value */
11337 static val_t once_value_2; /* Once value */
11338 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11339 fra.me.file = LOCATE_syntax___typing;
11340 fra.me.line = 1791;
11341 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11342 fra.me.has_broke = 0;
11343 fra.me.REG_size = 1;
11344 fra.me.REG[0] = NIT_NULL;
11345 fra.me.REG[0] = p0;
11346 /* ./syntax//typing.nit:1791 */
11347 if (!once_value_1) {
11348 if (!once_value_2) {
11349 fra.me.REG[0] = BOX_NativeString("/");
11350 REGB0 = TAG_Int(1);
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___APercentExpr___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 = 1794;
11375 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11376 fra.me.has_broke = 0;
11377 fra.me.REG_size = 1;
11378 fra.me.REG[0] = NIT_NULL;
11379 fra.me.REG[0] = p0;
11380 /* ./syntax//typing.nit:1794 */
11381 if (!once_value_1) {
11382 if (!once_value_2) {
11383 fra.me.REG[0] = BOX_NativeString("%");
11384 REGB0 = TAG_Int(1);
11385 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11386 once_value_2 = fra.me.REG[0];
11387 register_static_object(&once_value_2);
11388 } else fra.me.REG[0] = once_value_2;
11389 fra.me.REG[0] = fra.me.REG[0];
11390 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11391 once_value_1 = fra.me.REG[0];
11392 register_static_object(&once_value_1);
11393 } else fra.me.REG[0] = once_value_1;
11394 fra.me.REG[0] = fra.me.REG[0];
11395 goto label3;
11396 label3: while(0);
11397 stack_frame_head = fra.me.prev;
11398 return fra.me.REG[0];
11399 }
11400 val_t syntax___typing___AUminusExpr___name(val_t p0){
11401 struct {struct stack_frame_t me;} fra;
11402 val_t REGB0;
11403 val_t tmp;
11404 static val_t once_value_1; /* Once value */
11405 static val_t once_value_2; /* Once value */
11406 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11407 fra.me.file = LOCATE_syntax___typing;
11408 fra.me.line = 1798;
11409 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11410 fra.me.has_broke = 0;
11411 fra.me.REG_size = 1;
11412 fra.me.REG[0] = NIT_NULL;
11413 fra.me.REG[0] = p0;
11414 /* ./syntax//typing.nit:1798 */
11415 if (!once_value_1) {
11416 if (!once_value_2) {
11417 fra.me.REG[0] = BOX_NativeString("unary -");
11418 REGB0 = TAG_Int(7);
11419 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11420 once_value_2 = fra.me.REG[0];
11421 register_static_object(&once_value_2);
11422 } else fra.me.REG[0] = once_value_2;
11423 fra.me.REG[0] = fra.me.REG[0];
11424 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11425 once_value_1 = fra.me.REG[0];
11426 register_static_object(&once_value_1);
11427 } else fra.me.REG[0] = once_value_1;
11428 fra.me.REG[0] = fra.me.REG[0];
11429 goto label3;
11430 label3: while(0);
11431 stack_frame_head = fra.me.prev;
11432 return fra.me.REG[0];
11433 }
11434 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11435 struct {struct stack_frame_t me;} fra;
11436 val_t tmp;
11437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11438 fra.me.file = LOCATE_syntax___typing;
11439 fra.me.line = 1799;
11440 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
11441 fra.me.has_broke = 0;
11442 fra.me.REG_size = 1;
11443 fra.me.REG[0] = NIT_NULL;
11444 fra.me.REG[0] = p0;
11445 /* ./syntax//typing.nit:1799 */
11446 fra.me.REG[0] = NIT_NULL;
11447 goto label1;
11448 label1: while(0);
11449 stack_frame_head = fra.me.prev;
11450 return fra.me.REG[0];
11451 }
11452 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
11453 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
11454 val_t REGB0;
11455 val_t REGB1;
11456 val_t tmp;
11457 static val_t once_value_1; /* Once value */
11458 static val_t once_value_2; /* Once value */
11459 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11460 fra.me.file = LOCATE_syntax___typing;
11461 fra.me.line = 1803;
11462 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
11463 fra.me.has_broke = 0;
11464 fra.me.REG_size = 9;
11465 fra.me.REG[0] = NIT_NULL;
11466 fra.me.REG[1] = NIT_NULL;
11467 fra.me.REG[2] = NIT_NULL;
11468 fra.me.REG[3] = NIT_NULL;
11469 fra.me.REG[4] = NIT_NULL;
11470 fra.me.REG[5] = NIT_NULL;
11471 fra.me.REG[6] = NIT_NULL;
11472 fra.me.REG[7] = NIT_NULL;
11473 fra.me.REG[8] = NIT_NULL;
11474 fra.me.REG[0] = p0;
11475 fra.me.REG[1] = p1;
11476 /* ./syntax//typing.nit:1803 */
11477 fra.me.REG[2] = fra.me.REG[0];
11478 fra.me.REG[3] = fra.me.REG[1];
11479 /* ./syntax//typing.nit:1805 */
11480 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11481 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
11482 if (UNTAG_Bool(REGB0)) {
11483 /* ./syntax//typing.nit:1806 */
11484 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11485 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
11486 /* ./syntax//typing.nit:1807 */
11487 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
11488 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
11489 /* ./syntax//typing.nit:1808 */
11490 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11491 if (UNTAG_Bool(REGB0)) {
11492 } else {
11493 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11494 if (UNTAG_Bool(REGB1)) {
11495 REGB1 = TAG_Bool(false);
11496 REGB0 = REGB1;
11497 } else {
11498 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
11499 REGB0 = REGB1;
11500 }
11501 }
11502 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11503 if (UNTAG_Bool(REGB0)) {
11504 /* ./syntax//typing.nit:1810 */
11505 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*/;
11506 if (UNTAG_Bool(REGB0)) {
11507 /* ./syntax//typing.nit:1811 */
11508 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
11509 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11510 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
11511 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
11512 /* ./syntax//typing.nit:1812 */
11513 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11514 } else {
11515 /* ./syntax//typing.nit:1814 */
11516 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
11517 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
11518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11519 if (UNTAG_Bool(REGB0)) {
11520 /* ./syntax//typing.nit:1815 */
11521 REGB0 = TAG_Int(3);
11522 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11523 if (!once_value_1) {
11524 fra.me.REG[6] = BOX_NativeString("Error: ");
11525 REGB0 = TAG_Int(7);
11526 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
11527 once_value_1 = fra.me.REG[6];
11528 register_static_object(&once_value_1);
11529 } else fra.me.REG[6] = once_value_1;
11530 fra.me.REG[6] = fra.me.REG[6];
11531 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
11532 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
11533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11534 if (!once_value_2) {
11535 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
11536 REGB0 = TAG_Int(29);
11537 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11538 once_value_2 = fra.me.REG[4];
11539 register_static_object(&once_value_2);
11540 } else fra.me.REG[4] = once_value_2;
11541 fra.me.REG[4] = fra.me.REG[4];
11542 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
11543 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
11544 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
11545 /* ./syntax//typing.nit:1816 */
11546 goto label3;
11547 }
11548 /* ./syntax//typing.nit:1818 */
11549 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
11550 fra.me.REG[8] = fra.me.REG[7];
11551 /* ./syntax//typing.nit:1819 */
11552 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
11553 }
11554 /* ./syntax//typing.nit:1821 */
11555 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
11556 /* ./syntax//typing.nit:1822 */
11557 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
11558 /* ./syntax//typing.nit:1823 */
11559 goto label3;
11560 }
11561 }
11562 /* ./syntax//typing.nit:1827 */
11563 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11564 label3: while(0);
11565 stack_frame_head = fra.me.prev;
11566 return;
11567 }
11568 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
11569 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11570 val_t REGB0;
11571 val_t tmp;
11572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11573 fra.me.file = LOCATE_syntax___typing;
11574 fra.me.line = 1830;
11575 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
11576 fra.me.has_broke = 0;
11577 fra.me.REG_size = 2;
11578 fra.me.REG[0] = NIT_NULL;
11579 fra.me.REG[1] = NIT_NULL;
11580 fra.me.REG[0] = p0;
11581 /* ./syntax//typing.nit:1832 */
11582 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11583 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11584 if (UNTAG_Bool(REGB0)) {
11585 /* ./syntax//typing.nit:1833 */
11586 fra.me.REG[1] = NIT_NULL;
11587 goto label1;
11588 } else {
11589 /* ./syntax//typing.nit:1835 */
11590 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11591 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11592 fra.me.REG[1] = fra.me.REG[0];
11593 goto label1;
11594 }
11595 label1: while(0);
11596 stack_frame_head = fra.me.prev;
11597 return fra.me.REG[1];
11598 }
11599 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
11600 struct {struct stack_frame_t me;} fra;
11601 val_t tmp;
11602 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11603 fra.me.file = LOCATE_syntax___typing;
11604 fra.me.line = 1839;
11605 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
11606 fra.me.has_broke = 0;
11607 fra.me.REG_size = 0;
11608 /* ./syntax//typing.nit:1839 */
11609 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1839);
11610 stack_frame_head = fra.me.prev;
11611 return NIT_NULL;
11612 }
11613 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
11614 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11615 val_t tmp;
11616 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11617 fra.me.file = LOCATE_syntax___typing;
11618 fra.me.line = 1844;
11619 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
11620 fra.me.has_broke = 0;
11621 fra.me.REG_size = 2;
11622 fra.me.REG[0] = NIT_NULL;
11623 fra.me.REG[1] = NIT_NULL;
11624 fra.me.REG[0] = p0;
11625 fra.me.REG[1] = p1;
11626 /* ./syntax//typing.nit:1846 */
11627 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11628 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
11629 goto label1;
11630 label1: while(0);
11631 stack_frame_head = fra.me.prev;
11632 return fra.me.REG[0];
11633 }
11634 val_t syntax___typing___ACallExpr___name(val_t p0){
11635 struct {struct stack_frame_t me;} fra;
11636 val_t tmp;
11637 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11638 fra.me.file = LOCATE_syntax___typing;
11639 fra.me.line = 1849;
11640 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
11641 fra.me.has_broke = 0;
11642 fra.me.REG_size = 1;
11643 fra.me.REG[0] = NIT_NULL;
11644 fra.me.REG[0] = p0;
11645 /* ./syntax//typing.nit:1849 */
11646 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11647 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11648 goto label1;
11649 label1: while(0);
11650 stack_frame_head = fra.me.prev;
11651 return fra.me.REG[0];
11652 }
11653 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
11654 struct {struct stack_frame_t me;} fra;
11655 val_t tmp;
11656 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11657 fra.me.file = LOCATE_syntax___typing;
11658 fra.me.line = 1850;
11659 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
11660 fra.me.has_broke = 0;
11661 fra.me.REG_size = 1;
11662 fra.me.REG[0] = NIT_NULL;
11663 fra.me.REG[0] = p0;
11664 /* ./syntax//typing.nit:1850 */
11665 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11666 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11667 goto label1;
11668 label1: while(0);
11669 stack_frame_head = fra.me.prev;
11670 return fra.me.REG[0];
11671 }
11672 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
11673 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11674 val_t tmp;
11675 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11676 fra.me.file = LOCATE_syntax___typing;
11677 fra.me.line = 1854;
11678 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
11679 fra.me.has_broke = 0;
11680 fra.me.REG_size = 3;
11681 fra.me.REG[0] = NIT_NULL;
11682 fra.me.REG[1] = NIT_NULL;
11683 fra.me.REG[2] = NIT_NULL;
11684 fra.me.REG[0] = p0;
11685 fra.me.REG[1] = p1;
11686 /* ./syntax//typing.nit:1856 */
11687 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11688 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
11689 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11690 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11691 goto label1;
11692 label1: while(0);
11693 stack_frame_head = fra.me.prev;
11694 return fra.me.REG[0];
11695 }
11696 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
11697 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11698 val_t REGB0;
11699 val_t tmp;
11700 static val_t once_value_1; /* Once value */
11701 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11702 fra.me.file = LOCATE_syntax___typing;
11703 fra.me.line = 1859;
11704 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
11705 fra.me.has_broke = 0;
11706 fra.me.REG_size = 2;
11707 fra.me.REG[0] = NIT_NULL;
11708 fra.me.REG[1] = NIT_NULL;
11709 fra.me.REG[0] = p0;
11710 /* ./syntax//typing.nit:1859 */
11711 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11712 fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
11713 if (!once_value_1) {
11714 fra.me.REG[1] = BOX_NativeString("=");
11715 REGB0 = TAG_Int(1);
11716 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11717 once_value_1 = fra.me.REG[1];
11718 register_static_object(&once_value_1);
11719 } else fra.me.REG[1] = once_value_1;
11720 fra.me.REG[1] = fra.me.REG[1];
11721 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11722 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
11723 goto label2;
11724 label2: while(0);
11725 stack_frame_head = fra.me.prev;
11726 return fra.me.REG[1];
11727 }
11728 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
11729 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11730 val_t tmp;
11731 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11732 fra.me.file = LOCATE_syntax___typing;
11733 fra.me.line = 1860;
11734 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
11735 fra.me.has_broke = 0;
11736 fra.me.REG_size = 2;
11737 fra.me.REG[0] = NIT_NULL;
11738 fra.me.REG[1] = NIT_NULL;
11739 fra.me.REG[0] = p0;
11740 /* ./syntax//typing.nit:1861 */
11741 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11742 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11743 /* ./syntax//typing.nit:1862 */
11744 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11745 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11746 /* ./syntax//typing.nit:1863 */
11747 goto label1;
11748 label1: while(0);
11749 stack_frame_head = fra.me.prev;
11750 return fra.me.REG[1];
11751 }
11752 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
11753 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
11754 val_t tmp;
11755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11756 fra.me.file = LOCATE_syntax___typing;
11757 fra.me.line = 1868;
11758 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
11759 fra.me.has_broke = 0;
11760 fra.me.REG_size = 3;
11761 fra.me.REG[0] = NIT_NULL;
11762 fra.me.REG[1] = NIT_NULL;
11763 fra.me.REG[2] = NIT_NULL;
11764 fra.me.REG[0] = p0;
11765 fra.me.REG[1] = p1;
11766 /* ./syntax//typing.nit:1870 */
11767 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11768 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
11769 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11770 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
11771 goto label1;
11772 label1: while(0);
11773 stack_frame_head = fra.me.prev;
11774 return fra.me.REG[0];
11775 }
11776 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
11777 struct {struct stack_frame_t me;} fra;
11778 val_t tmp;
11779 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11780 fra.me.file = LOCATE_syntax___typing;
11781 fra.me.line = 1873;
11782 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
11783 fra.me.has_broke = 0;
11784 fra.me.REG_size = 1;
11785 fra.me.REG[0] = NIT_NULL;
11786 fra.me.REG[0] = p0;
11787 /* ./syntax//typing.nit:1873 */
11788 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
11789 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11790 goto label1;
11791 label1: while(0);
11792 stack_frame_head = fra.me.prev;
11793 return fra.me.REG[0];
11794 }
11795 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
11796 struct {struct stack_frame_t me;} fra;
11797 val_t tmp;
11798 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11799 fra.me.file = LOCATE_syntax___typing;
11800 fra.me.line = 1874;
11801 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
11802 fra.me.has_broke = 0;
11803 fra.me.REG_size = 1;
11804 fra.me.REG[0] = NIT_NULL;
11805 fra.me.REG[0] = p0;
11806 /* ./syntax//typing.nit:1874 */
11807 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11808 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11809 goto label1;
11810 label1: while(0);
11811 stack_frame_head = fra.me.prev;
11812 return fra.me.REG[0];
11813 }
11814 val_t syntax___typing___ABraExpr___name(val_t p0){
11815 struct {struct stack_frame_t me;} fra;
11816 val_t REGB0;
11817 val_t tmp;
11818 static val_t once_value_1; /* Once value */
11819 static val_t once_value_2; /* Once value */
11820 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11821 fra.me.file = LOCATE_syntax___typing;
11822 fra.me.line = 1878;
11823 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
11824 fra.me.has_broke = 0;
11825 fra.me.REG_size = 1;
11826 fra.me.REG[0] = NIT_NULL;
11827 fra.me.REG[0] = p0;
11828 /* ./syntax//typing.nit:1878 */
11829 if (!once_value_1) {
11830 if (!once_value_2) {
11831 fra.me.REG[0] = BOX_NativeString("[]");
11832 REGB0 = TAG_Int(2);
11833 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11834 once_value_2 = fra.me.REG[0];
11835 register_static_object(&once_value_2);
11836 } else fra.me.REG[0] = once_value_2;
11837 fra.me.REG[0] = fra.me.REG[0];
11838 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11839 once_value_1 = fra.me.REG[0];
11840 register_static_object(&once_value_1);
11841 } else fra.me.REG[0] = once_value_1;
11842 fra.me.REG[0] = fra.me.REG[0];
11843 goto label3;
11844 label3: while(0);
11845 stack_frame_head = fra.me.prev;
11846 return fra.me.REG[0];
11847 }
11848 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
11849 struct {struct stack_frame_t me;} fra;
11850 val_t tmp;
11851 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11852 fra.me.file = LOCATE_syntax___typing;
11853 fra.me.line = 1879;
11854 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
11855 fra.me.has_broke = 0;
11856 fra.me.REG_size = 1;
11857 fra.me.REG[0] = NIT_NULL;
11858 fra.me.REG[0] = p0;
11859 /* ./syntax//typing.nit:1879 */
11860 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11861 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11862 goto label1;
11863 label1: while(0);
11864 stack_frame_head = fra.me.prev;
11865 return fra.me.REG[0];
11866 }
11867 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
11868 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11869 val_t REGB0;
11870 val_t tmp;
11871 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11872 fra.me.file = LOCATE_syntax___typing;
11873 fra.me.line = 1880;
11874 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
11875 fra.me.has_broke = 0;
11876 fra.me.REG_size = 2;
11877 fra.me.REG[0] = NIT_NULL;
11878 fra.me.REG[1] = NIT_NULL;
11879 fra.me.REG[0] = p0;
11880 /* ./syntax//typing.nit:1882 */
11881 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11882 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
11883 if (UNTAG_Bool(REGB0)) {
11884 /* ./syntax//typing.nit:1883 */
11885 fra.me.REG[1] = NIT_NULL;
11886 goto label1;
11887 } else {
11888 /* ./syntax//typing.nit:1885 */
11889 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
11890 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
11891 fra.me.REG[1] = fra.me.REG[0];
11892 goto label1;
11893 }
11894 label1: while(0);
11895 stack_frame_head = fra.me.prev;
11896 return fra.me.REG[1];
11897 }
11898 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
11899 struct {struct stack_frame_t me;} fra;
11900 val_t REGB0;
11901 val_t tmp;
11902 static val_t once_value_1; /* Once value */
11903 static val_t once_value_2; /* Once value */
11904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11905 fra.me.file = LOCATE_syntax___typing;
11906 fra.me.line = 1891;
11907 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
11908 fra.me.has_broke = 0;
11909 fra.me.REG_size = 1;
11910 fra.me.REG[0] = NIT_NULL;
11911 fra.me.REG[0] = p0;
11912 /* ./syntax//typing.nit:1891 */
11913 if (!once_value_1) {
11914 if (!once_value_2) {
11915 fra.me.REG[0] = BOX_NativeString("[]=");
11916 REGB0 = TAG_Int(3);
11917 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11918 once_value_2 = fra.me.REG[0];
11919 register_static_object(&once_value_2);
11920 } else fra.me.REG[0] = once_value_2;
11921 fra.me.REG[0] = fra.me.REG[0];
11922 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11923 once_value_1 = fra.me.REG[0];
11924 register_static_object(&once_value_1);
11925 } else fra.me.REG[0] = once_value_1;
11926 fra.me.REG[0] = fra.me.REG[0];
11927 goto label3;
11928 label3: while(0);
11929 stack_frame_head = fra.me.prev;
11930 return fra.me.REG[0];
11931 }
11932 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
11933 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11934 val_t tmp;
11935 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11936 fra.me.file = LOCATE_syntax___typing;
11937 fra.me.line = 1892;
11938 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
11939 fra.me.has_broke = 0;
11940 fra.me.REG_size = 2;
11941 fra.me.REG[0] = NIT_NULL;
11942 fra.me.REG[1] = NIT_NULL;
11943 fra.me.REG[0] = p0;
11944 /* ./syntax//typing.nit:1893 */
11945 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
11946 fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
11947 /* ./syntax//typing.nit:1894 */
11948 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
11949 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11950 /* ./syntax//typing.nit:1895 */
11951 goto label1;
11952 label1: while(0);
11953 stack_frame_head = fra.me.prev;
11954 return fra.me.REG[1];
11955 }
11956 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
11957 struct {struct stack_frame_t me;} fra;
11958 val_t REGB0;
11959 val_t tmp;
11960 static val_t once_value_1; /* Once value */
11961 static val_t once_value_2; /* Once value */
11962 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11963 fra.me.file = LOCATE_syntax___typing;
11964 fra.me.line = 1900;
11965 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
11966 fra.me.has_broke = 0;
11967 fra.me.REG_size = 1;
11968 fra.me.REG[0] = NIT_NULL;
11969 fra.me.REG[0] = p0;
11970 /* ./syntax//typing.nit:1900 */
11971 if (!once_value_1) {
11972 if (!once_value_2) {
11973 fra.me.REG[0] = BOX_NativeString("[]");
11974 REGB0 = TAG_Int(2);
11975 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11976 once_value_2 = fra.me.REG[0];
11977 register_static_object(&once_value_2);
11978 } else fra.me.REG[0] = once_value_2;
11979 fra.me.REG[0] = fra.me.REG[0];
11980 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11981 once_value_1 = fra.me.REG[0];
11982 register_static_object(&once_value_1);
11983 } else fra.me.REG[0] = once_value_1;
11984 fra.me.REG[0] = fra.me.REG[0];
11985 goto label3;
11986 label3: while(0);
11987 stack_frame_head = fra.me.prev;
11988 return fra.me.REG[0];
11989 }
11990 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
11991 struct {struct stack_frame_t me;} fra;
11992 val_t tmp;
11993 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11994 fra.me.file = LOCATE_syntax___typing;
11995 fra.me.line = 1901;
11996 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
11997 fra.me.has_broke = 0;
11998 fra.me.REG_size = 1;
11999 fra.me.REG[0] = NIT_NULL;
12000 fra.me.REG[0] = p0;
12001 /* ./syntax//typing.nit:1901 */
12002 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12003 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12004 goto label1;
12005 label1: while(0);
12006 stack_frame_head = fra.me.prev;
12007 return fra.me.REG[0];
12008 }
12009 val_t syntax___typing___AInitExpr___name(val_t p0){
12010 struct {struct stack_frame_t me;} fra;
12011 val_t REGB0;
12012 val_t tmp;
12013 static val_t once_value_1; /* Once value */
12014 static val_t once_value_2; /* Once value */
12015 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12016 fra.me.file = LOCATE_syntax___typing;
12017 fra.me.line = 1905;
12018 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12019 fra.me.has_broke = 0;
12020 fra.me.REG_size = 1;
12021 fra.me.REG[0] = NIT_NULL;
12022 fra.me.REG[0] = p0;
12023 /* ./syntax//typing.nit:1905 */
12024 if (!once_value_1) {
12025 if (!once_value_2) {
12026 fra.me.REG[0] = BOX_NativeString("init");
12027 REGB0 = TAG_Int(4);
12028 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12029 once_value_2 = fra.me.REG[0];
12030 register_static_object(&once_value_2);
12031 } else fra.me.REG[0] = once_value_2;
12032 fra.me.REG[0] = fra.me.REG[0];
12033 fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12034 once_value_1 = fra.me.REG[0];
12035 register_static_object(&once_value_1);
12036 } else fra.me.REG[0] = once_value_1;
12037 fra.me.REG[0] = fra.me.REG[0];
12038 goto label3;
12039 label3: while(0);
12040 stack_frame_head = fra.me.prev;
12041 return fra.me.REG[0];
12042 }
12043 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
12044 struct {struct stack_frame_t me;} fra;
12045 val_t tmp;
12046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12047 fra.me.file = LOCATE_syntax___typing;
12048 fra.me.line = 1906;
12049 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
12050 fra.me.has_broke = 0;
12051 fra.me.REG_size = 1;
12052 fra.me.REG[0] = NIT_NULL;
12053 fra.me.REG[0] = p0;
12054 /* ./syntax//typing.nit:1906 */
12055 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12056 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12057 goto label1;
12058 label1: while(0);
12059 stack_frame_head = fra.me.prev;
12060 return fra.me.REG[0];
12061 }
12062 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12063 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12064 val_t REGB0;
12065 val_t tmp;
12066 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12067 fra.me.file = LOCATE_syntax___typing;
12068 fra.me.line = 1911;
12069 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12070 fra.me.has_broke = 0;
12071 fra.me.REG_size = 2;
12072 fra.me.REG[0] = NIT_NULL;
12073 fra.me.REG[1] = NIT_NULL;
12074 fra.me.REG[0] = p0;
12075 /* ./syntax//typing.nit:1911 */
12076 fra.me.REG[1] = fra.me.REG[0];
12077 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12078 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12079 if (UNTAG_Bool(REGB0)) {
12080 } else {
12081 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1911);
12082 }
12083 goto label1;
12084 label1: while(0);
12085 stack_frame_head = fra.me.prev;
12086 return fra.me.REG[1];
12087 }
12088 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12089 struct {struct stack_frame_t me;} fra;
12090 val_t tmp;
12091 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12092 fra.me.file = LOCATE_syntax___typing;
12093 fra.me.line = 1912;
12094 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12095 fra.me.has_broke = 0;
12096 fra.me.REG_size = 1;
12097 fra.me.REG[0] = NIT_NULL;
12098 fra.me.REG[0] = p0;
12099 /* ./syntax//typing.nit:1912 */
12100 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12101 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12102 goto label1;
12103 label1: while(0);
12104 stack_frame_head = fra.me.prev;
12105 return fra.me.REG[0];
12106 }
12107 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12108 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12109 val_t REGB0;
12110 val_t REGB1;
12111 val_t tmp;
12112 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12113 fra.me.file = LOCATE_syntax___typing;
12114 fra.me.line = 1914;
12115 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12116 fra.me.has_broke = 0;
12117 fra.me.REG_size = 5;
12118 fra.me.REG[0] = NIT_NULL;
12119 fra.me.REG[1] = NIT_NULL;
12120 fra.me.REG[2] = NIT_NULL;
12121 fra.me.REG[3] = NIT_NULL;
12122 fra.me.REG[4] = NIT_NULL;
12123 fra.me.REG[0] = p0;
12124 fra.me.REG[1] = p1;
12125 /* ./syntax//typing.nit:1916 */
12126 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12127 /* ./syntax//typing.nit:1917 */
12128 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12129 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12130 if (UNTAG_Bool(REGB0)) {
12131 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12132 }
12133 /* ./syntax//typing.nit:1918 */
12134 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12135 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12136 /* ./syntax//typing.nit:1919 */
12137 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12138 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12139 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12140 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]);
12141 /* ./syntax//typing.nit:1920 */
12142 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12143 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12144 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12145 if (UNTAG_Bool(REGB1)) {
12146 /* ./syntax//typing.nit:1921 */
12147 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12148 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12149 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12150 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12151 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]);
12152 }
12153 /* ./syntax//typing.nit:1923 */
12154 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12155 if (UNTAG_Bool(REGB0)) {
12156 goto label1;
12157 }
12158 /* ./syntax//typing.nit:1924 */
12159 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12160 /* ./syntax//typing.nit:1925 */
12161 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12162 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12163 /* ./syntax//typing.nit:1926 */
12164 REGB0 = TAG_Bool(true);
12165 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12166 label1: while(0);
12167 stack_frame_head = fra.me.prev;
12168 return;
12169 }
12170 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12171 struct {struct stack_frame_t me;} fra;
12172 val_t tmp;
12173 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12174 fra.me.file = LOCATE_syntax___typing;
12175 fra.me.line = 1931;
12176 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12177 fra.me.has_broke = 0;
12178 fra.me.REG_size = 0;
12179 /* ./syntax//typing.nit:1931 */
12180 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1931);
12181 stack_frame_head = fra.me.prev;
12182 return NIT_NULL;
12183 }
12184 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12185 struct {struct stack_frame_t me;} fra;
12186 val_t tmp;
12187 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12188 fra.me.file = LOCATE_syntax___typing;
12189 fra.me.line = 1934;
12190 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12191 fra.me.has_broke = 0;
12192 fra.me.REG_size = 1;
12193 fra.me.REG[0] = NIT_NULL;
12194 fra.me.REG[0] = p0;
12195 /* ./syntax//typing.nit:1934 */
12196 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12197 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12198 goto label1;
12199 label1: while(0);
12200 stack_frame_head = fra.me.prev;
12201 return fra.me.REG[0];
12202 }
12203 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12204 struct {struct stack_frame_t me;} fra;
12205 val_t tmp;
12206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12207 fra.me.file = LOCATE_syntax___typing;
12208 fra.me.line = 1937;
12209 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12210 fra.me.has_broke = 0;
12211 fra.me.REG_size = 1;
12212 fra.me.REG[0] = NIT_NULL;
12213 fra.me.REG[0] = p0;
12214 /* ./syntax//typing.nit:1937 */
12215 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12216 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12217 goto label1;
12218 label1: while(0);
12219 stack_frame_head = fra.me.prev;
12220 return fra.me.REG[0];
12221 }
12222 val_t syntax___typing___AClosureDef___closure(val_t p0){
12223 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12224 val_t REGB0;
12225 val_t tmp;
12226 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12227 fra.me.file = LOCATE_syntax___typing;
12228 fra.me.line = 1942;
12229 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12230 fra.me.has_broke = 0;
12231 fra.me.REG_size = 2;
12232 fra.me.REG[0] = NIT_NULL;
12233 fra.me.REG[1] = NIT_NULL;
12234 fra.me.REG[0] = p0;
12235 /* ./syntax//typing.nit:1942 */
12236 fra.me.REG[1] = fra.me.REG[0];
12237 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12238 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12239 if (UNTAG_Bool(REGB0)) {
12240 } else {
12241 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1942);
12242 }
12243 goto label1;
12244 label1: while(0);
12245 stack_frame_head = fra.me.prev;
12246 return fra.me.REG[1];
12247 }
12248 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12249 struct {struct stack_frame_t me;} fra;
12250 val_t tmp;
12251 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12252 fra.me.file = LOCATE_syntax___typing;
12253 fra.me.line = 1944;
12254 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12255 fra.me.has_broke = 0;
12256 fra.me.REG_size = 1;
12257 fra.me.REG[0] = NIT_NULL;
12258 fra.me.REG[0] = p0;
12259 /* ./syntax//typing.nit:1944 */
12260 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12261 stack_frame_head = fra.me.prev;
12262 return fra.me.REG[0];
12263 }
12264 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12265 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12266 val_t REGB0;
12267 val_t tmp;
12268 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12269 fra.me.file = LOCATE_syntax___typing;
12270 fra.me.line = 1948;
12271 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12272 fra.me.has_broke = 0;
12273 fra.me.REG_size = 3;
12274 fra.me.REG[0] = NIT_NULL;
12275 fra.me.REG[1] = NIT_NULL;
12276 fra.me.REG[2] = NIT_NULL;
12277 fra.me.REG[0] = p0;
12278 fra.me.REG[1] = p1;
12279 /* ./syntax//typing.nit:1948 */
12280 fra.me.REG[2] = fra.me.REG[0];
12281 /* ./syntax//typing.nit:1951 */
12282 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12283 if (UNTAG_Bool(REGB0)) {
12284 } else {
12285 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1951);
12286 }
12287 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12288 if (UNTAG_Bool(REGB0)) {
12289 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12290 }
12291 stack_frame_head = fra.me.prev;
12292 return;
12293 }
12294 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12295 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12296 val_t REGB0;
12297 val_t REGB1;
12298 val_t REGB2;
12299 val_t REGB3;
12300 val_t tmp;
12301 static val_t once_value_1; /* Once value */
12302 static val_t once_value_2; /* Once value */
12303 static val_t once_value_3; /* Once value */
12304 static val_t once_value_6; /* Once value */
12305 static val_t once_value_7; /* Once value */
12306 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12307 fra.me.file = LOCATE_syntax___typing;
12308 fra.me.line = 1954;
12309 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12310 fra.me.has_broke = 0;
12311 fra.me.REG_size = 8;
12312 fra.me.REG[0] = NIT_NULL;
12313 fra.me.REG[1] = NIT_NULL;
12314 fra.me.REG[2] = NIT_NULL;
12315 fra.me.REG[3] = NIT_NULL;
12316 fra.me.REG[4] = NIT_NULL;
12317 fra.me.REG[5] = NIT_NULL;
12318 fra.me.REG[6] = NIT_NULL;
12319 fra.me.REG[7] = NIT_NULL;
12320 fra.me.REG[0] = p0;
12321 fra.me.REG[1] = p1;
12322 fra.me.REG[2] = p2;
12323 /* ./syntax//typing.nit:1956 */
12324 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12325 /* ./syntax//typing.nit:1958 */
12326 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12327 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12328 /* ./syntax//typing.nit:1959 */
12329 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12330 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12331 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12332 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12333 if (UNTAG_Bool(REGB2)) {
12334 } else {
12335 /* ./../lib/standard//kernel.nit:227 */
12336 REGB1 = TAG_Bool((REGB0)==(REGB1));
12337 /* ./syntax//typing.nit:1959 */
12338 REGB2 = REGB1;
12339 }
12340 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12341 if (UNTAG_Bool(REGB2)) {
12342 /* ./syntax//typing.nit:1960 */
12343 REGB2 = TAG_Int(5);
12344 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12345 if (!once_value_1) {
12346 fra.me.REG[5] = BOX_NativeString("Error: ");
12347 REGB2 = TAG_Int(7);
12348 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12349 once_value_1 = fra.me.REG[5];
12350 register_static_object(&once_value_1);
12351 } else fra.me.REG[5] = once_value_1;
12352 fra.me.REG[5] = fra.me.REG[5];
12353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12354 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12355 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12356 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12357 if (!once_value_2) {
12358 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12359 REGB2 = TAG_Int(36);
12360 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12361 once_value_2 = fra.me.REG[5];
12362 register_static_object(&once_value_2);
12363 } else fra.me.REG[5] = once_value_2;
12364 fra.me.REG[5] = fra.me.REG[5];
12365 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12366 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12367 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
12368 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12369 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12370 if (!once_value_3) {
12371 fra.me.REG[5] = BOX_NativeString(" found.");
12372 REGB2 = TAG_Int(7);
12373 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12374 once_value_3 = fra.me.REG[5];
12375 register_static_object(&once_value_3);
12376 } else fra.me.REG[5] = once_value_3;
12377 fra.me.REG[5] = fra.me.REG[5];
12378 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12379 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12380 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12381 /* ./syntax//typing.nit:1961 */
12382 goto label4;
12383 }
12384 /* ./syntax//typing.nit:1964 */
12385 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12386 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
12387 /* ./syntax//typing.nit:1966 */
12388 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12389 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
12390 /* ./syntax//typing.nit:1967 */
12391 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12392 /* ./syntax//typing.nit:1968 */
12393 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12394 /* ./syntax//typing.nit:1969 */
12395 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12396 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
12397 /* ./syntax//typing.nit:1970 */
12398 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
12399 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
12400 /* ./syntax//typing.nit:1971 */
12401 REGB2 = TAG_Int(0);
12402 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12403 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
12404 /* ./../lib/standard//kernel.nit:352 */
12405 while(1) {
12406 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
12407 if (UNTAG_Bool(REGB0)) {
12408 } else {
12409 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
12410 }
12411 /* ./../lib/standard//kernel.nit:232 */
12412 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
12413 /* ./../lib/standard//kernel.nit:352 */
12414 if (UNTAG_Bool(REGB0)) {
12415 /* ./syntax//typing.nit:1971 */
12416 REGB0 = REGB2;
12417 /* ./syntax//typing.nit:1972 */
12418 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12419 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
12420 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12421 if (UNTAG_Bool(REGB3)) {
12422 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1972);
12423 }
12424 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
12425 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12426 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
12427 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
12428 /* ./syntax//typing.nit:1973 */
12429 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
12430 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
12431 if (UNTAG_Bool(REGB3)) {
12432 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1973);
12433 }
12434 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12435 /* ./syntax//typing.nit:1974 */
12436 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
12437 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12438 /* ./syntax//typing.nit:1975 */
12439 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12440 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
12441 /* ./../lib/standard//kernel.nit:354 */
12442 REGB0 = TAG_Int(1);
12443 /* ./../lib/standard//kernel.nit:235 */
12444 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
12445 /* ./../lib/standard//kernel.nit:354 */
12446 REGB2 = REGB0;
12447 } else {
12448 /* ./../lib/standard//kernel.nit:352 */
12449 goto label5;
12450 }
12451 }
12452 label5: while(0);
12453 /* ./syntax//typing.nit:1978 */
12454 REGB2 = TAG_Bool(true);
12455 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
12456 /* ./syntax//typing.nit:1979 */
12457 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12458 /* ./syntax//typing.nit:1981 */
12459 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12460 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
12461 REGB1 = TAG_Bool(false);
12462 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
12463 if (UNTAG_Bool(REGB0)) {
12464 } else {
12465 /* ./../lib/standard//kernel.nit:195 */
12466 REGB1 = TAG_Bool((REGB2)==(REGB1));
12467 /* ./syntax//typing.nit:1981 */
12468 REGB0 = REGB1;
12469 }
12470 if (UNTAG_Bool(REGB0)) {
12471 /* ./syntax//typing.nit:1982 */
12472 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12473 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12474 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
12475 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12476 if (UNTAG_Bool(REGB0)) {
12477 } else {
12478 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12479 if (UNTAG_Bool(REGB1)) {
12480 REGB1 = TAG_Bool(false);
12481 REGB0 = REGB1;
12482 } else {
12483 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12484 REGB0 = REGB1;
12485 }
12486 }
12487 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12488 if (UNTAG_Bool(REGB0)) {
12489 /* ./syntax//typing.nit:1983 */
12490 if (!once_value_6) {
12491 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
12492 REGB0 = TAG_Int(77);
12493 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12494 once_value_6 = fra.me.REG[3];
12495 register_static_object(&once_value_6);
12496 } else fra.me.REG[3] = once_value_6;
12497 fra.me.REG[3] = fra.me.REG[3];
12498 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12499 } else {
12500 /* ./syntax//typing.nit:1984 */
12501 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
12502 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12503 if (UNTAG_Bool(REGB0)) {
12504 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
12505 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12506 if (UNTAG_Bool(REGB0)) {
12507 } else {
12508 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
12509 if (UNTAG_Bool(REGB1)) {
12510 REGB1 = TAG_Bool(false);
12511 REGB0 = REGB1;
12512 } else {
12513 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
12514 REGB0 = REGB1;
12515 }
12516 }
12517 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12518 } else {
12519 REGB1 = TAG_Bool(false);
12520 REGB0 = REGB1;
12521 }
12522 if (UNTAG_Bool(REGB0)) {
12523 /* ./syntax//typing.nit:1985 */
12524 if (!once_value_7) {
12525 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
12526 REGB0 = TAG_Int(80);
12527 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
12528 once_value_7 = fra.me.REG[2];
12529 register_static_object(&once_value_7);
12530 } else fra.me.REG[2] = once_value_7;
12531 fra.me.REG[2] = fra.me.REG[2];
12532 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
12533 }
12534 }
12535 }
12536 /* ./syntax//typing.nit:1988 */
12537 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
12538 /* ./syntax//typing.nit:1989 */
12539 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
12540 /* ./syntax//typing.nit:1990 */
12541 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12542 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
12543 label4: while(0);
12544 stack_frame_head = fra.me.prev;
12545 return;
12546 }
12547 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
12548 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
12549 val_t REGB0;
12550 val_t REGB1;
12551 val_t tmp;
12552 static val_t once_value_2; /* Once value */
12553 static val_t once_value_3; /* Once value */
12554 static val_t once_value_4; /* Once value */
12555 static val_t once_value_5; /* Once value */
12556 static val_t once_value_6; /* Once value */
12557 static val_t once_value_7; /* Once value */
12558 static val_t once_value_8; /* Once value */
12559 static val_t once_value_9; /* Once value */
12560 static val_t once_value_10; /* Once value */
12561 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12562 fra.me.file = LOCATE_syntax___typing;
12563 fra.me.line = 1996;
12564 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
12565 fra.me.has_broke = 0;
12566 fra.me.REG_size = 6;
12567 fra.me.REG[0] = NIT_NULL;
12568 fra.me.REG[1] = NIT_NULL;
12569 fra.me.REG[2] = NIT_NULL;
12570 fra.me.REG[3] = NIT_NULL;
12571 fra.me.REG[4] = NIT_NULL;
12572 fra.me.REG[5] = NIT_NULL;
12573 fra.me.REG[0] = p0;
12574 fra.me.REG[1] = p1;
12575 fra.me.REG[2] = p2;
12576 fra.me.REG[3] = p3;
12577 /* ./syntax//typing.nit:1998 */
12578 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12579 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12580 if (UNTAG_Bool(REGB0)) {
12581 goto label1;
12582 }
12583 /* ./syntax//typing.nit:1999 */
12584 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12585 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12586 if (UNTAG_Bool(REGB0)) {
12587 goto label1;
12588 }
12589 /* ./syntax//typing.nit:2000 */
12590 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12591 /* ./syntax//typing.nit:2001 */
12592 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12593 /* ./syntax//typing.nit:2002 */
12594 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12595 if (UNTAG_Bool(REGB0)) {
12596 } else {
12597 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12598 REGB0 = REGB1;
12599 }
12600 if (UNTAG_Bool(REGB0)) {
12601 /* ./syntax//typing.nit:2003 */
12602 REGB0 = TAG_Int(3);
12603 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12604 if (!once_value_2) {
12605 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12606 REGB0 = TAG_Int(33);
12607 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12608 once_value_2 = fra.me.REG[5];
12609 register_static_object(&once_value_2);
12610 } else fra.me.REG[5] = once_value_2;
12611 fra.me.REG[5] = fra.me.REG[5];
12612 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12613 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12614 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12615 if (!once_value_3) {
12616 fra.me.REG[5] = BOX_NativeString(".");
12617 REGB0 = TAG_Int(1);
12618 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12619 once_value_3 = fra.me.REG[5];
12620 register_static_object(&once_value_3);
12621 } else fra.me.REG[5] = once_value_3;
12622 fra.me.REG[5] = fra.me.REG[5];
12623 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12624 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12625 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12626 } else {
12627 /* ./syntax//typing.nit:2004 */
12628 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12629 if (UNTAG_Bool(REGB0)) {
12630 /* ./syntax//typing.nit:2005 */
12631 REGB0 = TAG_Int(5);
12632 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12633 if (!once_value_4) {
12634 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
12635 REGB0 = TAG_Int(33);
12636 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12637 once_value_4 = fra.me.REG[5];
12638 register_static_object(&once_value_4);
12639 } else fra.me.REG[5] = once_value_4;
12640 fra.me.REG[5] = fra.me.REG[5];
12641 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12642 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12643 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12644 if (!once_value_5) {
12645 fra.me.REG[5] = BOX_NativeString(" since it is a ");
12646 REGB0 = TAG_Int(15);
12647 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12648 once_value_5 = fra.me.REG[5];
12649 register_static_object(&once_value_5);
12650 } else fra.me.REG[5] = once_value_5;
12651 fra.me.REG[5] = fra.me.REG[5];
12652 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12653 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
12654 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12655 if (!once_value_6) {
12656 fra.me.REG[5] = BOX_NativeString(".");
12657 REGB0 = TAG_Int(1);
12658 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12659 once_value_6 = fra.me.REG[5];
12660 register_static_object(&once_value_6);
12661 } else fra.me.REG[5] = once_value_6;
12662 fra.me.REG[5] = fra.me.REG[5];
12663 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12664 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12665 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12666 } else {
12667 /* ./syntax//typing.nit:2006 */
12668 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12669 if (UNTAG_Bool(REGB0)) {
12670 /* ./syntax//typing.nit:2008 */
12671 REGB0 = TAG_Int(3);
12672 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12673 if (!once_value_7) {
12674 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
12675 REGB0 = TAG_Int(50);
12676 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12677 once_value_7 = fra.me.REG[5];
12678 register_static_object(&once_value_7);
12679 } else fra.me.REG[5] = once_value_7;
12680 fra.me.REG[5] = fra.me.REG[5];
12681 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12682 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
12683 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12684 if (!once_value_8) {
12685 fra.me.REG[5] = BOX_NativeString(".");
12686 REGB0 = TAG_Int(1);
12687 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
12688 once_value_8 = fra.me.REG[5];
12689 register_static_object(&once_value_8);
12690 } else fra.me.REG[5] = once_value_8;
12691 fra.me.REG[5] = fra.me.REG[5];
12692 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12693 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12694 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12695 } else {
12696 /* ./syntax//typing.nit:2009 */
12697 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12698 if (UNTAG_Bool(REGB0)) {
12699 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
12700 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
12701 if (UNTAG_Bool(REGB0)) {
12702 } else {
12703 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
12704 REGB0 = REGB1;
12705 }
12706 } else {
12707 REGB1 = TAG_Bool(false);
12708 REGB0 = REGB1;
12709 }
12710 if (UNTAG_Bool(REGB0)) {
12711 /* ./syntax//typing.nit:2010 */
12712 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
12713 if (UNTAG_Bool(REGB0)) {
12714 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
12715 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
12716 } else {
12717 REGB1 = TAG_Bool(false);
12718 REGB0 = REGB1;
12719 }
12720 if (UNTAG_Bool(REGB0)) {
12721 } else {
12722 /* ./syntax//typing.nit:2016 */
12723 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
12724 if (UNTAG_Bool(REGB0)) {
12725 /* ./syntax//typing.nit:2017 */
12726 if (!once_value_9) {
12727 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
12728 REGB0 = TAG_Int(26);
12729 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12730 once_value_9 = fra.me.REG[3];
12731 register_static_object(&once_value_9);
12732 } else fra.me.REG[3] = once_value_9;
12733 fra.me.REG[3] = fra.me.REG[3];
12734 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12735 } else {
12736 /* ./syntax//typing.nit:2019 */
12737 if (!once_value_10) {
12738 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
12739 REGB0 = TAG_Int(32);
12740 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
12741 once_value_10 = fra.me.REG[3];
12742 register_static_object(&once_value_10);
12743 } else fra.me.REG[3] = once_value_10;
12744 fra.me.REG[3] = fra.me.REG[3];
12745 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
12746 }
12747 }
12748 }
12749 }
12750 }
12751 }
12752 label1: while(0);
12753 stack_frame_head = fra.me.prev;
12754 return;
12755 }
12756 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
12757 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12758 val_t REGB0;
12759 val_t REGB1;
12760 val_t tmp;
12761 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12762 fra.me.file = LOCATE_syntax___typing;
12763 fra.me.line = 2027;
12764 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
12765 fra.me.has_broke = 0;
12766 fra.me.REG_size = 5;
12767 fra.me.REG[0] = NIT_NULL;
12768 fra.me.REG[1] = NIT_NULL;
12769 fra.me.REG[2] = NIT_NULL;
12770 fra.me.REG[3] = NIT_NULL;
12771 fra.me.REG[4] = NIT_NULL;
12772 fra.me.REG[0] = p0;
12773 fra.me.REG[1] = p1;
12774 /* ./syntax//typing.nit:2029 */
12775 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12776 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12777 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]);
12778 /* ./syntax//typing.nit:2030 */
12779 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12780 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12781 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12782 if (UNTAG_Bool(REGB0)) {
12783 goto label1;
12784 }
12785 /* ./syntax//typing.nit:2031 */
12786 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12787 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
12788 /* ./syntax//typing.nit:2032 */
12789 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12790 if (UNTAG_Bool(REGB0)) {
12791 } else {
12792 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12793 if (UNTAG_Bool(REGB1)) {
12794 REGB1 = TAG_Bool(false);
12795 REGB0 = REGB1;
12796 } else {
12797 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12798 REGB0 = REGB1;
12799 }
12800 }
12801 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12802 if (UNTAG_Bool(REGB0)) {
12803 /* ./syntax//typing.nit:2033 */
12804 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12805 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12806 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
12807 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]);
12808 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
12809 }
12810 /* ./syntax//typing.nit:2035 */
12811 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
12812 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12813 /* ./syntax//typing.nit:2036 */
12814 REGB0 = TAG_Bool(true);
12815 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12816 label1: while(0);
12817 stack_frame_head = fra.me.prev;
12818 return;
12819 }
12820 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
12821 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
12822 val_t REGB0;
12823 val_t REGB1;
12824 val_t tmp;
12825 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12826 fra.me.file = LOCATE_syntax___typing;
12827 fra.me.line = 2042;
12828 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
12829 fra.me.has_broke = 0;
12830 fra.me.REG_size = 4;
12831 fra.me.REG[0] = NIT_NULL;
12832 fra.me.REG[1] = NIT_NULL;
12833 fra.me.REG[2] = NIT_NULL;
12834 fra.me.REG[3] = NIT_NULL;
12835 fra.me.REG[0] = p0;
12836 fra.me.REG[1] = p1;
12837 /* ./syntax//typing.nit:2044 */
12838 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12839 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12840 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]);
12841 /* ./syntax//typing.nit:2045 */
12842 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12843 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
12844 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12845 if (UNTAG_Bool(REGB0)) {
12846 goto label1;
12847 }
12848 /* ./syntax//typing.nit:2046 */
12849 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
12850 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
12851 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
12852 /* ./syntax//typing.nit:2047 */
12853 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
12854 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12855 if (UNTAG_Bool(REGB0)) {
12856 } else {
12857 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
12858 if (UNTAG_Bool(REGB1)) {
12859 REGB1 = TAG_Bool(false);
12860 REGB0 = REGB1;
12861 } else {
12862 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
12863 REGB0 = REGB1;
12864 }
12865 }
12866 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12867 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12868 label1: while(0);
12869 stack_frame_head = fra.me.prev;
12870 return;
12871 }
12872 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
12873 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12874 val_t REGB0;
12875 val_t tmp;
12876 static val_t once_value_2; /* Once value */
12877 static val_t once_value_3; /* Once value */
12878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12879 fra.me.file = LOCATE_syntax___typing;
12880 fra.me.line = 2052;
12881 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
12882 fra.me.has_broke = 0;
12883 fra.me.REG_size = 5;
12884 fra.me.REG[0] = NIT_NULL;
12885 fra.me.REG[1] = NIT_NULL;
12886 fra.me.REG[2] = NIT_NULL;
12887 fra.me.REG[3] = NIT_NULL;
12888 fra.me.REG[4] = NIT_NULL;
12889 fra.me.REG[0] = p0;
12890 fra.me.REG[1] = p1;
12891 /* ./syntax//typing.nit:2054 */
12892 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12893 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
12894 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12895 if (UNTAG_Bool(REGB0)) {
12896 goto label1;
12897 }
12898 /* ./syntax//typing.nit:2055 */
12899 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12900 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
12901 /* ./syntax//typing.nit:2056 */
12902 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
12903 if (UNTAG_Bool(REGB0)) {
12904 /* ./syntax//typing.nit:2057 */
12905 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12906 if (!once_value_2) {
12907 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
12908 REGB0 = TAG_Int(43);
12909 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12910 once_value_2 = fra.me.REG[4];
12911 register_static_object(&once_value_2);
12912 } else fra.me.REG[4] = once_value_2;
12913 fra.me.REG[4] = fra.me.REG[4];
12914 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
12915 /* ./syntax//typing.nit:2058 */
12916 goto label1;
12917 } else {
12918 /* ./syntax//typing.nit:2059 */
12919 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
12920 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12921 if (UNTAG_Bool(REGB0)) {
12922 /* ./syntax//typing.nit:2060 */
12923 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12924 if (!once_value_3) {
12925 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
12926 REGB0 = TAG_Int(45);
12927 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12928 once_value_3 = fra.me.REG[4];
12929 register_static_object(&once_value_3);
12930 } else fra.me.REG[4] = once_value_3;
12931 fra.me.REG[4] = fra.me.REG[4];
12932 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
12933 }
12934 }
12935 /* ./syntax//typing.nit:2062 */
12936 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12937 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
12938 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
12939 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
12940 /* ./syntax//typing.nit:2063 */
12941 REGB0 = TAG_Bool(true);
12942 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12943 label1: while(0);
12944 stack_frame_head = fra.me.prev;
12945 return;
12946 }
12947 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
12948 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12949 val_t REGB0;
12950 val_t tmp;
12951 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12952 fra.me.file = LOCATE_syntax___typing;
12953 fra.me.line = 2068;
12954 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
12955 fra.me.has_broke = 0;
12956 fra.me.REG_size = 2;
12957 fra.me.REG[0] = NIT_NULL;
12958 fra.me.REG[1] = NIT_NULL;
12959 fra.me.REG[0] = p0;
12960 fra.me.REG[1] = p1;
12961 /* ./syntax//typing.nit:2070 */
12962 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12963 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
12964 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12965 if (UNTAG_Bool(REGB0)) {
12966 goto label1;
12967 }
12968 /* ./syntax//typing.nit:2071 */
12969 REGB0 = TAG_Bool(true);
12970 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12971 /* ./syntax//typing.nit:2072 */
12972 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12973 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
12974 if (UNTAG_Bool(REGB0)) {
12975 goto label1;
12976 }
12977 /* ./syntax//typing.nit:2073 */
12978 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
12979 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
12980 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
12981 label1: while(0);
12982 stack_frame_head = fra.me.prev;
12983 return;
12984 }
12985 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
12986 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12987 val_t REGB0;
12988 val_t REGB1;
12989 val_t REGB2;
12990 val_t tmp;
12991 static val_t once_value_1; /* Once value */
12992 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12993 fra.me.file = LOCATE_syntax___typing;
12994 fra.me.line = 2078;
12995 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
12996 fra.me.has_broke = 0;
12997 fra.me.REG_size = 5;
12998 fra.me.REG[0] = NIT_NULL;
12999 fra.me.REG[1] = NIT_NULL;
13000 fra.me.REG[2] = NIT_NULL;
13001 fra.me.REG[3] = NIT_NULL;
13002 fra.me.REG[4] = NIT_NULL;
13003 fra.me.REG[0] = p0;
13004 fra.me.REG[1] = p1;
13005 /* ./syntax//typing.nit:2078 */
13006 fra.me.REG[2] = fra.me.REG[0];
13007 fra.me.REG[3] = fra.me.REG[1];
13008 /* ./syntax//typing.nit:2080 */
13009 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13010 REGB1 = TAG_Int(0);
13011 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13012 if (UNTAG_Bool(REGB2)) {
13013 } else {
13014 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13015 }
13016 /* ./../lib/standard//kernel.nit:234 */
13017 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13018 /* ./syntax//typing.nit:2080 */
13019 if (UNTAG_Bool(REGB1)) {
13020 /* ./syntax//typing.nit:2081 */
13021 if (!once_value_1) {
13022 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13023 REGB1 = TAG_Int(34);
13024 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
13025 once_value_1 = fra.me.REG[4];
13026 register_static_object(&once_value_1);
13027 } else fra.me.REG[4] = once_value_1;
13028 fra.me.REG[4] = fra.me.REG[4];
13029 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13030 }
13031 /* ./syntax//typing.nit:2083 */
13032 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13033 REGB0 = TAG_Int(1);
13034 /* ./../lib/standard//kernel.nit:235 */
13035 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13036 /* ./syntax//typing.nit:2083 */
13037 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13038 /* ./syntax//typing.nit:2085 */
13039 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13040 /* ./syntax//typing.nit:2087 */
13041 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13042 REGB1 = TAG_Int(1);
13043 /* ./../lib/standard//kernel.nit:237 */
13044 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13045 /* ./syntax//typing.nit:2087 */
13046 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13047 stack_frame_head = fra.me.prev;
13048 return;
13049 }