update c_src (now with ffi)
[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 static const char LOCATE_syntax___typing___MMSrcModule___do_typing[] = "typing::MMSrcModule::do_typing";
4 void syntax___typing___MMSrcModule___do_typing(val_t p0, val_t p1){
5 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_syntax___typing;
9 fra.me.line = 25;
10 fra.me.meth = LOCATE_syntax___typing___MMSrcModule___do_typing;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 2;
13 fra.me.nitni_local_ref_head = NULL;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[1] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 fra.me.REG[1] = p1;
18 /* syntax/typing.nit:29 */
19 fra.me.REG[1] = NEW_TypingVisitor_syntax___typing___TypingVisitor___init(fra.me.REG[1], fra.me.REG[0]);
20 /* syntax/typing.nit:30 */
21 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
22 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
23 stack_frame_head = fra.me.prev;
24 return;
25 }
26 static const char LOCATE_syntax___typing___TypingVisitor___visit[] = "typing::TypingVisitor::(parser_prod::Visitor::visit)";
27 void syntax___typing___TypingVisitor___visit(val_t p0, val_t p1){
28 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
29 val_t REGB0;
30 val_t REGB1;
31 val_t tmp;
32 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
33 fra.me.file = LOCATE_syntax___typing;
34 fra.me.line = 41;
35 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___visit;
36 fra.me.has_broke = 0;
37 fra.me.REG_size = 2;
38 fra.me.nitni_local_ref_head = NULL;
39 fra.me.REG[0] = NIT_NULL;
40 fra.me.REG[1] = NIT_NULL;
41 fra.me.REG[0] = p0;
42 fra.me.REG[1] = p1;
43 /* syntax/typing.nit:43 */
44 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
45 if (UNTAG_Bool(REGB0)) {
46 } else {
47 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
48 if (UNTAG_Bool(REGB1)) {
49 REGB1 = TAG_Bool(0);
50 REGB0 = REGB1;
51 } else {
52 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
53 REGB0 = REGB1;
54 }
55 }
56 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
57 if (UNTAG_Bool(REGB0)) {
58 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
59 if (UNTAG_Bool(REGB0)) {
60 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 43);
61 }
62 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
63 }
64 stack_frame_head = fra.me.prev;
65 return;
66 }
67 static const char LOCATE_syntax___typing___TypingVisitor___scope_ctx[] = "typing::TypingVisitor::scope_ctx";
68 val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
69 struct {struct stack_frame_t me;} fra;
70 val_t REGB0;
71 val_t tmp;
72 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
73 fra.me.file = LOCATE_syntax___typing;
74 fra.me.line = 46;
75 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___scope_ctx;
76 fra.me.has_broke = 0;
77 fra.me.REG_size = 1;
78 fra.me.nitni_local_ref_head = NULL;
79 fra.me.REG[0] = NIT_NULL;
80 fra.me.REG[0] = p0;
81 /* syntax/typing.nit:46 */
82 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
83 if (UNTAG_Bool(REGB0)) {
84 } else {
85 nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_syntax___typing, 46);
86 }
87 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]);
88 stack_frame_head = fra.me.prev;
89 return fra.me.REG[0];
90 }
91 static const char LOCATE_syntax___typing___TypingVisitor___flow_ctx[] = "typing::TypingVisitor::flow_ctx";
92 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
93 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
94 val_t REGB0;
95 val_t tmp;
96 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
97 fra.me.file = LOCATE_syntax___typing;
98 fra.me.line = 49;
99 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
100 fra.me.has_broke = 0;
101 fra.me.REG_size = 2;
102 fra.me.nitni_local_ref_head = NULL;
103 fra.me.REG[0] = NIT_NULL;
104 fra.me.REG[1] = NIT_NULL;
105 fra.me.REG[0] = p0;
106 /* syntax/typing.nit:49 */
107 fra.me.REG[1] = fra.me.REG[0];
108 /* syntax/typing.nit:50 */
109 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
110 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
111 if (UNTAG_Bool(REGB0)) {
112 } else {
113 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
114 }
115 goto label1;
116 label1: while(0);
117 stack_frame_head = fra.me.prev;
118 return fra.me.REG[1];
119 }
120 static const char LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq[] = "typing::TypingVisitor::flow_ctx=";
121 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
122 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
123 val_t tmp;
124 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
125 fra.me.file = LOCATE_syntax___typing;
126 fra.me.line = 51;
127 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx__eq;
128 fra.me.has_broke = 0;
129 fra.me.REG_size = 2;
130 fra.me.nitni_local_ref_head = NULL;
131 fra.me.REG[0] = NIT_NULL;
132 fra.me.REG[1] = NIT_NULL;
133 fra.me.REG[0] = p0;
134 fra.me.REG[1] = p1;
135 /* syntax/typing.nit:51 */
136 ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
137 stack_frame_head = fra.me.prev;
138 return;
139 }
140 static const char LOCATE_syntax___typing___TypingVisitor___mark_is_set[] = "typing::TypingVisitor::mark_is_set";
141 void syntax___typing___TypingVisitor___mark_is_set(val_t p0, val_t p1){
142 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
143 val_t REGB0;
144 val_t tmp;
145 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
146 fra.me.file = LOCATE_syntax___typing;
147 fra.me.line = 53;
148 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_is_set;
149 fra.me.has_broke = 0;
150 fra.me.REG_size = 3;
151 fra.me.nitni_local_ref_head = NULL;
152 fra.me.REG[0] = NIT_NULL;
153 fra.me.REG[1] = NIT_NULL;
154 fra.me.REG[2] = NIT_NULL;
155 fra.me.REG[0] = p0;
156 fra.me.REG[1] = p1;
157 /* syntax/typing.nit:56 */
158 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
159 REGB0 = CALL_syntax___flow___FlowContext___is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
160 if (UNTAG_Bool(REGB0)) {
161 goto label1;
162 }
163 /* syntax/typing.nit:57 */
164 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
165 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_setvariable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
166 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
167 label1: while(0);
168 stack_frame_head = fra.me.prev;
169 return;
170 }
171 static const char LOCATE_syntax___typing___TypingVisitor___mark_unreash[] = "typing::TypingVisitor::mark_unreash";
172 void syntax___typing___TypingVisitor___mark_unreash(val_t p0, val_t p1){
173 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
174 val_t tmp;
175 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
176 fra.me.file = LOCATE_syntax___typing;
177 fra.me.line = 60;
178 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___mark_unreash;
179 fra.me.has_broke = 0;
180 fra.me.REG_size = 3;
181 fra.me.nitni_local_ref_head = NULL;
182 fra.me.REG[0] = NIT_NULL;
183 fra.me.REG[1] = NIT_NULL;
184 fra.me.REG[2] = NIT_NULL;
185 fra.me.REG[0] = p0;
186 fra.me.REG[1] = p1;
187 /* syntax/typing.nit:63 */
188 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[0])(fra.me.REG[0]);
189 fra.me.REG[1] = CALL_syntax___flow___FlowContext___sub_unreash(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
190 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
191 stack_frame_head = fra.me.prev;
192 return;
193 }
194 static const char LOCATE_syntax___typing___TypingVisitor___enter_visit_block[] = "typing::TypingVisitor::enter_visit_block";
195 void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
196 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
197 val_t REGB0;
198 val_t REGB1;
199 val_t tmp;
200 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
201 fra.me.file = LOCATE_syntax___typing;
202 fra.me.line = 66;
203 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___enter_visit_block;
204 fra.me.has_broke = 0;
205 fra.me.REG_size = 3;
206 fra.me.nitni_local_ref_head = NULL;
207 fra.me.REG[0] = NIT_NULL;
208 fra.me.REG[1] = NIT_NULL;
209 fra.me.REG[2] = NIT_NULL;
210 fra.me.REG[0] = p0;
211 fra.me.REG[1] = p1;
212 /* syntax/typing.nit:69 */
213 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
214 if (UNTAG_Bool(REGB0)) {
215 } else {
216 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
217 if (UNTAG_Bool(REGB1)) {
218 REGB1 = TAG_Bool(0);
219 REGB0 = REGB1;
220 } else {
221 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
222 REGB0 = REGB1;
223 }
224 }
225 if (UNTAG_Bool(REGB0)) {
226 goto label1;
227 }
228 /* syntax/typing.nit:70 */
229 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
230 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
231 /* syntax/typing.nit:71 */
232 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
233 /* syntax/typing.nit:72 */
234 fra.me.REG[0] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[0])(fra.me.REG[0]);
235 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[0])(fra.me.REG[0]);
236 label1: while(0);
237 stack_frame_head = fra.me.prev;
238 return;
239 }
240 static const char LOCATE_syntax___typing___TypingVisitor___base_flow_ctx[] = "typing::TypingVisitor::base_flow_ctx";
241 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
242 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
243 val_t REGB0;
244 val_t tmp;
245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
246 fra.me.file = LOCATE_syntax___typing;
247 fra.me.line = 75;
248 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
249 fra.me.has_broke = 0;
250 fra.me.REG_size = 2;
251 fra.me.nitni_local_ref_head = NULL;
252 fra.me.REG[0] = NIT_NULL;
253 fra.me.REG[1] = NIT_NULL;
254 fra.me.REG[0] = p0;
255 /* syntax/typing.nit:75 */
256 fra.me.REG[1] = fra.me.REG[0];
257 /* syntax/typing.nit:76 */
258 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
259 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
260 if (UNTAG_Bool(REGB0)) {
261 } else {
262 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
263 }
264 goto label1;
265 label1: while(0);
266 stack_frame_head = fra.me.prev;
267 return fra.me.REG[1];
268 }
269 static const char LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq[] = "typing::TypingVisitor::base_flow_ctx=";
270 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
271 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
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 = 77;
276 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx__eq;
277 fra.me.has_broke = 0;
278 fra.me.REG_size = 2;
279 fra.me.nitni_local_ref_head = NULL;
280 fra.me.REG[0] = NIT_NULL;
281 fra.me.REG[1] = NIT_NULL;
282 fra.me.REG[0] = p0;
283 fra.me.REG[1] = p1;
284 /* syntax/typing.nit:77 */
285 ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
286 stack_frame_head = fra.me.prev;
287 return;
288 }
289 static const char LOCATE_syntax___typing___TypingVisitor___self_var[] = "typing::TypingVisitor::self_var";
290 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
291 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
292 val_t REGB0;
293 val_t tmp;
294 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
295 fra.me.file = LOCATE_syntax___typing;
296 fra.me.line = 79;
297 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
298 fra.me.has_broke = 0;
299 fra.me.REG_size = 2;
300 fra.me.nitni_local_ref_head = NULL;
301 fra.me.REG[0] = NIT_NULL;
302 fra.me.REG[1] = NIT_NULL;
303 fra.me.REG[0] = p0;
304 /* syntax/typing.nit:79 */
305 fra.me.REG[1] = fra.me.REG[0];
306 /* syntax/typing.nit:80 */
307 fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
308 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
309 if (UNTAG_Bool(REGB0)) {
310 } else {
311 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
312 }
313 goto label1;
314 label1: while(0);
315 stack_frame_head = fra.me.prev;
316 return fra.me.REG[1];
317 }
318 static const char LOCATE_syntax___typing___TypingVisitor___self_var__eq[] = "typing::TypingVisitor::self_var=";
319 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
320 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
321 val_t tmp;
322 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
323 fra.me.file = LOCATE_syntax___typing;
324 fra.me.line = 81;
325 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var__eq;
326 fra.me.has_broke = 0;
327 fra.me.REG_size = 2;
328 fra.me.nitni_local_ref_head = NULL;
329 fra.me.REG[0] = NIT_NULL;
330 fra.me.REG[1] = NIT_NULL;
331 fra.me.REG[0] = p0;
332 fra.me.REG[1] = p1;
333 /* syntax/typing.nit:81 */
334 ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]) = fra.me.REG[1];
335 stack_frame_head = fra.me.prev;
336 return;
337 }
338 static const char LOCATE_syntax___typing___TypingVisitor___top_block[] = "typing::TypingVisitor::top_block";
339 val_t syntax___typing___TypingVisitor___top_block(val_t p0){
340 struct {struct stack_frame_t me;} fra;
341 val_t tmp;
342 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
343 fra.me.file = LOCATE_syntax___typing;
344 fra.me.line = 83;
345 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block;
346 fra.me.has_broke = 0;
347 fra.me.REG_size = 1;
348 fra.me.nitni_local_ref_head = NULL;
349 fra.me.REG[0] = NIT_NULL;
350 fra.me.REG[0] = p0;
351 /* syntax/typing.nit:83 */
352 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]);
353 stack_frame_head = fra.me.prev;
354 return fra.me.REG[0];
355 }
356 static const char LOCATE_syntax___typing___TypingVisitor___top_block__eq[] = "typing::TypingVisitor::top_block=";
357 void syntax___typing___TypingVisitor___top_block__eq(val_t p0, val_t p1){
358 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
359 val_t tmp;
360 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
361 fra.me.file = LOCATE_syntax___typing;
362 fra.me.line = 83;
363 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___top_block__eq;
364 fra.me.has_broke = 0;
365 fra.me.REG_size = 2;
366 fra.me.nitni_local_ref_head = NULL;
367 fra.me.REG[0] = NIT_NULL;
368 fra.me.REG[1] = NIT_NULL;
369 fra.me.REG[0] = p0;
370 fra.me.REG[1] = p1;
371 /* syntax/typing.nit:83 */
372 ATTR_syntax___typing___TypingVisitor____top_block(fra.me.REG[0]) = fra.me.REG[1];
373 stack_frame_head = fra.me.prev;
374 return;
375 }
376 static const char LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls[] = "typing::TypingVisitor::explicit_super_init_calls";
377 val_t syntax___typing___TypingVisitor___explicit_super_init_calls(val_t p0){
378 struct {struct stack_frame_t me;} fra;
379 val_t tmp;
380 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
381 fra.me.file = LOCATE_syntax___typing;
382 fra.me.line = 86;
383 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls;
384 fra.me.has_broke = 0;
385 fra.me.REG_size = 1;
386 fra.me.nitni_local_ref_head = NULL;
387 fra.me.REG[0] = NIT_NULL;
388 fra.me.REG[0] = p0;
389 /* syntax/typing.nit:86 */
390 fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]);
391 stack_frame_head = fra.me.prev;
392 return fra.me.REG[0];
393 }
394 static const char LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq[] = "typing::TypingVisitor::explicit_super_init_calls=";
395 void syntax___typing___TypingVisitor___explicit_super_init_calls__eq(val_t p0, val_t p1){
396 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
397 val_t tmp;
398 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
399 fra.me.file = LOCATE_syntax___typing;
400 fra.me.line = 86;
401 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_super_init_calls__eq;
402 fra.me.has_broke = 0;
403 fra.me.REG_size = 2;
404 fra.me.nitni_local_ref_head = NULL;
405 fra.me.REG[0] = NIT_NULL;
406 fra.me.REG[1] = NIT_NULL;
407 fra.me.REG[0] = p0;
408 fra.me.REG[1] = p1;
409 /* syntax/typing.nit:86 */
410 ATTR_syntax___typing___TypingVisitor____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
411 stack_frame_head = fra.me.prev;
412 return;
413 }
414 static const char LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call[] = "typing::TypingVisitor::explicit_other_init_call";
415 val_t syntax___typing___TypingVisitor___explicit_other_init_call(val_t p0){
416 struct {struct stack_frame_t me;} fra;
417 val_t REGB0;
418 val_t tmp;
419 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
420 fra.me.file = LOCATE_syntax___typing;
421 fra.me.line = 89;
422 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call;
423 fra.me.has_broke = 0;
424 fra.me.REG_size = 1;
425 fra.me.nitni_local_ref_head = NULL;
426 fra.me.REG[0] = NIT_NULL;
427 fra.me.REG[0] = p0;
428 /* syntax/typing.nit:89 */
429 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
430 if (UNTAG_Bool(REGB0)) {
431 } else {
432 nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_syntax___typing, 89);
433 }
434 REGB0 = ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]);
435 stack_frame_head = fra.me.prev;
436 return REGB0;
437 }
438 static const char LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq[] = "typing::TypingVisitor::explicit_other_init_call=";
439 void syntax___typing___TypingVisitor___explicit_other_init_call__eq(val_t p0, val_t p1){
440 struct {struct stack_frame_t me;} fra;
441 val_t REGB0;
442 val_t tmp;
443 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
444 fra.me.file = LOCATE_syntax___typing;
445 fra.me.line = 89;
446 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___explicit_other_init_call__eq;
447 fra.me.has_broke = 0;
448 fra.me.REG_size = 1;
449 fra.me.nitni_local_ref_head = NULL;
450 fra.me.REG[0] = NIT_NULL;
451 fra.me.REG[0] = p0;
452 REGB0 = p1;
453 /* syntax/typing.nit:89 */
454 ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
455 stack_frame_head = fra.me.prev;
456 return;
457 }
458 static const char LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx[] = "typing::TypingVisitor::use_if_true_flow_ctx";
459 void syntax___typing___TypingVisitor___use_if_true_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 = 92;
467 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_true_flow_ctx;
468 fra.me.has_broke = 0;
469 fra.me.REG_size = 2;
470 fra.me.nitni_local_ref_head = NULL;
471 fra.me.REG[0] = NIT_NULL;
472 fra.me.REG[1] = NIT_NULL;
473 fra.me.REG[0] = p0;
474 fra.me.REG[1] = p1;
475 /* syntax/typing.nit:95 */
476 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
477 /* syntax/typing.nit:96 */
478 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
479 if (UNTAG_Bool(REGB0)) {
480 } else {
481 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
482 if (UNTAG_Bool(REGB1)) {
483 REGB1 = TAG_Bool(0);
484 REGB0 = REGB1;
485 } else {
486 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
487 REGB0 = REGB1;
488 }
489 }
490 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
491 if (UNTAG_Bool(REGB0)) {
492 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
493 }
494 stack_frame_head = fra.me.prev;
495 return;
496 }
497 static const char LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx[] = "typing::TypingVisitor::use_if_false_flow_ctx";
498 void syntax___typing___TypingVisitor___use_if_false_flow_ctx(val_t p0, val_t p1){
499 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
500 val_t REGB0;
501 val_t REGB1;
502 val_t tmp;
503 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
504 fra.me.file = LOCATE_syntax___typing;
505 fra.me.line = 99;
506 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___use_if_false_flow_ctx;
507 fra.me.has_broke = 0;
508 fra.me.REG_size = 2;
509 fra.me.nitni_local_ref_head = NULL;
510 fra.me.REG[0] = NIT_NULL;
511 fra.me.REG[1] = NIT_NULL;
512 fra.me.REG[0] = p0;
513 fra.me.REG[1] = p1;
514 /* syntax/typing.nit:102 */
515 fra.me.REG[1] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
516 /* syntax/typing.nit:103 */
517 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
518 if (UNTAG_Bool(REGB0)) {
519 } else {
520 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
521 if (UNTAG_Bool(REGB1)) {
522 REGB1 = TAG_Bool(0);
523 REGB0 = REGB1;
524 } else {
525 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
526 REGB0 = REGB1;
527 }
528 }
529 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
530 if (UNTAG_Bool(REGB0)) {
531 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
532 }
533 stack_frame_head = fra.me.prev;
534 return;
535 }
536 static const char LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition[] = "typing::TypingVisitor::is_default_closure_definition";
537 val_t syntax___typing___TypingVisitor___is_default_closure_definition(val_t p0){
538 struct {struct stack_frame_t me;} fra;
539 val_t REGB0;
540 val_t tmp;
541 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
542 fra.me.file = LOCATE_syntax___typing;
543 fra.me.line = 106;
544 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition;
545 fra.me.has_broke = 0;
546 fra.me.REG_size = 1;
547 fra.me.nitni_local_ref_head = NULL;
548 fra.me.REG[0] = NIT_NULL;
549 fra.me.REG[0] = p0;
550 /* syntax/typing.nit:106 */
551 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
552 if (UNTAG_Bool(REGB0)) {
553 } else {
554 nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_syntax___typing, 106);
555 }
556 REGB0 = ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]);
557 stack_frame_head = fra.me.prev;
558 return REGB0;
559 }
560 static const char LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq[] = "typing::TypingVisitor::is_default_closure_definition=";
561 void syntax___typing___TypingVisitor___is_default_closure_definition__eq(val_t p0, val_t p1){
562 struct {struct stack_frame_t me;} fra;
563 val_t REGB0;
564 val_t tmp;
565 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
566 fra.me.file = LOCATE_syntax___typing;
567 fra.me.line = 106;
568 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___is_default_closure_definition__eq;
569 fra.me.has_broke = 0;
570 fra.me.REG_size = 1;
571 fra.me.nitni_local_ref_head = NULL;
572 fra.me.REG[0] = NIT_NULL;
573 fra.me.REG[0] = p0;
574 REGB0 = p1;
575 /* syntax/typing.nit:106 */
576 ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
577 stack_frame_head = fra.me.prev;
578 return;
579 }
580 static const char LOCATE_syntax___typing___TypingVisitor___once_count[] = "typing::TypingVisitor::once_count";
581 val_t syntax___typing___TypingVisitor___once_count(val_t p0){
582 struct {struct stack_frame_t me;} fra;
583 val_t REGB0;
584 val_t tmp;
585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
586 fra.me.file = LOCATE_syntax___typing;
587 fra.me.line = 109;
588 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count;
589 fra.me.has_broke = 0;
590 fra.me.REG_size = 1;
591 fra.me.nitni_local_ref_head = NULL;
592 fra.me.REG[0] = NIT_NULL;
593 fra.me.REG[0] = p0;
594 /* syntax/typing.nit:109 */
595 REGB0 = TAG_Bool(ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
596 if (UNTAG_Bool(REGB0)) {
597 } else {
598 nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_syntax___typing, 109);
599 }
600 REGB0 = ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]);
601 stack_frame_head = fra.me.prev;
602 return REGB0;
603 }
604 static const char LOCATE_syntax___typing___TypingVisitor___once_count__eq[] = "typing::TypingVisitor::once_count=";
605 void syntax___typing___TypingVisitor___once_count__eq(val_t p0, val_t p1){
606 struct {struct stack_frame_t me;} fra;
607 val_t REGB0;
608 val_t tmp;
609 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
610 fra.me.file = LOCATE_syntax___typing;
611 fra.me.line = 109;
612 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___once_count__eq;
613 fra.me.has_broke = 0;
614 fra.me.REG_size = 1;
615 fra.me.nitni_local_ref_head = NULL;
616 fra.me.REG[0] = NIT_NULL;
617 fra.me.REG[0] = p0;
618 REGB0 = p1;
619 /* syntax/typing.nit:109 */
620 ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
621 stack_frame_head = fra.me.prev;
622 return;
623 }
624 static const char LOCATE_syntax___typing___TypingVisitor___init[] = "typing::TypingVisitor::init";
625 void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
626 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___typing___TypingVisitor].i;
627 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
628 val_t tmp;
629 if (init_table[itpos0]) return;
630 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
631 fra.me.file = LOCATE_syntax___typing;
632 fra.me.line = 112;
633 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___init;
634 fra.me.has_broke = 0;
635 fra.me.REG_size = 3;
636 fra.me.nitni_local_ref_head = NULL;
637 fra.me.REG[0] = NIT_NULL;
638 fra.me.REG[1] = NIT_NULL;
639 fra.me.REG[2] = NIT_NULL;
640 fra.me.REG[0] = p0;
641 fra.me.REG[1] = p1;
642 fra.me.REG[2] = p2;
643 /* syntax/typing.nit:112 */
644 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
645 stack_frame_head = fra.me.prev;
646 init_table[itpos0] = 1;
647 return;
648 }
649 static const char LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for[] = "typing::TypingVisitor::get_default_constructor_for";
650 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
651 struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
652 val_t REGB0;
653 val_t REGB1;
654 val_t REGB2;
655 val_t tmp;
656 static val_t once_value_6; /* Once value */
657 static val_t once_value_7; /* Once value */
658 static val_t once_value_8; /* Once value */
659 static val_t once_value_10; /* Once value */
660 static val_t once_value_11; /* Once value */
661 static val_t once_value_12; /* Once value */
662 static val_t once_value_13; /* Once value */
663 static val_t once_value_14; /* Once value */
664 static val_t once_value_15; /* Once value */
665 static val_t once_value_16; /* Once value */
666 static val_t once_value_18; /* Once value */
667 static val_t once_value_19; /* Once value */
668 static val_t once_value_20; /* Once value */
669 static val_t once_value_21; /* Once value */
670 static val_t once_value_22; /* Once value */
671 static val_t once_value_23; /* Once value */
672 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
673 fra.me.file = LOCATE_syntax___typing;
674 fra.me.line = 114;
675 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
676 fra.me.has_broke = 0;
677 fra.me.REG_size = 12;
678 fra.me.nitni_local_ref_head = NULL;
679 fra.me.REG[0] = NIT_NULL;
680 fra.me.REG[1] = NIT_NULL;
681 fra.me.REG[2] = NIT_NULL;
682 fra.me.REG[3] = NIT_NULL;
683 fra.me.REG[4] = NIT_NULL;
684 fra.me.REG[5] = NIT_NULL;
685 fra.me.REG[6] = NIT_NULL;
686 fra.me.REG[7] = NIT_NULL;
687 fra.me.REG[8] = NIT_NULL;
688 fra.me.REG[9] = NIT_NULL;
689 fra.me.REG[10] = NIT_NULL;
690 fra.me.REG[11] = NIT_NULL;
691 fra.me.REG[0] = p0;
692 fra.me.REG[1] = p1;
693 fra.me.REG[2] = p2;
694 fra.me.REG[3] = p3;
695 /* syntax/typing.nit:114 */
696 fra.me.REG[4] = fra.me.REG[0];
697 /* syntax/typing.nit:116 */
698 fra.me.REG[5] = fra.me.REG[4];
699 /* syntax/typing.nit:119 */
700 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
701 /* syntax/typing.nit:120 */
702 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
703 /* syntax/typing.nit:121 */
704 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
705 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
706 if (UNTAG_Bool(REGB0)) {
707 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
708 }
709 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
710 fra.me.REG[8] = REGB0;
711 /* syntax/typing.nit:122 */
712 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
713 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));
714 switch ((&(fra.me))->has_broke) {
715 case 0: break;
716 case 1: (&(fra.me))->has_broke = 0; goto label5;
717 }
718 /* ../lib/standard/collection/array.nit:24 */
719 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
720 if (UNTAG_Bool(REGB0)) {
721 } else {
722 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
723 }
724 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
725 /* syntax/typing.nit:141 */
726 REGB1 = TAG_Int(1);
727 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
728 if (UNTAG_Bool(REGB2)) {
729 } else {
730 /* ../lib/standard/kernel.nit:230 */
731 REGB1 = TAG_Bool((REGB0)==(REGB1));
732 /* syntax/typing.nit:141 */
733 REGB2 = REGB1;
734 }
735 if (UNTAG_Bool(REGB2)) {
736 /* syntax/typing.nit:142 */
737 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
738 fra.me.REG[9] = fra.me.REG[3];
739 goto label5;
740 } else {
741 /* ../lib/standard/collection/array.nit:24 */
742 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
743 if (UNTAG_Bool(REGB2)) {
744 } else {
745 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
746 }
747 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
748 /* syntax/typing.nit:143 */
749 REGB1 = TAG_Int(0);
750 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
751 if (UNTAG_Bool(REGB0)) {
752 } else {
753 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
754 }
755 /* ../lib/standard/kernel.nit:237 */
756 REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
757 /* syntax/typing.nit:143 */
758 if (UNTAG_Bool(REGB1)) {
759 /* syntax/typing.nit:144 */
760 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
761 /* ../lib/standard/collection/array.nit:269 */
762 REGB1 = TAG_Int(0);
763 /* ../lib/standard/collection/array.nit:270 */
764 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
765 if (UNTAG_Bool(REGB2)) {
766 } else {
767 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
768 }
769 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
770 /* ../lib/standard/collection/array.nit:271 */
771 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
772 /* ../lib/standard/collection/array.nit:272 */
773 while(1) {
774 /* ../lib/standard/collection/array.nit:24 */
775 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
776 if (UNTAG_Bool(REGB2)) {
777 } else {
778 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
779 }
780 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
781 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
782 if (UNTAG_Bool(REGB0)) {
783 } else {
784 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
785 }
786 /* ../lib/standard/kernel.nit:235 */
787 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
788 /* ../lib/standard/collection/array.nit:272 */
789 if (UNTAG_Bool(REGB2)) {
790 /* ../lib/standard/collection/array.nit:273 */
791 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
792 if (UNTAG_Bool(REGB2)) {
793 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
794 }
795 /* ../lib/standard/collection/array.nit:718 */
796 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
797 /* syntax/typing.nit:146 */
798 REGB2 = TAG_Int(5);
799 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
800 if (!once_value_6) {
801 fra.me.REG[11] = BOX_NativeString("");
802 REGB2 = TAG_Int(0);
803 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
804 once_value_6 = fra.me.REG[11];
805 register_static_object(&once_value_6);
806 } else fra.me.REG[11] = once_value_6;
807 fra.me.REG[11] = fra.me.REG[11];
808 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
809 fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
810 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
811 if (!once_value_7) {
812 fra.me.REG[11] = BOX_NativeString("");
813 REGB2 = TAG_Int(0);
814 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
815 once_value_7 = fra.me.REG[11];
816 register_static_object(&once_value_7);
817 } else fra.me.REG[11] = once_value_7;
818 fra.me.REG[11] = fra.me.REG[11];
819 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
820 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
821 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*/;
822 if (UNTAG_Bool(REGB2)) {
823 } else {
824 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
825 }
826 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
827 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
828 if (!once_value_8) {
829 fra.me.REG[4] = BOX_NativeString("");
830 REGB2 = TAG_Int(0);
831 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
832 once_value_8 = fra.me.REG[4];
833 register_static_object(&once_value_8);
834 } else fra.me.REG[4] = once_value_8;
835 fra.me.REG[4] = fra.me.REG[4];
836 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
837 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
839 /* ../lib/standard/collection/array.nit:274 */
840 REGB2 = TAG_Int(1);
841 /* ../lib/standard/kernel.nit:238 */
842 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
843 /* ../lib/standard/collection/array.nit:274 */
844 REGB1 = REGB2;
845 } else {
846 /* ../lib/standard/collection/array.nit:272 */
847 goto label9;
848 }
849 }
850 label9: while(0);
851 /* syntax/typing.nit:148 */
852 REGB1 = TAG_Int(5);
853 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
854 if (!once_value_10) {
855 fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
856 REGB1 = TAG_Int(51);
857 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
858 once_value_10 = fra.me.REG[6];
859 register_static_object(&once_value_10);
860 } else fra.me.REG[6] = once_value_10;
861 fra.me.REG[6] = fra.me.REG[6];
862 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
863 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
864 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
865 if (!once_value_11) {
866 fra.me.REG[6] = BOX_NativeString(": ");
867 REGB1 = TAG_Int(2);
868 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
869 once_value_11 = fra.me.REG[6];
870 register_static_object(&once_value_11);
871 } else fra.me.REG[6] = once_value_11;
872 fra.me.REG[6] = fra.me.REG[6];
873 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
874 if (!once_value_12) {
875 fra.me.REG[6] = BOX_NativeString(", ");
876 REGB1 = TAG_Int(2);
877 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
878 once_value_12 = fra.me.REG[6];
879 register_static_object(&once_value_12);
880 } else fra.me.REG[6] = once_value_12;
881 fra.me.REG[6] = fra.me.REG[6];
882 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
884 if (!once_value_13) {
885 fra.me.REG[6] = BOX_NativeString(".");
886 REGB1 = TAG_Int(1);
887 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
888 once_value_13 = fra.me.REG[6];
889 register_static_object(&once_value_13);
890 } else fra.me.REG[6] = once_value_13;
891 fra.me.REG[6] = fra.me.REG[6];
892 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
893 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
894 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
895 /* syntax/typing.nit:149 */
896 fra.me.REG[9] = NIT_NULL;
897 goto label5;
898 } else {
899 /* ../lib/standard/collection/array.nit:24 */
900 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
901 if (UNTAG_Bool(REGB1)) {
902 } else {
903 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
904 }
905 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
906 /* syntax/typing.nit:150 */
907 REGB2 = TAG_Int(0);
908 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
909 if (UNTAG_Bool(REGB0)) {
910 } else {
911 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
912 }
913 /* ../lib/standard/kernel.nit:237 */
914 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
915 /* syntax/typing.nit:150 */
916 if (UNTAG_Bool(REGB2)) {
917 /* syntax/typing.nit:151 */
918 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
919 /* ../lib/standard/collection/array.nit:269 */
920 REGB2 = TAG_Int(0);
921 /* ../lib/standard/collection/array.nit:270 */
922 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
923 if (UNTAG_Bool(REGB1)) {
924 } else {
925 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
926 }
927 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
928 /* ../lib/standard/collection/array.nit:271 */
929 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
930 /* ../lib/standard/collection/array.nit:272 */
931 while(1) {
932 /* ../lib/standard/collection/array.nit:24 */
933 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
934 if (UNTAG_Bool(REGB1)) {
935 } else {
936 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
937 }
938 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
939 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
940 if (UNTAG_Bool(REGB0)) {
941 } else {
942 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
943 }
944 /* ../lib/standard/kernel.nit:235 */
945 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
946 /* ../lib/standard/collection/array.nit:272 */
947 if (UNTAG_Bool(REGB1)) {
948 /* ../lib/standard/collection/array.nit:273 */
949 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
950 if (UNTAG_Bool(REGB1)) {
951 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
952 }
953 /* ../lib/standard/collection/array.nit:718 */
954 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
955 /* syntax/typing.nit:153 */
956 REGB1 = TAG_Int(5);
957 fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
958 if (!once_value_14) {
959 fra.me.REG[4] = BOX_NativeString("");
960 REGB1 = TAG_Int(0);
961 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
962 once_value_14 = fra.me.REG[4];
963 register_static_object(&once_value_14);
964 } else fra.me.REG[4] = once_value_14;
965 fra.me.REG[4] = fra.me.REG[4];
966 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
967 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
969 if (!once_value_15) {
970 fra.me.REG[4] = BOX_NativeString("");
971 REGB1 = TAG_Int(0);
972 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
973 once_value_15 = fra.me.REG[4];
974 register_static_object(&once_value_15);
975 } else fra.me.REG[4] = once_value_15;
976 fra.me.REG[4] = fra.me.REG[4];
977 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
978 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
979 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*/;
980 if (UNTAG_Bool(REGB1)) {
981 } else {
982 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
983 }
984 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
985 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
986 if (!once_value_16) {
987 fra.me.REG[3] = BOX_NativeString("");
988 REGB1 = TAG_Int(0);
989 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
990 once_value_16 = fra.me.REG[3];
991 register_static_object(&once_value_16);
992 } else fra.me.REG[3] = once_value_16;
993 fra.me.REG[3] = fra.me.REG[3];
994 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
995 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
996 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
997 /* ../lib/standard/collection/array.nit:274 */
998 REGB1 = TAG_Int(1);
999 /* ../lib/standard/kernel.nit:238 */
1000 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
1001 /* ../lib/standard/collection/array.nit:274 */
1002 REGB2 = REGB1;
1003 } else {
1004 /* ../lib/standard/collection/array.nit:272 */
1005 goto label17;
1006 }
1007 }
1008 label17: while(0);
1009 /* syntax/typing.nit:155 */
1010 REGB2 = TAG_Int(5);
1011 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1012 if (!once_value_18) {
1013 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1014 REGB2 = TAG_Int(55);
1015 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1016 once_value_18 = fra.me.REG[6];
1017 register_static_object(&once_value_18);
1018 } else fra.me.REG[6] = once_value_18;
1019 fra.me.REG[6] = fra.me.REG[6];
1020 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1021 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1022 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1023 if (!once_value_19) {
1024 fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
1025 REGB2 = TAG_Int(27);
1026 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1027 once_value_19 = fra.me.REG[6];
1028 register_static_object(&once_value_19);
1029 } else fra.me.REG[6] = once_value_19;
1030 fra.me.REG[6] = fra.me.REG[6];
1031 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1032 if (!once_value_20) {
1033 fra.me.REG[6] = BOX_NativeString(", ");
1034 REGB2 = TAG_Int(2);
1035 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1036 once_value_20 = fra.me.REG[6];
1037 register_static_object(&once_value_20);
1038 } else fra.me.REG[6] = once_value_20;
1039 fra.me.REG[6] = fra.me.REG[6];
1040 fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
1041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1042 if (!once_value_21) {
1043 fra.me.REG[6] = BOX_NativeString(".");
1044 REGB2 = TAG_Int(1);
1045 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1046 once_value_21 = fra.me.REG[6];
1047 register_static_object(&once_value_21);
1048 } else fra.me.REG[6] = once_value_21;
1049 fra.me.REG[6] = fra.me.REG[6];
1050 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1051 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1052 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1053 /* syntax/typing.nit:156 */
1054 fra.me.REG[9] = NIT_NULL;
1055 goto label5;
1056 } else {
1057 /* syntax/typing.nit:158 */
1058 REGB2 = TAG_Int(3);
1059 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1060 if (!once_value_22) {
1061 fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
1062 REGB2 = TAG_Int(55);
1063 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
1064 once_value_22 = fra.me.REG[6];
1065 register_static_object(&once_value_22);
1066 } else fra.me.REG[6] = once_value_22;
1067 fra.me.REG[6] = fra.me.REG[6];
1068 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
1069 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
1070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1071 if (!once_value_23) {
1072 fra.me.REG[2] = BOX_NativeString(".");
1073 REGB2 = TAG_Int(1);
1074 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
1075 once_value_23 = fra.me.REG[2];
1076 register_static_object(&once_value_23);
1077 } else fra.me.REG[2] = once_value_23;
1078 fra.me.REG[2] = fra.me.REG[2];
1079 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
1080 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
1081 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
1082 /* syntax/typing.nit:159 */
1083 fra.me.REG[9] = NIT_NULL;
1084 goto label5;
1085 }
1086 }
1087 }
1088 label5: while(0);
1089 stack_frame_head = fra.me.prev;
1090 return fra.me.REG[9];
1091 }
1092 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){
1093 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1094 val_t REGB0;
1095 val_t REGB1;
1096 val_t REGB2;
1097 val_t REGB3;
1098 fun_t CREG[1];
1099 val_t tmp;
1100 static val_t once_value_3; /* Once value */
1101 static val_t once_value_4; /* Once value */
1102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1103 fra.me.file = LOCATE_syntax___typing;
1104 fra.me.line = 0;
1105 fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
1106 fra.me.has_broke = 0;
1107 fra.me.REG_size = 4;
1108 fra.me.nitni_local_ref_head = NULL;
1109 fra.me.REG[0] = NIT_NULL;
1110 fra.me.REG[1] = NIT_NULL;
1111 fra.me.REG[2] = NIT_NULL;
1112 fra.me.REG[3] = NIT_NULL;
1113 fra.me.closure_ctx = closctx_param;
1114 fra.me.closure_funs = CREG;
1115 fra.me.REG[0] = p0;
1116 CREG[0] = clos_fun0;
1117 /* syntax/typing.nit:123 */
1118 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
1119 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1120 if (UNTAG_Bool(REGB0)) {
1121 goto label2;
1122 }
1123 /* syntax/typing.nit:124 */
1124 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
1125 /* syntax/typing.nit:125 */
1126 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
1127 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1128 /* syntax/typing.nit:126 */
1129 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1130 if (UNTAG_Bool(REGB0)) {
1131 } else {
1132 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 126);
1133 }
1134 /* syntax/typing.nit:127 */
1135 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
1136 /* syntax/typing.nit:128 */
1137 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1138 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(closctx->REG[3])(closctx->REG[3]);
1139 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
1140 if (UNTAG_Bool(REGB1)) {
1141 } else {
1142 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1143 REGB1 = REGB2;
1144 }
1145 if (UNTAG_Bool(REGB1)) {
1146 /* syntax/typing.nit:129 */
1147 REGB1 = TAG_Int(0);
1148 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
1149 if (UNTAG_Bool(REGB2)) {
1150 } else {
1151 /* ../lib/standard/kernel.nit:230 */
1152 REGB1 = TAG_Bool((REGB0)==(REGB1));
1153 /* syntax/typing.nit:129 */
1154 REGB2 = REGB1;
1155 }
1156 if (UNTAG_Bool(REGB2)) {
1157 REGB2 = TAG_Bool(1);
1158 } else {
1159 REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
1160 if (UNTAG_Bool(REGB1)) {
1161 } else {
1162 /* ../lib/standard/kernel.nit:230 */
1163 REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
1164 /* syntax/typing.nit:129 */
1165 REGB1 = REGB3;
1166 }
1167 if (UNTAG_Bool(REGB1)) {
1168 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(closctx->REG[3])(closctx->REG[3]);
1169 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1170 if (UNTAG_Bool(REGB1)) {
1171 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 129);
1172 }
1173 REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
1174 } else {
1175 REGB3 = TAG_Bool(0);
1176 REGB1 = REGB3;
1177 }
1178 REGB2 = REGB1;
1179 }
1180 if (UNTAG_Bool(REGB2)) {
1181 /* syntax/typing.nit:130 */
1182 closctx->REG[9] = fra.me.REG[0];
1183 closctx->has_broke = 1;
1184 goto label2;
1185 } else {
1186 /* syntax/typing.nit:132 */
1187 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1188 }
1189 } else {
1190 /* syntax/typing.nit:134 */
1191 REGB2 = TAG_Int(0);
1192 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
1193 if (UNTAG_Bool(REGB1)) {
1194 } else {
1195 /* ../lib/standard/kernel.nit:230 */
1196 REGB2 = TAG_Bool((REGB0)==(REGB2));
1197 /* syntax/typing.nit:134 */
1198 REGB1 = REGB2;
1199 }
1200 if (UNTAG_Bool(REGB1)) {
1201 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
1202 if (!once_value_3) {
1203 if (!once_value_4) {
1204 fra.me.REG[3] = BOX_NativeString("init");
1205 REGB1 = TAG_Int(4);
1206 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
1207 once_value_4 = fra.me.REG[3];
1208 register_static_object(&once_value_4);
1209 } else fra.me.REG[3] = once_value_4;
1210 fra.me.REG[3] = fra.me.REG[3];
1211 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
1212 once_value_3 = fra.me.REG[3];
1213 register_static_object(&once_value_3);
1214 } else fra.me.REG[3] = once_value_3;
1215 fra.me.REG[3] = fra.me.REG[3];
1216 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
1217 if (UNTAG_Bool(REGB1)) {
1218 } else {
1219 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1220 REGB1 = REGB2;
1221 }
1222 } else {
1223 REGB2 = TAG_Bool(0);
1224 REGB1 = REGB2;
1225 }
1226 if (UNTAG_Bool(REGB1)) {
1227 /* syntax/typing.nit:135 */
1228 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
1229 /* syntax/typing.nit:136 */
1230 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1231 } else {
1232 /* syntax/typing.nit:138 */
1233 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
1234 }
1235 }
1236 label2: while(0);
1237 stack_frame_head = fra.me.prev;
1238 return;
1239 }
1240 static const char LOCATE_syntax___typing___ANode___accept_typing[] = "typing::ANode::accept_typing";
1241 void syntax___typing___ANode___accept_typing(val_t p0, val_t p1){
1242 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1243 val_t tmp;
1244 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1245 fra.me.file = LOCATE_syntax___typing;
1246 fra.me.line = 168;
1247 fra.me.meth = LOCATE_syntax___typing___ANode___accept_typing;
1248 fra.me.has_broke = 0;
1249 fra.me.REG_size = 2;
1250 fra.me.nitni_local_ref_head = NULL;
1251 fra.me.REG[0] = NIT_NULL;
1252 fra.me.REG[1] = NIT_NULL;
1253 fra.me.REG[0] = p0;
1254 fra.me.REG[1] = p1;
1255 /* syntax/typing.nit:170 */
1256 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1257 /* syntax/typing.nit:171 */
1258 CALL_syntax___typing___ANode___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1259 stack_frame_head = fra.me.prev;
1260 return;
1261 }
1262 static const char LOCATE_syntax___typing___ANode___after_typing[] = "typing::ANode::after_typing";
1263 void syntax___typing___ANode___after_typing(val_t p0, val_t p1){
1264 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1265 val_t tmp;
1266 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1267 fra.me.file = LOCATE_syntax___typing;
1268 fra.me.line = 173;
1269 fra.me.meth = LOCATE_syntax___typing___ANode___after_typing;
1270 fra.me.has_broke = 0;
1271 fra.me.REG_size = 2;
1272 fra.me.nitni_local_ref_head = NULL;
1273 fra.me.REG[0] = NIT_NULL;
1274 fra.me.REG[1] = NIT_NULL;
1275 fra.me.REG[0] = p0;
1276 fra.me.REG[1] = p1;
1277 stack_frame_head = fra.me.prev;
1278 return;
1279 }
1280 static const char LOCATE_syntax___typing___AClassdef___accept_typing[] = "typing::AClassdef::(typing::ANode::accept_typing)";
1281 void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
1282 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1283 val_t REGB0;
1284 val_t tmp;
1285 static val_t once_value_1; /* Once value */
1286 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1287 fra.me.file = LOCATE_syntax___typing;
1288 fra.me.line = 177;
1289 fra.me.meth = LOCATE_syntax___typing___AClassdef___accept_typing;
1290 fra.me.has_broke = 0;
1291 fra.me.REG_size = 5;
1292 fra.me.nitni_local_ref_head = NULL;
1293 fra.me.REG[0] = NIT_NULL;
1294 fra.me.REG[1] = NIT_NULL;
1295 fra.me.REG[2] = NIT_NULL;
1296 fra.me.REG[3] = NIT_NULL;
1297 fra.me.REG[4] = NIT_NULL;
1298 fra.me.REG[0] = p0;
1299 fra.me.REG[1] = p1;
1300 /* syntax/typing.nit:177 */
1301 fra.me.REG[2] = fra.me.REG[0];
1302 fra.me.REG[3] = fra.me.REG[1];
1303 /* syntax/typing.nit:179 */
1304 if (!once_value_1) {
1305 fra.me.REG[4] = BOX_NativeString("self");
1306 REGB0 = TAG_Int(4);
1307 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
1308 once_value_1 = fra.me.REG[4];
1309 register_static_object(&once_value_1);
1310 } else fra.me.REG[4] = once_value_1;
1311 fra.me.REG[4] = fra.me.REG[4];
1312 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1313 fra.me.REG[4] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[4], fra.me.REG[2]);
1314 CALL_syntax___typing___TypingVisitor___self_var__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1315 /* syntax/typing.nit:180 */
1316 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1317 fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
1318 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
1319 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1320 /* syntax/typing.nit:181 */
1321 CALL_SUPER_syntax___typing___AClassdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1322 stack_frame_head = fra.me.prev;
1323 return;
1324 }
1325 static const char LOCATE_syntax___typing___APropdef___self_var[] = "typing::APropdef::(syntax_base::APropdef::self_var)";
1326 val_t syntax___typing___APropdef___self_var(val_t p0){
1327 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1328 val_t REGB0;
1329 val_t tmp;
1330 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1331 fra.me.file = LOCATE_syntax___typing;
1332 fra.me.line = 186;
1333 fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
1334 fra.me.has_broke = 0;
1335 fra.me.REG_size = 2;
1336 fra.me.nitni_local_ref_head = NULL;
1337 fra.me.REG[0] = NIT_NULL;
1338 fra.me.REG[1] = NIT_NULL;
1339 fra.me.REG[0] = p0;
1340 /* syntax/typing.nit:186 */
1341 fra.me.REG[1] = fra.me.REG[0];
1342 fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
1343 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1344 if (UNTAG_Bool(REGB0)) {
1345 } else {
1346 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
1347 }
1348 goto label1;
1349 label1: while(0);
1350 stack_frame_head = fra.me.prev;
1351 return fra.me.REG[1];
1352 }
1353 static const char LOCATE_syntax___typing___AAttrPropdef___accept_typing[] = "typing::AAttrPropdef::(typing::ANode::accept_typing)";
1354 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
1355 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1356 val_t REGB0;
1357 val_t REGB1;
1358 val_t tmp;
1359 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1360 fra.me.file = LOCATE_syntax___typing;
1361 fra.me.line = 191;
1362 fra.me.meth = LOCATE_syntax___typing___AAttrPropdef___accept_typing;
1363 fra.me.has_broke = 0;
1364 fra.me.REG_size = 5;
1365 fra.me.nitni_local_ref_head = NULL;
1366 fra.me.REG[0] = NIT_NULL;
1367 fra.me.REG[1] = NIT_NULL;
1368 fra.me.REG[2] = NIT_NULL;
1369 fra.me.REG[3] = NIT_NULL;
1370 fra.me.REG[4] = NIT_NULL;
1371 fra.me.REG[0] = p0;
1372 fra.me.REG[1] = p1;
1373 /* syntax/typing.nit:191 */
1374 fra.me.REG[2] = fra.me.REG[0];
1375 fra.me.REG[3] = fra.me.REG[1];
1376 /* syntax/typing.nit:193 */
1377 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1378 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1379 /* syntax/typing.nit:194 */
1380 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1381 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1382 /* syntax/typing.nit:196 */
1383 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1384 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1385 /* syntax/typing.nit:197 */
1386 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1387 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1388 /* syntax/typing.nit:198 */
1389 CALL_SUPER_syntax___typing___AAttrPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1390 /* syntax/typing.nit:199 */
1391 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1392 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1393 if (UNTAG_Bool(REGB0)) {
1394 } else {
1395 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1396 if (UNTAG_Bool(REGB1)) {
1397 REGB1 = TAG_Bool(0);
1398 REGB0 = REGB1;
1399 } else {
1400 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1401 REGB0 = REGB1;
1402 }
1403 }
1404 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1405 if (UNTAG_Bool(REGB0)) {
1406 /* syntax/typing.nit:200 */
1407 fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1408 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*/;
1409 if (UNTAG_Bool(REGB0)) {
1410 } else {
1411 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1412 }
1413 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
1414 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
1415 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1416 if (UNTAG_Bool(REGB0)) {
1417 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 200);
1418 }
1419 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
1420 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*/;
1421 if (UNTAG_Bool(REGB0)) {
1422 } else {
1423 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 200);
1424 }
1425 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
1426 }
1427 /* syntax/typing.nit:202 */
1428 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1429 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1430 stack_frame_head = fra.me.prev;
1431 return;
1432 }
1433 static const char LOCATE_syntax___typing___AMethPropdef___accept_typing[] = "typing::AMethPropdef::(typing::ANode::accept_typing)";
1434 void syntax___typing___AMethPropdef___accept_typing(val_t p0, val_t p1){
1435 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1436 val_t tmp;
1437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1438 fra.me.file = LOCATE_syntax___typing;
1439 fra.me.line = 207;
1440 fra.me.meth = LOCATE_syntax___typing___AMethPropdef___accept_typing;
1441 fra.me.has_broke = 0;
1442 fra.me.REG_size = 5;
1443 fra.me.nitni_local_ref_head = NULL;
1444 fra.me.REG[0] = NIT_NULL;
1445 fra.me.REG[1] = NIT_NULL;
1446 fra.me.REG[2] = NIT_NULL;
1447 fra.me.REG[3] = NIT_NULL;
1448 fra.me.REG[4] = NIT_NULL;
1449 fra.me.REG[0] = p0;
1450 fra.me.REG[1] = p1;
1451 /* syntax/typing.nit:207 */
1452 fra.me.REG[2] = fra.me.REG[0];
1453 fra.me.REG[3] = fra.me.REG[1];
1454 /* syntax/typing.nit:209 */
1455 fra.me.REG[4] = NEW_RootFlowContext_syntax___flow___RootFlowContext___init(fra.me.REG[3], fra.me.REG[2]);
1456 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1457 /* syntax/typing.nit:210 */
1458 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1459 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1460 /* syntax/typing.nit:212 */
1461 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1462 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1463 /* syntax/typing.nit:213 */
1464 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[3])(fra.me.REG[3]);
1465 ATTR_syntax___typing___APropdef____self_var(fra.me.REG[2]) = fra.me.REG[4];
1466 /* syntax/typing.nit:214 */
1467 CALL_SUPER_syntax___typing___AMethPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1468 /* syntax/typing.nit:215 */
1469 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
1470 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
1471 stack_frame_head = fra.me.prev;
1472 return;
1473 }
1474 static const char LOCATE_syntax___typing___AConcreteMethPropdef___after_typing[] = "typing::AConcreteMethPropdef::(typing::ANode::after_typing)";
1475 void syntax___typing___AConcreteMethPropdef___after_typing(val_t p0, val_t p1){
1476 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1477 val_t REGB0;
1478 val_t REGB1;
1479 val_t tmp;
1480 static val_t once_value_1; /* Once value */
1481 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1482 fra.me.file = LOCATE_syntax___typing;
1483 fra.me.line = 220;
1484 fra.me.meth = LOCATE_syntax___typing___AConcreteMethPropdef___after_typing;
1485 fra.me.has_broke = 0;
1486 fra.me.REG_size = 4;
1487 fra.me.nitni_local_ref_head = NULL;
1488 fra.me.REG[0] = NIT_NULL;
1489 fra.me.REG[1] = NIT_NULL;
1490 fra.me.REG[2] = NIT_NULL;
1491 fra.me.REG[3] = NIT_NULL;
1492 fra.me.REG[0] = p0;
1493 fra.me.REG[1] = p1;
1494 /* syntax/typing.nit:220 */
1495 fra.me.REG[2] = fra.me.REG[0];
1496 fra.me.REG[3] = fra.me.REG[1];
1497 /* syntax/typing.nit:222 */
1498 CALL_SUPER_syntax___typing___AConcreteMethPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1499 /* syntax/typing.nit:223 */
1500 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
1501 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
1502 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1503 if (UNTAG_Bool(REGB0)) {
1504 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1505 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
1506 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1507 if (UNTAG_Bool(REGB0)) {
1508 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 223);
1509 }
1510 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
1511 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1512 if (UNTAG_Bool(REGB0)) {
1513 } else {
1514 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1515 if (UNTAG_Bool(REGB1)) {
1516 REGB1 = TAG_Bool(0);
1517 REGB0 = REGB1;
1518 } else {
1519 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1520 REGB0 = REGB1;
1521 }
1522 }
1523 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1524 } else {
1525 REGB1 = TAG_Bool(0);
1526 REGB0 = REGB1;
1527 }
1528 if (UNTAG_Bool(REGB0)) {
1529 /* syntax/typing.nit:224 */
1530 if (!once_value_1) {
1531 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected).");
1532 REGB0 = TAG_Int(78);
1533 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
1534 once_value_1 = fra.me.REG[1];
1535 register_static_object(&once_value_1);
1536 } else fra.me.REG[1] = once_value_1;
1537 fra.me.REG[1] = fra.me.REG[1];
1538 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
1539 }
1540 stack_frame_head = fra.me.prev;
1541 return;
1542 }
1543 static const char LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing[] = "typing::AConcreteInitPropdef::(typing::ANode::accept_typing)";
1544 void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
1545 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1546 val_t REGB0;
1547 val_t tmp;
1548 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1549 fra.me.file = LOCATE_syntax___typing;
1550 fra.me.line = 230;
1551 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___accept_typing;
1552 fra.me.has_broke = 0;
1553 fra.me.REG_size = 5;
1554 fra.me.nitni_local_ref_head = NULL;
1555 fra.me.REG[0] = NIT_NULL;
1556 fra.me.REG[1] = NIT_NULL;
1557 fra.me.REG[2] = NIT_NULL;
1558 fra.me.REG[3] = NIT_NULL;
1559 fra.me.REG[4] = NIT_NULL;
1560 fra.me.REG[0] = p0;
1561 fra.me.REG[1] = p1;
1562 /* syntax/typing.nit:230 */
1563 fra.me.REG[2] = fra.me.REG[0];
1564 fra.me.REG[3] = fra.me.REG[1];
1565 /* syntax/typing.nit:232 */
1566 fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[2])(fra.me.REG[2]);
1567 CALL_syntax___typing___TypingVisitor___top_block__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1568 /* syntax/typing.nit:233 */
1569 fra.me.REG[2] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1570 CALL_syntax___typing___TypingVisitor___explicit_super_init_calls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1571 /* syntax/typing.nit:234 */
1572 REGB0 = TAG_Bool(0);
1573 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1574 /* syntax/typing.nit:235 */
1575 CALL_SUPER_syntax___typing___AConcreteInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1576 stack_frame_head = fra.me.prev;
1577 return;
1578 }
1579 static const char LOCATE_syntax___typing___AConcreteInitPropdef___after_typing[] = "typing::AConcreteInitPropdef::(typing::ANode::after_typing)";
1580 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
1581 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
1582 val_t REGB0;
1583 val_t REGB1;
1584 val_t REGB2;
1585 val_t REGB3;
1586 val_t REGB4;
1587 val_t REGB5;
1588 val_t tmp;
1589 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1590 fra.me.file = LOCATE_syntax___typing;
1591 fra.me.line = 238;
1592 fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
1593 fra.me.has_broke = 0;
1594 fra.me.REG_size = 8;
1595 fra.me.nitni_local_ref_head = NULL;
1596 fra.me.REG[0] = NIT_NULL;
1597 fra.me.REG[1] = NIT_NULL;
1598 fra.me.REG[2] = NIT_NULL;
1599 fra.me.REG[3] = NIT_NULL;
1600 fra.me.REG[4] = NIT_NULL;
1601 fra.me.REG[5] = NIT_NULL;
1602 fra.me.REG[6] = NIT_NULL;
1603 fra.me.REG[7] = NIT_NULL;
1604 fra.me.REG[0] = p0;
1605 fra.me.REG[1] = p1;
1606 /* syntax/typing.nit:238 */
1607 fra.me.REG[2] = fra.me.REG[0];
1608 fra.me.REG[3] = fra.me.REG[1];
1609 /* syntax/typing.nit:240 */
1610 CALL_SUPER_syntax___typing___AConcreteInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1611 /* syntax/typing.nit:241 */
1612 REGB0 = CALL_syntax___typing___TypingVisitor___explicit_other_init_call(fra.me.REG[3])(fra.me.REG[3]);
1613 if (UNTAG_Bool(REGB0)) {
1614 REGB0 = TAG_Bool(1);
1615 } else {
1616 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1617 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
1618 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
1619 fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1620 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
1621 if (UNTAG_Bool(REGB1)) {
1622 } else {
1623 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1624 REGB1 = REGB2;
1625 }
1626 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
1627 REGB0 = REGB1;
1628 }
1629 if (UNTAG_Bool(REGB0)) {
1630 } else {
1631 /* syntax/typing.nit:244 */
1632 REGB0 = TAG_Int(0);
1633 /* syntax/typing.nit:245 */
1634 fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1635 /* ../lib/standard/collection/array.nit:24 */
1636 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1637 if (UNTAG_Bool(REGB1)) {
1638 } else {
1639 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1640 }
1641 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1642 /* syntax/typing.nit:246 */
1643 fra.me.REG[4] = NIT_NULL;
1644 /* syntax/typing.nit:247 */
1645 fra.me.REG[1] = NIT_NULL;
1646 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1647 if (UNTAG_Bool(REGB2)) {
1648 } else {
1649 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1650 }
1651 /* ../lib/standard/kernel.nit:235 */
1652 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1653 /* syntax/typing.nit:248 */
1654 if (UNTAG_Bool(REGB2)) {
1655 /* syntax/typing.nit:249 */
1656 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1657 /* ../lib/standard/collection/array.nit:278 */
1658 REGB2 = REGB0;
1659 /* ../lib/standard/collection/array.nit:280 */
1660 REGB3 = TAG_Int(0);
1661 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1662 if (UNTAG_Bool(REGB4)) {
1663 } else {
1664 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1665 }
1666 /* ../lib/standard/kernel.nit:236 */
1667 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
1668 /* ../lib/standard/collection/array.nit:280 */
1669 if (UNTAG_Bool(REGB3)) {
1670 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1671 if (UNTAG_Bool(REGB3)) {
1672 } else {
1673 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1674 }
1675 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1676 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1677 if (UNTAG_Bool(REGB4)) {
1678 } else {
1679 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1680 }
1681 /* ../lib/standard/kernel.nit:235 */
1682 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1683 } else {
1684 /* ../lib/standard/collection/array.nit:280 */
1685 REGB4 = TAG_Bool(0);
1686 REGB3 = REGB4;
1687 }
1688 if (UNTAG_Bool(REGB3)) {
1689 } else {
1690 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1691 }
1692 /* ../lib/standard/collection/array.nit:281 */
1693 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1694 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1695 if (UNTAG_Bool(REGB3)) {
1696 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1697 }
1698 /* ../lib/standard/collection/array.nit:718 */
1699 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
1700 /* ../lib/standard/collection/array.nit:281 */
1701 goto label1;
1702 label1: while(0);
1703 /* syntax/typing.nit:249 */
1704 fra.me.REG[4] = fra.me.REG[5];
1705 /* syntax/typing.nit:250 */
1706 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1707 if (UNTAG_Bool(REGB2)) {
1708 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
1709 }
1710 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1711 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1712 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1713 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1714 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1715 fra.me.REG[1] = fra.me.REG[6];
1716 }
1717 /* syntax/typing.nit:252 */
1718 REGB2 = TAG_Int(0);
1719 /* syntax/typing.nit:253 */
1720 while(1) {
1721 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1722 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1723 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1724 /* ../lib/standard/collection/array.nit:24 */
1725 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1726 if (UNTAG_Bool(REGB3)) {
1727 } else {
1728 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1729 }
1730 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1731 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1732 if (UNTAG_Bool(REGB4)) {
1733 } else {
1734 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1735 }
1736 /* ../lib/standard/kernel.nit:235 */
1737 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1738 /* syntax/typing.nit:253 */
1739 if (UNTAG_Bool(REGB3)) {
1740 /* syntax/typing.nit:254 */
1741 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
1742 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1743 fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[6])(fra.me.REG[6]);
1744 /* ../lib/standard/collection/array.nit:278 */
1745 REGB3 = REGB2;
1746 /* ../lib/standard/collection/array.nit:280 */
1747 REGB4 = TAG_Int(0);
1748 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1749 if (UNTAG_Bool(REGB5)) {
1750 } else {
1751 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1752 }
1753 /* ../lib/standard/kernel.nit:236 */
1754 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1755 /* ../lib/standard/collection/array.nit:280 */
1756 if (UNTAG_Bool(REGB4)) {
1757 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
1758 if (UNTAG_Bool(REGB4)) {
1759 } else {
1760 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1761 }
1762 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
1763 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1764 if (UNTAG_Bool(REGB5)) {
1765 } else {
1766 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1767 }
1768 /* ../lib/standard/kernel.nit:235 */
1769 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1770 } else {
1771 /* ../lib/standard/collection/array.nit:280 */
1772 REGB5 = TAG_Bool(0);
1773 REGB4 = REGB5;
1774 }
1775 if (UNTAG_Bool(REGB4)) {
1776 } else {
1777 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1778 }
1779 /* ../lib/standard/collection/array.nit:281 */
1780 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
1781 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1782 if (UNTAG_Bool(REGB4)) {
1783 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1784 }
1785 /* ../lib/standard/collection/array.nit:718 */
1786 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
1787 /* ../lib/standard/collection/array.nit:281 */
1788 goto label2;
1789 label2: while(0);
1790 /* syntax/typing.nit:255 */
1791 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1792 REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
1793 if (UNTAG_Bool(REGB3)) {
1794 REGB3 = TAG_Bool(1);
1795 } else {
1796 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1797 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
1798 REGB3 = REGB4;
1799 }
1800 if (UNTAG_Bool(REGB3)) {
1801 REGB3 = TAG_Bool(1);
1802 } else {
1803 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1804 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1805 REGB3 = REGB4;
1806 }
1807 if (UNTAG_Bool(REGB3)) {
1808 REGB3 = TAG_Bool(1);
1809 } else {
1810 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
1811 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1812 REGB3 = REGB4;
1813 }
1814 if (UNTAG_Bool(REGB3)) {
1815 /* syntax/typing.nit:256 */
1816 REGB3 = TAG_Int(1);
1817 /* ../lib/standard/kernel.nit:238 */
1818 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1819 /* syntax/typing.nit:256 */
1820 REGB2 = REGB3;
1821 } else {
1822 /* syntax/typing.nit:257 */
1823 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1824 if (UNTAG_Bool(REGB3)) {
1825 } else {
1826 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1827 if (UNTAG_Bool(REGB4)) {
1828 REGB4 = TAG_Bool(0);
1829 REGB3 = REGB4;
1830 } else {
1831 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1832 REGB3 = REGB4;
1833 }
1834 }
1835 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1836 if (UNTAG_Bool(REGB3)) {
1837 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
1838 REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1839 if (UNTAG_Bool(REGB3)) {
1840 REGB3 = TAG_Bool(1);
1841 } else {
1842 REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1843 if (UNTAG_Bool(REGB4)) {
1844 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
1845 }
1846 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
1847 REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
1848 REGB3 = REGB4;
1849 }
1850 } else {
1851 REGB4 = TAG_Bool(0);
1852 REGB3 = REGB4;
1853 }
1854 if (UNTAG_Bool(REGB3)) {
1855 /* syntax/typing.nit:258 */
1856 REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
1857 if (UNTAG_Bool(REGB3)) {
1858 } else {
1859 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
1860 REGB3 = REGB4;
1861 }
1862 if (UNTAG_Bool(REGB3)) {
1863 REGB3 = TAG_Int(1);
1864 /* ../lib/standard/kernel.nit:238 */
1865 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1866 /* syntax/typing.nit:258 */
1867 REGB2 = REGB3;
1868 }
1869 /* syntax/typing.nit:259 */
1870 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1871 REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
1872 if (UNTAG_Bool(REGB3)) {
1873 } else {
1874 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
1875 }
1876 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1877 /* syntax/typing.nit:260 */
1878 REGB3 = TAG_Int(1);
1879 /* ../lib/standard/kernel.nit:238 */
1880 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
1881 /* syntax/typing.nit:260 */
1882 REGB0 = REGB3;
1883 REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1884 if (UNTAG_Bool(REGB3)) {
1885 } else {
1886 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1887 }
1888 /* ../lib/standard/kernel.nit:235 */
1889 REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1890 /* syntax/typing.nit:261 */
1891 if (UNTAG_Bool(REGB3)) {
1892 /* syntax/typing.nit:262 */
1893 fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1894 /* ../lib/standard/collection/array.nit:278 */
1895 REGB3 = REGB0;
1896 /* ../lib/standard/collection/array.nit:280 */
1897 REGB4 = TAG_Int(0);
1898 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1899 if (UNTAG_Bool(REGB5)) {
1900 } else {
1901 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1902 }
1903 /* ../lib/standard/kernel.nit:236 */
1904 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
1905 /* ../lib/standard/collection/array.nit:280 */
1906 if (UNTAG_Bool(REGB4)) {
1907 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1908 if (UNTAG_Bool(REGB4)) {
1909 } else {
1910 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1911 }
1912 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1913 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
1914 if (UNTAG_Bool(REGB5)) {
1915 } else {
1916 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1917 }
1918 /* ../lib/standard/kernel.nit:235 */
1919 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
1920 } else {
1921 /* ../lib/standard/collection/array.nit:280 */
1922 REGB5 = TAG_Bool(0);
1923 REGB4 = REGB5;
1924 }
1925 if (UNTAG_Bool(REGB4)) {
1926 } else {
1927 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1928 }
1929 /* ../lib/standard/collection/array.nit:281 */
1930 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1931 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1932 if (UNTAG_Bool(REGB4)) {
1933 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1934 }
1935 /* ../lib/standard/collection/array.nit:718 */
1936 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
1937 /* ../lib/standard/collection/array.nit:281 */
1938 goto label3;
1939 label3: while(0);
1940 /* syntax/typing.nit:262 */
1941 fra.me.REG[4] = fra.me.REG[5];
1942 /* syntax/typing.nit:263 */
1943 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1944 if (UNTAG_Bool(REGB3)) {
1945 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
1946 }
1947 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
1948 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
1949 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
1950 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
1951 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
1952 fra.me.REG[1] = fra.me.REG[7];
1953 } else {
1954 /* syntax/typing.nit:265 */
1955 fra.me.REG[4] = NIT_NULL;
1956 /* syntax/typing.nit:266 */
1957 fra.me.REG[1] = NIT_NULL;
1958 }
1959 } else {
1960 /* syntax/typing.nit:269 */
1961 fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1962 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]);
1963 /* syntax/typing.nit:270 */
1964 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1965 if (UNTAG_Bool(REGB3)) {
1966 } else {
1967 REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
1968 if (UNTAG_Bool(REGB4)) {
1969 REGB4 = TAG_Bool(0);
1970 REGB3 = REGB4;
1971 } else {
1972 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
1973 REGB3 = REGB4;
1974 }
1975 }
1976 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
1977 if (UNTAG_Bool(REGB3)) {
1978 /* syntax/typing.nit:271 */
1979 fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
1980 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
1981 }
1982 /* syntax/typing.nit:273 */
1983 REGB3 = TAG_Int(1);
1984 /* ../lib/standard/kernel.nit:238 */
1985 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1986 /* syntax/typing.nit:273 */
1987 REGB2 = REGB3;
1988 }
1989 }
1990 } else {
1991 /* syntax/typing.nit:253 */
1992 goto label4;
1993 }
1994 }
1995 label4: while(0);
1996 }
1997 stack_frame_head = fra.me.prev;
1998 return;
1999 }
2000 static const char LOCATE_syntax___typing___AExternInitPropdef___accept_typing[] = "typing::AExternInitPropdef::(typing::ANode::accept_typing)";
2001 void syntax___typing___AExternInitPropdef___accept_typing(val_t p0, val_t p1){
2002 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2003 val_t REGB0;
2004 val_t tmp;
2005 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2006 fra.me.file = LOCATE_syntax___typing;
2007 fra.me.line = 281;
2008 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___accept_typing;
2009 fra.me.has_broke = 0;
2010 fra.me.REG_size = 3;
2011 fra.me.nitni_local_ref_head = NULL;
2012 fra.me.REG[0] = NIT_NULL;
2013 fra.me.REG[1] = NIT_NULL;
2014 fra.me.REG[2] = NIT_NULL;
2015 fra.me.REG[0] = p0;
2016 fra.me.REG[1] = p1;
2017 /* syntax/typing.nit:281 */
2018 fra.me.REG[2] = fra.me.REG[1];
2019 /* syntax/typing.nit:283 */
2020 REGB0 = TAG_Bool(0);
2021 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2022 /* syntax/typing.nit:284 */
2023 CALL_SUPER_syntax___typing___AExternInitPropdef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2024 stack_frame_head = fra.me.prev;
2025 return;
2026 }
2027 static const char LOCATE_syntax___typing___AExternInitPropdef___after_typing[] = "typing::AExternInitPropdef::(typing::ANode::after_typing)";
2028 void syntax___typing___AExternInitPropdef___after_typing(val_t p0, val_t p1){
2029 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2030 val_t tmp;
2031 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2032 fra.me.file = LOCATE_syntax___typing;
2033 fra.me.line = 286;
2034 fra.me.meth = LOCATE_syntax___typing___AExternInitPropdef___after_typing;
2035 fra.me.has_broke = 0;
2036 fra.me.REG_size = 2;
2037 fra.me.nitni_local_ref_head = NULL;
2038 fra.me.REG[0] = NIT_NULL;
2039 fra.me.REG[1] = NIT_NULL;
2040 fra.me.REG[0] = p0;
2041 fra.me.REG[1] = p1;
2042 /* syntax/typing.nit:288 */
2043 CALL_SUPER_syntax___typing___AExternInitPropdef___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2044 stack_frame_head = fra.me.prev;
2045 return;
2046 }
2047 static const char LOCATE_syntax___typing___ASignature___after_typing[] = "typing::ASignature::(typing::ANode::after_typing)";
2048 void syntax___typing___ASignature___after_typing(val_t p0, val_t p1){
2049 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2050 val_t REGB0;
2051 val_t REGB1;
2052 val_t tmp;
2053 static val_t once_value_1; /* Once value */
2054 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2055 fra.me.file = LOCATE_syntax___typing;
2056 fra.me.line = 293;
2057 fra.me.meth = LOCATE_syntax___typing___ASignature___after_typing;
2058 fra.me.has_broke = 0;
2059 fra.me.REG_size = 3;
2060 fra.me.nitni_local_ref_head = NULL;
2061 fra.me.REG[0] = NIT_NULL;
2062 fra.me.REG[1] = NIT_NULL;
2063 fra.me.REG[2] = NIT_NULL;
2064 fra.me.REG[0] = p0;
2065 fra.me.REG[1] = p1;
2066 /* syntax/typing.nit:295 */
2067 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_opar(fra.me.REG[0])(fra.me.REG[0]);
2068 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2069 if (UNTAG_Bool(REGB0)) {
2070 } else {
2071 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2072 if (UNTAG_Bool(REGB1)) {
2073 REGB1 = TAG_Bool(0);
2074 REGB0 = REGB1;
2075 } else {
2076 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2077 REGB0 = REGB1;
2078 }
2079 }
2080 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2081 if (UNTAG_Bool(REGB0)) {
2082 fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
2083 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2084 } else {
2085 REGB1 = TAG_Bool(0);
2086 REGB0 = REGB1;
2087 }
2088 if (UNTAG_Bool(REGB0)) {
2089 /* syntax/typing.nit:296 */
2090 if (!once_value_1) {
2091 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2092 REGB0 = TAG_Int(33);
2093 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2094 once_value_1 = fra.me.REG[2];
2095 register_static_object(&once_value_1);
2096 } else fra.me.REG[2] = once_value_1;
2097 fra.me.REG[2] = fra.me.REG[2];
2098 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2099 }
2100 stack_frame_head = fra.me.prev;
2101 return;
2102 }
2103 static const char LOCATE_syntax___typing___AParam___after_typing[] = "typing::AParam::(typing::ANode::after_typing)";
2104 void syntax___typing___AParam___after_typing(val_t p0, val_t p1){
2105 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2106 val_t tmp;
2107 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2108 fra.me.file = LOCATE_syntax___typing;
2109 fra.me.line = 302;
2110 fra.me.meth = LOCATE_syntax___typing___AParam___after_typing;
2111 fra.me.has_broke = 0;
2112 fra.me.REG_size = 2;
2113 fra.me.nitni_local_ref_head = NULL;
2114 fra.me.REG[0] = NIT_NULL;
2115 fra.me.REG[1] = NIT_NULL;
2116 fra.me.REG[0] = p0;
2117 fra.me.REG[1] = p1;
2118 /* syntax/typing.nit:304 */
2119 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2120 fra.me.REG[0] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2121 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2122 stack_frame_head = fra.me.prev;
2123 return;
2124 }
2125 static const char LOCATE_syntax___typing___AClosureDecl___escapable[] = "typing::AClosureDecl::escapable";
2126 val_t syntax___typing___AClosureDecl___escapable(val_t p0){
2127 struct {struct stack_frame_t me;} fra;
2128 val_t tmp;
2129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2130 fra.me.file = LOCATE_syntax___typing;
2131 fra.me.line = 309;
2132 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___escapable;
2133 fra.me.has_broke = 0;
2134 fra.me.REG_size = 1;
2135 fra.me.nitni_local_ref_head = NULL;
2136 fra.me.REG[0] = NIT_NULL;
2137 fra.me.REG[0] = p0;
2138 /* syntax/typing.nit:309 */
2139 fra.me.REG[0] = ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[0]);
2140 stack_frame_head = fra.me.prev;
2141 return fra.me.REG[0];
2142 }
2143 static const char LOCATE_syntax___typing___AClosureDecl___accept_typing[] = "typing::AClosureDecl::(typing::ANode::accept_typing)";
2144 void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
2145 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
2146 val_t REGB0;
2147 val_t REGB1;
2148 val_t REGB2;
2149 val_t tmp;
2150 static val_t once_value_1; /* Once value */
2151 static val_t once_value_2; /* Once value */
2152 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2153 fra.me.file = LOCATE_syntax___typing;
2154 fra.me.line = 312;
2155 fra.me.meth = LOCATE_syntax___typing___AClosureDecl___accept_typing;
2156 fra.me.has_broke = 0;
2157 fra.me.REG_size = 10;
2158 fra.me.nitni_local_ref_head = NULL;
2159 fra.me.REG[0] = NIT_NULL;
2160 fra.me.REG[1] = NIT_NULL;
2161 fra.me.REG[2] = NIT_NULL;
2162 fra.me.REG[3] = NIT_NULL;
2163 fra.me.REG[4] = NIT_NULL;
2164 fra.me.REG[5] = NIT_NULL;
2165 fra.me.REG[6] = NIT_NULL;
2166 fra.me.REG[7] = NIT_NULL;
2167 fra.me.REG[8] = NIT_NULL;
2168 fra.me.REG[9] = NIT_NULL;
2169 fra.me.REG[0] = p0;
2170 fra.me.REG[1] = p1;
2171 /* syntax/typing.nit:312 */
2172 fra.me.REG[2] = fra.me.REG[0];
2173 fra.me.REG[3] = fra.me.REG[1];
2174 /* syntax/typing.nit:315 */
2175 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2176 fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2177 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2178 /* syntax/typing.nit:317 */
2179 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2180 /* syntax/typing.nit:318 */
2181 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2182 /* syntax/typing.nit:319 */
2183 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2184 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2185 /* syntax/typing.nit:321 */
2186 fra.me.REG[6] = NIT_NULL;
2187 /* syntax/typing.nit:322 */
2188 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[3])(fra.me.REG[3]);
2189 fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
2190 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2191 if (UNTAG_Bool(REGB0)) {
2192 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 322);
2193 }
2194 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
2195 /* syntax/typing.nit:323 */
2196 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2197 if (UNTAG_Bool(REGB0)) {
2198 } else {
2199 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2200 if (UNTAG_Bool(REGB1)) {
2201 REGB1 = TAG_Bool(0);
2202 REGB0 = REGB1;
2203 } else {
2204 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2205 REGB0 = REGB1;
2206 }
2207 }
2208 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2209 if (UNTAG_Bool(REGB0)) {
2210 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
2211 fra.me.REG[6] = fra.me.REG[8];
2212 }
2213 /* syntax/typing.nit:324 */
2214 fra.me.REG[8] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2215 fra.me.REG[8] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[8])(fra.me.REG[8]);
2216 fra.me.REG[8] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[2], fra.me.REG[8], fra.me.REG[6]);
2217 /* syntax/typing.nit:325 */
2218 ATTR_syntax___typing___AClosureDecl____escapable(fra.me.REG[2]) = fra.me.REG[8];
2219 /* syntax/typing.nit:326 */
2220 fra.me.REG[9] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2221 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8], NIT_NULL);
2222 /* syntax/typing.nit:328 */
2223 REGB0 = TAG_Bool(1);
2224 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2225 /* syntax/typing.nit:330 */
2226 CALL_SUPER_syntax___typing___AClosureDecl___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2227 /* syntax/typing.nit:332 */
2228 REGB0 = TAG_Bool(0);
2229 CALL_syntax___typing___TypingVisitor___is_default_closure_definition__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
2230 /* syntax/typing.nit:334 */
2231 fra.me.REG[1] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2232 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2233 if (UNTAG_Bool(REGB0)) {
2234 } else {
2235 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2236 if (UNTAG_Bool(REGB1)) {
2237 REGB1 = TAG_Bool(0);
2238 REGB0 = REGB1;
2239 } else {
2240 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2241 REGB0 = REGB1;
2242 }
2243 }
2244 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2245 if (UNTAG_Bool(REGB0)) {
2246 /* syntax/typing.nit:335 */
2247 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[3])(fra.me.REG[3]);
2248 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
2249 REGB1 = TAG_Bool(0);
2250 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
2251 if (UNTAG_Bool(REGB2)) {
2252 } else {
2253 /* ../lib/standard/kernel.nit:198 */
2254 REGB1 = TAG_Bool((REGB0)==(REGB1));
2255 /* syntax/typing.nit:335 */
2256 REGB2 = REGB1;
2257 }
2258 if (UNTAG_Bool(REGB2)) {
2259 /* syntax/typing.nit:336 */
2260 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2261 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2262 fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
2263 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
2264 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2265 if (UNTAG_Bool(REGB2)) {
2266 } else {
2267 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2268 if (UNTAG_Bool(REGB1)) {
2269 REGB1 = TAG_Bool(0);
2270 REGB2 = REGB1;
2271 } else {
2272 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2273 REGB2 = REGB1;
2274 }
2275 }
2276 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2277 if (UNTAG_Bool(REGB2)) {
2278 /* syntax/typing.nit:337 */
2279 if (!once_value_1) {
2280 fra.me.REG[1] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
2281 REGB2 = TAG_Int(77);
2282 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB2);
2283 once_value_1 = fra.me.REG[1];
2284 register_static_object(&once_value_1);
2285 } else fra.me.REG[1] = once_value_1;
2286 fra.me.REG[1] = fra.me.REG[1];
2287 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
2288 } else {
2289 /* syntax/typing.nit:338 */
2290 fra.me.REG[1] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2291 fra.me.REG[1] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[1])(fra.me.REG[1]);
2292 REGB2 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
2293 if (UNTAG_Bool(REGB2)) {
2294 fra.me.REG[8] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[8])(fra.me.REG[8]);
2295 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2296 if (UNTAG_Bool(REGB2)) {
2297 } else {
2298 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2299 if (UNTAG_Bool(REGB1)) {
2300 REGB1 = TAG_Bool(0);
2301 REGB2 = REGB1;
2302 } else {
2303 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
2304 REGB2 = REGB1;
2305 }
2306 }
2307 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2308 } else {
2309 REGB1 = TAG_Bool(0);
2310 REGB2 = REGB1;
2311 }
2312 if (UNTAG_Bool(REGB2)) {
2313 /* syntax/typing.nit:339 */
2314 if (!once_value_2) {
2315 fra.me.REG[8] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
2316 REGB2 = TAG_Int(80);
2317 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
2318 once_value_2 = fra.me.REG[8];
2319 register_static_object(&once_value_2);
2320 } else fra.me.REG[8] = once_value_2;
2321 fra.me.REG[8] = fra.me.REG[8];
2322 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[8]);
2323 }
2324 }
2325 }
2326 }
2327 /* syntax/typing.nit:343 */
2328 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2329 if (UNTAG_Bool(REGB2)) {
2330 } else {
2331 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2332 if (UNTAG_Bool(REGB1)) {
2333 REGB1 = TAG_Bool(0);
2334 REGB2 = REGB1;
2335 } else {
2336 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2337 REGB2 = REGB1;
2338 }
2339 }
2340 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
2341 if (UNTAG_Bool(REGB2)) {
2342 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2343 if (UNTAG_Bool(REGB2)) {
2344 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 343);
2345 }
2346 /* ../lib/standard/collection/array.nit:269 */
2347 REGB2 = TAG_Int(0);
2348 /* ../lib/standard/collection/array.nit:270 */
2349 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2350 if (UNTAG_Bool(REGB1)) {
2351 } else {
2352 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
2353 }
2354 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2355 /* ../lib/standard/collection/array.nit:271 */
2356 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
2357 /* ../lib/standard/collection/array.nit:272 */
2358 while(1) {
2359 /* ../lib/standard/collection/array.nit:24 */
2360 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
2361 if (UNTAG_Bool(REGB1)) {
2362 } else {
2363 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
2364 }
2365 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
2366 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
2367 if (UNTAG_Bool(REGB0)) {
2368 } else {
2369 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2370 }
2371 /* ../lib/standard/kernel.nit:235 */
2372 REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
2373 /* ../lib/standard/collection/array.nit:272 */
2374 if (UNTAG_Bool(REGB1)) {
2375 /* ../lib/standard/collection/array.nit:273 */
2376 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
2377 if (UNTAG_Bool(REGB1)) {
2378 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
2379 }
2380 /* ../lib/standard/collection/array.nit:718 */
2381 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
2382 /* syntax/typing.nit:344 */
2383 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
2384 /* ../lib/standard/collection/array.nit:274 */
2385 REGB1 = TAG_Int(1);
2386 /* ../lib/standard/kernel.nit:238 */
2387 REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
2388 /* ../lib/standard/collection/array.nit:274 */
2389 REGB2 = REGB1;
2390 } else {
2391 /* ../lib/standard/collection/array.nit:272 */
2392 goto label3;
2393 }
2394 }
2395 label3: while(0);
2396 }
2397 /* syntax/typing.nit:347 */
2398 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2399 /* syntax/typing.nit:348 */
2400 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2401 /* syntax/typing.nit:349 */
2402 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
2403 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[3])(fra.me.REG[3]);
2404 stack_frame_head = fra.me.prev;
2405 return;
2406 }
2407 static const char LOCATE_syntax___typing___AType___stype[] = "typing::AType::(syntax_base::AType::stype)";
2408 val_t syntax___typing___AType___stype(val_t p0){
2409 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2410 val_t REGB0;
2411 val_t tmp;
2412 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2413 fra.me.file = LOCATE_syntax___typing;
2414 fra.me.line = 354;
2415 fra.me.meth = LOCATE_syntax___typing___AType___stype;
2416 fra.me.has_broke = 0;
2417 fra.me.REG_size = 2;
2418 fra.me.nitni_local_ref_head = NULL;
2419 fra.me.REG[0] = NIT_NULL;
2420 fra.me.REG[1] = NIT_NULL;
2421 fra.me.REG[0] = p0;
2422 /* syntax/typing.nit:354 */
2423 fra.me.REG[1] = fra.me.REG[0];
2424 fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
2425 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2426 if (UNTAG_Bool(REGB0)) {
2427 } else {
2428 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 354);
2429 }
2430 goto label1;
2431 label1: while(0);
2432 stack_frame_head = fra.me.prev;
2433 return fra.me.REG[1];
2434 }
2435 static const char LOCATE_syntax___typing___AType___is_typed[] = "typing::AType::(syntax_base::AType::is_typed)";
2436 val_t syntax___typing___AType___is_typed(val_t p0){
2437 struct {struct stack_frame_t me;} fra;
2438 val_t REGB0;
2439 val_t REGB1;
2440 val_t tmp;
2441 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2442 fra.me.file = LOCATE_syntax___typing;
2443 fra.me.line = 355;
2444 fra.me.meth = LOCATE_syntax___typing___AType___is_typed;
2445 fra.me.has_broke = 0;
2446 fra.me.REG_size = 1;
2447 fra.me.nitni_local_ref_head = NULL;
2448 fra.me.REG[0] = NIT_NULL;
2449 fra.me.REG[0] = p0;
2450 /* syntax/typing.nit:355 */
2451 fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
2452 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2453 if (UNTAG_Bool(REGB0)) {
2454 } else {
2455 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2456 if (UNTAG_Bool(REGB1)) {
2457 REGB1 = TAG_Bool(0);
2458 REGB0 = REGB1;
2459 } else {
2460 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2461 REGB0 = REGB1;
2462 }
2463 }
2464 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2465 goto label1;
2466 label1: while(0);
2467 stack_frame_head = fra.me.prev;
2468 return REGB0;
2469 }
2470 static const char LOCATE_syntax___typing___AType___after_typing[] = "typing::AType::(typing::ANode::after_typing)";
2471 void syntax___typing___AType___after_typing(val_t p0, val_t p1){
2472 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2473 val_t tmp;
2474 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2475 fra.me.file = LOCATE_syntax___typing;
2476 fra.me.line = 358;
2477 fra.me.meth = LOCATE_syntax___typing___AType___after_typing;
2478 fra.me.has_broke = 0;
2479 fra.me.REG_size = 2;
2480 fra.me.nitni_local_ref_head = NULL;
2481 fra.me.REG[0] = NIT_NULL;
2482 fra.me.REG[1] = NIT_NULL;
2483 fra.me.REG[0] = p0;
2484 fra.me.REG[1] = p1;
2485 /* syntax/typing.nit:360 */
2486 fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2487 ATTR_syntax___typing___AType____stype(fra.me.REG[0]) = fra.me.REG[1];
2488 stack_frame_head = fra.me.prev;
2489 return;
2490 }
2491 static const char LOCATE_syntax___typing___AExpr___is_typed[] = "typing::AExpr::(syntax_base::AExpr::is_typed)";
2492 val_t syntax___typing___AExpr___is_typed(val_t p0){
2493 struct {struct stack_frame_t me;} fra;
2494 val_t REGB0;
2495 val_t tmp;
2496 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2497 fra.me.file = LOCATE_syntax___typing;
2498 fra.me.line = 365;
2499 fra.me.meth = LOCATE_syntax___typing___AExpr___is_typed;
2500 fra.me.has_broke = 0;
2501 fra.me.REG_size = 1;
2502 fra.me.nitni_local_ref_head = NULL;
2503 fra.me.REG[0] = NIT_NULL;
2504 fra.me.REG[0] = p0;
2505 /* syntax/typing.nit:365 */
2506 REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
2507 if (UNTAG_Bool(REGB0)) {
2508 } else {
2509 nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_syntax___typing, 365);
2510 }
2511 REGB0 = ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]);
2512 stack_frame_head = fra.me.prev;
2513 return REGB0;
2514 }
2515 static const char LOCATE_syntax___typing___AExpr___is_statement[] = "typing::AExpr::(syntax_base::AExpr::is_statement)";
2516 val_t syntax___typing___AExpr___is_statement(val_t p0){
2517 struct {struct stack_frame_t me;} fra;
2518 val_t REGB0;
2519 val_t REGB1;
2520 val_t tmp;
2521 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2522 fra.me.file = LOCATE_syntax___typing;
2523 fra.me.line = 366;
2524 fra.me.meth = LOCATE_syntax___typing___AExpr___is_statement;
2525 fra.me.has_broke = 0;
2526 fra.me.REG_size = 1;
2527 fra.me.nitni_local_ref_head = NULL;
2528 fra.me.REG[0] = NIT_NULL;
2529 fra.me.REG[0] = p0;
2530 /* syntax/typing.nit:366 */
2531 fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
2532 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2533 if (UNTAG_Bool(REGB0)) {
2534 } else {
2535 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2536 if (UNTAG_Bool(REGB1)) {
2537 REGB1 = TAG_Bool(0);
2538 REGB0 = REGB1;
2539 } else {
2540 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2541 REGB0 = REGB1;
2542 }
2543 }
2544 goto label1;
2545 label1: while(0);
2546 stack_frame_head = fra.me.prev;
2547 return REGB0;
2548 }
2549 static const char LOCATE_syntax___typing___AExpr___stype[] = "typing::AExpr::(syntax_base::AExpr::stype)";
2550 val_t syntax___typing___AExpr___stype(val_t p0){
2551 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2552 val_t REGB0;
2553 val_t tmp;
2554 static val_t once_value_1; /* Once value */
2555 static val_t once_value_2; /* Once value */
2556 static val_t once_value_3; /* Once value */
2557 static val_t once_value_4; /* Once value */
2558 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2559 fra.me.file = LOCATE_syntax___typing;
2560 fra.me.line = 367;
2561 fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
2562 fra.me.has_broke = 0;
2563 fra.me.REG_size = 4;
2564 fra.me.nitni_local_ref_head = NULL;
2565 fra.me.REG[0] = NIT_NULL;
2566 fra.me.REG[1] = NIT_NULL;
2567 fra.me.REG[2] = NIT_NULL;
2568 fra.me.REG[3] = NIT_NULL;
2569 fra.me.REG[0] = p0;
2570 /* syntax/typing.nit:367 */
2571 fra.me.REG[1] = fra.me.REG[0];
2572 /* syntax/typing.nit:369 */
2573 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
2574 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2575 if (UNTAG_Bool(REGB0)) {
2576 /* syntax/typing.nit:370 */
2577 REGB0 = TAG_Int(3);
2578 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2579 if (!once_value_1) {
2580 fra.me.REG[3] = BOX_NativeString("");
2581 REGB0 = TAG_Int(0);
2582 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2583 once_value_1 = fra.me.REG[3];
2584 register_static_object(&once_value_1);
2585 } else fra.me.REG[3] = once_value_1;
2586 fra.me.REG[3] = fra.me.REG[3];
2587 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2588 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2589 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2590 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2591 if (!once_value_2) {
2592 fra.me.REG[3] = BOX_NativeString(": not is_typed");
2593 REGB0 = TAG_Int(14);
2594 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2595 once_value_2 = fra.me.REG[3];
2596 register_static_object(&once_value_2);
2597 } else fra.me.REG[3] = once_value_2;
2598 fra.me.REG[3] = fra.me.REG[3];
2599 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2600 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2601 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2602 /* syntax/typing.nit:371 */
2603 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 371);
2604 }
2605 /* syntax/typing.nit:373 */
2606 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
2607 if (UNTAG_Bool(REGB0)) {
2608 /* syntax/typing.nit:374 */
2609 REGB0 = TAG_Int(3);
2610 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2611 if (!once_value_3) {
2612 fra.me.REG[3] = BOX_NativeString("");
2613 REGB0 = TAG_Int(0);
2614 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2615 once_value_3 = fra.me.REG[3];
2616 register_static_object(&once_value_3);
2617 } else fra.me.REG[3] = once_value_3;
2618 fra.me.REG[3] = fra.me.REG[3];
2619 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2620 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
2621 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
2622 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2623 if (!once_value_4) {
2624 fra.me.REG[3] = BOX_NativeString(": is_statement");
2625 REGB0 = TAG_Int(14);
2626 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
2627 once_value_4 = fra.me.REG[3];
2628 register_static_object(&once_value_4);
2629 } else fra.me.REG[3] = once_value_4;
2630 fra.me.REG[3] = fra.me.REG[3];
2631 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2632 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
2633 CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2634 /* syntax/typing.nit:375 */
2635 nit_abort("Aborted", NULL, LOCATE_syntax___typing, 375);
2636 }
2637 /* syntax/typing.nit:377 */
2638 fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
2639 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2640 if (UNTAG_Bool(REGB0)) {
2641 } else {
2642 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 377);
2643 }
2644 goto label5;
2645 label5: while(0);
2646 stack_frame_head = fra.me.prev;
2647 return fra.me.REG[1];
2648 }
2649 static const char LOCATE_syntax___typing___AExpr___after_typing[] = "typing::AExpr::(typing::ANode::after_typing)";
2650 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
2651 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2652 val_t REGB0;
2653 val_t tmp;
2654 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2655 fra.me.file = LOCATE_syntax___typing;
2656 fra.me.line = 381;
2657 fra.me.meth = LOCATE_syntax___typing___AExpr___after_typing;
2658 fra.me.has_broke = 0;
2659 fra.me.REG_size = 2;
2660 fra.me.nitni_local_ref_head = NULL;
2661 fra.me.REG[0] = NIT_NULL;
2662 fra.me.REG[1] = NIT_NULL;
2663 fra.me.REG[0] = p0;
2664 fra.me.REG[1] = p1;
2665 /* syntax/typing.nit:384 */
2666 REGB0 = TAG_Bool(1);
2667 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
2668 stack_frame_head = fra.me.prev;
2669 return;
2670 }
2671 static const char LOCATE_syntax___typing___AExpr___is_implicit_self[] = "typing::AExpr::is_implicit_self";
2672 val_t syntax___typing___AExpr___is_implicit_self(val_t p0){
2673 struct {struct stack_frame_t me;} fra;
2674 val_t REGB0;
2675 val_t tmp;
2676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2677 fra.me.file = LOCATE_syntax___typing;
2678 fra.me.line = 387;
2679 fra.me.meth = LOCATE_syntax___typing___AExpr___is_implicit_self;
2680 fra.me.has_broke = 0;
2681 fra.me.REG_size = 1;
2682 fra.me.nitni_local_ref_head = NULL;
2683 fra.me.REG[0] = NIT_NULL;
2684 fra.me.REG[0] = p0;
2685 /* syntax/typing.nit:388 */
2686 REGB0 = TAG_Bool(0);
2687 goto label1;
2688 label1: while(0);
2689 stack_frame_head = fra.me.prev;
2690 return REGB0;
2691 }
2692 static const char LOCATE_syntax___typing___AExpr___is_self[] = "typing::AExpr::is_self";
2693 val_t syntax___typing___AExpr___is_self(val_t p0){
2694 struct {struct stack_frame_t me;} fra;
2695 val_t REGB0;
2696 val_t tmp;
2697 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2698 fra.me.file = LOCATE_syntax___typing;
2699 fra.me.line = 390;
2700 fra.me.meth = LOCATE_syntax___typing___AExpr___is_self;
2701 fra.me.has_broke = 0;
2702 fra.me.REG_size = 1;
2703 fra.me.nitni_local_ref_head = NULL;
2704 fra.me.REG[0] = NIT_NULL;
2705 fra.me.REG[0] = p0;
2706 /* syntax/typing.nit:391 */
2707 REGB0 = TAG_Bool(0);
2708 goto label1;
2709 label1: while(0);
2710 stack_frame_head = fra.me.prev;
2711 return REGB0;
2712 }
2713 static const char LOCATE_syntax___typing___AExpr___its_variable[] = "typing::AExpr::its_variable";
2714 val_t syntax___typing___AExpr___its_variable(val_t p0){
2715 struct {struct stack_frame_t me;} fra;
2716 val_t tmp;
2717 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2718 fra.me.file = LOCATE_syntax___typing;
2719 fra.me.line = 393;
2720 fra.me.meth = LOCATE_syntax___typing___AExpr___its_variable;
2721 fra.me.has_broke = 0;
2722 fra.me.REG_size = 1;
2723 fra.me.nitni_local_ref_head = NULL;
2724 fra.me.REG[0] = NIT_NULL;
2725 fra.me.REG[0] = p0;
2726 /* syntax/typing.nit:394 */
2727 fra.me.REG[0] = NIT_NULL;
2728 goto label1;
2729 label1: while(0);
2730 stack_frame_head = fra.me.prev;
2731 return fra.me.REG[0];
2732 }
2733 static const char LOCATE_syntax___typing___AExpr___if_true_flow_ctx[] = "typing::AExpr::if_true_flow_ctx";
2734 val_t syntax___typing___AExpr___if_true_flow_ctx(val_t p0){
2735 struct {struct stack_frame_t me;} fra;
2736 val_t tmp;
2737 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2738 fra.me.file = LOCATE_syntax___typing;
2739 fra.me.line = 396;
2740 fra.me.meth = LOCATE_syntax___typing___AExpr___if_true_flow_ctx;
2741 fra.me.has_broke = 0;
2742 fra.me.REG_size = 1;
2743 fra.me.nitni_local_ref_head = NULL;
2744 fra.me.REG[0] = NIT_NULL;
2745 fra.me.REG[0] = p0;
2746 /* syntax/typing.nit:396 */
2747 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]);
2748 stack_frame_head = fra.me.prev;
2749 return fra.me.REG[0];
2750 }
2751 static const char LOCATE_syntax___typing___AExpr___if_false_flow_ctx[] = "typing::AExpr::if_false_flow_ctx";
2752 val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
2753 struct {struct stack_frame_t me;} fra;
2754 val_t tmp;
2755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2756 fra.me.file = LOCATE_syntax___typing;
2757 fra.me.line = 399;
2758 fra.me.meth = LOCATE_syntax___typing___AExpr___if_false_flow_ctx;
2759 fra.me.has_broke = 0;
2760 fra.me.REG_size = 1;
2761 fra.me.nitni_local_ref_head = NULL;
2762 fra.me.REG[0] = NIT_NULL;
2763 fra.me.REG[0] = p0;
2764 /* syntax/typing.nit:399 */
2765 fra.me.REG[0] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]);
2766 stack_frame_head = fra.me.prev;
2767 return fra.me.REG[0];
2768 }
2769 static const char LOCATE_syntax___typing___AExpr___warn_parentheses[] = "typing::AExpr::warn_parentheses";
2770 void syntax___typing___AExpr___warn_parentheses(val_t p0, val_t p1){
2771 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2772 val_t tmp;
2773 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2774 fra.me.file = LOCATE_syntax___typing;
2775 fra.me.line = 402;
2776 fra.me.meth = LOCATE_syntax___typing___AExpr___warn_parentheses;
2777 fra.me.has_broke = 0;
2778 fra.me.REG_size = 2;
2779 fra.me.nitni_local_ref_head = NULL;
2780 fra.me.REG[0] = NIT_NULL;
2781 fra.me.REG[1] = NIT_NULL;
2782 fra.me.REG[0] = p0;
2783 fra.me.REG[1] = p1;
2784 stack_frame_head = fra.me.prev;
2785 return;
2786 }
2787 static const char LOCATE_syntax___typing___AParExpr___warn_parentheses[] = "typing::AParExpr::(typing::AExpr::warn_parentheses)";
2788 void syntax___typing___AParExpr___warn_parentheses(val_t p0, val_t p1){
2789 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2790 val_t REGB0;
2791 val_t tmp;
2792 static val_t once_value_1; /* Once value */
2793 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2794 fra.me.file = LOCATE_syntax___typing;
2795 fra.me.line = 409;
2796 fra.me.meth = LOCATE_syntax___typing___AParExpr___warn_parentheses;
2797 fra.me.has_broke = 0;
2798 fra.me.REG_size = 3;
2799 fra.me.nitni_local_ref_head = NULL;
2800 fra.me.REG[0] = NIT_NULL;
2801 fra.me.REG[1] = NIT_NULL;
2802 fra.me.REG[2] = NIT_NULL;
2803 fra.me.REG[0] = p0;
2804 fra.me.REG[1] = p1;
2805 /* syntax/typing.nit:411 */
2806 if (!once_value_1) {
2807 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2808 REGB0 = TAG_Int(33);
2809 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2810 once_value_1 = fra.me.REG[2];
2811 register_static_object(&once_value_1);
2812 } else fra.me.REG[2] = once_value_1;
2813 fra.me.REG[2] = fra.me.REG[2];
2814 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2815 stack_frame_head = fra.me.prev;
2816 return;
2817 }
2818 static const char LOCATE_syntax___typing___AParExprs___after_typing[] = "typing::AParExprs::(typing::ANode::after_typing)";
2819 void syntax___typing___AParExprs___after_typing(val_t p0, val_t p1){
2820 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2821 val_t REGB0;
2822 val_t tmp;
2823 static val_t once_value_1; /* Once value */
2824 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2825 fra.me.file = LOCATE_syntax___typing;
2826 fra.me.line = 416;
2827 fra.me.meth = LOCATE_syntax___typing___AParExprs___after_typing;
2828 fra.me.has_broke = 0;
2829 fra.me.REG_size = 3;
2830 fra.me.nitni_local_ref_head = NULL;
2831 fra.me.REG[0] = NIT_NULL;
2832 fra.me.REG[1] = NIT_NULL;
2833 fra.me.REG[2] = NIT_NULL;
2834 fra.me.REG[0] = p0;
2835 fra.me.REG[1] = p1;
2836 /* syntax/typing.nit:418 */
2837 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
2838 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
2839 if (UNTAG_Bool(REGB0)) {
2840 /* syntax/typing.nit:419 */
2841 if (!once_value_1) {
2842 fra.me.REG[2] = BOX_NativeString("Warning: superfluous parentheses.");
2843 REGB0 = TAG_Int(33);
2844 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
2845 once_value_1 = fra.me.REG[2];
2846 register_static_object(&once_value_1);
2847 } else fra.me.REG[2] = once_value_1;
2848 fra.me.REG[2] = fra.me.REG[2];
2849 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2850 }
2851 stack_frame_head = fra.me.prev;
2852 return;
2853 }
2854 static const char LOCATE_syntax___typing___AVardeclExpr___variable[] = "typing::AVardeclExpr::(syntax_base::AVardeclExpr::variable)";
2855 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
2856 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2857 val_t REGB0;
2858 val_t tmp;
2859 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2860 fra.me.file = LOCATE_syntax___typing;
2861 fra.me.line = 426;
2862 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
2863 fra.me.has_broke = 0;
2864 fra.me.REG_size = 2;
2865 fra.me.nitni_local_ref_head = NULL;
2866 fra.me.REG[0] = NIT_NULL;
2867 fra.me.REG[1] = NIT_NULL;
2868 fra.me.REG[0] = p0;
2869 /* syntax/typing.nit:426 */
2870 fra.me.REG[1] = fra.me.REG[0];
2871 fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
2872 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
2873 if (UNTAG_Bool(REGB0)) {
2874 } else {
2875 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 426);
2876 }
2877 goto label1;
2878 label1: while(0);
2879 stack_frame_head = fra.me.prev;
2880 return fra.me.REG[1];
2881 }
2882 static const char LOCATE_syntax___typing___AVardeclExpr___after_typing[] = "typing::AVardeclExpr::(typing::ANode::after_typing)";
2883 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
2884 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2885 val_t REGB0;
2886 val_t REGB1;
2887 val_t tmp;
2888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2889 fra.me.file = LOCATE_syntax___typing;
2890 fra.me.line = 428;
2891 fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___after_typing;
2892 fra.me.has_broke = 0;
2893 fra.me.REG_size = 5;
2894 fra.me.nitni_local_ref_head = NULL;
2895 fra.me.REG[0] = NIT_NULL;
2896 fra.me.REG[1] = NIT_NULL;
2897 fra.me.REG[2] = NIT_NULL;
2898 fra.me.REG[3] = NIT_NULL;
2899 fra.me.REG[4] = NIT_NULL;
2900 fra.me.REG[0] = p0;
2901 fra.me.REG[1] = p1;
2902 /* syntax/typing.nit:430 */
2903 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2904 fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
2905 fra.me.REG[3] = CALL_parser___parser_nodes___AVardeclExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
2906 fra.me.REG[3] = NEW_VarVariable_syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[3]);
2907 /* syntax/typing.nit:431 */
2908 ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]) = fra.me.REG[3];
2909 /* syntax/typing.nit:432 */
2910 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
2911 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2912 /* syntax/typing.nit:433 */
2913 fra.me.REG[2] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2914 /* syntax/typing.nit:434 */
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(0);
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 if (UNTAG_Bool(REGB0)) {
2929 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2930 }
2931 /* syntax/typing.nit:436 */
2932 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2933 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2934 if (UNTAG_Bool(REGB0)) {
2935 } else {
2936 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2937 if (UNTAG_Bool(REGB1)) {
2938 REGB1 = TAG_Bool(0);
2939 REGB0 = REGB1;
2940 } else {
2941 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2942 REGB0 = REGB1;
2943 }
2944 }
2945 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2946 if (UNTAG_Bool(REGB0)) {
2947 /* syntax/typing.nit:437 */
2948 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2949 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2950 if (UNTAG_Bool(REGB0)) {
2951 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 437);
2952 }
2953 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[4])(fra.me.REG[4]);
2954 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2955 if (UNTAG_Bool(REGB0)) {
2956 goto label1;
2957 }
2958 /* syntax/typing.nit:438 */
2959 fra.me.REG[4] = CALL_parser___parser_nodes___AVardeclExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
2960 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2961 if (UNTAG_Bool(REGB0)) {
2962 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 438);
2963 }
2964 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
2965 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2966 /* syntax/typing.nit:439 */
2967 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2968 if (UNTAG_Bool(REGB0)) {
2969 } else {
2970 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2971 if (UNTAG_Bool(REGB1)) {
2972 REGB1 = TAG_Bool(0);
2973 REGB0 = REGB1;
2974 } else {
2975 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2976 REGB0 = REGB1;
2977 }
2978 }
2979 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2980 if (UNTAG_Bool(REGB0)) {
2981 /* syntax/typing.nit:440 */
2982 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2983 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
2984 }
2985 } else {
2986 /* syntax/typing.nit:442 */
2987 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2988 if (UNTAG_Bool(REGB0)) {
2989 } else {
2990 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2991 if (UNTAG_Bool(REGB1)) {
2992 REGB1 = TAG_Bool(0);
2993 REGB0 = REGB1;
2994 } else {
2995 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2996 REGB0 = REGB1;
2997 }
2998 }
2999 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3000 if (UNTAG_Bool(REGB0)) {
3001 /* syntax/typing.nit:443 */
3002 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3003 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3004 if (UNTAG_Bool(REGB0)) {
3005 goto label1;
3006 }
3007 /* syntax/typing.nit:444 */
3008 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3009 if (UNTAG_Bool(REGB0)) {
3010 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 444);
3011 }
3012 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
3013 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3014 } else {
3015 /* syntax/typing.nit:446 */
3016 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
3017 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
3018 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3019 }
3020 }
3021 /* syntax/typing.nit:448 */
3022 REGB0 = TAG_Bool(1);
3023 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3024 label1: while(0);
3025 stack_frame_head = fra.me.prev;
3026 return;
3027 }
3028 static const char LOCATE_syntax___typing___ABlockExpr___accept_typing[] = "typing::ABlockExpr::(typing::ANode::accept_typing)";
3029 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
3030 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3031 val_t REGB0;
3032 val_t tmp;
3033 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3034 fra.me.file = LOCATE_syntax___typing;
3035 fra.me.line = 453;
3036 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3037 fra.me.has_broke = 0;
3038 fra.me.REG_size = 3;
3039 fra.me.nitni_local_ref_head = NULL;
3040 fra.me.REG[0] = NIT_NULL;
3041 fra.me.REG[1] = NIT_NULL;
3042 fra.me.REG[2] = NIT_NULL;
3043 fra.me.REG[0] = p0;
3044 fra.me.REG[1] = p1;
3045 /* syntax/typing.nit:455 */
3046 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3047 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));
3048 /* syntax/typing.nit:464 */
3049 REGB0 = TAG_Bool(1);
3050 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3051 stack_frame_head = fra.me.prev;
3052 return;
3053 }
3054 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){
3055 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3056 val_t REGB0;
3057 fun_t CREG[1];
3058 val_t tmp;
3059 static val_t once_value_2; /* Once value */
3060 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3061 fra.me.file = LOCATE_syntax___typing;
3062 fra.me.line = 0;
3063 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3064 fra.me.has_broke = 0;
3065 fra.me.REG_size = 2;
3066 fra.me.nitni_local_ref_head = NULL;
3067 fra.me.REG[0] = NIT_NULL;
3068 fra.me.REG[1] = NIT_NULL;
3069 fra.me.closure_ctx = closctx_param;
3070 fra.me.closure_funs = CREG;
3071 fra.me.REG[0] = p0;
3072 CREG[0] = clos_fun0;
3073 /* syntax/typing.nit:456 */
3074 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3075 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
3076 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3077 if (UNTAG_Bool(REGB0)) {
3078 /* syntax/typing.nit:457 */
3079 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
3080 } else {
3081 /* syntax/typing.nit:458 */
3082 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3083 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
3084 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3085 if (UNTAG_Bool(REGB0)) {
3086 /* syntax/typing.nit:459 */
3087 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3088 REGB0 = TAG_Bool(1);
3089 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
3090 /* syntax/typing.nit:460 */
3091 if (!once_value_2) {
3092 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
3093 REGB0 = TAG_Int(29);
3094 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
3095 once_value_2 = fra.me.REG[1];
3096 register_static_object(&once_value_2);
3097 } else fra.me.REG[1] = once_value_2;
3098 fra.me.REG[1] = fra.me.REG[1];
3099 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
3100 }
3101 }
3102 stack_frame_head = fra.me.prev;
3103 return;
3104 }
3105 static const char LOCATE_syntax___typing___AReturnExpr___after_typing[] = "typing::AReturnExpr::(typing::ANode::after_typing)";
3106 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
3107 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3108 val_t REGB0;
3109 val_t REGB1;
3110 val_t tmp;
3111 static val_t once_value_1; /* Once value */
3112 static val_t once_value_3; /* Once value */
3113 static val_t once_value_4; /* Once value */
3114 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3115 fra.me.file = LOCATE_syntax___typing;
3116 fra.me.line = 469;
3117 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
3118 fra.me.has_broke = 0;
3119 fra.me.REG_size = 5;
3120 fra.me.nitni_local_ref_head = NULL;
3121 fra.me.REG[0] = NIT_NULL;
3122 fra.me.REG[1] = NIT_NULL;
3123 fra.me.REG[2] = NIT_NULL;
3124 fra.me.REG[3] = NIT_NULL;
3125 fra.me.REG[4] = NIT_NULL;
3126 fra.me.REG[0] = p0;
3127 fra.me.REG[1] = p1;
3128 /* syntax/typing.nit:471 */
3129 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3130 /* syntax/typing.nit:472 */
3131 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
3132 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
3133 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3134 if (UNTAG_Bool(REGB0)) {
3135 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 472);
3136 }
3137 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
3138 /* syntax/typing.nit:474 */
3139 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
3140 if (UNTAG_Bool(REGB0)) {
3141 /* syntax/typing.nit:475 */
3142 if (!once_value_1) {
3143 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
3144 REGB0 = TAG_Int(82);
3145 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3146 once_value_1 = fra.me.REG[3];
3147 register_static_object(&once_value_1);
3148 } else fra.me.REG[3] = once_value_1;
3149 fra.me.REG[3] = fra.me.REG[3];
3150 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3151 /* syntax/typing.nit:476 */
3152 goto label2;
3153 }
3154 /* syntax/typing.nit:479 */
3155 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3156 /* syntax/typing.nit:480 */
3157 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3158 if (UNTAG_Bool(REGB0)) {
3159 } else {
3160 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3161 if (UNTAG_Bool(REGB1)) {
3162 REGB1 = TAG_Bool(0);
3163 REGB0 = REGB1;
3164 } else {
3165 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3166 REGB0 = REGB1;
3167 }
3168 }
3169 if (UNTAG_Bool(REGB0)) {
3170 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3171 if (UNTAG_Bool(REGB0)) {
3172 } else {
3173 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3174 if (UNTAG_Bool(REGB1)) {
3175 REGB1 = TAG_Bool(0);
3176 REGB0 = REGB1;
3177 } else {
3178 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3179 REGB0 = REGB1;
3180 }
3181 }
3182 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3183 } else {
3184 REGB1 = TAG_Bool(0);
3185 REGB0 = REGB1;
3186 }
3187 if (UNTAG_Bool(REGB0)) {
3188 /* syntax/typing.nit:481 */
3189 if (!once_value_3) {
3190 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
3191 REGB0 = TAG_Int(42);
3192 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3193 once_value_3 = fra.me.REG[4];
3194 register_static_object(&once_value_3);
3195 } else fra.me.REG[4] = once_value_3;
3196 fra.me.REG[4] = fra.me.REG[4];
3197 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3198 } else {
3199 /* syntax/typing.nit:482 */
3200 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3201 if (UNTAG_Bool(REGB0)) {
3202 } else {
3203 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3204 if (UNTAG_Bool(REGB1)) {
3205 REGB1 = TAG_Bool(0);
3206 REGB0 = REGB1;
3207 } else {
3208 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3209 REGB0 = REGB1;
3210 }
3211 }
3212 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3213 if (UNTAG_Bool(REGB0)) {
3214 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3215 if (UNTAG_Bool(REGB0)) {
3216 } else {
3217 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3218 if (UNTAG_Bool(REGB1)) {
3219 REGB1 = TAG_Bool(0);
3220 REGB0 = REGB1;
3221 } else {
3222 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3223 REGB0 = REGB1;
3224 }
3225 }
3226 } else {
3227 REGB1 = TAG_Bool(0);
3228 REGB0 = REGB1;
3229 }
3230 if (UNTAG_Bool(REGB0)) {
3231 /* syntax/typing.nit:483 */
3232 if (!once_value_4) {
3233 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
3234 REGB0 = TAG_Int(40);
3235 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3236 once_value_4 = fra.me.REG[4];
3237 register_static_object(&once_value_4);
3238 } else fra.me.REG[4] = once_value_4;
3239 fra.me.REG[4] = fra.me.REG[4];
3240 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3241 } else {
3242 /* syntax/typing.nit:484 */
3243 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3244 if (UNTAG_Bool(REGB0)) {
3245 } else {
3246 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3247 if (UNTAG_Bool(REGB1)) {
3248 REGB1 = TAG_Bool(0);
3249 REGB0 = REGB1;
3250 } else {
3251 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3252 REGB0 = REGB1;
3253 }
3254 }
3255 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3256 if (UNTAG_Bool(REGB0)) {
3257 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3258 if (UNTAG_Bool(REGB0)) {
3259 } else {
3260 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3261 if (UNTAG_Bool(REGB1)) {
3262 REGB1 = TAG_Bool(0);
3263 REGB0 = REGB1;
3264 } else {
3265 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3266 REGB0 = REGB1;
3267 }
3268 }
3269 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3270 } else {
3271 REGB1 = TAG_Bool(0);
3272 REGB0 = REGB1;
3273 }
3274 if (UNTAG_Bool(REGB0)) {
3275 /* syntax/typing.nit:485 */
3276 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3277 }
3278 }
3279 }
3280 /* syntax/typing.nit:487 */
3281 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3282 if (UNTAG_Bool(REGB0)) {
3283 } else {
3284 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3285 if (UNTAG_Bool(REGB1)) {
3286 REGB1 = TAG_Bool(0);
3287 REGB0 = REGB1;
3288 } else {
3289 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3290 REGB0 = REGB1;
3291 }
3292 }
3293 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3294 if (UNTAG_Bool(REGB0)) {
3295 /* syntax/typing.nit:488 */
3296 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3297 if (UNTAG_Bool(REGB0)) {
3298 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 488);
3299 }
3300 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3301 }
3302 /* syntax/typing.nit:490 */
3303 REGB0 = TAG_Bool(1);
3304 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3305 label2: while(0);
3306 stack_frame_head = fra.me.prev;
3307 return;
3308 }
3309 static const char LOCATE_syntax___typing___AContinueExpr___after_typing[] = "typing::AContinueExpr::(typing::ANode::after_typing)";
3310 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3311 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3312 val_t REGB0;
3313 val_t REGB1;
3314 val_t tmp;
3315 static val_t once_value_2; /* Once value */
3316 static val_t once_value_3; /* Once value */
3317 static val_t once_value_4; /* Once value */
3318 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3319 fra.me.file = LOCATE_syntax___typing;
3320 fra.me.line = 495;
3321 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3322 fra.me.has_broke = 0;
3323 fra.me.REG_size = 5;
3324 fra.me.nitni_local_ref_head = NULL;
3325 fra.me.REG[0] = NIT_NULL;
3326 fra.me.REG[1] = NIT_NULL;
3327 fra.me.REG[2] = NIT_NULL;
3328 fra.me.REG[3] = NIT_NULL;
3329 fra.me.REG[4] = NIT_NULL;
3330 fra.me.REG[0] = p0;
3331 fra.me.REG[1] = p1;
3332 /* syntax/typing.nit:497 */
3333 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3334 /* syntax/typing.nit:498 */
3335 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3336 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3337 /* syntax/typing.nit:499 */
3338 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3339 if (UNTAG_Bool(REGB0)) {
3340 } else {
3341 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3342 if (UNTAG_Bool(REGB1)) {
3343 REGB1 = TAG_Bool(0);
3344 REGB0 = REGB1;
3345 } else {
3346 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3347 REGB0 = REGB1;
3348 }
3349 }
3350 if (UNTAG_Bool(REGB0)) {
3351 goto label1;
3352 }
3353 /* syntax/typing.nit:501 */
3354 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3355 if (UNTAG_Bool(REGB0)) {
3356 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 501);
3357 }
3358 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
3359 if (UNTAG_Bool(REGB0)) {
3360 /* syntax/typing.nit:502 */
3361 if (!once_value_2) {
3362 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3363 REGB0 = TAG_Int(39);
3364 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3365 once_value_2 = fra.me.REG[3];
3366 register_static_object(&once_value_2);
3367 } else fra.me.REG[3] = once_value_2;
3368 fra.me.REG[3] = fra.me.REG[3];
3369 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3370 /* syntax/typing.nit:503 */
3371 goto label1;
3372 }
3373 /* syntax/typing.nit:506 */
3374 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3375 if (UNTAG_Bool(REGB0)) {
3376 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 506);
3377 }
3378 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3379 /* syntax/typing.nit:507 */
3380 fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3381 /* syntax/typing.nit:508 */
3382 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3383 if (UNTAG_Bool(REGB0)) {
3384 } else {
3385 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3386 if (UNTAG_Bool(REGB1)) {
3387 REGB1 = TAG_Bool(0);
3388 REGB0 = REGB1;
3389 } else {
3390 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3391 REGB0 = REGB1;
3392 }
3393 }
3394 if (UNTAG_Bool(REGB0)) {
3395 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3396 if (UNTAG_Bool(REGB0)) {
3397 } else {
3398 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3399 if (UNTAG_Bool(REGB1)) {
3400 REGB1 = TAG_Bool(0);
3401 REGB0 = REGB1;
3402 } else {
3403 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3404 REGB0 = REGB1;
3405 }
3406 }
3407 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3408 } else {
3409 REGB1 = TAG_Bool(0);
3410 REGB0 = REGB1;
3411 }
3412 if (UNTAG_Bool(REGB0)) {
3413 /* syntax/typing.nit:509 */
3414 if (!once_value_3) {
3415 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3416 REGB0 = TAG_Int(52);
3417 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3418 once_value_3 = fra.me.REG[4];
3419 register_static_object(&once_value_3);
3420 } else fra.me.REG[4] = once_value_3;
3421 fra.me.REG[4] = fra.me.REG[4];
3422 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3423 } else {
3424 /* syntax/typing.nit:510 */
3425 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3426 if (UNTAG_Bool(REGB0)) {
3427 } else {
3428 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3429 if (UNTAG_Bool(REGB1)) {
3430 REGB1 = TAG_Bool(0);
3431 REGB0 = REGB1;
3432 } else {
3433 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3434 REGB0 = REGB1;
3435 }
3436 }
3437 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3438 if (UNTAG_Bool(REGB0)) {
3439 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3440 if (UNTAG_Bool(REGB0)) {
3441 } else {
3442 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3443 if (UNTAG_Bool(REGB1)) {
3444 REGB1 = TAG_Bool(0);
3445 REGB0 = REGB1;
3446 } else {
3447 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3448 REGB0 = REGB1;
3449 }
3450 }
3451 } else {
3452 REGB1 = TAG_Bool(0);
3453 REGB0 = REGB1;
3454 }
3455 if (UNTAG_Bool(REGB0)) {
3456 /* syntax/typing.nit:511 */
3457 if (!once_value_4) {
3458 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3459 REGB0 = TAG_Int(53);
3460 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3461 once_value_4 = fra.me.REG[4];
3462 register_static_object(&once_value_4);
3463 } else fra.me.REG[4] = once_value_4;
3464 fra.me.REG[4] = fra.me.REG[4];
3465 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3466 } else {
3467 /* syntax/typing.nit:512 */
3468 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3469 if (UNTAG_Bool(REGB0)) {
3470 } else {
3471 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3472 if (UNTAG_Bool(REGB1)) {
3473 REGB1 = TAG_Bool(0);
3474 REGB0 = REGB1;
3475 } else {
3476 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3477 REGB0 = REGB1;
3478 }
3479 }
3480 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3481 if (UNTAG_Bool(REGB0)) {
3482 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3483 if (UNTAG_Bool(REGB0)) {
3484 } else {
3485 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3486 if (UNTAG_Bool(REGB1)) {
3487 REGB1 = TAG_Bool(0);
3488 REGB0 = REGB1;
3489 } else {
3490 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3491 REGB0 = REGB1;
3492 }
3493 }
3494 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3495 } else {
3496 REGB1 = TAG_Bool(0);
3497 REGB0 = REGB1;
3498 }
3499 if (UNTAG_Bool(REGB0)) {
3500 /* syntax/typing.nit:513 */
3501 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3502 }
3503 }
3504 }
3505 /* syntax/typing.nit:515 */
3506 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3507 if (UNTAG_Bool(REGB0)) {
3508 } else {
3509 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3510 if (UNTAG_Bool(REGB1)) {
3511 REGB1 = TAG_Bool(0);
3512 REGB0 = REGB1;
3513 } else {
3514 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3515 REGB0 = REGB1;
3516 }
3517 }
3518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3519 if (UNTAG_Bool(REGB0)) {
3520 /* syntax/typing.nit:516 */
3521 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3522 if (UNTAG_Bool(REGB0)) {
3523 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 516);
3524 }
3525 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3526 }
3527 /* syntax/typing.nit:518 */
3528 REGB0 = TAG_Bool(1);
3529 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3530 label1: while(0);
3531 stack_frame_head = fra.me.prev;
3532 return;
3533 }
3534 static const char LOCATE_syntax___typing___ABreakExpr___after_typing[] = "typing::ABreakExpr::(typing::ANode::after_typing)";
3535 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3536 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3537 val_t REGB0;
3538 val_t REGB1;
3539 val_t tmp;
3540 static val_t once_value_2; /* Once value */
3541 static val_t once_value_3; /* Once value */
3542 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3543 fra.me.file = LOCATE_syntax___typing;
3544 fra.me.line = 523;
3545 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3546 fra.me.has_broke = 0;
3547 fra.me.REG_size = 5;
3548 fra.me.nitni_local_ref_head = NULL;
3549 fra.me.REG[0] = NIT_NULL;
3550 fra.me.REG[1] = NIT_NULL;
3551 fra.me.REG[2] = NIT_NULL;
3552 fra.me.REG[3] = NIT_NULL;
3553 fra.me.REG[4] = NIT_NULL;
3554 fra.me.REG[0] = p0;
3555 fra.me.REG[1] = p1;
3556 /* syntax/typing.nit:525 */
3557 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3558 /* syntax/typing.nit:526 */
3559 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3560 /* syntax/typing.nit:527 */
3561 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3562 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3563 /* syntax/typing.nit:528 */
3564 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3565 if (UNTAG_Bool(REGB0)) {
3566 } else {
3567 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3568 if (UNTAG_Bool(REGB1)) {
3569 REGB1 = TAG_Bool(0);
3570 REGB0 = REGB1;
3571 } else {
3572 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3573 REGB0 = REGB1;
3574 }
3575 }
3576 if (UNTAG_Bool(REGB0)) {
3577 goto label1;
3578 }
3579 /* syntax/typing.nit:530 */
3580 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3581 if (UNTAG_Bool(REGB0)) {
3582 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 530);
3583 }
3584 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3585 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3586 /* syntax/typing.nit:532 */
3587 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3588 if (UNTAG_Bool(REGB0)) {
3589 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 532);
3590 }
3591 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3592 /* syntax/typing.nit:533 */
3593 fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3594 /* syntax/typing.nit:534 */
3595 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3596 if (UNTAG_Bool(REGB0)) {
3597 } else {
3598 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3599 if (UNTAG_Bool(REGB1)) {
3600 REGB1 = TAG_Bool(0);
3601 REGB0 = REGB1;
3602 } else {
3603 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3604 REGB0 = REGB1;
3605 }
3606 }
3607 if (UNTAG_Bool(REGB0)) {
3608 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3609 if (UNTAG_Bool(REGB0)) {
3610 } else {
3611 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3612 if (UNTAG_Bool(REGB1)) {
3613 REGB1 = TAG_Bool(0);
3614 REGB0 = REGB1;
3615 } else {
3616 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3617 REGB0 = REGB1;
3618 }
3619 }
3620 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3621 } else {
3622 REGB1 = TAG_Bool(0);
3623 REGB0 = REGB1;
3624 }
3625 if (UNTAG_Bool(REGB0)) {
3626 /* syntax/typing.nit:535 */
3627 if (!once_value_2) {
3628 fra.me.REG[4] = BOX_NativeString("Error: break with a value required in this block.");
3629 REGB0 = TAG_Int(49);
3630 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3631 once_value_2 = fra.me.REG[4];
3632 register_static_object(&once_value_2);
3633 } else fra.me.REG[4] = once_value_2;
3634 fra.me.REG[4] = fra.me.REG[4];
3635 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3636 } else {
3637 /* syntax/typing.nit:536 */
3638 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3639 if (UNTAG_Bool(REGB0)) {
3640 } else {
3641 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3642 if (UNTAG_Bool(REGB1)) {
3643 REGB1 = TAG_Bool(0);
3644 REGB0 = REGB1;
3645 } else {
3646 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3647 REGB0 = REGB1;
3648 }
3649 }
3650 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3651 if (UNTAG_Bool(REGB0)) {
3652 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3653 if (UNTAG_Bool(REGB0)) {
3654 } else {
3655 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3656 if (UNTAG_Bool(REGB1)) {
3657 REGB1 = TAG_Bool(0);
3658 REGB0 = REGB1;
3659 } else {
3660 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3661 REGB0 = REGB1;
3662 }
3663 }
3664 } else {
3665 REGB1 = TAG_Bool(0);
3666 REGB0 = REGB1;
3667 }
3668 if (UNTAG_Bool(REGB0)) {
3669 /* syntax/typing.nit:537 */
3670 if (!once_value_3) {
3671 fra.me.REG[4] = BOX_NativeString("Error: break without value required in this block.");
3672 REGB0 = TAG_Int(50);
3673 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3674 once_value_3 = fra.me.REG[4];
3675 register_static_object(&once_value_3);
3676 } else fra.me.REG[4] = once_value_3;
3677 fra.me.REG[4] = fra.me.REG[4];
3678 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3679 } else {
3680 /* syntax/typing.nit:538 */
3681 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3682 if (UNTAG_Bool(REGB0)) {
3683 } else {
3684 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3685 if (UNTAG_Bool(REGB1)) {
3686 REGB1 = TAG_Bool(0);
3687 REGB0 = REGB1;
3688 } else {
3689 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3690 REGB0 = REGB1;
3691 }
3692 }
3693 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3694 if (UNTAG_Bool(REGB0)) {
3695 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3696 if (UNTAG_Bool(REGB0)) {
3697 } else {
3698 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3699 if (UNTAG_Bool(REGB1)) {
3700 REGB1 = TAG_Bool(0);
3701 REGB0 = REGB1;
3702 } else {
3703 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3704 REGB0 = REGB1;
3705 }
3706 }
3707 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3708 } else {
3709 REGB1 = TAG_Bool(0);
3710 REGB0 = REGB1;
3711 }
3712 if (UNTAG_Bool(REGB0)) {
3713 /* syntax/typing.nit:540 */
3714 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3715 if (UNTAG_Bool(REGB0)) {
3716 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 540);
3717 }
3718 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3719 }
3720 }
3721 }
3722 /* syntax/typing.nit:542 */
3723 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3724 if (UNTAG_Bool(REGB0)) {
3725 } else {
3726 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3727 if (UNTAG_Bool(REGB1)) {
3728 REGB1 = TAG_Bool(0);
3729 REGB0 = REGB1;
3730 } else {
3731 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3732 REGB0 = REGB1;
3733 }
3734 }
3735 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3736 if (UNTAG_Bool(REGB0)) {
3737 /* syntax/typing.nit:543 */
3738 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3739 if (UNTAG_Bool(REGB0)) {
3740 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 543);
3741 }
3742 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3743 }
3744 /* syntax/typing.nit:545 */
3745 REGB0 = TAG_Bool(1);
3746 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3747 label1: while(0);
3748 stack_frame_head = fra.me.prev;
3749 return;
3750 }
3751 static const char LOCATE_syntax___typing___AAbortExpr___after_typing[] = "typing::AAbortExpr::(typing::ANode::after_typing)";
3752 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3753 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3754 val_t REGB0;
3755 val_t tmp;
3756 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3757 fra.me.file = LOCATE_syntax___typing;
3758 fra.me.line = 550;
3759 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3760 fra.me.has_broke = 0;
3761 fra.me.REG_size = 2;
3762 fra.me.nitni_local_ref_head = NULL;
3763 fra.me.REG[0] = NIT_NULL;
3764 fra.me.REG[1] = NIT_NULL;
3765 fra.me.REG[0] = p0;
3766 fra.me.REG[1] = p1;
3767 /* syntax/typing.nit:552 */
3768 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3769 /* syntax/typing.nit:553 */
3770 REGB0 = TAG_Bool(1);
3771 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3772 stack_frame_head = fra.me.prev;
3773 return;
3774 }
3775 static const char LOCATE_syntax___typing___AAbsControl___escapable[] = "typing::AAbsControl::escapable";
3776 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3777 struct {struct stack_frame_t me;} fra;
3778 val_t tmp;
3779 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3780 fra.me.file = LOCATE_syntax___typing;
3781 fra.me.line = 560;
3782 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3783 fra.me.has_broke = 0;
3784 fra.me.REG_size = 1;
3785 fra.me.nitni_local_ref_head = NULL;
3786 fra.me.REG[0] = NIT_NULL;
3787 fra.me.REG[0] = p0;
3788 /* syntax/typing.nit:560 */
3789 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3790 stack_frame_head = fra.me.prev;
3791 return fra.me.REG[0];
3792 }
3793 static const char LOCATE_syntax___typing___AAbsControl___process_control[] = "typing::AAbsControl::process_control";
3794 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3795 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3796 val_t REGB0;
3797 val_t REGB1;
3798 val_t tmp;
3799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3800 fra.me.file = LOCATE_syntax___typing;
3801 fra.me.line = 563;
3802 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3803 fra.me.has_broke = 0;
3804 fra.me.REG_size = 7;
3805 fra.me.nitni_local_ref_head = NULL;
3806 fra.me.REG[0] = NIT_NULL;
3807 fra.me.REG[1] = NIT_NULL;
3808 fra.me.REG[2] = NIT_NULL;
3809 fra.me.REG[3] = NIT_NULL;
3810 fra.me.REG[4] = NIT_NULL;
3811 fra.me.REG[5] = NIT_NULL;
3812 fra.me.REG[6] = NIT_NULL;
3813 fra.me.REG[0] = p0;
3814 fra.me.REG[1] = p1;
3815 fra.me.REG[2] = p2;
3816 fra.me.REG[3] = p3;
3817 REGB0 = p4;
3818 /* syntax/typing.nit:567 */
3819 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3820 /* syntax/typing.nit:568 */
3821 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3822 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3823 /* syntax/typing.nit:571 */
3824 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3825 /* syntax/typing.nit:572 */
3826 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3827 /* syntax/typing.nit:573 */
3828 if (UNTAG_Bool(REGB0)) {
3829 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3830 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3831 }
3832 /* syntax/typing.nit:576 */
3833 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3834 /* syntax/typing.nit:579 */
3835 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3836 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3837 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3838 if (UNTAG_Bool(REGB1)) {
3839 /* syntax/typing.nit:580 */
3840 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3841 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3842 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3843 }
3844 /* syntax/typing.nit:584 */
3845 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3846 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3847 if (UNTAG_Bool(REGB1)) {
3848 /* syntax/typing.nit:585 */
3849 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3850 /* syntax/typing.nit:586 */
3851 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3852 } else {
3853 /* syntax/typing.nit:588 */
3854 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3855 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]);
3856 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3857 }
3858 /* syntax/typing.nit:591 */
3859 if (UNTAG_Bool(REGB0)) {
3860 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3861 }
3862 /* syntax/typing.nit:592 */
3863 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3864 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3865 /* syntax/typing.nit:593 */
3866 REGB0 = TAG_Bool(1);
3867 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3868 stack_frame_head = fra.me.prev;
3869 return;
3870 }
3871 static const char LOCATE_syntax___typing___AAbsControl___process_control_inside[] = "typing::AAbsControl::process_control_inside";
3872 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3873 struct {struct stack_frame_t me;} fra;
3874 val_t tmp;
3875 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3876 fra.me.file = LOCATE_syntax___typing;
3877 fra.me.line = 596;
3878 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3879 fra.me.has_broke = 0;
3880 fra.me.REG_size = 0;
3881 fra.me.nitni_local_ref_head = NULL;
3882 /* syntax/typing.nit:596 */
3883 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 596);
3884 stack_frame_head = fra.me.prev;
3885 return;
3886 }
3887 static const char LOCATE_syntax___typing___ADoExpr___accept_typing[] = "typing::ADoExpr::(typing::ANode::accept_typing)";
3888 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3889 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3890 val_t REGB0;
3891 val_t tmp;
3892 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3893 fra.me.file = LOCATE_syntax___typing;
3894 fra.me.line = 602;
3895 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3896 fra.me.has_broke = 0;
3897 fra.me.REG_size = 4;
3898 fra.me.nitni_local_ref_head = NULL;
3899 fra.me.REG[0] = NIT_NULL;
3900 fra.me.REG[1] = NIT_NULL;
3901 fra.me.REG[2] = NIT_NULL;
3902 fra.me.REG[3] = NIT_NULL;
3903 fra.me.REG[0] = p0;
3904 fra.me.REG[1] = p1;
3905 /* syntax/typing.nit:604 */
3906 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3907 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3908 REGB0 = TAG_Bool(0);
3909 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);
3910 stack_frame_head = fra.me.prev;
3911 return;
3912 }
3913 static const char LOCATE_syntax___typing___ADoExpr___process_control_inside[] = "typing::ADoExpr::(typing::AAbsControl::process_control_inside)";
3914 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3915 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3916 val_t tmp;
3917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3918 fra.me.file = LOCATE_syntax___typing;
3919 fra.me.line = 607;
3920 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3921 fra.me.has_broke = 0;
3922 fra.me.REG_size = 2;
3923 fra.me.nitni_local_ref_head = NULL;
3924 fra.me.REG[0] = NIT_NULL;
3925 fra.me.REG[1] = NIT_NULL;
3926 fra.me.REG[0] = p0;
3927 fra.me.REG[1] = p1;
3928 /* syntax/typing.nit:609 */
3929 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3930 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3931 stack_frame_head = fra.me.prev;
3932 return;
3933 }
3934 static const char LOCATE_syntax___typing___AIfExpr___accept_typing[] = "typing::AIfExpr::(typing::ANode::accept_typing)";
3935 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3936 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3937 val_t REGB0;
3938 val_t tmp;
3939 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3940 fra.me.file = LOCATE_syntax___typing;
3941 fra.me.line = 614;
3942 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3943 fra.me.has_broke = 0;
3944 fra.me.REG_size = 5;
3945 fra.me.nitni_local_ref_head = NULL;
3946 fra.me.REG[0] = NIT_NULL;
3947 fra.me.REG[1] = NIT_NULL;
3948 fra.me.REG[2] = NIT_NULL;
3949 fra.me.REG[3] = NIT_NULL;
3950 fra.me.REG[4] = NIT_NULL;
3951 fra.me.REG[0] = p0;
3952 fra.me.REG[1] = p1;
3953 /* syntax/typing.nit:616 */
3954 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3955 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3956 /* syntax/typing.nit:617 */
3957 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3958 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3959 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3960 /* syntax/typing.nit:619 */
3961 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3962 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3963 /* syntax/typing.nit:622 */
3964 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3965 /* syntax/typing.nit:623 */
3966 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3967 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3968 /* syntax/typing.nit:626 */
3969 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3970 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3971 /* syntax/typing.nit:629 */
3972 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3973 /* syntax/typing.nit:632 */
3974 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3975 /* syntax/typing.nit:633 */
3976 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3977 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3978 /* syntax/typing.nit:636 */
3979 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3980 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3981 /* syntax/typing.nit:639 */
3982 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3983 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3984 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]);
3985 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3986 /* syntax/typing.nit:640 */
3987 REGB0 = TAG_Bool(1);
3988 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3989 stack_frame_head = fra.me.prev;
3990 return;
3991 }
3992 static const char LOCATE_syntax___typing___AWhileExpr___accept_typing[] = "typing::AWhileExpr::(typing::ANode::accept_typing)";
3993 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
3994 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3995 val_t REGB0;
3996 val_t tmp;
3997 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3998 fra.me.file = LOCATE_syntax___typing;
3999 fra.me.line = 646;
4000 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
4001 fra.me.has_broke = 0;
4002 fra.me.REG_size = 4;
4003 fra.me.nitni_local_ref_head = NULL;
4004 fra.me.REG[0] = NIT_NULL;
4005 fra.me.REG[1] = NIT_NULL;
4006 fra.me.REG[2] = NIT_NULL;
4007 fra.me.REG[3] = NIT_NULL;
4008 fra.me.REG[0] = p0;
4009 fra.me.REG[1] = p1;
4010 /* syntax/typing.nit:648 */
4011 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4012 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4013 REGB0 = TAG_Bool(1);
4014 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);
4015 stack_frame_head = fra.me.prev;
4016 return;
4017 }
4018 static const char LOCATE_syntax___typing___AWhileExpr___process_control_inside[] = "typing::AWhileExpr::(typing::AAbsControl::process_control_inside)";
4019 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
4020 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4021 val_t REGB0;
4022 val_t tmp;
4023 static val_t once_value_1; /* Once value */
4024 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4025 fra.me.file = LOCATE_syntax___typing;
4026 fra.me.line = 651;
4027 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
4028 fra.me.has_broke = 0;
4029 fra.me.REG_size = 5;
4030 fra.me.nitni_local_ref_head = NULL;
4031 fra.me.REG[0] = NIT_NULL;
4032 fra.me.REG[1] = NIT_NULL;
4033 fra.me.REG[2] = NIT_NULL;
4034 fra.me.REG[3] = NIT_NULL;
4035 fra.me.REG[4] = NIT_NULL;
4036 fra.me.REG[0] = p0;
4037 fra.me.REG[1] = p1;
4038 /* syntax/typing.nit:653 */
4039 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4040 /* syntax/typing.nit:656 */
4041 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4042 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4043 /* syntax/typing.nit:657 */
4044 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4045 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4046 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4047 /* syntax/typing.nit:659 */
4048 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4049 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
4050 if (UNTAG_Bool(REGB0)) {
4051 /* syntax/typing.nit:660 */
4052 if (!once_value_1) {
4053 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
4054 REGB0 = TAG_Int(47);
4055 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4056 once_value_1 = fra.me.REG[4];
4057 register_static_object(&once_value_1);
4058 } else fra.me.REG[4] = once_value_1;
4059 fra.me.REG[4] = fra.me.REG[4];
4060 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4061 } else {
4062 /* syntax/typing.nit:662 */
4063 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4064 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
4065 }
4066 /* syntax/typing.nit:666 */
4067 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4068 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4069 /* syntax/typing.nit:669 */
4070 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4071 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4072 /* syntax/typing.nit:672 */
4073 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4074 /* syntax/typing.nit:673 */
4075 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4076 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4077 /* syntax/typing.nit:674 */
4078 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
4079 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4080 if (UNTAG_Bool(REGB0)) {
4081 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 674);
4082 }
4083 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
4084 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4085 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4086 stack_frame_head = fra.me.prev;
4087 return;
4088 }
4089 static const char LOCATE_syntax___typing___ALoopExpr___accept_typing[] = "typing::ALoopExpr::(typing::ANode::accept_typing)";
4090 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
4091 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4092 val_t REGB0;
4093 val_t tmp;
4094 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4095 fra.me.file = LOCATE_syntax___typing;
4096 fra.me.line = 680;
4097 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
4098 fra.me.has_broke = 0;
4099 fra.me.REG_size = 4;
4100 fra.me.nitni_local_ref_head = NULL;
4101 fra.me.REG[0] = NIT_NULL;
4102 fra.me.REG[1] = NIT_NULL;
4103 fra.me.REG[2] = NIT_NULL;
4104 fra.me.REG[3] = NIT_NULL;
4105 fra.me.REG[0] = p0;
4106 fra.me.REG[1] = p1;
4107 /* syntax/typing.nit:682 */
4108 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4109 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4110 REGB0 = TAG_Bool(1);
4111 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);
4112 stack_frame_head = fra.me.prev;
4113 return;
4114 }
4115 static const char LOCATE_syntax___typing___ALoopExpr___process_control_inside[] = "typing::ALoopExpr::(typing::AAbsControl::process_control_inside)";
4116 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
4117 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4118 val_t tmp;
4119 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4120 fra.me.file = LOCATE_syntax___typing;
4121 fra.me.line = 685;
4122 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
4123 fra.me.has_broke = 0;
4124 fra.me.REG_size = 3;
4125 fra.me.nitni_local_ref_head = NULL;
4126 fra.me.REG[0] = NIT_NULL;
4127 fra.me.REG[1] = NIT_NULL;
4128 fra.me.REG[2] = NIT_NULL;
4129 fra.me.REG[0] = p0;
4130 fra.me.REG[1] = p1;
4131 /* syntax/typing.nit:688 */
4132 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4133 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4134 /* syntax/typing.nit:691 */
4135 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4136 stack_frame_head = fra.me.prev;
4137 return;
4138 }
4139 static const char LOCATE_syntax___typing___AForExpr___variables[] = "typing::AForExpr::(syntax_base::AForExpr::variables)";
4140 val_t syntax___typing___AForExpr___variables(val_t p0){
4141 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4142 val_t REGB0;
4143 val_t tmp;
4144 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4145 fra.me.file = LOCATE_syntax___typing;
4146 fra.me.line = 698;
4147 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
4148 fra.me.has_broke = 0;
4149 fra.me.REG_size = 2;
4150 fra.me.nitni_local_ref_head = NULL;
4151 fra.me.REG[0] = NIT_NULL;
4152 fra.me.REG[1] = NIT_NULL;
4153 fra.me.REG[0] = p0;
4154 /* syntax/typing.nit:698 */
4155 fra.me.REG[1] = fra.me.REG[0];
4156 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
4157 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4158 if (UNTAG_Bool(REGB0)) {
4159 } else {
4160 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 698);
4161 }
4162 goto label1;
4163 label1: while(0);
4164 stack_frame_head = fra.me.prev;
4165 return fra.me.REG[1];
4166 }
4167 static const char LOCATE_syntax___typing___AForExpr___accept_typing[] = "typing::AForExpr::(typing::ANode::accept_typing)";
4168 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
4169 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4170 val_t REGB0;
4171 val_t tmp;
4172 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4173 fra.me.file = LOCATE_syntax___typing;
4174 fra.me.line = 700;
4175 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
4176 fra.me.has_broke = 0;
4177 fra.me.REG_size = 4;
4178 fra.me.nitni_local_ref_head = NULL;
4179 fra.me.REG[0] = NIT_NULL;
4180 fra.me.REG[1] = NIT_NULL;
4181 fra.me.REG[2] = NIT_NULL;
4182 fra.me.REG[3] = NIT_NULL;
4183 fra.me.REG[0] = p0;
4184 fra.me.REG[1] = p1;
4185 /* syntax/typing.nit:702 */
4186 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4187 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4188 REGB0 = TAG_Bool(1);
4189 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);
4190 stack_frame_head = fra.me.prev;
4191 return;
4192 }
4193 static const char LOCATE_syntax___typing___AForExpr___process_control_inside[] = "typing::AForExpr::(typing::AAbsControl::process_control_inside)";
4194 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
4195 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4196 val_t tmp;
4197 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4198 fra.me.file = LOCATE_syntax___typing;
4199 fra.me.line = 705;
4200 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
4201 fra.me.has_broke = 0;
4202 fra.me.REG_size = 3;
4203 fra.me.nitni_local_ref_head = NULL;
4204 fra.me.REG[0] = NIT_NULL;
4205 fra.me.REG[1] = NIT_NULL;
4206 fra.me.REG[2] = NIT_NULL;
4207 fra.me.REG[0] = p0;
4208 fra.me.REG[1] = p1;
4209 /* syntax/typing.nit:707 */
4210 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4211 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4212 /* syntax/typing.nit:708 */
4213 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4214 /* syntax/typing.nit:710 */
4215 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4216 /* syntax/typing.nit:713 */
4217 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4218 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4219 /* syntax/typing.nit:716 */
4220 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4221 /* syntax/typing.nit:717 */
4222 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4223 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
4224 stack_frame_head = fra.me.prev;
4225 return;
4226 }
4227 static const char LOCATE_syntax___typing___AForExpr___do_typing[] = "typing::AForExpr::do_typing";
4228 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
4229 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4230 val_t REGB0;
4231 val_t REGB1;
4232 val_t REGB2;
4233 val_t REGB3;
4234 val_t REGB4;
4235 val_t REGB5;
4236 val_t tmp;
4237 static val_t once_value_3; /* Once value */
4238 static val_t once_value_4; /* Once value */
4239 static val_t once_value_5; /* Once value */
4240 static val_t once_value_6; /* Once value */
4241 static val_t once_value_7; /* Once value */
4242 static val_t once_value_8; /* Once value */
4243 static val_t once_value_9; /* Once value */
4244 static val_t once_value_10; /* Once value */
4245 static val_t once_value_11; /* Once value */
4246 static val_t once_value_12; /* Once value */
4247 static val_t once_value_13; /* Once value */
4248 static val_t once_value_14; /* Once value */
4249 static val_t once_value_15; /* Once value */
4250 static val_t once_value_16; /* Once value */
4251 static val_t once_value_17; /* Once value */
4252 static val_t once_value_18; /* Once value */
4253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4254 fra.me.file = LOCATE_syntax___typing;
4255 fra.me.line = 720;
4256 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4257 fra.me.has_broke = 0;
4258 fra.me.REG_size = 8;
4259 fra.me.nitni_local_ref_head = NULL;
4260 fra.me.REG[0] = NIT_NULL;
4261 fra.me.REG[1] = NIT_NULL;
4262 fra.me.REG[2] = NIT_NULL;
4263 fra.me.REG[3] = NIT_NULL;
4264 fra.me.REG[4] = NIT_NULL;
4265 fra.me.REG[5] = NIT_NULL;
4266 fra.me.REG[6] = NIT_NULL;
4267 fra.me.REG[7] = NIT_NULL;
4268 fra.me.REG[0] = p0;
4269 fra.me.REG[1] = p1;
4270 /* syntax/typing.nit:723 */
4271 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
4272 /* syntax/typing.nit:724 */
4273 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
4274 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));
4275 /* syntax/typing.nit:729 */
4276 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
4277 /* syntax/typing.nit:732 */
4278 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4279 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4280 /* syntax/typing.nit:733 */
4281 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4282 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4283 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4284 if (UNTAG_Bool(REGB0)) {
4285 goto label2;
4286 }
4287 /* syntax/typing.nit:734 */
4288 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4289 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4290 /* syntax/typing.nit:736 */
4291 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4292 if (UNTAG_Bool(REGB0)) {
4293 /* syntax/typing.nit:737 */
4294 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4295 if (!once_value_3) {
4296 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
4297 REGB0 = TAG_Int(43);
4298 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4299 once_value_3 = fra.me.REG[5];
4300 register_static_object(&once_value_3);
4301 } else fra.me.REG[5] = once_value_3;
4302 fra.me.REG[5] = fra.me.REG[5];
4303 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4304 /* syntax/typing.nit:738 */
4305 goto label2;
4306 }
4307 /* syntax/typing.nit:740 */
4308 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4309 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
4310 /* syntax/typing.nit:743 */
4311 if (!once_value_4) {
4312 if (!once_value_5) {
4313 fra.me.REG[5] = BOX_NativeString("iterate");
4314 REGB0 = TAG_Int(7);
4315 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4316 once_value_5 = fra.me.REG[5];
4317 register_static_object(&once_value_5);
4318 } else fra.me.REG[5] = once_value_5;
4319 fra.me.REG[5] = fra.me.REG[5];
4320 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4321 once_value_4 = fra.me.REG[5];
4322 register_static_object(&once_value_4);
4323 } else fra.me.REG[5] = once_value_4;
4324 fra.me.REG[5] = fra.me.REG[5];
4325 /* syntax/typing.nit:744 */
4326 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4327 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4328 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4329 if (UNTAG_Bool(REGB0)) {
4330 /* syntax/typing.nit:745 */
4331 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4332 REGB0 = TAG_Int(3);
4333 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4334 if (!once_value_6) {
4335 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
4336 REGB0 = TAG_Int(60);
4337 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4338 once_value_6 = fra.me.REG[7];
4339 register_static_object(&once_value_6);
4340 } else fra.me.REG[7] = once_value_6;
4341 fra.me.REG[7] = fra.me.REG[7];
4342 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4343 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4344 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4345 if (!once_value_7) {
4346 fra.me.REG[7] = BOX_NativeString(".");
4347 REGB0 = TAG_Int(1);
4348 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4349 once_value_7 = fra.me.REG[7];
4350 register_static_object(&once_value_7);
4351 } else fra.me.REG[7] = once_value_7;
4352 fra.me.REG[7] = fra.me.REG[7];
4353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4354 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4355 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4356 /* syntax/typing.nit:746 */
4357 goto label2;
4358 }
4359 /* syntax/typing.nit:748 */
4360 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4361 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4362 /* syntax/typing.nit:749 */
4363 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4364 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4365 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4366 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4367 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);
4368 /* syntax/typing.nit:750 */
4369 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4370 /* syntax/typing.nit:751 */
4371 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4372 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4373 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4374 if (UNTAG_Bool(REGB0)) {
4375 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4376 fra.me.REG[3] = fra.me.REG[5];
4377 }
4378 /* syntax/typing.nit:752 */
4379 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4380 REGB1 = TAG_Int(0);
4381 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4382 if (UNTAG_Bool(REGB2)) {
4383 } else {
4384 /* ../lib/standard/kernel.nit:230 */
4385 REGB1 = TAG_Bool((REGB0)==(REGB1));
4386 /* syntax/typing.nit:752 */
4387 REGB2 = REGB1;
4388 }
4389 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4390 if (UNTAG_Bool(REGB2)) {
4391 /* syntax/typing.nit:753 */
4392 if (!once_value_8) {
4393 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4394 REGB2 = TAG_Int(63);
4395 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4396 once_value_8 = fra.me.REG[5];
4397 register_static_object(&once_value_8);
4398 } else fra.me.REG[5] = once_value_8;
4399 fra.me.REG[5] = fra.me.REG[5];
4400 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4401 /* syntax/typing.nit:754 */
4402 goto label2;
4403 } else {
4404 /* syntax/typing.nit:755 */
4405 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4406 /* ../lib/standard/collection/array.nit:24 */
4407 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4408 if (UNTAG_Bool(REGB2)) {
4409 } else {
4410 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4411 }
4412 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4413 /* syntax/typing.nit:755 */
4414 REGB1 = TAG_Int(1);
4415 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4416 if (UNTAG_Bool(REGB0)) {
4417 } else {
4418 /* ../lib/standard/kernel.nit:230 */
4419 REGB1 = TAG_Bool((REGB2)==(REGB1));
4420 /* syntax/typing.nit:755 */
4421 REGB0 = REGB1;
4422 }
4423 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4424 if (UNTAG_Bool(REGB0)) {
4425 /* syntax/typing.nit:756 */
4426 if (!once_value_9) {
4427 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4428 REGB0 = TAG_Int(62);
4429 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4430 once_value_9 = fra.me.REG[5];
4431 register_static_object(&once_value_9);
4432 } else fra.me.REG[5] = once_value_9;
4433 fra.me.REG[5] = fra.me.REG[5];
4434 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4435 /* syntax/typing.nit:757 */
4436 goto label2;
4437 }
4438 }
4439 /* syntax/typing.nit:759 */
4440 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4441 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4442 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4443 if (UNTAG_Bool(REGB0)) {
4444 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 759);
4445 }
4446 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4447 fra.me.REG[3] = fra.me.REG[5];
4448 /* syntax/typing.nit:760 */
4449 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4450 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4451 if (UNTAG_Bool(REGB0)) {
4452 } else {
4453 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4454 if (UNTAG_Bool(REGB1)) {
4455 REGB1 = TAG_Bool(0);
4456 REGB0 = REGB1;
4457 } else {
4458 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4459 REGB0 = REGB1;
4460 }
4461 }
4462 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4463 if (UNTAG_Bool(REGB0)) {
4464 /* syntax/typing.nit:761 */
4465 if (!once_value_10) {
4466 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4467 REGB0 = TAG_Int(73);
4468 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4469 once_value_10 = fra.me.REG[5];
4470 register_static_object(&once_value_10);
4471 } else fra.me.REG[5] = once_value_10;
4472 fra.me.REG[5] = fra.me.REG[5];
4473 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4474 /* syntax/typing.nit:762 */
4475 goto label2;
4476 }
4477 /* ../lib/standard/collection/array.nit:24 */
4478 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4479 if (UNTAG_Bool(REGB0)) {
4480 } else {
4481 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4482 }
4483 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4484 /* syntax/typing.nit:764 */
4485 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4486 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4487 if (UNTAG_Bool(REGB2)) {
4488 } else {
4489 /* ../lib/standard/kernel.nit:230 */
4490 REGB1 = TAG_Bool((REGB0)==(REGB1));
4491 /* syntax/typing.nit:764 */
4492 REGB2 = REGB1;
4493 }
4494 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4495 if (UNTAG_Bool(REGB2)) {
4496 /* syntax/typing.nit:765 */
4497 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4498 REGB1 = TAG_Int(1);
4499 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4500 if (UNTAG_Bool(REGB0)) {
4501 } else {
4502 /* ../lib/standard/kernel.nit:230 */
4503 REGB1 = TAG_Bool((REGB2)==(REGB1));
4504 /* syntax/typing.nit:765 */
4505 REGB0 = REGB1;
4506 }
4507 if (UNTAG_Bool(REGB0)) {
4508 /* syntax/typing.nit:766 */
4509 REGB0 = TAG_Int(7);
4510 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4511 if (!once_value_11) {
4512 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4513 REGB0 = TAG_Int(16);
4514 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4515 once_value_11 = fra.me.REG[4];
4516 register_static_object(&once_value_11);
4517 } else fra.me.REG[4] = once_value_11;
4518 fra.me.REG[4] = fra.me.REG[4];
4519 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4520 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4521 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4522 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4523 if (!once_value_12) {
4524 fra.me.REG[4] = BOX_NativeString(" variable ");
4525 REGB0 = TAG_Int(10);
4526 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4527 once_value_12 = fra.me.REG[4];
4528 register_static_object(&once_value_12);
4529 } else fra.me.REG[4] = once_value_12;
4530 fra.me.REG[4] = fra.me.REG[4];
4531 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4532 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4534 if (!once_value_13) {
4535 fra.me.REG[4] = BOX_NativeString(", found ");
4536 REGB0 = TAG_Int(8);
4537 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4538 once_value_13 = fra.me.REG[4];
4539 register_static_object(&once_value_13);
4540 } else fra.me.REG[4] = once_value_13;
4541 fra.me.REG[4] = fra.me.REG[4];
4542 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4543 /* ../lib/standard/collection/array.nit:24 */
4544 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4545 if (UNTAG_Bool(REGB0)) {
4546 } else {
4547 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4548 }
4549 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4550 /* syntax/typing.nit:766 */
4551 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4552 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4553 if (!once_value_14) {
4554 fra.me.REG[4] = BOX_NativeString(".");
4555 REGB0 = TAG_Int(1);
4556 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4557 once_value_14 = fra.me.REG[4];
4558 register_static_object(&once_value_14);
4559 } else fra.me.REG[4] = once_value_14;
4560 fra.me.REG[4] = fra.me.REG[4];
4561 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4562 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4563 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4564 } else {
4565 /* syntax/typing.nit:768 */
4566 REGB0 = TAG_Int(7);
4567 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4568 if (!once_value_15) {
4569 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4570 REGB0 = TAG_Int(16);
4571 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4572 once_value_15 = fra.me.REG[4];
4573 register_static_object(&once_value_15);
4574 } else fra.me.REG[4] = once_value_15;
4575 fra.me.REG[4] = fra.me.REG[4];
4576 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4577 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4578 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4579 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4580 if (!once_value_16) {
4581 fra.me.REG[4] = BOX_NativeString(" variables ");
4582 REGB0 = TAG_Int(11);
4583 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4584 once_value_16 = fra.me.REG[4];
4585 register_static_object(&once_value_16);
4586 } else fra.me.REG[4] = once_value_16;
4587 fra.me.REG[4] = fra.me.REG[4];
4588 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4589 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4590 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4591 if (!once_value_17) {
4592 fra.me.REG[4] = BOX_NativeString(", found ");
4593 REGB0 = TAG_Int(8);
4594 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4595 once_value_17 = fra.me.REG[4];
4596 register_static_object(&once_value_17);
4597 } else fra.me.REG[4] = once_value_17;
4598 fra.me.REG[4] = fra.me.REG[4];
4599 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4600 /* ../lib/standard/collection/array.nit:24 */
4601 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4602 if (UNTAG_Bool(REGB0)) {
4603 } else {
4604 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4605 }
4606 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4607 /* syntax/typing.nit:768 */
4608 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4609 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4610 if (!once_value_18) {
4611 fra.me.REG[4] = BOX_NativeString(".");
4612 REGB0 = TAG_Int(1);
4613 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4614 once_value_18 = fra.me.REG[4];
4615 register_static_object(&once_value_18);
4616 } else fra.me.REG[4] = once_value_18;
4617 fra.me.REG[4] = fra.me.REG[4];
4618 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4619 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4620 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4621 }
4622 /* syntax/typing.nit:770 */
4623 goto label2;
4624 }
4625 /* syntax/typing.nit:774 */
4626 REGB0 = TAG_Int(0);
4627 /* ../lib/standard/collection/array.nit:24 */
4628 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4629 if (UNTAG_Bool(REGB1)) {
4630 } else {
4631 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4632 }
4633 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4634 /* ../lib/standard/kernel.nit:355 */
4635 while(1) {
4636 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4637 if (UNTAG_Bool(REGB2)) {
4638 } else {
4639 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4640 }
4641 /* ../lib/standard/kernel.nit:235 */
4642 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4643 /* ../lib/standard/kernel.nit:355 */
4644 if (UNTAG_Bool(REGB2)) {
4645 /* syntax/typing.nit:774 */
4646 REGB2 = REGB0;
4647 /* ../lib/standard/collection/array.nit:278 */
4648 fra.me.REG[5] = fra.me.REG[2];
4649 REGB3 = REGB2;
4650 /* ../lib/standard/collection/array.nit:280 */
4651 REGB4 = TAG_Int(0);
4652 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4653 if (UNTAG_Bool(REGB5)) {
4654 } else {
4655 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4656 }
4657 /* ../lib/standard/kernel.nit:236 */
4658 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4659 /* ../lib/standard/collection/array.nit:280 */
4660 if (UNTAG_Bool(REGB4)) {
4661 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4662 if (UNTAG_Bool(REGB4)) {
4663 } else {
4664 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
4665 }
4666 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4667 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4668 if (UNTAG_Bool(REGB5)) {
4669 } else {
4670 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4671 }
4672 /* ../lib/standard/kernel.nit:235 */
4673 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4674 } else {
4675 /* ../lib/standard/collection/array.nit:280 */
4676 REGB5 = TAG_Bool(0);
4677 REGB4 = REGB5;
4678 }
4679 if (UNTAG_Bool(REGB4)) {
4680 } else {
4681 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
4682 }
4683 /* ../lib/standard/collection/array.nit:281 */
4684 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4685 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4686 if (UNTAG_Bool(REGB4)) {
4687 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
4688 }
4689 /* ../lib/standard/collection/array.nit:718 */
4690 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4691 /* ../lib/standard/collection/array.nit:281 */
4692 goto label19;
4693 label19: while(0);
4694 /* syntax/typing.nit:775 */
4695 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4696 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4697 if (UNTAG_Bool(REGB2)) {
4698 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 775);
4699 }
4700 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4701 /* ../lib/standard/kernel.nit:357 */
4702 REGB2 = TAG_Int(1);
4703 /* ../lib/standard/kernel.nit:238 */
4704 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4705 /* ../lib/standard/kernel.nit:357 */
4706 REGB0 = REGB2;
4707 } else {
4708 /* ../lib/standard/kernel.nit:355 */
4709 goto label20;
4710 }
4711 }
4712 label20: while(0);
4713 label2: while(0);
4714 stack_frame_head = fra.me.prev;
4715 return;
4716 }
4717 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){
4718 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4719 fun_t CREG[1];
4720 val_t tmp;
4721 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4722 fra.me.file = LOCATE_syntax___typing;
4723 fra.me.line = 0;
4724 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4725 fra.me.has_broke = 0;
4726 fra.me.REG_size = 2;
4727 fra.me.nitni_local_ref_head = NULL;
4728 fra.me.REG[0] = NIT_NULL;
4729 fra.me.REG[1] = NIT_NULL;
4730 fra.me.closure_ctx = closctx_param;
4731 fra.me.closure_funs = CREG;
4732 fra.me.REG[0] = p0;
4733 CREG[0] = clos_fun0;
4734 /* syntax/typing.nit:725 */
4735 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4736 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4737 /* syntax/typing.nit:726 */
4738 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4739 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4740 /* syntax/typing.nit:727 */
4741 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4742 stack_frame_head = fra.me.prev;
4743 return;
4744 }
4745 static const char LOCATE_syntax___typing___AAssertExpr___accept_typing[] = "typing::AAssertExpr::(typing::ANode::accept_typing)";
4746 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4747 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4748 val_t REGB0;
4749 val_t REGB1;
4750 val_t tmp;
4751 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4752 fra.me.file = LOCATE_syntax___typing;
4753 fra.me.line = 781;
4754 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4755 fra.me.has_broke = 0;
4756 fra.me.REG_size = 4;
4757 fra.me.nitni_local_ref_head = NULL;
4758 fra.me.REG[0] = NIT_NULL;
4759 fra.me.REG[1] = NIT_NULL;
4760 fra.me.REG[2] = NIT_NULL;
4761 fra.me.REG[3] = NIT_NULL;
4762 fra.me.REG[0] = p0;
4763 fra.me.REG[1] = p1;
4764 /* syntax/typing.nit:784 */
4765 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4766 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4767 /* syntax/typing.nit:785 */
4768 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4769 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4770 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4771 /* syntax/typing.nit:786 */
4772 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4773 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
4774 /* syntax/typing.nit:789 */
4775 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4776 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4777 if (UNTAG_Bool(REGB0)) {
4778 } else {
4779 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4780 if (UNTAG_Bool(REGB1)) {
4781 REGB1 = TAG_Bool(0);
4782 REGB0 = REGB1;
4783 } else {
4784 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4785 REGB0 = REGB1;
4786 }
4787 }
4788 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4789 if (UNTAG_Bool(REGB0)) {
4790 /* syntax/typing.nit:790 */
4791 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4792 /* syntax/typing.nit:791 */
4793 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4794 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4795 /* syntax/typing.nit:792 */
4796 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4797 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4798 /* syntax/typing.nit:793 */
4799 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4800 }
4801 /* syntax/typing.nit:797 */
4802 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4803 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4804 /* syntax/typing.nit:798 */
4805 REGB0 = TAG_Bool(1);
4806 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4807 stack_frame_head = fra.me.prev;
4808 return;
4809 }
4810 static const char LOCATE_syntax___typing___AVarFormExpr___variable[] = "typing::AVarFormExpr::(syntax_base::AVarFormExpr::variable)";
4811 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4812 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4813 val_t REGB0;
4814 val_t tmp;
4815 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4816 fra.me.file = LOCATE_syntax___typing;
4817 fra.me.line = 804;
4818 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4819 fra.me.has_broke = 0;
4820 fra.me.REG_size = 2;
4821 fra.me.nitni_local_ref_head = NULL;
4822 fra.me.REG[0] = NIT_NULL;
4823 fra.me.REG[1] = NIT_NULL;
4824 fra.me.REG[0] = p0;
4825 /* syntax/typing.nit:804 */
4826 fra.me.REG[1] = fra.me.REG[0];
4827 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4828 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4829 if (UNTAG_Bool(REGB0)) {
4830 } else {
4831 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 804);
4832 }
4833 goto label1;
4834 label1: while(0);
4835 stack_frame_head = fra.me.prev;
4836 return fra.me.REG[1];
4837 }
4838 static const char LOCATE_syntax___typing___AVarExpr___its_variable[] = "typing::AVarExpr::(typing::AExpr::its_variable)";
4839 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4840 struct {struct stack_frame_t me;} fra;
4841 val_t tmp;
4842 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4843 fra.me.file = LOCATE_syntax___typing;
4844 fra.me.line = 808;
4845 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4846 fra.me.has_broke = 0;
4847 fra.me.REG_size = 1;
4848 fra.me.nitni_local_ref_head = NULL;
4849 fra.me.REG[0] = NIT_NULL;
4850 fra.me.REG[0] = p0;
4851 /* syntax/typing.nit:808 */
4852 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4853 goto label1;
4854 label1: while(0);
4855 stack_frame_head = fra.me.prev;
4856 return fra.me.REG[0];
4857 }
4858 static const char LOCATE_syntax___typing___AVarExpr___after_typing[] = "typing::AVarExpr::(typing::ANode::after_typing)";
4859 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4860 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4861 val_t REGB0;
4862 val_t REGB1;
4863 val_t tmp;
4864 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4865 fra.me.file = LOCATE_syntax___typing;
4866 fra.me.line = 810;
4867 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4868 fra.me.has_broke = 0;
4869 fra.me.REG_size = 4;
4870 fra.me.nitni_local_ref_head = NULL;
4871 fra.me.REG[0] = NIT_NULL;
4872 fra.me.REG[1] = NIT_NULL;
4873 fra.me.REG[2] = NIT_NULL;
4874 fra.me.REG[3] = NIT_NULL;
4875 fra.me.REG[0] = p0;
4876 fra.me.REG[1] = p1;
4877 /* syntax/typing.nit:812 */
4878 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4879 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4880 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4881 /* syntax/typing.nit:813 */
4882 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4883 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4884 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4885 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4886 /* syntax/typing.nit:814 */
4887 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4888 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4889 if (UNTAG_Bool(REGB0)) {
4890 } else {
4891 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4892 if (UNTAG_Bool(REGB1)) {
4893 REGB1 = TAG_Bool(0);
4894 REGB0 = REGB1;
4895 } else {
4896 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4897 REGB0 = REGB1;
4898 }
4899 }
4900 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4901 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4902 stack_frame_head = fra.me.prev;
4903 return;
4904 }
4905 static const char LOCATE_syntax___typing___AVarAssignExpr___after_typing[] = "typing::AVarAssignExpr::(typing::ANode::after_typing)";
4906 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4907 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4908 val_t REGB0;
4909 val_t REGB1;
4910 val_t tmp;
4911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4912 fra.me.file = LOCATE_syntax___typing;
4913 fra.me.line = 819;
4914 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4915 fra.me.has_broke = 0;
4916 fra.me.REG_size = 5;
4917 fra.me.nitni_local_ref_head = NULL;
4918 fra.me.REG[0] = NIT_NULL;
4919 fra.me.REG[1] = NIT_NULL;
4920 fra.me.REG[2] = NIT_NULL;
4921 fra.me.REG[3] = NIT_NULL;
4922 fra.me.REG[4] = NIT_NULL;
4923 fra.me.REG[0] = p0;
4924 fra.me.REG[1] = p1;
4925 /* syntax/typing.nit:821 */
4926 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4927 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4928 /* syntax/typing.nit:824 */
4929 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4930 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4931 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4932 /* syntax/typing.nit:825 */
4933 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4934 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4935 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4936 if (UNTAG_Bool(REGB0)) {
4937 goto label1;
4938 }
4939 /* syntax/typing.nit:826 */
4940 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4941 if (UNTAG_Bool(REGB0)) {
4942 } else {
4943 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4944 if (UNTAG_Bool(REGB1)) {
4945 REGB1 = TAG_Bool(0);
4946 REGB0 = REGB1;
4947 } else {
4948 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4949 REGB0 = REGB1;
4950 }
4951 }
4952 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4953 if (UNTAG_Bool(REGB0)) {
4954 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4955 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]);
4956 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4957 } else {
4958 REGB1 = TAG_Bool(0);
4959 REGB0 = REGB1;
4960 }
4961 if (UNTAG_Bool(REGB0)) {
4962 goto label1;
4963 }
4964 /* syntax/typing.nit:829 */
4965 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4966 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4967 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4968 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4969 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]);
4970 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4971 /* syntax/typing.nit:831 */
4972 REGB0 = TAG_Bool(1);
4973 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4974 label1: while(0);
4975 stack_frame_head = fra.me.prev;
4976 return;
4977 }
4978 static const char LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing[] = "typing::AReassignFormExpr::do_rvalue_typing";
4979 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4980 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4981 val_t REGB0;
4982 val_t REGB1;
4983 val_t tmp;
4984 static val_t once_value_2; /* Once value */
4985 static val_t once_value_3; /* Once value */
4986 static val_t once_value_4; /* Once value */
4987 static val_t once_value_5; /* Once value */
4988 static val_t once_value_6; /* Once value */
4989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4990 fra.me.file = LOCATE_syntax___typing;
4991 fra.me.line = 836;
4992 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
4993 fra.me.has_broke = 0;
4994 fra.me.REG_size = 8;
4995 fra.me.nitni_local_ref_head = NULL;
4996 fra.me.REG[0] = NIT_NULL;
4997 fra.me.REG[1] = NIT_NULL;
4998 fra.me.REG[2] = NIT_NULL;
4999 fra.me.REG[3] = NIT_NULL;
5000 fra.me.REG[4] = NIT_NULL;
5001 fra.me.REG[5] = NIT_NULL;
5002 fra.me.REG[6] = NIT_NULL;
5003 fra.me.REG[7] = NIT_NULL;
5004 fra.me.REG[0] = p0;
5005 fra.me.REG[1] = p1;
5006 fra.me.REG[2] = p2;
5007 /* syntax/typing.nit:841 */
5008 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5009 if (UNTAG_Bool(REGB0)) {
5010 } else {
5011 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5012 if (UNTAG_Bool(REGB1)) {
5013 REGB1 = TAG_Bool(0);
5014 REGB0 = REGB1;
5015 } else {
5016 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5017 REGB0 = REGB1;
5018 }
5019 }
5020 if (UNTAG_Bool(REGB0)) {
5021 /* syntax/typing.nit:842 */
5022 fra.me.REG[3] = NIT_NULL;
5023 goto label1;
5024 }
5025 /* syntax/typing.nit:844 */
5026 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
5027 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
5028 /* syntax/typing.nit:845 */
5029 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*/;
5030 if (UNTAG_Bool(REGB0)) {
5031 /* syntax/typing.nit:846 */
5032 REGB0 = TAG_Int(3);
5033 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5034 if (!once_value_2) {
5035 fra.me.REG[6] = BOX_NativeString("Error: Method '");
5036 REGB0 = TAG_Int(15);
5037 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5038 once_value_2 = fra.me.REG[6];
5039 register_static_object(&once_value_2);
5040 } else fra.me.REG[6] = once_value_2;
5041 fra.me.REG[6] = fra.me.REG[6];
5042 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5043 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5044 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5045 if (!once_value_3) {
5046 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
5047 REGB0 = TAG_Int(17);
5048 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5049 once_value_3 = fra.me.REG[6];
5050 register_static_object(&once_value_3);
5051 } else fra.me.REG[6] = once_value_3;
5052 fra.me.REG[6] = fra.me.REG[6];
5053 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5054 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5055 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5056 /* syntax/typing.nit:847 */
5057 fra.me.REG[3] = NIT_NULL;
5058 goto label1;
5059 }
5060 /* syntax/typing.nit:849 */
5061 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5062 if (UNTAG_Bool(REGB0)) {
5063 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 849);
5064 }
5065 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
5066 /* syntax/typing.nit:850 */
5067 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5068 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5069 if (UNTAG_Bool(REGB0)) {
5070 /* syntax/typing.nit:851 */
5071 REGB0 = TAG_Int(5);
5072 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5073 if (!once_value_4) {
5074 fra.me.REG[7] = BOX_NativeString("Error: Method '");
5075 REGB0 = TAG_Int(15);
5076 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5077 once_value_4 = fra.me.REG[7];
5078 register_static_object(&once_value_4);
5079 } else fra.me.REG[7] = once_value_4;
5080 fra.me.REG[7] = fra.me.REG[7];
5081 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5082 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5083 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5084 if (!once_value_5) {
5085 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
5086 REGB0 = TAG_Int(20);
5087 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5088 once_value_5 = fra.me.REG[7];
5089 register_static_object(&once_value_5);
5090 } else fra.me.REG[7] = once_value_5;
5091 fra.me.REG[7] = fra.me.REG[7];
5092 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5093 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5094 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5095 if (!once_value_6) {
5096 fra.me.REG[7] = BOX_NativeString(".");
5097 REGB0 = TAG_Int(1);
5098 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5099 once_value_6 = fra.me.REG[7];
5100 register_static_object(&once_value_6);
5101 } else fra.me.REG[7] = once_value_6;
5102 fra.me.REG[7] = fra.me.REG[7];
5103 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5104 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5105 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5106 /* syntax/typing.nit:852 */
5107 fra.me.REG[3] = NIT_NULL;
5108 goto label1;
5109 }
5110 /* syntax/typing.nit:854 */
5111 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5112 /* syntax/typing.nit:855 */
5113 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5114 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5115 REGB0 = TAG_Bool(0);
5116 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);
5117 /* syntax/typing.nit:856 */
5118 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5119 /* syntax/typing.nit:857 */
5120 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
5121 /* syntax/typing.nit:858 */
5122 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5123 REGB0 = TAG_Int(0);
5124 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
5125 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
5126 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]);
5127 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5128 if (UNTAG_Bool(REGB0)) {
5129 fra.me.REG[3] = NIT_NULL;
5130 goto label1;
5131 }
5132 /* syntax/typing.nit:859 */
5133 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
5134 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5135 if (UNTAG_Bool(REGB0)) {
5136 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 859);
5137 }
5138 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
5139 fra.me.REG[3] = fra.me.REG[2];
5140 goto label1;
5141 label1: while(0);
5142 stack_frame_head = fra.me.prev;
5143 return fra.me.REG[3];
5144 }
5145 static const char LOCATE_syntax___typing___AReassignFormExpr___assign_method[] = "typing::AReassignFormExpr::(syntax_base::AReassignFormExpr::assign_method)";
5146 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
5147 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5148 val_t REGB0;
5149 val_t tmp;
5150 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5151 fra.me.file = LOCATE_syntax___typing;
5152 fra.me.line = 862;
5153 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
5154 fra.me.has_broke = 0;
5155 fra.me.REG_size = 2;
5156 fra.me.nitni_local_ref_head = NULL;
5157 fra.me.REG[0] = NIT_NULL;
5158 fra.me.REG[1] = NIT_NULL;
5159 fra.me.REG[0] = p0;
5160 /* syntax/typing.nit:862 */
5161 fra.me.REG[1] = fra.me.REG[0];
5162 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
5163 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5164 if (UNTAG_Bool(REGB0)) {
5165 } else {
5166 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 862);
5167 }
5168 goto label1;
5169 label1: while(0);
5170 stack_frame_head = fra.me.prev;
5171 return fra.me.REG[1];
5172 }
5173 static const char LOCATE_syntax___typing___AVarReassignExpr___after_typing[] = "typing::AVarReassignExpr::(typing::ANode::after_typing)";
5174 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
5175 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5176 val_t REGB0;
5177 val_t REGB1;
5178 val_t tmp;
5179 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5180 fra.me.file = LOCATE_syntax___typing;
5181 fra.me.line = 867;
5182 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
5183 fra.me.has_broke = 0;
5184 fra.me.REG_size = 5;
5185 fra.me.nitni_local_ref_head = NULL;
5186 fra.me.REG[0] = NIT_NULL;
5187 fra.me.REG[1] = NIT_NULL;
5188 fra.me.REG[2] = NIT_NULL;
5189 fra.me.REG[3] = NIT_NULL;
5190 fra.me.REG[4] = NIT_NULL;
5191 fra.me.REG[0] = p0;
5192 fra.me.REG[1] = p1;
5193 /* syntax/typing.nit:869 */
5194 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5195 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5196 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
5197 /* syntax/typing.nit:870 */
5198 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5199 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5200 /* syntax/typing.nit:871 */
5201 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5202 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5203 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5204 /* syntax/typing.nit:872 */
5205 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]);
5206 /* syntax/typing.nit:873 */
5207 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5208 if (UNTAG_Bool(REGB0)) {
5209 } else {
5210 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5211 if (UNTAG_Bool(REGB1)) {
5212 REGB1 = TAG_Bool(0);
5213 REGB0 = REGB1;
5214 } else {
5215 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5216 REGB0 = REGB1;
5217 }
5218 }
5219 if (UNTAG_Bool(REGB0)) {
5220 goto label1;
5221 }
5222 /* syntax/typing.nit:876 */
5223 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5224 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5225 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5226 /* syntax/typing.nit:877 */
5227 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5228 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5229 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5230 if (UNTAG_Bool(REGB0)) {
5231 goto label1;
5232 }
5233 /* syntax/typing.nit:878 */
5234 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5235 if (UNTAG_Bool(REGB0)) {
5236 } else {
5237 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5238 if (UNTAG_Bool(REGB1)) {
5239 REGB1 = TAG_Bool(0);
5240 REGB0 = REGB1;
5241 } else {
5242 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5243 REGB0 = REGB1;
5244 }
5245 }
5246 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5247 if (UNTAG_Bool(REGB0)) {
5248 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5249 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]);
5250 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5251 } else {
5252 REGB1 = TAG_Bool(0);
5253 REGB0 = REGB1;
5254 }
5255 if (UNTAG_Bool(REGB0)) {
5256 goto label1;
5257 }
5258 /* syntax/typing.nit:881 */
5259 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5260 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5261 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]);
5262 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5263 /* syntax/typing.nit:883 */
5264 REGB0 = TAG_Bool(1);
5265 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5266 label1: while(0);
5267 stack_frame_head = fra.me.prev;
5268 return;
5269 }
5270 static const char LOCATE_syntax___typing___AAssignOp___method_name[] = "typing::AAssignOp::method_name";
5271 val_t syntax___typing___AAssignOp___method_name(val_t p0){
5272 struct {struct stack_frame_t me;} fra;
5273 val_t tmp;
5274 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5275 fra.me.file = LOCATE_syntax___typing;
5276 fra.me.line = 888;
5277 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
5278 fra.me.has_broke = 0;
5279 fra.me.REG_size = 0;
5280 fra.me.nitni_local_ref_head = NULL;
5281 /* syntax/typing.nit:888 */
5282 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 888);
5283 stack_frame_head = fra.me.prev;
5284 return NIT_NULL;
5285 }
5286 static const char LOCATE_syntax___typing___APlusAssignOp___method_name[] = "typing::APlusAssignOp::(typing::AAssignOp::method_name)";
5287 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
5288 struct {struct stack_frame_t me;} fra;
5289 val_t REGB0;
5290 val_t tmp;
5291 static val_t once_value_1; /* Once value */
5292 static val_t once_value_2; /* Once value */
5293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5294 fra.me.file = LOCATE_syntax___typing;
5295 fra.me.line = 891;
5296 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
5297 fra.me.has_broke = 0;
5298 fra.me.REG_size = 1;
5299 fra.me.nitni_local_ref_head = NULL;
5300 fra.me.REG[0] = NIT_NULL;
5301 fra.me.REG[0] = p0;
5302 /* syntax/typing.nit:891 */
5303 if (!once_value_1) {
5304 if (!once_value_2) {
5305 fra.me.REG[0] = BOX_NativeString("+");
5306 REGB0 = TAG_Int(1);
5307 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5308 once_value_2 = fra.me.REG[0];
5309 register_static_object(&once_value_2);
5310 } else fra.me.REG[0] = once_value_2;
5311 fra.me.REG[0] = fra.me.REG[0];
5312 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5313 once_value_1 = fra.me.REG[0];
5314 register_static_object(&once_value_1);
5315 } else fra.me.REG[0] = once_value_1;
5316 fra.me.REG[0] = fra.me.REG[0];
5317 goto label3;
5318 label3: while(0);
5319 stack_frame_head = fra.me.prev;
5320 return fra.me.REG[0];
5321 }
5322 static const char LOCATE_syntax___typing___AMinusAssignOp___method_name[] = "typing::AMinusAssignOp::(typing::AAssignOp::method_name)";
5323 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
5324 struct {struct stack_frame_t me;} fra;
5325 val_t REGB0;
5326 val_t tmp;
5327 static val_t once_value_1; /* Once value */
5328 static val_t once_value_2; /* Once value */
5329 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5330 fra.me.file = LOCATE_syntax___typing;
5331 fra.me.line = 894;
5332 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
5333 fra.me.has_broke = 0;
5334 fra.me.REG_size = 1;
5335 fra.me.nitni_local_ref_head = NULL;
5336 fra.me.REG[0] = NIT_NULL;
5337 fra.me.REG[0] = p0;
5338 /* syntax/typing.nit:894 */
5339 if (!once_value_1) {
5340 if (!once_value_2) {
5341 fra.me.REG[0] = BOX_NativeString("-");
5342 REGB0 = TAG_Int(1);
5343 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5344 once_value_2 = fra.me.REG[0];
5345 register_static_object(&once_value_2);
5346 } else fra.me.REG[0] = once_value_2;
5347 fra.me.REG[0] = fra.me.REG[0];
5348 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5349 once_value_1 = fra.me.REG[0];
5350 register_static_object(&once_value_1);
5351 } else fra.me.REG[0] = once_value_1;
5352 fra.me.REG[0] = fra.me.REG[0];
5353 goto label3;
5354 label3: while(0);
5355 stack_frame_head = fra.me.prev;
5356 return fra.me.REG[0];
5357 }
5358 static const char LOCATE_syntax___typing___ASelfExpr___variable[] = "typing::ASelfExpr::(syntax_base::ASelfExpr::variable)";
5359 val_t syntax___typing___ASelfExpr___variable(val_t p0){
5360 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5361 val_t REGB0;
5362 val_t tmp;
5363 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5364 fra.me.file = LOCATE_syntax___typing;
5365 fra.me.line = 899;
5366 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
5367 fra.me.has_broke = 0;
5368 fra.me.REG_size = 2;
5369 fra.me.nitni_local_ref_head = NULL;
5370 fra.me.REG[0] = NIT_NULL;
5371 fra.me.REG[1] = NIT_NULL;
5372 fra.me.REG[0] = p0;
5373 /* syntax/typing.nit:899 */
5374 fra.me.REG[1] = fra.me.REG[0];
5375 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5376 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5377 if (UNTAG_Bool(REGB0)) {
5378 } else {
5379 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 899);
5380 }
5381 goto label1;
5382 label1: while(0);
5383 stack_frame_head = fra.me.prev;
5384 return fra.me.REG[1];
5385 }
5386 static const char LOCATE_syntax___typing___ASelfExpr___its_variable[] = "typing::ASelfExpr::(typing::AExpr::its_variable)";
5387 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5388 struct {struct stack_frame_t me;} fra;
5389 val_t tmp;
5390 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5391 fra.me.file = LOCATE_syntax___typing;
5392 fra.me.line = 901;
5393 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5394 fra.me.has_broke = 0;
5395 fra.me.REG_size = 1;
5396 fra.me.nitni_local_ref_head = NULL;
5397 fra.me.REG[0] = NIT_NULL;
5398 fra.me.REG[0] = p0;
5399 /* syntax/typing.nit:901 */
5400 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5401 goto label1;
5402 label1: while(0);
5403 stack_frame_head = fra.me.prev;
5404 return fra.me.REG[0];
5405 }
5406 static const char LOCATE_syntax___typing___ASelfExpr___after_typing[] = "typing::ASelfExpr::(typing::ANode::after_typing)";
5407 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5408 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5409 val_t REGB0;
5410 val_t tmp;
5411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5412 fra.me.file = LOCATE_syntax___typing;
5413 fra.me.line = 903;
5414 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5415 fra.me.has_broke = 0;
5416 fra.me.REG_size = 3;
5417 fra.me.nitni_local_ref_head = NULL;
5418 fra.me.REG[0] = NIT_NULL;
5419 fra.me.REG[1] = NIT_NULL;
5420 fra.me.REG[2] = NIT_NULL;
5421 fra.me.REG[0] = p0;
5422 fra.me.REG[1] = p1;
5423 /* syntax/typing.nit:905 */
5424 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5425 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5426 /* syntax/typing.nit:906 */
5427 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5428 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5429 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5430 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5431 /* syntax/typing.nit:907 */
5432 REGB0 = TAG_Bool(1);
5433 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5434 stack_frame_head = fra.me.prev;
5435 return;
5436 }
5437 static const char LOCATE_syntax___typing___ASelfExpr___is_self[] = "typing::ASelfExpr::(typing::AExpr::is_self)";
5438 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5439 struct {struct stack_frame_t me;} fra;
5440 val_t REGB0;
5441 val_t tmp;
5442 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5443 fra.me.file = LOCATE_syntax___typing;
5444 fra.me.line = 910;
5445 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5446 fra.me.has_broke = 0;
5447 fra.me.REG_size = 1;
5448 fra.me.nitni_local_ref_head = NULL;
5449 fra.me.REG[0] = NIT_NULL;
5450 fra.me.REG[0] = p0;
5451 /* syntax/typing.nit:910 */
5452 REGB0 = TAG_Bool(1);
5453 goto label1;
5454 label1: while(0);
5455 stack_frame_head = fra.me.prev;
5456 return REGB0;
5457 }
5458 static const char LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self[] = "typing::AImplicitSelfExpr::(typing::AExpr::is_implicit_self)";
5459 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5460 struct {struct stack_frame_t me;} fra;
5461 val_t REGB0;
5462 val_t tmp;
5463 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5464 fra.me.file = LOCATE_syntax___typing;
5465 fra.me.line = 914;
5466 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5467 fra.me.has_broke = 0;
5468 fra.me.REG_size = 1;
5469 fra.me.nitni_local_ref_head = NULL;
5470 fra.me.REG[0] = NIT_NULL;
5471 fra.me.REG[0] = p0;
5472 /* syntax/typing.nit:914 */
5473 REGB0 = TAG_Bool(1);
5474 goto label1;
5475 label1: while(0);
5476 stack_frame_head = fra.me.prev;
5477 return REGB0;
5478 }
5479 static const char LOCATE_syntax___typing___AIfexprExpr___accept_typing[] = "typing::AIfexprExpr::(typing::ANode::accept_typing)";
5480 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5481 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5482 val_t REGB0;
5483 val_t REGB1;
5484 val_t tmp;
5485 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5486 fra.me.file = LOCATE_syntax___typing;
5487 fra.me.line = 918;
5488 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5489 fra.me.has_broke = 0;
5490 fra.me.REG_size = 5;
5491 fra.me.nitni_local_ref_head = NULL;
5492 fra.me.REG[0] = NIT_NULL;
5493 fra.me.REG[1] = NIT_NULL;
5494 fra.me.REG[2] = NIT_NULL;
5495 fra.me.REG[3] = NIT_NULL;
5496 fra.me.REG[4] = NIT_NULL;
5497 fra.me.REG[0] = p0;
5498 fra.me.REG[1] = p1;
5499 /* syntax/typing.nit:920 */
5500 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5501 /* syntax/typing.nit:923 */
5502 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5503 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5504 /* syntax/typing.nit:924 */
5505 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5506 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5507 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5508 /* syntax/typing.nit:927 */
5509 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5510 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5511 /* syntax/typing.nit:930 */
5512 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5513 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5514 /* syntax/typing.nit:933 */
5515 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5516 /* syntax/typing.nit:936 */
5517 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5518 /* syntax/typing.nit:937 */
5519 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5520 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5521 /* syntax/typing.nit:940 */
5522 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5523 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5524 /* syntax/typing.nit:943 */
5525 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5526 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5527 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]);
5528 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5529 /* syntax/typing.nit:945 */
5530 REGB0 = TAG_Int(2);
5531 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5532 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5534 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5535 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5536 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]);
5537 /* syntax/typing.nit:946 */
5538 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5539 if (UNTAG_Bool(REGB0)) {
5540 } else {
5541 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5542 if (UNTAG_Bool(REGB1)) {
5543 REGB1 = TAG_Bool(0);
5544 REGB0 = REGB1;
5545 } else {
5546 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5547 REGB0 = REGB1;
5548 }
5549 }
5550 if (UNTAG_Bool(REGB0)) {
5551 goto label1;
5552 }
5553 /* syntax/typing.nit:948 */
5554 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5555 /* syntax/typing.nit:949 */
5556 REGB0 = TAG_Bool(1);
5557 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5558 label1: while(0);
5559 stack_frame_head = fra.me.prev;
5560 return;
5561 }
5562 static const char LOCATE_syntax___typing___ABoolExpr___after_typing[] = "typing::ABoolExpr::(typing::ANode::after_typing)";
5563 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5564 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5565 val_t REGB0;
5566 val_t tmp;
5567 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5568 fra.me.file = LOCATE_syntax___typing;
5569 fra.me.line = 954;
5570 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5571 fra.me.has_broke = 0;
5572 fra.me.REG_size = 2;
5573 fra.me.nitni_local_ref_head = NULL;
5574 fra.me.REG[0] = NIT_NULL;
5575 fra.me.REG[1] = NIT_NULL;
5576 fra.me.REG[0] = p0;
5577 fra.me.REG[1] = p1;
5578 /* syntax/typing.nit:956 */
5579 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5580 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5581 /* syntax/typing.nit:957 */
5582 REGB0 = TAG_Bool(1);
5583 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5584 stack_frame_head = fra.me.prev;
5585 return;
5586 }
5587 static const char LOCATE_syntax___typing___AOrExpr___accept_typing[] = "typing::AOrExpr::(typing::ANode::accept_typing)";
5588 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5589 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5590 val_t REGB0;
5591 val_t REGB1;
5592 val_t tmp;
5593 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5594 fra.me.file = LOCATE_syntax___typing;
5595 fra.me.line = 962;
5596 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5597 fra.me.has_broke = 0;
5598 fra.me.REG_size = 5;
5599 fra.me.nitni_local_ref_head = NULL;
5600 fra.me.REG[0] = NIT_NULL;
5601 fra.me.REG[1] = NIT_NULL;
5602 fra.me.REG[2] = NIT_NULL;
5603 fra.me.REG[3] = NIT_NULL;
5604 fra.me.REG[4] = NIT_NULL;
5605 fra.me.REG[0] = p0;
5606 fra.me.REG[1] = p1;
5607 /* syntax/typing.nit:964 */
5608 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5609 /* syntax/typing.nit:965 */
5610 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5611 /* syntax/typing.nit:966 */
5612 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5613 /* syntax/typing.nit:969 */
5614 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5615 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5616 /* syntax/typing.nit:972 */
5617 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5618 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5619 /* syntax/typing.nit:975 */
5620 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5621 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5622 /* syntax/typing.nit:976 */
5623 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5624 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5625 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5626 if (UNTAG_Bool(REGB0)) {
5627 } else {
5628 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5629 if (UNTAG_Bool(REGB1)) {
5630 REGB1 = TAG_Bool(0);
5631 REGB0 = REGB1;
5632 } else {
5633 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5634 REGB0 = REGB1;
5635 }
5636 }
5637 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5638 if (UNTAG_Bool(REGB0)) {
5639 /* syntax/typing.nit:977 */
5640 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5641 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5642 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5643 } else {
5644 /* syntax/typing.nit:979 */
5645 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5646 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5647 }
5648 /* syntax/typing.nit:982 */
5649 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5650 /* syntax/typing.nit:984 */
5651 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5652 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5653 /* syntax/typing.nit:985 */
5654 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5655 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5656 /* syntax/typing.nit:986 */
5657 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5658 /* syntax/typing.nit:987 */
5659 REGB0 = TAG_Bool(1);
5660 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5661 stack_frame_head = fra.me.prev;
5662 return;
5663 }
5664 static const char LOCATE_syntax___typing___AAndExpr___accept_typing[] = "typing::AAndExpr::(typing::ANode::accept_typing)";
5665 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5666 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5667 val_t REGB0;
5668 val_t REGB1;
5669 val_t tmp;
5670 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5671 fra.me.file = LOCATE_syntax___typing;
5672 fra.me.line = 992;
5673 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5674 fra.me.has_broke = 0;
5675 fra.me.REG_size = 5;
5676 fra.me.nitni_local_ref_head = NULL;
5677 fra.me.REG[0] = NIT_NULL;
5678 fra.me.REG[1] = NIT_NULL;
5679 fra.me.REG[2] = NIT_NULL;
5680 fra.me.REG[3] = NIT_NULL;
5681 fra.me.REG[4] = NIT_NULL;
5682 fra.me.REG[0] = p0;
5683 fra.me.REG[1] = p1;
5684 /* syntax/typing.nit:994 */
5685 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5686 /* syntax/typing.nit:995 */
5687 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5688 /* syntax/typing.nit:998 */
5689 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5690 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5691 /* syntax/typing.nit:1001 */
5692 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5693 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5694 /* syntax/typing.nit:1004 */
5695 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5696 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5697 /* syntax/typing.nit:1005 */
5698 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5699 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5700 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5701 if (UNTAG_Bool(REGB0)) {
5702 } else {
5703 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5704 if (UNTAG_Bool(REGB1)) {
5705 REGB1 = TAG_Bool(0);
5706 REGB0 = REGB1;
5707 } else {
5708 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5709 REGB0 = REGB1;
5710 }
5711 }
5712 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5713 if (UNTAG_Bool(REGB0)) {
5714 /* syntax/typing.nit:1006 */
5715 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5716 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5717 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5718 } else {
5719 /* syntax/typing.nit:1008 */
5720 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5721 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5722 }
5723 /* syntax/typing.nit:1011 */
5724 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5725 /* syntax/typing.nit:1013 */
5726 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5727 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5728 /* syntax/typing.nit:1014 */
5729 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5730 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5731 /* syntax/typing.nit:1015 */
5732 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5733 /* syntax/typing.nit:1016 */
5734 REGB0 = TAG_Bool(1);
5735 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5736 stack_frame_head = fra.me.prev;
5737 return;
5738 }
5739 static const char LOCATE_syntax___typing___ANotExpr___after_typing[] = "typing::ANotExpr::(typing::ANode::after_typing)";
5740 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5741 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5742 val_t REGB0;
5743 val_t tmp;
5744 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5745 fra.me.file = LOCATE_syntax___typing;
5746 fra.me.line = 1021;
5747 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5748 fra.me.has_broke = 0;
5749 fra.me.REG_size = 4;
5750 fra.me.nitni_local_ref_head = NULL;
5751 fra.me.REG[0] = NIT_NULL;
5752 fra.me.REG[1] = NIT_NULL;
5753 fra.me.REG[2] = NIT_NULL;
5754 fra.me.REG[3] = NIT_NULL;
5755 fra.me.REG[0] = p0;
5756 fra.me.REG[1] = p1;
5757 /* syntax/typing.nit:1023 */
5758 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5759 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5760 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5761 /* syntax/typing.nit:1026 */
5762 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5763 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5764 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5765 /* syntax/typing.nit:1027 */
5766 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5767 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5768 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5769 /* syntax/typing.nit:1029 */
5770 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5771 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5772 /* syntax/typing.nit:1030 */
5773 REGB0 = TAG_Bool(1);
5774 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5775 stack_frame_head = fra.me.prev;
5776 return;
5777 }
5778 static const char LOCATE_syntax___typing___AOrElseExpr___after_typing[] = "typing::AOrElseExpr::(typing::ANode::after_typing)";
5779 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5780 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5781 val_t REGB0;
5782 val_t REGB1;
5783 val_t tmp;
5784 static val_t once_value_1; /* Once value */
5785 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5786 fra.me.file = LOCATE_syntax___typing;
5787 fra.me.line = 1035;
5788 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5789 fra.me.has_broke = 0;
5790 fra.me.REG_size = 7;
5791 fra.me.nitni_local_ref_head = NULL;
5792 fra.me.REG[0] = NIT_NULL;
5793 fra.me.REG[1] = NIT_NULL;
5794 fra.me.REG[2] = NIT_NULL;
5795 fra.me.REG[3] = NIT_NULL;
5796 fra.me.REG[4] = NIT_NULL;
5797 fra.me.REG[5] = NIT_NULL;
5798 fra.me.REG[6] = NIT_NULL;
5799 fra.me.REG[0] = p0;
5800 fra.me.REG[1] = p1;
5801 /* syntax/typing.nit:1037 */
5802 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5803 /* syntax/typing.nit:1040 */
5804 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5805 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5806 /* syntax/typing.nit:1041 */
5807 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5808 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5809 /* syntax/typing.nit:1044 */
5810 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5811 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5812 /* syntax/typing.nit:1045 */
5813 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5814 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5815 if (UNTAG_Bool(REGB0)) {
5816 /* syntax/typing.nit:1046 */
5817 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5818 if (!once_value_1) {
5819 fra.me.REG[5] = BOX_NativeString("Warning: left operand of a 'or else' is not a nullable type.");
5820 REGB0 = TAG_Int(60);
5821 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5822 once_value_1 = fra.me.REG[5];
5823 register_static_object(&once_value_1);
5824 } else fra.me.REG[5] = once_value_1;
5825 fra.me.REG[5] = fra.me.REG[5];
5826 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5827 } else {
5828 /* syntax/typing.nit:1048 */
5829 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5830 fra.me.REG[3] = fra.me.REG[5];
5831 }
5832 /* syntax/typing.nit:1052 */
5833 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5834 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5835 /* syntax/typing.nit:1053 */
5836 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5837 if (UNTAG_Bool(REGB0)) {
5838 } else {
5839 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5840 if (UNTAG_Bool(REGB1)) {
5841 REGB1 = TAG_Bool(0);
5842 REGB0 = REGB1;
5843 } else {
5844 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5845 REGB0 = REGB1;
5846 }
5847 }
5848 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5849 if (UNTAG_Bool(REGB0)) {
5850 /* syntax/typing.nit:1054 */
5851 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5852 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5853 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]);
5854 }
5855 /* syntax/typing.nit:1058 */
5856 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5857 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5858 /* syntax/typing.nit:1059 */
5859 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5860 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5861 /* syntax/typing.nit:1062 */
5862 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5863 /* syntax/typing.nit:1065 */
5864 REGB0 = TAG_Int(1);
5865 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5866 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5867 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5868 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]);
5869 /* syntax/typing.nit:1066 */
5870 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5871 if (UNTAG_Bool(REGB0)) {
5872 } else {
5873 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5874 if (UNTAG_Bool(REGB1)) {
5875 REGB1 = TAG_Bool(0);
5876 REGB0 = REGB1;
5877 } else {
5878 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5879 REGB0 = REGB1;
5880 }
5881 }
5882 if (UNTAG_Bool(REGB0)) {
5883 goto label2;
5884 }
5885 /* syntax/typing.nit:1068 */
5886 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5887 /* syntax/typing.nit:1069 */
5888 REGB0 = TAG_Bool(1);
5889 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5890 label2: while(0);
5891 stack_frame_head = fra.me.prev;
5892 return;
5893 }
5894 static const char LOCATE_syntax___typing___AIntExpr___after_typing[] = "typing::AIntExpr::(typing::ANode::after_typing)";
5895 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5896 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5897 val_t REGB0;
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 = 1074;
5902 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5903 fra.me.has_broke = 0;
5904 fra.me.REG_size = 2;
5905 fra.me.nitni_local_ref_head = NULL;
5906 fra.me.REG[0] = NIT_NULL;
5907 fra.me.REG[1] = NIT_NULL;
5908 fra.me.REG[0] = p0;
5909 fra.me.REG[1] = p1;
5910 /* syntax/typing.nit:1076 */
5911 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5912 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5913 /* syntax/typing.nit:1077 */
5914 REGB0 = TAG_Bool(1);
5915 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5916 stack_frame_head = fra.me.prev;
5917 return;
5918 }
5919 static const char LOCATE_syntax___typing___AFloatExpr___after_typing[] = "typing::AFloatExpr::(typing::ANode::after_typing)";
5920 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5921 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5922 val_t REGB0;
5923 val_t tmp;
5924 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5925 fra.me.file = LOCATE_syntax___typing;
5926 fra.me.line = 1082;
5927 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5928 fra.me.has_broke = 0;
5929 fra.me.REG_size = 2;
5930 fra.me.nitni_local_ref_head = NULL;
5931 fra.me.REG[0] = NIT_NULL;
5932 fra.me.REG[1] = NIT_NULL;
5933 fra.me.REG[0] = p0;
5934 fra.me.REG[1] = p1;
5935 /* syntax/typing.nit:1084 */
5936 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5937 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5938 /* syntax/typing.nit:1085 */
5939 REGB0 = TAG_Bool(1);
5940 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5941 stack_frame_head = fra.me.prev;
5942 return;
5943 }
5944 static const char LOCATE_syntax___typing___ACharExpr___after_typing[] = "typing::ACharExpr::(typing::ANode::after_typing)";
5945 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5946 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5947 val_t REGB0;
5948 val_t tmp;
5949 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5950 fra.me.file = LOCATE_syntax___typing;
5951 fra.me.line = 1090;
5952 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5953 fra.me.has_broke = 0;
5954 fra.me.REG_size = 2;
5955 fra.me.nitni_local_ref_head = NULL;
5956 fra.me.REG[0] = NIT_NULL;
5957 fra.me.REG[1] = NIT_NULL;
5958 fra.me.REG[0] = p0;
5959 fra.me.REG[1] = p1;
5960 /* syntax/typing.nit:1092 */
5961 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5962 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5963 /* syntax/typing.nit:1093 */
5964 REGB0 = TAG_Bool(1);
5965 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5966 stack_frame_head = fra.me.prev;
5967 return;
5968 }
5969 static const char LOCATE_syntax___typing___AStringFormExpr___after_typing[] = "typing::AStringFormExpr::(typing::ANode::after_typing)";
5970 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5971 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5972 val_t REGB0;
5973 val_t tmp;
5974 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5975 fra.me.file = LOCATE_syntax___typing;
5976 fra.me.line = 1098;
5977 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5978 fra.me.has_broke = 0;
5979 fra.me.REG_size = 2;
5980 fra.me.nitni_local_ref_head = NULL;
5981 fra.me.REG[0] = NIT_NULL;
5982 fra.me.REG[1] = NIT_NULL;
5983 fra.me.REG[0] = p0;
5984 fra.me.REG[1] = p1;
5985 /* syntax/typing.nit:1100 */
5986 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
5987 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5988 /* syntax/typing.nit:1101 */
5989 REGB0 = TAG_Bool(1);
5990 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5991 stack_frame_head = fra.me.prev;
5992 return;
5993 }
5994 static const char LOCATE_syntax___typing___ASuperstringExpr___atype[] = "typing::ASuperstringExpr::(syntax_base::ASuperstringExpr::atype)";
5995 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
5996 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5997 val_t REGB0;
5998 val_t tmp;
5999 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6000 fra.me.file = LOCATE_syntax___typing;
6001 fra.me.line = 1106;
6002 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
6003 fra.me.has_broke = 0;
6004 fra.me.REG_size = 2;
6005 fra.me.nitni_local_ref_head = NULL;
6006 fra.me.REG[0] = NIT_NULL;
6007 fra.me.REG[1] = NIT_NULL;
6008 fra.me.REG[0] = p0;
6009 /* syntax/typing.nit:1106 */
6010 fra.me.REG[1] = fra.me.REG[0];
6011 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
6012 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6013 if (UNTAG_Bool(REGB0)) {
6014 } else {
6015 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1106);
6016 }
6017 goto label1;
6018 label1: while(0);
6019 stack_frame_head = fra.me.prev;
6020 return fra.me.REG[1];
6021 }
6022 static const char LOCATE_syntax___typing___ASuperstringExpr___after_typing[] = "typing::ASuperstringExpr::(typing::ANode::after_typing)";
6023 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
6024 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6025 val_t REGB0;
6026 val_t tmp;
6027 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6028 fra.me.file = LOCATE_syntax___typing;
6029 fra.me.line = 1108;
6030 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6031 fra.me.has_broke = 0;
6032 fra.me.REG_size = 5;
6033 fra.me.nitni_local_ref_head = NULL;
6034 fra.me.REG[0] = NIT_NULL;
6035 fra.me.REG[1] = NIT_NULL;
6036 fra.me.REG[2] = NIT_NULL;
6037 fra.me.REG[3] = NIT_NULL;
6038 fra.me.REG[4] = NIT_NULL;
6039 fra.me.REG[0] = p0;
6040 fra.me.REG[1] = p1;
6041 /* syntax/typing.nit:1110 */
6042 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
6043 /* syntax/typing.nit:1111 */
6044 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
6045 /* syntax/typing.nit:1112 */
6046 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
6047 /* syntax/typing.nit:1113 */
6048 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6049 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));
6050 /* syntax/typing.nit:1114 */
6051 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6052 /* syntax/typing.nit:1115 */
6053 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
6054 /* syntax/typing.nit:1116 */
6055 REGB0 = TAG_Bool(1);
6056 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6057 stack_frame_head = fra.me.prev;
6058 return;
6059 }
6060 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){
6061 struct {struct stack_frame_t me;} fra;
6062 fun_t CREG[1];
6063 val_t tmp;
6064 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6065 fra.me.file = LOCATE_syntax___typing;
6066 fra.me.line = 0;
6067 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6068 fra.me.has_broke = 0;
6069 fra.me.REG_size = 1;
6070 fra.me.nitni_local_ref_head = NULL;
6071 fra.me.REG[0] = NIT_NULL;
6072 fra.me.closure_ctx = closctx_param;
6073 fra.me.closure_funs = CREG;
6074 fra.me.REG[0] = p0;
6075 CREG[0] = clos_fun0;
6076 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
6077 stack_frame_head = fra.me.prev;
6078 return;
6079 }
6080 static const char LOCATE_syntax___typing___ANullExpr___after_typing[] = "typing::ANullExpr::(typing::ANode::after_typing)";
6081 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
6082 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6083 val_t REGB0;
6084 val_t tmp;
6085 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6086 fra.me.file = LOCATE_syntax___typing;
6087 fra.me.line = 1121;
6088 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
6089 fra.me.has_broke = 0;
6090 fra.me.REG_size = 2;
6091 fra.me.nitni_local_ref_head = NULL;
6092 fra.me.REG[0] = NIT_NULL;
6093 fra.me.REG[1] = NIT_NULL;
6094 fra.me.REG[0] = p0;
6095 fra.me.REG[1] = p1;
6096 /* syntax/typing.nit:1123 */
6097 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
6098 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6099 /* syntax/typing.nit:1124 */
6100 REGB0 = TAG_Bool(1);
6101 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6102 stack_frame_head = fra.me.prev;
6103 return;
6104 }
6105 static const char LOCATE_syntax___typing___AArrayExpr___after_typing[] = "typing::AArrayExpr::(typing::ANode::after_typing)";
6106 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
6107 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6108 val_t REGB0;
6109 val_t REGB1;
6110 val_t tmp;
6111 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6112 fra.me.file = LOCATE_syntax___typing;
6113 fra.me.line = 1129;
6114 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
6115 fra.me.has_broke = 0;
6116 fra.me.REG_size = 3;
6117 fra.me.nitni_local_ref_head = NULL;
6118 fra.me.REG[0] = NIT_NULL;
6119 fra.me.REG[1] = NIT_NULL;
6120 fra.me.REG[2] = NIT_NULL;
6121 fra.me.REG[0] = p0;
6122 fra.me.REG[1] = p1;
6123 /* syntax/typing.nit:1131 */
6124 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6125 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
6126 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]);
6127 /* syntax/typing.nit:1132 */
6128 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6129 if (UNTAG_Bool(REGB0)) {
6130 } else {
6131 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6132 if (UNTAG_Bool(REGB1)) {
6133 REGB1 = TAG_Bool(0);
6134 REGB0 = REGB1;
6135 } else {
6136 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6137 REGB0 = REGB1;
6138 }
6139 }
6140 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6141 if (UNTAG_Bool(REGB0)) {
6142 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
6143 }
6144 stack_frame_head = fra.me.prev;
6145 return;
6146 }
6147 static const char LOCATE_syntax___typing___AArrayExpr___do_typing[] = "typing::AArrayExpr::do_typing";
6148 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
6149 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6150 val_t REGB0;
6151 val_t tmp;
6152 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6153 fra.me.file = LOCATE_syntax___typing;
6154 fra.me.line = 1135;
6155 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
6156 fra.me.has_broke = 0;
6157 fra.me.REG_size = 3;
6158 fra.me.nitni_local_ref_head = NULL;
6159 fra.me.REG[0] = NIT_NULL;
6160 fra.me.REG[1] = NIT_NULL;
6161 fra.me.REG[2] = NIT_NULL;
6162 fra.me.REG[0] = p0;
6163 fra.me.REG[1] = p1;
6164 fra.me.REG[2] = p2;
6165 /* syntax/typing.nit:1137 */
6166 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6167 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6168 /* syntax/typing.nit:1138 */
6169 REGB0 = TAG_Bool(1);
6170 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6171 stack_frame_head = fra.me.prev;
6172 return;
6173 }
6174 static const char LOCATE_syntax___typing___ARangeExpr___after_typing[] = "typing::ARangeExpr::(typing::ANode::after_typing)";
6175 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
6176 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
6177 val_t REGB0;
6178 val_t REGB1;
6179 val_t tmp;
6180 static val_t once_value_2; /* Once value */
6181 static val_t once_value_3; /* Once value */
6182 static val_t once_value_4; /* Once value */
6183 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6184 fra.me.file = LOCATE_syntax___typing;
6185 fra.me.line = 1143;
6186 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
6187 fra.me.has_broke = 0;
6188 fra.me.REG_size = 6;
6189 fra.me.nitni_local_ref_head = NULL;
6190 fra.me.REG[0] = NIT_NULL;
6191 fra.me.REG[1] = NIT_NULL;
6192 fra.me.REG[2] = NIT_NULL;
6193 fra.me.REG[3] = NIT_NULL;
6194 fra.me.REG[4] = NIT_NULL;
6195 fra.me.REG[5] = NIT_NULL;
6196 fra.me.REG[0] = p0;
6197 fra.me.REG[1] = p1;
6198 /* syntax/typing.nit:1145 */
6199 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6200 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6201 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6202 if (UNTAG_Bool(REGB0)) {
6203 REGB0 = TAG_Bool(1);
6204 } else {
6205 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6206 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6207 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6208 REGB0 = REGB1;
6209 }
6210 if (UNTAG_Bool(REGB0)) {
6211 goto label1;
6212 }
6213 /* syntax/typing.nit:1146 */
6214 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6215 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6216 /* syntax/typing.nit:1147 */
6217 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6218 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6219 /* syntax/typing.nit:1148 */
6220 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6221 if (UNTAG_Bool(REGB0)) {
6222 /* syntax/typing.nit:1149 */
6223 fra.me.REG[2] = fra.me.REG[3];
6224 } else {
6225 /* syntax/typing.nit:1150 */
6226 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
6227 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6228 if (UNTAG_Bool(REGB0)) {
6229 /* syntax/typing.nit:1151 */
6230 REGB0 = TAG_Int(5);
6231 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6232 if (!once_value_2) {
6233 fra.me.REG[5] = BOX_NativeString("Type error: ");
6234 REGB0 = TAG_Int(12);
6235 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6236 once_value_2 = fra.me.REG[5];
6237 register_static_object(&once_value_2);
6238 } else fra.me.REG[5] = once_value_2;
6239 fra.me.REG[5] = fra.me.REG[5];
6240 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6241 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6242 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6243 if (!once_value_3) {
6244 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
6245 REGB0 = TAG_Int(19);
6246 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6247 once_value_3 = fra.me.REG[5];
6248 register_static_object(&once_value_3);
6249 } else fra.me.REG[5] = once_value_3;
6250 fra.me.REG[5] = fra.me.REG[5];
6251 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6252 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6253 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6254 if (!once_value_4) {
6255 fra.me.REG[3] = BOX_NativeString(".");
6256 REGB0 = TAG_Int(1);
6257 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6258 once_value_4 = fra.me.REG[3];
6259 register_static_object(&once_value_4);
6260 } else fra.me.REG[3] = once_value_4;
6261 fra.me.REG[3] = fra.me.REG[3];
6262 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6263 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6264 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6265 /* syntax/typing.nit:1152 */
6266 goto label1;
6267 }
6268 }
6269 /* syntax/typing.nit:1154 */
6270 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
6271 /* syntax/typing.nit:1155 */
6272 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6273 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]);
6274 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6275 if (UNTAG_Bool(REGB0)) {
6276 REGB0 = TAG_Bool(1);
6277 } else {
6278 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6279 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]);
6280 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6281 REGB0 = REGB1;
6282 }
6283 if (UNTAG_Bool(REGB0)) {
6284 goto label1;
6285 }
6286 /* syntax/typing.nit:1156 */
6287 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6288 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6289 /* syntax/typing.nit:1157 */
6290 REGB0 = TAG_Bool(1);
6291 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6292 label1: while(0);
6293 stack_frame_head = fra.me.prev;
6294 return;
6295 }
6296 static const char LOCATE_syntax___typing___ASuperExpr___init_in_superclass[] = "typing::ASuperExpr::(syntax_base::ASuperExpr::init_in_superclass)";
6297 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
6298 struct {struct stack_frame_t me;} fra;
6299 val_t tmp;
6300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6301 fra.me.file = LOCATE_syntax___typing;
6302 fra.me.line = 1162;
6303 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
6304 fra.me.has_broke = 0;
6305 fra.me.REG_size = 1;
6306 fra.me.nitni_local_ref_head = NULL;
6307 fra.me.REG[0] = NIT_NULL;
6308 fra.me.REG[0] = p0;
6309 /* syntax/typing.nit:1162 */
6310 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
6311 stack_frame_head = fra.me.prev;
6312 return fra.me.REG[0];
6313 }
6314 static const char LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments[] = "typing::ASuperExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
6315 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
6316 struct {struct stack_frame_t me;} fra;
6317 val_t tmp;
6318 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6319 fra.me.file = LOCATE_syntax___typing;
6320 fra.me.line = 1163;
6321 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
6322 fra.me.has_broke = 0;
6323 fra.me.REG_size = 1;
6324 fra.me.nitni_local_ref_head = NULL;
6325 fra.me.REG[0] = NIT_NULL;
6326 fra.me.REG[0] = p0;
6327 /* syntax/typing.nit:1163 */
6328 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6329 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
6330 goto label1;
6331 label1: while(0);
6332 stack_frame_head = fra.me.prev;
6333 return fra.me.REG[0];
6334 }
6335 static const char LOCATE_syntax___typing___ASuperExpr___after_typing[] = "typing::ASuperExpr::(typing::ANode::after_typing)";
6336 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
6337 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
6338 val_t REGB0;
6339 val_t REGB1;
6340 val_t REGB2;
6341 val_t tmp;
6342 static val_t once_value_1; /* Once value */
6343 static val_t once_value_2; /* Once value */
6344 static val_t once_value_3; /* Once value */
6345 static val_t once_value_5; /* Once value */
6346 static val_t once_value_6; /* Once value */
6347 static val_t once_value_8; /* Once value */
6348 static val_t once_value_9; /* Once value */
6349 static val_t once_value_10; /* Once value */
6350 static val_t once_value_11; /* Once value */
6351 static val_t once_value_12; /* Once value */
6352 static val_t once_value_13; /* Once value */
6353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6354 fra.me.file = LOCATE_syntax___typing;
6355 fra.me.line = 1164;
6356 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
6357 fra.me.has_broke = 0;
6358 fra.me.REG_size = 10;
6359 fra.me.nitni_local_ref_head = NULL;
6360 fra.me.REG[0] = NIT_NULL;
6361 fra.me.REG[1] = NIT_NULL;
6362 fra.me.REG[2] = NIT_NULL;
6363 fra.me.REG[3] = NIT_NULL;
6364 fra.me.REG[4] = NIT_NULL;
6365 fra.me.REG[5] = NIT_NULL;
6366 fra.me.REG[6] = NIT_NULL;
6367 fra.me.REG[7] = NIT_NULL;
6368 fra.me.REG[8] = NIT_NULL;
6369 fra.me.REG[9] = NIT_NULL;
6370 fra.me.REG[0] = p0;
6371 fra.me.REG[1] = p1;
6372 /* syntax/typing.nit:1164 */
6373 fra.me.REG[2] = fra.me.REG[0];
6374 /* syntax/typing.nit:1166 */
6375 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6376 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
6377 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
6378 /* syntax/typing.nit:1167 */
6379 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6380 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6381 if (UNTAG_Bool(REGB0)) {
6382 /* syntax/typing.nit:1168 */
6383 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6384 REGB0 = TAG_Bool(1);
6385 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
6386 } else {
6387 /* syntax/typing.nit:1169 */
6388 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6389 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6390 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
6391 if (UNTAG_Bool(REGB0)) {
6392 /* syntax/typing.nit:1170 */
6393 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6394 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6395 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6396 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6397 /* ../lib/standard/collection/array.nit:266 */
6398 fra.me.REG[4] = fra.me.REG[5];
6399 /* ../lib/standard/collection/array.nit:269 */
6400 REGB0 = TAG_Int(0);
6401 /* ../lib/standard/collection/array.nit:270 */
6402 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6403 if (UNTAG_Bool(REGB1)) {
6404 } else {
6405 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6406 }
6407 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6408 /* ../lib/standard/collection/array.nit:271 */
6409 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6410 /* ../lib/standard/collection/array.nit:272 */
6411 while(1) {
6412 /* ../lib/standard/collection/array.nit:24 */
6413 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6414 if (UNTAG_Bool(REGB1)) {
6415 } else {
6416 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6417 }
6418 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6419 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6420 if (UNTAG_Bool(REGB2)) {
6421 } else {
6422 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6423 }
6424 /* ../lib/standard/kernel.nit:235 */
6425 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6426 /* ../lib/standard/collection/array.nit:272 */
6427 if (UNTAG_Bool(REGB1)) {
6428 /* ../lib/standard/collection/array.nit:273 */
6429 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6430 if (UNTAG_Bool(REGB1)) {
6431 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6432 }
6433 /* ../lib/standard/collection/array.nit:718 */
6434 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6435 /* syntax/typing.nit:1172 */
6436 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6437 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6438 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6439 if (UNTAG_Bool(REGB1)) {
6440 /* syntax/typing.nit:1173 */
6441 REGB1 = TAG_Int(5);
6442 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6443 if (!once_value_1) {
6444 fra.me.REG[9] = BOX_NativeString("Error: ");
6445 REGB1 = TAG_Int(7);
6446 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6447 once_value_1 = fra.me.REG[9];
6448 register_static_object(&once_value_1);
6449 } else fra.me.REG[9] = once_value_1;
6450 fra.me.REG[9] = fra.me.REG[9];
6451 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6452 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6453 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6454 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6455 if (!once_value_2) {
6456 fra.me.REG[9] = BOX_NativeString("::");
6457 REGB1 = TAG_Int(2);
6458 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6459 once_value_2 = fra.me.REG[9];
6460 register_static_object(&once_value_2);
6461 } else fra.me.REG[9] = once_value_2;
6462 fra.me.REG[9] = fra.me.REG[9];
6463 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6464 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6465 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6466 if (!once_value_3) {
6467 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6468 REGB1 = TAG_Int(22);
6469 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6470 once_value_3 = fra.me.REG[9];
6471 register_static_object(&once_value_3);
6472 } else fra.me.REG[9] = once_value_3;
6473 fra.me.REG[9] = fra.me.REG[9];
6474 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6475 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6476 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6477 } else {
6478 /* syntax/typing.nit:1175 */
6479 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6480 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6481 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6482 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6483 }
6484 /* ../lib/standard/collection/array.nit:274 */
6485 REGB1 = TAG_Int(1);
6486 /* ../lib/standard/kernel.nit:238 */
6487 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6488 /* ../lib/standard/collection/array.nit:274 */
6489 REGB0 = REGB1;
6490 } else {
6491 /* ../lib/standard/collection/array.nit:272 */
6492 goto label4;
6493 }
6494 }
6495 label4: while(0);
6496 /* syntax/typing.nit:1178 */
6497 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6498 if (UNTAG_Bool(REGB0)) {
6499 /* syntax/typing.nit:1179 */
6500 REGB0 = TAG_Int(3);
6501 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6502 if (!once_value_5) {
6503 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6504 REGB0 = TAG_Int(27);
6505 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6506 once_value_5 = fra.me.REG[4];
6507 register_static_object(&once_value_5);
6508 } else fra.me.REG[4] = once_value_5;
6509 fra.me.REG[4] = fra.me.REG[4];
6510 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6511 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6512 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6513 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6514 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6515 if (!once_value_6) {
6516 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6517 REGB0 = TAG_Int(17);
6518 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6519 once_value_6 = fra.me.REG[4];
6520 register_static_object(&once_value_6);
6521 } else fra.me.REG[4] = once_value_6;
6522 fra.me.REG[4] = fra.me.REG[4];
6523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6524 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6525 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6526 /* syntax/typing.nit:1180 */
6527 goto label7;
6528 } else {
6529 /* ../lib/standard/collection/array.nit:24 */
6530 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6531 if (UNTAG_Bool(REGB0)) {
6532 } else {
6533 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6534 }
6535 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6536 /* syntax/typing.nit:1181 */
6537 REGB1 = TAG_Int(1);
6538 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6539 if (UNTAG_Bool(REGB2)) {
6540 } else {
6541 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6542 }
6543 /* ../lib/standard/kernel.nit:237 */
6544 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6545 /* syntax/typing.nit:1181 */
6546 if (UNTAG_Bool(REGB1)) {
6547 /* syntax/typing.nit:1182 */
6548 REGB1 = TAG_Int(5);
6549 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6550 if (!once_value_8) {
6551 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6552 REGB1 = TAG_Int(37);
6553 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6554 once_value_8 = fra.me.REG[4];
6555 register_static_object(&once_value_8);
6556 } else fra.me.REG[4] = once_value_8;
6557 fra.me.REG[4] = fra.me.REG[4];
6558 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6559 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6560 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6561 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6562 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6563 if (!once_value_9) {
6564 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6565 REGB1 = TAG_Int(18);
6566 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6567 once_value_9 = fra.me.REG[4];
6568 register_static_object(&once_value_9);
6569 } else fra.me.REG[4] = once_value_9;
6570 fra.me.REG[4] = fra.me.REG[4];
6571 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6572 if (!once_value_10) {
6573 fra.me.REG[4] = BOX_NativeString(", ");
6574 REGB1 = TAG_Int(2);
6575 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6576 once_value_10 = fra.me.REG[4];
6577 register_static_object(&once_value_10);
6578 } else fra.me.REG[4] = once_value_10;
6579 fra.me.REG[4] = fra.me.REG[4];
6580 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6581 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6582 if (!once_value_11) {
6583 fra.me.REG[4] = BOX_NativeString(".");
6584 REGB1 = TAG_Int(1);
6585 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6586 once_value_11 = fra.me.REG[4];
6587 register_static_object(&once_value_11);
6588 } else fra.me.REG[4] = once_value_11;
6589 fra.me.REG[4] = fra.me.REG[4];
6590 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6591 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6592 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6593 /* syntax/typing.nit:1183 */
6594 goto label7;
6595 }
6596 }
6597 /* syntax/typing.nit:1185 */
6598 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6599 /* syntax/typing.nit:1186 */
6600 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6601 if (UNTAG_Bool(REGB1)) {
6602 } else {
6603 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1186);
6604 }
6605 /* syntax/typing.nit:1187 */
6606 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6607 /* syntax/typing.nit:1188 */
6608 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6609 /* syntax/typing.nit:1189 */
6610 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6611 fra.me.REG[6] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[6])(fra.me.REG[6]);
6612 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6613 REGB0 = TAG_Int(0);
6614 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6615 if (UNTAG_Bool(REGB2)) {
6616 } else {
6617 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6618 }
6619 /* ../lib/standard/kernel.nit:237 */
6620 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6621 /* syntax/typing.nit:1189 */
6622 if (UNTAG_Bool(REGB0)) {
6623 /* syntax/typing.nit:1190 */
6624 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6625 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6626 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*/;
6627 if (UNTAG_Bool(REGB0)) {
6628 } else {
6629 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1190);
6630 }
6631 REGB0 = TAG_Bool(1);
6632 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);
6633 /* syntax/typing.nit:1191 */
6634 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6635 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6636 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]);
6637 }
6638 } else {
6639 /* syntax/typing.nit:1194 */
6640 REGB0 = TAG_Int(3);
6641 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6642 if (!once_value_12) {
6643 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6644 REGB0 = TAG_Int(35);
6645 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6646 once_value_12 = fra.me.REG[5];
6647 register_static_object(&once_value_12);
6648 } else fra.me.REG[5] = once_value_12;
6649 fra.me.REG[5] = fra.me.REG[5];
6650 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6651 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6652 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6654 if (!once_value_13) {
6655 fra.me.REG[5] = BOX_NativeString(".");
6656 REGB0 = TAG_Int(1);
6657 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6658 once_value_13 = fra.me.REG[5];
6659 register_static_object(&once_value_13);
6660 } else fra.me.REG[5] = once_value_13;
6661 fra.me.REG[5] = fra.me.REG[5];
6662 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6663 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6664 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6665 /* syntax/typing.nit:1195 */
6666 goto label7;
6667 }
6668 }
6669 /* syntax/typing.nit:1198 */
6670 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6671 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6672 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6673 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*/;
6674 if (UNTAG_Bool(REGB0)) {
6675 } else {
6676 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1198);
6677 }
6678 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6679 if (UNTAG_Bool(REGB0)) {
6680 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1198);
6681 }
6682 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6683 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6684 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6685 if (UNTAG_Bool(REGB0)) {
6686 } else {
6687 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6688 if (UNTAG_Bool(REGB1)) {
6689 REGB1 = TAG_Bool(0);
6690 REGB0 = REGB1;
6691 } else {
6692 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6693 REGB0 = REGB1;
6694 }
6695 }
6696 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6697 if (UNTAG_Bool(REGB0)) {
6698 /* syntax/typing.nit:1199 */
6699 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6700 /* syntax/typing.nit:1200 */
6701 fra.me.REG[4] = NIT_NULL;
6702 /* ../lib/standard/collection/array.nit:269 */
6703 REGB0 = TAG_Int(0);
6704 /* ../lib/standard/collection/array.nit:270 */
6705 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6706 if (UNTAG_Bool(REGB1)) {
6707 } else {
6708 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6709 }
6710 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6711 /* ../lib/standard/collection/array.nit:271 */
6712 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6713 /* ../lib/standard/collection/array.nit:272 */
6714 while(1) {
6715 /* ../lib/standard/collection/array.nit:24 */
6716 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6717 if (UNTAG_Bool(REGB1)) {
6718 } else {
6719 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6720 }
6721 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6722 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6723 if (UNTAG_Bool(REGB2)) {
6724 } else {
6725 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6726 }
6727 /* ../lib/standard/kernel.nit:235 */
6728 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6729 /* ../lib/standard/collection/array.nit:272 */
6730 if (UNTAG_Bool(REGB1)) {
6731 /* ../lib/standard/collection/array.nit:273 */
6732 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6733 if (UNTAG_Bool(REGB1)) {
6734 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6735 }
6736 /* ../lib/standard/collection/array.nit:718 */
6737 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6738 /* syntax/typing.nit:1202 */
6739 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6740 if (UNTAG_Bool(REGB1)) {
6741 } else {
6742 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1202);
6743 }
6744 /* syntax/typing.nit:1203 */
6745 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6746 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6747 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*/;
6748 if (UNTAG_Bool(REGB1)) {
6749 } else {
6750 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1203);
6751 }
6752 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6753 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6754 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6755 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6756 if (UNTAG_Bool(REGB1)) {
6757 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1203);
6758 }
6759 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6760 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6761 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6762 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6763 if (UNTAG_Bool(REGB1)) {
6764 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1203);
6765 }
6766 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6767 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6768 /* syntax/typing.nit:1204 */
6769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6770 /* syntax/typing.nit:1205 */
6771 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6772 if (UNTAG_Bool(REGB1)) {
6773 } else {
6774 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6775 if (UNTAG_Bool(REGB2)) {
6776 REGB2 = TAG_Bool(0);
6777 REGB1 = REGB2;
6778 } else {
6779 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6780 REGB1 = REGB2;
6781 }
6782 }
6783 if (UNTAG_Bool(REGB1)) {
6784 REGB1 = TAG_Bool(1);
6785 } else {
6786 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6787 if (UNTAG_Bool(REGB2)) {
6788 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1205);
6789 }
6790 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6791 REGB1 = REGB2;
6792 }
6793 if (UNTAG_Bool(REGB1)) {
6794 /* syntax/typing.nit:1206 */
6795 fra.me.REG[4] = fra.me.REG[8];
6796 }
6797 /* ../lib/standard/collection/array.nit:274 */
6798 REGB1 = TAG_Int(1);
6799 /* ../lib/standard/kernel.nit:238 */
6800 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6801 /* ../lib/standard/collection/array.nit:274 */
6802 REGB0 = REGB1;
6803 } else {
6804 /* ../lib/standard/collection/array.nit:272 */
6805 goto label14;
6806 }
6807 }
6808 label14: while(0);
6809 /* ../lib/standard/collection/array.nit:269 */
6810 REGB0 = TAG_Int(0);
6811 /* ../lib/standard/collection/array.nit:270 */
6812 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6813 if (UNTAG_Bool(REGB1)) {
6814 } else {
6815 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6816 }
6817 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6818 /* ../lib/standard/collection/array.nit:271 */
6819 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6820 /* ../lib/standard/collection/array.nit:272 */
6821 while(1) {
6822 /* ../lib/standard/collection/array.nit:24 */
6823 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6824 if (UNTAG_Bool(REGB1)) {
6825 } else {
6826 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6827 }
6828 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6829 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6830 if (UNTAG_Bool(REGB2)) {
6831 } else {
6832 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6833 }
6834 /* ../lib/standard/kernel.nit:235 */
6835 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6836 /* ../lib/standard/collection/array.nit:272 */
6837 if (UNTAG_Bool(REGB1)) {
6838 /* ../lib/standard/collection/array.nit:273 */
6839 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6840 if (UNTAG_Bool(REGB1)) {
6841 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6842 }
6843 /* ../lib/standard/collection/array.nit:718 */
6844 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6845 /* syntax/typing.nit:1210 */
6846 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6847 if (UNTAG_Bool(REGB1)) {
6848 } else {
6849 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1210);
6850 }
6851 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]);
6852 /* ../lib/standard/collection/array.nit:274 */
6853 REGB1 = TAG_Int(1);
6854 /* ../lib/standard/kernel.nit:238 */
6855 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6856 /* ../lib/standard/collection/array.nit:274 */
6857 REGB0 = REGB1;
6858 } else {
6859 /* ../lib/standard/collection/array.nit:272 */
6860 goto label15;
6861 }
6862 }
6863 label15: while(0);
6864 /* syntax/typing.nit:1212 */
6865 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6866 }
6867 /* syntax/typing.nit:1214 */
6868 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6869 /* syntax/typing.nit:1215 */
6870 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6871 if (UNTAG_Bool(REGB0)) {
6872 } else {
6873 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1215);
6874 }
6875 /* syntax/typing.nit:1216 */
6876 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6877 /* syntax/typing.nit:1217 */
6878 REGB0 = TAG_Bool(1);
6879 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6880 label7: while(0);
6881 stack_frame_head = fra.me.prev;
6882 return;
6883 }
6884 static const char LOCATE_syntax___typing___AExternCall___target_class_name[] = "typing::AExternCall::target_class_name";
6885 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6886 struct {struct stack_frame_t me;} fra;
6887 val_t tmp;
6888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6889 fra.me.file = LOCATE_syntax___typing;
6890 fra.me.line = 1222;
6891 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6892 fra.me.has_broke = 0;
6893 fra.me.REG_size = 1;
6894 fra.me.nitni_local_ref_head = NULL;
6895 fra.me.REG[0] = NIT_NULL;
6896 fra.me.REG[0] = p0;
6897 /* syntax/typing.nit:1222 */
6898 fra.me.REG[0] = NIT_NULL;
6899 goto label1;
6900 label1: while(0);
6901 stack_frame_head = fra.me.prev;
6902 return fra.me.REG[0];
6903 }
6904 static const char LOCATE_syntax___typing___AExternCall___target_method_name[] = "typing::AExternCall::target_method_name";
6905 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6906 struct {struct stack_frame_t me;} fra;
6907 val_t tmp;
6908 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6909 fra.me.file = LOCATE_syntax___typing;
6910 fra.me.line = 1223;
6911 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6912 fra.me.has_broke = 0;
6913 fra.me.REG_size = 0;
6914 fra.me.nitni_local_ref_head = NULL;
6915 /* syntax/typing.nit:1223 */
6916 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1223);
6917 stack_frame_head = fra.me.prev;
6918 return NIT_NULL;
6919 }
6920 static const char LOCATE_syntax___typing___AExternCall___after_typing[] = "typing::AExternCall::(typing::ANode::after_typing)";
6921 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6922 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6923 val_t REGB0;
6924 val_t REGB1;
6925 val_t tmp;
6926 static val_t once_value_1; /* Once value */
6927 static val_t once_value_2; /* Once value */
6928 static val_t once_value_4; /* Once value */
6929 static val_t once_value_5; /* Once value */
6930 static val_t once_value_6; /* Once value */
6931 static val_t once_value_7; /* Once value */
6932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6933 fra.me.file = LOCATE_syntax___typing;
6934 fra.me.line = 1225;
6935 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6936 fra.me.has_broke = 0;
6937 fra.me.REG_size = 8;
6938 fra.me.nitni_local_ref_head = NULL;
6939 fra.me.REG[0] = NIT_NULL;
6940 fra.me.REG[1] = NIT_NULL;
6941 fra.me.REG[2] = NIT_NULL;
6942 fra.me.REG[3] = NIT_NULL;
6943 fra.me.REG[4] = NIT_NULL;
6944 fra.me.REG[5] = NIT_NULL;
6945 fra.me.REG[6] = NIT_NULL;
6946 fra.me.REG[7] = NIT_NULL;
6947 fra.me.REG[0] = p0;
6948 fra.me.REG[1] = p1;
6949 /* syntax/typing.nit:1225 */
6950 fra.me.REG[2] = fra.me.REG[0];
6951 /* syntax/typing.nit:1227 */
6952 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6953 /* syntax/typing.nit:1228 */
6954 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6955 /* syntax/typing.nit:1235 */
6956 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6957 if (UNTAG_Bool(REGB0)) {
6958 } else {
6959 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6960 if (UNTAG_Bool(REGB1)) {
6961 REGB1 = TAG_Bool(0);
6962 REGB0 = REGB1;
6963 } else {
6964 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6965 REGB0 = REGB1;
6966 }
6967 }
6968 if (UNTAG_Bool(REGB0)) {
6969 /* syntax/typing.nit:1236 */
6970 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6971 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6972 } else {
6973 /* syntax/typing.nit:1238 */
6974 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6975 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6976 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6977 if (UNTAG_Bool(REGB0)) {
6978 /* syntax/typing.nit:1239 */
6979 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6980 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6981 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6982 /* syntax/typing.nit:1240 */
6983 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6984 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6985 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
6986 fra.me.REG[5] = fra.me.REG[6];
6987 } else {
6988 /* syntax/typing.nit:1242 */
6989 REGB0 = TAG_Int(3);
6990 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6991 if (!once_value_1) {
6992 fra.me.REG[7] = BOX_NativeString("Error: class ");
6993 REGB0 = TAG_Int(13);
6994 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
6995 once_value_1 = fra.me.REG[7];
6996 register_static_object(&once_value_1);
6997 } else fra.me.REG[7] = once_value_1;
6998 fra.me.REG[7] = fra.me.REG[7];
6999 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
7000 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7001 if (UNTAG_Bool(REGB0)) {
7002 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1242);
7003 }
7004 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7005 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7006 if (!once_value_2) {
7007 fra.me.REG[3] = BOX_NativeString(", not found.");
7008 REGB0 = TAG_Int(12);
7009 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7010 once_value_2 = fra.me.REG[3];
7011 register_static_object(&once_value_2);
7012 } else fra.me.REG[3] = once_value_2;
7013 fra.me.REG[3] = fra.me.REG[3];
7014 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7015 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7016 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
7017 /* syntax/typing.nit:1243 */
7018 goto label3;
7019 }
7020 }
7021 /* syntax/typing.nit:1247 */
7022 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7023 if (UNTAG_Bool(REGB0)) {
7024 /* syntax/typing.nit:1248 */
7025 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7026 /* syntax/typing.nit:1250 */
7027 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7028 /* syntax/typing.nit:1252 */
7029 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7030 if (UNTAG_Bool(REGB0)) {
7031 } else {
7032 /* syntax/typing.nit:1255 */
7033 REGB0 = TAG_Int(3);
7034 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7035 if (!once_value_4) {
7036 fra.me.REG[7] = BOX_NativeString("Error: property ");
7037 REGB0 = TAG_Int(16);
7038 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7039 once_value_4 = fra.me.REG[7];
7040 register_static_object(&once_value_4);
7041 } else fra.me.REG[7] = once_value_4;
7042 fra.me.REG[7] = fra.me.REG[7];
7043 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7044 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7045 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7046 if (!once_value_5) {
7047 fra.me.REG[7] = BOX_NativeString(" is not a method.");
7048 REGB0 = TAG_Int(17);
7049 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7050 once_value_5 = fra.me.REG[7];
7051 register_static_object(&once_value_5);
7052 } else fra.me.REG[7] = once_value_5;
7053 fra.me.REG[7] = fra.me.REG[7];
7054 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7055 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7056 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7057 /* syntax/typing.nit:1256 */
7058 goto label3;
7059 }
7060 } else {
7061 /* syntax/typing.nit:1259 */
7062 REGB0 = TAG_Int(3);
7063 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7064 if (!once_value_6) {
7065 fra.me.REG[7] = BOX_NativeString("Error: property ");
7066 REGB0 = TAG_Int(16);
7067 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7068 once_value_6 = fra.me.REG[7];
7069 register_static_object(&once_value_6);
7070 } else fra.me.REG[7] = once_value_6;
7071 fra.me.REG[7] = fra.me.REG[7];
7072 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7073 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7074 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7075 if (!once_value_7) {
7076 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
7077 REGB0 = TAG_Int(27);
7078 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
7079 once_value_7 = fra.me.REG[4];
7080 register_static_object(&once_value_7);
7081 } else fra.me.REG[4] = once_value_7;
7082 fra.me.REG[4] = fra.me.REG[4];
7083 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7084 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7085 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7086 /* syntax/typing.nit:1260 */
7087 goto label3;
7088 }
7089 /* syntax/typing.nit:1263 */
7090 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
7091 /* syntax/typing.nit:1264 */
7092 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7093 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
7094 if (UNTAG_Bool(REGB0)) {
7095 } else {
7096 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1264);
7097 }
7098 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
7099 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
7100 label3: while(0);
7101 stack_frame_head = fra.me.prev;
7102 return;
7103 }
7104 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_class_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_class_name)";
7105 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
7106 struct {struct stack_frame_t me;} fra;
7107 val_t tmp;
7108 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7109 fra.me.file = LOCATE_syntax___typing;
7110 fra.me.line = 1269;
7111 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
7112 fra.me.has_broke = 0;
7113 fra.me.REG_size = 1;
7114 fra.me.nitni_local_ref_head = NULL;
7115 fra.me.REG[0] = NIT_NULL;
7116 fra.me.REG[0] = p0;
7117 /* syntax/typing.nit:1269 */
7118 fra.me.REG[0] = NIT_NULL;
7119 goto label1;
7120 label1: while(0);
7121 stack_frame_head = fra.me.prev;
7122 return fra.me.REG[0];
7123 }
7124 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_method_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_method_name)";
7125 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
7126 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7127 val_t REGB0;
7128 val_t tmp;
7129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7130 fra.me.file = LOCATE_syntax___typing;
7131 fra.me.line = 1270;
7132 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
7133 fra.me.has_broke = 0;
7134 fra.me.REG_size = 2;
7135 fra.me.nitni_local_ref_head = NULL;
7136 fra.me.REG[0] = NIT_NULL;
7137 fra.me.REG[1] = NIT_NULL;
7138 fra.me.REG[0] = p0;
7139 /* syntax/typing.nit:1270 */
7140 fra.me.REG[1] = fra.me.REG[0];
7141 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7142 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7143 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7144 if (UNTAG_Bool(REGB0)) {
7145 } else {
7146 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1270);
7147 }
7148 goto label1;
7149 label1: while(0);
7150 stack_frame_head = fra.me.prev;
7151 return fra.me.REG[1];
7152 }
7153 static const char LOCATE_syntax___typing___ASuperExternCall___after_typing[] = "typing::ASuperExternCall::(typing::ANode::after_typing)";
7154 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
7155 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7156 val_t REGB0;
7157 val_t tmp;
7158 static val_t once_value_1; /* Once value */
7159 static val_t once_value_2; /* Once value */
7160 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7161 fra.me.file = LOCATE_syntax___typing;
7162 fra.me.line = 1274;
7163 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
7164 fra.me.has_broke = 0;
7165 fra.me.REG_size = 4;
7166 fra.me.nitni_local_ref_head = NULL;
7167 fra.me.REG[0] = NIT_NULL;
7168 fra.me.REG[1] = NIT_NULL;
7169 fra.me.REG[2] = NIT_NULL;
7170 fra.me.REG[3] = NIT_NULL;
7171 fra.me.REG[0] = p0;
7172 fra.me.REG[1] = p1;
7173 /* syntax/typing.nit:1276 */
7174 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7175 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
7176 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
7177 /* syntax/typing.nit:1277 */
7178 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
7179 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7180 if (UNTAG_Bool(REGB0)) {
7181 /* syntax/typing.nit:1278 */
7182 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7183 REGB0 = TAG_Bool(1);
7184 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
7185 } else {
7186 /* syntax/typing.nit:1280 */
7187 REGB0 = TAG_Int(3);
7188 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7189 if (!once_value_1) {
7190 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
7191 REGB0 = TAG_Int(35);
7192 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7193 once_value_1 = fra.me.REG[3];
7194 register_static_object(&once_value_1);
7195 } else fra.me.REG[3] = once_value_1;
7196 fra.me.REG[3] = fra.me.REG[3];
7197 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7198 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7199 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7200 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7201 if (!once_value_2) {
7202 fra.me.REG[3] = BOX_NativeString(".");
7203 REGB0 = TAG_Int(1);
7204 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7205 once_value_2 = fra.me.REG[3];
7206 register_static_object(&once_value_2);
7207 } else fra.me.REG[3] = once_value_2;
7208 fra.me.REG[3] = fra.me.REG[3];
7209 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7210 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7211 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7212 /* syntax/typing.nit:1281 */
7213 goto label3;
7214 }
7215 label3: while(0);
7216 stack_frame_head = fra.me.prev;
7217 return;
7218 }
7219 static const char LOCATE_syntax___typing___AFullPropExternCall___target_class_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_class_name)";
7220 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
7221 struct {struct stack_frame_t me;} fra;
7222 val_t tmp;
7223 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7224 fra.me.file = LOCATE_syntax___typing;
7225 fra.me.line = 1287;
7226 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
7227 fra.me.has_broke = 0;
7228 fra.me.REG_size = 1;
7229 fra.me.nitni_local_ref_head = NULL;
7230 fra.me.REG[0] = NIT_NULL;
7231 fra.me.REG[0] = p0;
7232 /* syntax/typing.nit:1287 */
7233 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7234 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7235 goto label1;
7236 label1: while(0);
7237 stack_frame_head = fra.me.prev;
7238 return fra.me.REG[0];
7239 }
7240 static const char LOCATE_syntax___typing___AFullPropExternCall___target_method_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_method_name)";
7241 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
7242 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7243 val_t REGB0;
7244 val_t tmp;
7245 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7246 fra.me.file = LOCATE_syntax___typing;
7247 fra.me.line = 1288;
7248 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
7249 fra.me.has_broke = 0;
7250 fra.me.REG_size = 2;
7251 fra.me.nitni_local_ref_head = NULL;
7252 fra.me.REG[0] = NIT_NULL;
7253 fra.me.REG[1] = NIT_NULL;
7254 fra.me.REG[0] = p0;
7255 /* syntax/typing.nit:1288 */
7256 fra.me.REG[1] = fra.me.REG[0];
7257 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7258 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7259 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7260 if (UNTAG_Bool(REGB0)) {
7261 } else {
7262 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1288);
7263 }
7264 goto label1;
7265 label1: while(0);
7266 stack_frame_head = fra.me.prev;
7267 return fra.me.REG[1];
7268 }
7269 static const char LOCATE_syntax___typing___AInitPropExternCall___target_class_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_class_name)";
7270 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
7271 struct {struct stack_frame_t me;} fra;
7272 val_t tmp;
7273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7274 fra.me.file = LOCATE_syntax___typing;
7275 fra.me.line = 1292;
7276 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
7277 fra.me.has_broke = 0;
7278 fra.me.REG_size = 1;
7279 fra.me.nitni_local_ref_head = NULL;
7280 fra.me.REG[0] = NIT_NULL;
7281 fra.me.REG[0] = p0;
7282 /* syntax/typing.nit:1292 */
7283 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7284 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7285 goto label1;
7286 label1: while(0);
7287 stack_frame_head = fra.me.prev;
7288 return fra.me.REG[0];
7289 }
7290 static const char LOCATE_syntax___typing___AInitPropExternCall___target_method_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_method_name)";
7291 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
7292 struct {struct stack_frame_t me;} fra;
7293 val_t REGB0;
7294 val_t tmp;
7295 static val_t once_value_1; /* Once value */
7296 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7297 fra.me.file = LOCATE_syntax___typing;
7298 fra.me.line = 1293;
7299 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
7300 fra.me.has_broke = 0;
7301 fra.me.REG_size = 1;
7302 fra.me.nitni_local_ref_head = NULL;
7303 fra.me.REG[0] = NIT_NULL;
7304 fra.me.REG[0] = p0;
7305 /* syntax/typing.nit:1293 */
7306 if (!once_value_1) {
7307 fra.me.REG[0] = BOX_NativeString("init");
7308 REGB0 = TAG_Int(4);
7309 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
7310 once_value_1 = fra.me.REG[0];
7311 register_static_object(&once_value_1);
7312 } else fra.me.REG[0] = once_value_1;
7313 fra.me.REG[0] = fra.me.REG[0];
7314 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7315 goto label2;
7316 label2: while(0);
7317 stack_frame_head = fra.me.prev;
7318 return fra.me.REG[0];
7319 }
7320 static const char LOCATE_syntax___typing___ACastExternCall___from_type[] = "typing::ACastExternCall::from_type";
7321 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
7322 struct {struct stack_frame_t me;} fra;
7323 val_t tmp;
7324 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7325 fra.me.file = LOCATE_syntax___typing;
7326 fra.me.line = 1297;
7327 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
7328 fra.me.has_broke = 0;
7329 fra.me.REG_size = 0;
7330 fra.me.nitni_local_ref_head = NULL;
7331 /* syntax/typing.nit:1297 */
7332 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1297);
7333 stack_frame_head = fra.me.prev;
7334 return NIT_NULL;
7335 }
7336 static const char LOCATE_syntax___typing___ACastExternCall___to_type[] = "typing::ACastExternCall::to_type";
7337 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
7338 struct {struct stack_frame_t me;} fra;
7339 val_t tmp;
7340 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7341 fra.me.file = LOCATE_syntax___typing;
7342 fra.me.line = 1298;
7343 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
7344 fra.me.has_broke = 0;
7345 fra.me.REG_size = 0;
7346 fra.me.nitni_local_ref_head = NULL;
7347 /* syntax/typing.nit:1298 */
7348 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1298);
7349 stack_frame_head = fra.me.prev;
7350 return NIT_NULL;
7351 }
7352 static const char LOCATE_syntax___typing___ACastExternCall___after_typing[] = "typing::ACastExternCall::(typing::ANode::after_typing)";
7353 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
7354 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7355 val_t REGB0;
7356 val_t REGB1;
7357 val_t tmp;
7358 static val_t once_value_1; /* Once value */
7359 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7360 fra.me.file = LOCATE_syntax___typing;
7361 fra.me.line = 1300;
7362 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
7363 fra.me.has_broke = 0;
7364 fra.me.REG_size = 4;
7365 fra.me.nitni_local_ref_head = NULL;
7366 fra.me.REG[0] = NIT_NULL;
7367 fra.me.REG[1] = NIT_NULL;
7368 fra.me.REG[2] = NIT_NULL;
7369 fra.me.REG[3] = NIT_NULL;
7370 fra.me.REG[0] = p0;
7371 fra.me.REG[1] = p1;
7372 /* syntax/typing.nit:1302 */
7373 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7374 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7375 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
7376 if (UNTAG_Bool(REGB0)) {
7377 } else {
7378 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7379 REGB0 = REGB1;
7380 }
7381 if (UNTAG_Bool(REGB0)) {
7382 /* syntax/typing.nit:1304 */
7383 if (!once_value_1) {
7384 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
7385 REGB0 = TAG_Int(44);
7386 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7387 once_value_1 = fra.me.REG[3];
7388 register_static_object(&once_value_1);
7389 } else fra.me.REG[3] = once_value_1;
7390 fra.me.REG[3] = fra.me.REG[3];
7391 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7392 }
7393 /* syntax/typing.nit:1307 */
7394 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7395 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7396 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
7397 /* syntax/typing.nit:1308 */
7398 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7399 /* syntax/typing.nit:1309 */
7400 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7401 if (UNTAG_Bool(REGB0)) {
7402 } else {
7403 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1309);
7404 }
7405 /* syntax/typing.nit:1310 */
7406 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
7407 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7408 stack_frame_head = fra.me.prev;
7409 return;
7410 }
7411 static const char LOCATE_syntax___typing___ACastAsExternCall___from_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::from_type)";
7412 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
7413 struct {struct stack_frame_t me;} fra;
7414 val_t tmp;
7415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7416 fra.me.file = LOCATE_syntax___typing;
7417 fra.me.line = 1315;
7418 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
7419 fra.me.has_broke = 0;
7420 fra.me.REG_size = 1;
7421 fra.me.nitni_local_ref_head = NULL;
7422 fra.me.REG[0] = NIT_NULL;
7423 fra.me.REG[0] = p0;
7424 /* syntax/typing.nit:1315 */
7425 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
7426 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7427 goto label1;
7428 label1: while(0);
7429 stack_frame_head = fra.me.prev;
7430 return fra.me.REG[0];
7431 }
7432 static const char LOCATE_syntax___typing___ACastAsExternCall___to_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::to_type)";
7433 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
7434 struct {struct stack_frame_t me;} fra;
7435 val_t tmp;
7436 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7437 fra.me.file = LOCATE_syntax___typing;
7438 fra.me.line = 1316;
7439 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
7440 fra.me.has_broke = 0;
7441 fra.me.REG_size = 1;
7442 fra.me.nitni_local_ref_head = NULL;
7443 fra.me.REG[0] = NIT_NULL;
7444 fra.me.REG[0] = p0;
7445 /* syntax/typing.nit:1316 */
7446 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
7447 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7448 goto label1;
7449 label1: while(0);
7450 stack_frame_head = fra.me.prev;
7451 return fra.me.REG[0];
7452 }
7453 static const char LOCATE_syntax___typing___AAsNullableExternCall___from_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::from_type)";
7454 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7455 struct {struct stack_frame_t me;} fra;
7456 val_t tmp;
7457 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7458 fra.me.file = LOCATE_syntax___typing;
7459 fra.me.line = 1320;
7460 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7461 fra.me.has_broke = 0;
7462 fra.me.REG_size = 1;
7463 fra.me.nitni_local_ref_head = NULL;
7464 fra.me.REG[0] = NIT_NULL;
7465 fra.me.REG[0] = p0;
7466 /* syntax/typing.nit:1320 */
7467 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7468 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7469 goto label1;
7470 label1: while(0);
7471 stack_frame_head = fra.me.prev;
7472 return fra.me.REG[0];
7473 }
7474 static const char LOCATE_syntax___typing___AAsNullableExternCall___to_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::to_type)";
7475 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7476 struct {struct stack_frame_t me;} fra;
7477 val_t tmp;
7478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7479 fra.me.file = LOCATE_syntax___typing;
7480 fra.me.line = 1321;
7481 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7482 fra.me.has_broke = 0;
7483 fra.me.REG_size = 1;
7484 fra.me.nitni_local_ref_head = NULL;
7485 fra.me.REG[0] = NIT_NULL;
7486 fra.me.REG[0] = p0;
7487 /* syntax/typing.nit:1321 */
7488 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7489 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7490 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7491 goto label1;
7492 label1: while(0);
7493 stack_frame_head = fra.me.prev;
7494 return fra.me.REG[0];
7495 }
7496 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___from_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::from_type)";
7497 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7498 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7499 val_t REGB0;
7500 val_t tmp;
7501 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7502 fra.me.file = LOCATE_syntax___typing;
7503 fra.me.line = 1325;
7504 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7505 fra.me.has_broke = 0;
7506 fra.me.REG_size = 2;
7507 fra.me.nitni_local_ref_head = NULL;
7508 fra.me.REG[0] = NIT_NULL;
7509 fra.me.REG[1] = NIT_NULL;
7510 fra.me.REG[0] = p0;
7511 /* syntax/typing.nit:1327 */
7512 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7513 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7514 /* syntax/typing.nit:1328 */
7515 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7516 if (UNTAG_Bool(REGB0)) {
7517 /* syntax/typing.nit:1330 */
7518 fra.me.REG[1] = fra.me.REG[0];
7519 goto label1;
7520 } else {
7521 /* syntax/typing.nit:1332 */
7522 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7523 fra.me.REG[1] = fra.me.REG[0];
7524 goto label1;
7525 }
7526 label1: while(0);
7527 stack_frame_head = fra.me.prev;
7528 return fra.me.REG[1];
7529 }
7530 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___to_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::to_type)";
7531 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7532 struct {struct stack_frame_t me;} fra;
7533 val_t tmp;
7534 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7535 fra.me.file = LOCATE_syntax___typing;
7536 fra.me.line = 1335;
7537 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7538 fra.me.has_broke = 0;
7539 fra.me.REG_size = 1;
7540 fra.me.nitni_local_ref_head = NULL;
7541 fra.me.REG[0] = NIT_NULL;
7542 fra.me.REG[0] = p0;
7543 /* syntax/typing.nit:1335 */
7544 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7545 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7546 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7547 goto label1;
7548 label1: while(0);
7549 stack_frame_head = fra.me.prev;
7550 return fra.me.REG[0];
7551 }
7552 static const char LOCATE_syntax___typing___AAttrFormExpr___prop[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::prop)";
7553 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7554 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7555 val_t REGB0;
7556 val_t tmp;
7557 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7558 fra.me.file = LOCATE_syntax___typing;
7559 fra.me.line = 1339;
7560 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7561 fra.me.has_broke = 0;
7562 fra.me.REG_size = 2;
7563 fra.me.nitni_local_ref_head = NULL;
7564 fra.me.REG[0] = NIT_NULL;
7565 fra.me.REG[1] = NIT_NULL;
7566 fra.me.REG[0] = p0;
7567 /* syntax/typing.nit:1339 */
7568 fra.me.REG[1] = fra.me.REG[0];
7569 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7570 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7571 if (UNTAG_Bool(REGB0)) {
7572 } else {
7573 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1339);
7574 }
7575 goto label1;
7576 label1: while(0);
7577 stack_frame_head = fra.me.prev;
7578 return fra.me.REG[1];
7579 }
7580 static const char LOCATE_syntax___typing___AAttrFormExpr___attr_type[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::attr_type)";
7581 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7582 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7583 val_t REGB0;
7584 val_t tmp;
7585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7586 fra.me.file = LOCATE_syntax___typing;
7587 fra.me.line = 1342;
7588 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7589 fra.me.has_broke = 0;
7590 fra.me.REG_size = 2;
7591 fra.me.nitni_local_ref_head = NULL;
7592 fra.me.REG[0] = NIT_NULL;
7593 fra.me.REG[1] = NIT_NULL;
7594 fra.me.REG[0] = p0;
7595 /* syntax/typing.nit:1342 */
7596 fra.me.REG[1] = fra.me.REG[0];
7597 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7598 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7599 if (UNTAG_Bool(REGB0)) {
7600 } else {
7601 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1342);
7602 }
7603 goto label1;
7604 label1: while(0);
7605 stack_frame_head = fra.me.prev;
7606 return fra.me.REG[1];
7607 }
7608 static const char LOCATE_syntax___typing___AAttrFormExpr___do_typing[] = "typing::AAttrFormExpr::do_typing";
7609 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7610 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7611 val_t REGB0;
7612 val_t REGB1;
7613 val_t REGB2;
7614 val_t tmp;
7615 static val_t once_value_2; /* Once value */
7616 static val_t once_value_3; /* Once value */
7617 static val_t once_value_4; /* Once value */
7618 static val_t once_value_5; /* Once value */
7619 static val_t once_value_6; /* Once value */
7620 static val_t once_value_7; /* Once value */
7621 static val_t once_value_8; /* Once value */
7622 static val_t once_value_9; /* Once value */
7623 static val_t once_value_10; /* Once value */
7624 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7625 fra.me.file = LOCATE_syntax___typing;
7626 fra.me.line = 1345;
7627 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7628 fra.me.has_broke = 0;
7629 fra.me.REG_size = 7;
7630 fra.me.nitni_local_ref_head = NULL;
7631 fra.me.REG[0] = NIT_NULL;
7632 fra.me.REG[1] = NIT_NULL;
7633 fra.me.REG[2] = NIT_NULL;
7634 fra.me.REG[3] = NIT_NULL;
7635 fra.me.REG[4] = NIT_NULL;
7636 fra.me.REG[5] = NIT_NULL;
7637 fra.me.REG[6] = NIT_NULL;
7638 fra.me.REG[0] = p0;
7639 fra.me.REG[1] = p1;
7640 /* syntax/typing.nit:1348 */
7641 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7642 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7643 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7644 if (UNTAG_Bool(REGB0)) {
7645 goto label1;
7646 }
7647 /* syntax/typing.nit:1349 */
7648 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7649 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7650 /* syntax/typing.nit:1350 */
7651 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7652 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7653 /* syntax/typing.nit:1351 */
7654 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7655 if (UNTAG_Bool(REGB0)) {
7656 /* syntax/typing.nit:1352 */
7657 REGB0 = TAG_Int(3);
7658 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7659 if (!once_value_2) {
7660 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7661 REGB0 = TAG_Int(18);
7662 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7663 once_value_2 = fra.me.REG[5];
7664 register_static_object(&once_value_2);
7665 } else fra.me.REG[5] = once_value_2;
7666 fra.me.REG[5] = fra.me.REG[5];
7667 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7668 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7669 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7670 if (!once_value_3) {
7671 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7672 REGB0 = TAG_Int(19);
7673 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7674 once_value_3 = fra.me.REG[5];
7675 register_static_object(&once_value_3);
7676 } else fra.me.REG[5] = once_value_3;
7677 fra.me.REG[5] = fra.me.REG[5];
7678 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7679 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7680 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7681 /* syntax/typing.nit:1353 */
7682 goto label1;
7683 }
7684 /* syntax/typing.nit:1355 */
7685 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7686 /* syntax/typing.nit:1356 */
7687 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7688 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7689 if (UNTAG_Bool(REGB0)) {
7690 /* syntax/typing.nit:1357 */
7691 REGB0 = TAG_Int(5);
7692 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7693 if (!once_value_4) {
7694 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7695 REGB0 = TAG_Int(17);
7696 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7697 once_value_4 = fra.me.REG[6];
7698 register_static_object(&once_value_4);
7699 } else fra.me.REG[6] = once_value_4;
7700 fra.me.REG[6] = fra.me.REG[6];
7701 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7702 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7703 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7704 if (!once_value_5) {
7705 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7706 REGB0 = TAG_Int(19);
7707 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7708 once_value_5 = fra.me.REG[6];
7709 register_static_object(&once_value_5);
7710 } else fra.me.REG[6] = once_value_5;
7711 fra.me.REG[6] = fra.me.REG[6];
7712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7713 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7714 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7715 if (!once_value_6) {
7716 fra.me.REG[6] = BOX_NativeString(".");
7717 REGB0 = TAG_Int(1);
7718 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7719 once_value_6 = fra.me.REG[6];
7720 register_static_object(&once_value_6);
7721 } else fra.me.REG[6] = once_value_6;
7722 fra.me.REG[6] = fra.me.REG[6];
7723 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7724 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7725 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7726 /* syntax/typing.nit:1358 */
7727 goto label1;
7728 }
7729 /* syntax/typing.nit:1360 */
7730 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7731 /* syntax/typing.nit:1361 */
7732 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7733 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7734 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7735 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7736 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7737 REGB1 = TAG_Int(3);
7738 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7739 if (UNTAG_Bool(REGB2)) {
7740 } else {
7741 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7742 }
7743 /* ../lib/standard/kernel.nit:235 */
7744 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7745 /* syntax/typing.nit:1361 */
7746 if (UNTAG_Bool(REGB1)) {
7747 /* syntax/typing.nit:1362 */
7748 REGB1 = TAG_Int(7);
7749 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7750 if (!once_value_7) {
7751 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7752 REGB1 = TAG_Int(17);
7753 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7754 once_value_7 = fra.me.REG[5];
7755 register_static_object(&once_value_7);
7756 } else fra.me.REG[5] = once_value_7;
7757 fra.me.REG[5] = fra.me.REG[5];
7758 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
7759 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7760 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7761 if (!once_value_8) {
7762 fra.me.REG[3] = BOX_NativeString(" from ");
7763 REGB1 = TAG_Int(6);
7764 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7765 once_value_8 = fra.me.REG[3];
7766 register_static_object(&once_value_8);
7767 } else fra.me.REG[3] = once_value_8;
7768 fra.me.REG[3] = fra.me.REG[3];
7769 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7770 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7771 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7772 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7773 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7774 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7775 if (!once_value_9) {
7776 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7777 REGB1 = TAG_Int(17);
7778 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7779 once_value_9 = fra.me.REG[3];
7780 register_static_object(&once_value_9);
7781 } else fra.me.REG[3] = once_value_9;
7782 fra.me.REG[3] = fra.me.REG[3];
7783 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7784 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7785 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7786 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7787 if (!once_value_10) {
7788 fra.me.REG[3] = BOX_NativeString("");
7789 REGB1 = TAG_Int(0);
7790 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7791 once_value_10 = fra.me.REG[3];
7792 register_static_object(&once_value_10);
7793 } else fra.me.REG[3] = once_value_10;
7794 fra.me.REG[3] = fra.me.REG[3];
7795 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7796 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7797 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7798 }
7799 /* syntax/typing.nit:1364 */
7800 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7801 /* syntax/typing.nit:1365 */
7802 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7803 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7804 /* syntax/typing.nit:1366 */
7805 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7806 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7807 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7808 if (UNTAG_Bool(REGB1)) {
7809 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7810 if (UNTAG_Bool(REGB1)) {
7811 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1366);
7812 }
7813 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7814 fra.me.REG[2] = fra.me.REG[4];
7815 }
7816 /* syntax/typing.nit:1367 */
7817 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7818 label1: while(0);
7819 stack_frame_head = fra.me.prev;
7820 return;
7821 }
7822 static const char LOCATE_syntax___typing___AAttrExpr___after_typing[] = "typing::AAttrExpr::(typing::ANode::after_typing)";
7823 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7824 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7825 val_t REGB0;
7826 val_t REGB1;
7827 val_t tmp;
7828 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7829 fra.me.file = LOCATE_syntax___typing;
7830 fra.me.line = 1372;
7831 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7832 fra.me.has_broke = 0;
7833 fra.me.REG_size = 2;
7834 fra.me.nitni_local_ref_head = NULL;
7835 fra.me.REG[0] = NIT_NULL;
7836 fra.me.REG[1] = NIT_NULL;
7837 fra.me.REG[0] = p0;
7838 fra.me.REG[1] = p1;
7839 /* syntax/typing.nit:1374 */
7840 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7841 /* syntax/typing.nit:1375 */
7842 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7843 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7844 if (UNTAG_Bool(REGB0)) {
7845 } else {
7846 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7847 if (UNTAG_Bool(REGB1)) {
7848 REGB1 = TAG_Bool(0);
7849 REGB0 = REGB1;
7850 } else {
7851 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7852 REGB0 = REGB1;
7853 }
7854 }
7855 if (UNTAG_Bool(REGB0)) {
7856 goto label1;
7857 }
7858 /* syntax/typing.nit:1376 */
7859 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7860 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7861 /* syntax/typing.nit:1377 */
7862 REGB0 = TAG_Bool(1);
7863 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7864 label1: while(0);
7865 stack_frame_head = fra.me.prev;
7866 return;
7867 }
7868 static const char LOCATE_syntax___typing___AAttrAssignExpr___after_typing[] = "typing::AAttrAssignExpr::(typing::ANode::after_typing)";
7869 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7870 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7871 val_t REGB0;
7872 val_t REGB1;
7873 val_t tmp;
7874 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7875 fra.me.file = LOCATE_syntax___typing;
7876 fra.me.line = 1382;
7877 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7878 fra.me.has_broke = 0;
7879 fra.me.REG_size = 4;
7880 fra.me.nitni_local_ref_head = NULL;
7881 fra.me.REG[0] = NIT_NULL;
7882 fra.me.REG[1] = NIT_NULL;
7883 fra.me.REG[2] = NIT_NULL;
7884 fra.me.REG[3] = NIT_NULL;
7885 fra.me.REG[0] = p0;
7886 fra.me.REG[1] = p1;
7887 /* syntax/typing.nit:1384 */
7888 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7889 /* syntax/typing.nit:1385 */
7890 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7891 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7892 if (UNTAG_Bool(REGB0)) {
7893 } else {
7894 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7895 if (UNTAG_Bool(REGB1)) {
7896 REGB1 = TAG_Bool(0);
7897 REGB0 = REGB1;
7898 } else {
7899 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7900 REGB0 = REGB1;
7901 }
7902 }
7903 if (UNTAG_Bool(REGB0)) {
7904 goto label1;
7905 }
7906 /* syntax/typing.nit:1386 */
7907 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7908 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7909 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]);
7910 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7911 if (UNTAG_Bool(REGB0)) {
7912 goto label1;
7913 }
7914 /* syntax/typing.nit:1387 */
7915 REGB0 = TAG_Bool(1);
7916 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7917 label1: while(0);
7918 stack_frame_head = fra.me.prev;
7919 return;
7920 }
7921 static const char LOCATE_syntax___typing___AAttrReassignExpr___after_typing[] = "typing::AAttrReassignExpr::(typing::ANode::after_typing)";
7922 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7923 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7924 val_t REGB0;
7925 val_t REGB1;
7926 val_t tmp;
7927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7928 fra.me.file = LOCATE_syntax___typing;
7929 fra.me.line = 1392;
7930 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7931 fra.me.has_broke = 0;
7932 fra.me.REG_size = 4;
7933 fra.me.nitni_local_ref_head = NULL;
7934 fra.me.REG[0] = NIT_NULL;
7935 fra.me.REG[1] = NIT_NULL;
7936 fra.me.REG[2] = NIT_NULL;
7937 fra.me.REG[3] = NIT_NULL;
7938 fra.me.REG[0] = p0;
7939 fra.me.REG[1] = p1;
7940 /* syntax/typing.nit:1394 */
7941 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7942 /* syntax/typing.nit:1395 */
7943 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7944 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7945 if (UNTAG_Bool(REGB0)) {
7946 } else {
7947 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7948 if (UNTAG_Bool(REGB1)) {
7949 REGB1 = TAG_Bool(0);
7950 REGB0 = REGB1;
7951 } else {
7952 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7953 REGB0 = REGB1;
7954 }
7955 }
7956 if (UNTAG_Bool(REGB0)) {
7957 goto label1;
7958 }
7959 /* syntax/typing.nit:1396 */
7960 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7961 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]);
7962 /* syntax/typing.nit:1397 */
7963 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7964 if (UNTAG_Bool(REGB0)) {
7965 } else {
7966 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7967 if (UNTAG_Bool(REGB1)) {
7968 REGB1 = TAG_Bool(0);
7969 REGB0 = REGB1;
7970 } else {
7971 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7972 REGB0 = REGB1;
7973 }
7974 }
7975 if (UNTAG_Bool(REGB0)) {
7976 goto label1;
7977 }
7978 /* syntax/typing.nit:1398 */
7979 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7980 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7981 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]);
7982 /* syntax/typing.nit:1399 */
7983 REGB0 = TAG_Bool(1);
7984 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7985 label1: while(0);
7986 stack_frame_head = fra.me.prev;
7987 return;
7988 }
7989 static const char LOCATE_syntax___typing___AIssetAttrExpr___after_typing[] = "typing::AIssetAttrExpr::(typing::ANode::after_typing)";
7990 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
7991 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
7992 val_t REGB0;
7993 val_t REGB1;
7994 val_t tmp;
7995 static val_t once_value_2; /* Once value */
7996 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7997 fra.me.file = LOCATE_syntax___typing;
7998 fra.me.line = 1404;
7999 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
8000 fra.me.has_broke = 0;
8001 fra.me.REG_size = 3;
8002 fra.me.nitni_local_ref_head = NULL;
8003 fra.me.REG[0] = NIT_NULL;
8004 fra.me.REG[1] = NIT_NULL;
8005 fra.me.REG[2] = NIT_NULL;
8006 fra.me.REG[0] = p0;
8007 fra.me.REG[1] = p1;
8008 /* syntax/typing.nit:1406 */
8009 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8010 /* syntax/typing.nit:1407 */
8011 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
8012 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8013 if (UNTAG_Bool(REGB0)) {
8014 } else {
8015 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8016 if (UNTAG_Bool(REGB1)) {
8017 REGB1 = TAG_Bool(0);
8018 REGB0 = REGB1;
8019 } else {
8020 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
8021 REGB0 = REGB1;
8022 }
8023 }
8024 if (UNTAG_Bool(REGB0)) {
8025 goto label1;
8026 }
8027 /* syntax/typing.nit:1408 */
8028 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
8029 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
8030 if (UNTAG_Bool(REGB0)) {
8031 /* syntax/typing.nit:1409 */
8032 if (!once_value_2) {
8033 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
8034 REGB0 = TAG_Int(37);
8035 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8036 once_value_2 = fra.me.REG[2];
8037 register_static_object(&once_value_2);
8038 } else fra.me.REG[2] = once_value_2;
8039 fra.me.REG[2] = fra.me.REG[2];
8040 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
8041 }
8042 /* syntax/typing.nit:1411 */
8043 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
8044 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
8045 /* syntax/typing.nit:1412 */
8046 REGB0 = TAG_Bool(1);
8047 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
8048 label1: while(0);
8049 stack_frame_head = fra.me.prev;
8050 return;
8051 }
8052 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::prop_signature)";
8053 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
8054 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8055 val_t REGB0;
8056 val_t tmp;
8057 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8058 fra.me.file = LOCATE_syntax___typing;
8059 fra.me.line = 1417;
8060 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
8061 fra.me.has_broke = 0;
8062 fra.me.REG_size = 2;
8063 fra.me.nitni_local_ref_head = NULL;
8064 fra.me.REG[0] = NIT_NULL;
8065 fra.me.REG[1] = NIT_NULL;
8066 fra.me.REG[0] = p0;
8067 /* syntax/typing.nit:1417 */
8068 fra.me.REG[1] = fra.me.REG[0];
8069 /* syntax/typing.nit:1418 */
8070 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
8071 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
8072 if (UNTAG_Bool(REGB0)) {
8073 } else {
8074 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1418);
8075 }
8076 goto label1;
8077 label1: while(0);
8078 stack_frame_head = fra.me.prev;
8079 return fra.me.REG[1];
8080 }
8081 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::raw_arguments)";
8082 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
8083 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8084 val_t REGB0;
8085 val_t REGB1;
8086 val_t tmp;
8087 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8088 fra.me.file = LOCATE_syntax___typing;
8089 fra.me.line = 1421;
8090 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
8091 fra.me.has_broke = 0;
8092 fra.me.REG_size = 4;
8093 fra.me.nitni_local_ref_head = NULL;
8094 fra.me.REG[0] = NIT_NULL;
8095 fra.me.REG[1] = NIT_NULL;
8096 fra.me.REG[2] = NIT_NULL;
8097 fra.me.REG[3] = NIT_NULL;
8098 fra.me.REG[0] = p0;
8099 /* syntax/typing.nit:1424 */
8100 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
8101 /* syntax/typing.nit:1425 */
8102 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8103 if (UNTAG_Bool(REGB0)) {
8104 } else {
8105 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8106 if (UNTAG_Bool(REGB1)) {
8107 REGB1 = TAG_Bool(0);
8108 REGB0 = REGB1;
8109 } else {
8110 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8111 REGB0 = REGB1;
8112 }
8113 }
8114 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8115 if (UNTAG_Bool(REGB0)) {
8116 /* syntax/typing.nit:1426 */
8117 fra.me.REG[2] = fra.me.REG[1];
8118 goto label1;
8119 } else {
8120 /* syntax/typing.nit:1428 */
8121 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8122 fra.me.REG[1] = fra.me.REG[3];
8123 /* syntax/typing.nit:1429 */
8124 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8125 if (UNTAG_Bool(REGB0)) {
8126 } else {
8127 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8128 if (UNTAG_Bool(REGB1)) {
8129 REGB1 = TAG_Bool(0);
8130 REGB0 = REGB1;
8131 } else {
8132 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8133 REGB0 = REGB1;
8134 }
8135 }
8136 if (UNTAG_Bool(REGB0)) {
8137 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
8138 fra.me.REG[1] = fra.me.REG[3];
8139 }
8140 /* syntax/typing.nit:1430 */
8141 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
8142 /* syntax/typing.nit:1431 */
8143 fra.me.REG[2] = fra.me.REG[1];
8144 goto label1;
8145 }
8146 label1: while(0);
8147 stack_frame_head = fra.me.prev;
8148 return fra.me.REG[2];
8149 }
8150 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments[] = "typing::AAbsAbsSendExpr::compute_raw_arguments";
8151 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
8152 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
8153 val_t REGB0;
8154 val_t tmp;
8155 static val_t once_value_1; /* Once value */
8156 static val_t once_value_2; /* Once value */
8157 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8158 fra.me.file = LOCATE_syntax___typing;
8159 fra.me.line = 1437;
8160 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
8161 fra.me.has_broke = 0;
8162 fra.me.REG_size = 3;
8163 fra.me.nitni_local_ref_head = NULL;
8164 fra.me.REG[0] = NIT_NULL;
8165 fra.me.REG[1] = NIT_NULL;
8166 fra.me.REG[2] = NIT_NULL;
8167 fra.me.REG[0] = p0;
8168 /* syntax/typing.nit:1439 */
8169 REGB0 = TAG_Int(3);
8170 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8171 if (!once_value_1) {
8172 fra.me.REG[2] = BOX_NativeString("");
8173 REGB0 = TAG_Int(0);
8174 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8175 once_value_1 = fra.me.REG[2];
8176 register_static_object(&once_value_1);
8177 } else fra.me.REG[2] = once_value_1;
8178 fra.me.REG[2] = fra.me.REG[2];
8179 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8180 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
8181 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8182 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8183 if (!once_value_2) {
8184 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
8185 REGB0 = TAG_Int(25);
8186 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8187 once_value_2 = fra.me.REG[2];
8188 register_static_object(&once_value_2);
8189 } else fra.me.REG[2] = once_value_2;
8190 fra.me.REG[2] = fra.me.REG[2];
8191 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8192 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
8193 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8194 /* syntax/typing.nit:1440 */
8195 fra.me.REG[1] = NIT_NULL;
8196 goto label3;
8197 label3: while(0);
8198 stack_frame_head = fra.me.prev;
8199 return fra.me.REG[1];
8200 }
8201 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature[] = "typing::AAbsAbsSendExpr::process_signature";
8202 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8203 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8204 val_t REGB0;
8205 val_t REGB1;
8206 val_t REGB2;
8207 val_t REGB3;
8208 val_t REGB4;
8209 val_t REGB5;
8210 val_t REGB6;
8211 val_t REGB7;
8212 val_t REGB8;
8213 val_t REGB9;
8214 val_t REGB10;
8215 val_t REGB11;
8216 val_t tmp;
8217 static val_t once_value_1; /* Once value */
8218 static val_t once_value_2; /* Once value */
8219 static val_t once_value_3; /* Once value */
8220 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8221 fra.me.file = LOCATE_syntax___typing;
8222 fra.me.line = 1443;
8223 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
8224 fra.me.has_broke = 0;
8225 fra.me.REG_size = 7;
8226 fra.me.nitni_local_ref_head = NULL;
8227 fra.me.REG[0] = NIT_NULL;
8228 fra.me.REG[1] = NIT_NULL;
8229 fra.me.REG[2] = NIT_NULL;
8230 fra.me.REG[3] = NIT_NULL;
8231 fra.me.REG[4] = NIT_NULL;
8232 fra.me.REG[5] = NIT_NULL;
8233 fra.me.REG[6] = NIT_NULL;
8234 fra.me.REG[0] = p0;
8235 fra.me.REG[1] = p1;
8236 fra.me.REG[2] = p2;
8237 fra.me.REG[3] = p3;
8238 fra.me.REG[4] = p4;
8239 /* syntax/typing.nit:1446 */
8240 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
8241 /* syntax/typing.nit:1447 */
8242 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
8243 /* syntax/typing.nit:1449 */
8244 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8245 if (UNTAG_Bool(REGB2)) {
8246 } else {
8247 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8248 if (UNTAG_Bool(REGB3)) {
8249 REGB3 = TAG_Bool(0);
8250 REGB2 = REGB3;
8251 } else {
8252 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8253 REGB2 = REGB3;
8254 }
8255 }
8256 if (UNTAG_Bool(REGB2)) {
8257 REGB2 = TAG_Int(0);
8258 } else {
8259 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8260 if (UNTAG_Bool(REGB3)) {
8261 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1449);
8262 }
8263 /* ../lib/standard/collection/array.nit:24 */
8264 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8265 if (UNTAG_Bool(REGB3)) {
8266 } else {
8267 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8268 }
8269 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8270 /* syntax/typing.nit:1449 */
8271 REGB2 = REGB3;
8272 }
8273 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8274 if (UNTAG_Bool(REGB3)) {
8275 } else {
8276 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8277 }
8278 /* ../lib/standard/kernel.nit:237 */
8279 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8280 /* syntax/typing.nit:1450 */
8281 if (UNTAG_Bool(REGB3)) {
8282 REGB3 = TAG_Bool(1);
8283 } else {
8284 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8285 if (UNTAG_Bool(REGB4)) {
8286 } else {
8287 /* ../lib/standard/kernel.nit:230 */
8288 REGB5 = TAG_Bool((REGB1)==(REGB2));
8289 /* syntax/typing.nit:1450 */
8290 REGB4 = REGB5;
8291 }
8292 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
8293 if (UNTAG_Bool(REGB4)) {
8294 REGB4 = TAG_Int(1);
8295 /* ../lib/standard/kernel.nit:239 */
8296 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
8297 /* syntax/typing.nit:1450 */
8298 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
8299 if (UNTAG_Bool(REGB5)) {
8300 } else {
8301 /* ../lib/standard/kernel.nit:230 */
8302 REGB4 = TAG_Bool((REGB0)==(REGB4));
8303 /* syntax/typing.nit:1450 */
8304 REGB5 = REGB4;
8305 }
8306 } else {
8307 REGB4 = TAG_Bool(0);
8308 REGB5 = REGB4;
8309 }
8310 REGB3 = REGB5;
8311 }
8312 if (UNTAG_Bool(REGB3)) {
8313 /* syntax/typing.nit:1451 */
8314 REGB3 = TAG_Int(5);
8315 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
8316 if (!once_value_1) {
8317 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
8318 REGB3 = TAG_Int(37);
8319 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
8320 once_value_1 = fra.me.REG[6];
8321 register_static_object(&once_value_1);
8322 } else fra.me.REG[6] = once_value_1;
8323 fra.me.REG[6] = fra.me.REG[6];
8324 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
8325 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8326 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8327 if (!once_value_2) {
8328 fra.me.REG[3] = BOX_NativeString("");
8329 REGB3 = TAG_Int(0);
8330 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8331 once_value_2 = fra.me.REG[3];
8332 register_static_object(&once_value_2);
8333 } else fra.me.REG[3] = once_value_2;
8334 fra.me.REG[3] = fra.me.REG[3];
8335 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8336 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8337 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8338 if (!once_value_3) {
8339 fra.me.REG[3] = BOX_NativeString("'.");
8340 REGB3 = TAG_Int(2);
8341 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8342 once_value_3 = fra.me.REG[3];
8343 register_static_object(&once_value_3);
8344 } else fra.me.REG[3] = once_value_3;
8345 fra.me.REG[3] = fra.me.REG[3];
8346 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8347 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8348 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8349 /* syntax/typing.nit:1452 */
8350 REGB3 = TAG_Bool(0);
8351 goto label4;
8352 }
8353 /* syntax/typing.nit:1454 */
8354 REGB5 = TAG_Int(0);
8355 /* syntax/typing.nit:1455 */
8356 REGB4 = TAG_Int(0);
8357 /* ../lib/standard/kernel.nit:350 */
8358 REGB6 = REGB1;
8359 /* ../lib/standard/kernel.nit:355 */
8360 while(1) {
8361 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
8362 if (UNTAG_Bool(REGB7)) {
8363 } else {
8364 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8365 }
8366 /* ../lib/standard/kernel.nit:235 */
8367 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
8368 /* ../lib/standard/kernel.nit:355 */
8369 if (UNTAG_Bool(REGB7)) {
8370 /* syntax/typing.nit:1455 */
8371 REGB7 = REGB4;
8372 /* syntax/typing.nit:1457 */
8373 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
8374 /* syntax/typing.nit:1458 */
8375 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
8376 if (UNTAG_Bool(REGB8)) {
8377 } else {
8378 /* ../lib/standard/kernel.nit:230 */
8379 REGB7 = TAG_Bool((REGB7)==(REGB0));
8380 /* syntax/typing.nit:1458 */
8381 REGB8 = REGB7;
8382 }
8383 if (UNTAG_Bool(REGB8)) {
8384 /* syntax/typing.nit:1459 */
8385 REGB8 = TAG_Int(0);
8386 /* ../lib/standard/kernel.nit:240 */
8387 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
8388 /* ../lib/standard/kernel.nit:344 */
8389 while(1) {
8390 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8391 if (UNTAG_Bool(REGB9)) {
8392 } else {
8393 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8394 }
8395 /* ../lib/standard/kernel.nit:234 */
8396 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
8397 /* ../lib/standard/kernel.nit:344 */
8398 if (UNTAG_Bool(REGB9)) {
8399 /* syntax/typing.nit:1460 */
8400 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8401 if (UNTAG_Bool(REGB9)) {
8402 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1460);
8403 }
8404 /* ../lib/standard/collection/array.nit:278 */
8405 fra.me.REG[0] = fra.me.REG[4];
8406 REGB9 = REGB5;
8407 /* ../lib/standard/collection/array.nit:280 */
8408 REGB10 = TAG_Int(0);
8409 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8410 if (UNTAG_Bool(REGB11)) {
8411 } else {
8412 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8413 }
8414 /* ../lib/standard/kernel.nit:236 */
8415 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
8416 /* ../lib/standard/collection/array.nit:280 */
8417 if (UNTAG_Bool(REGB10)) {
8418 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
8419 if (UNTAG_Bool(REGB10)) {
8420 } else {
8421 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8422 }
8423 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
8424 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8425 if (UNTAG_Bool(REGB11)) {
8426 } else {
8427 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8428 }
8429 /* ../lib/standard/kernel.nit:235 */
8430 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
8431 } else {
8432 /* ../lib/standard/collection/array.nit:280 */
8433 REGB11 = TAG_Bool(0);
8434 REGB10 = REGB11;
8435 }
8436 if (UNTAG_Bool(REGB10)) {
8437 } else {
8438 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8439 }
8440 /* ../lib/standard/collection/array.nit:281 */
8441 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
8442 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8443 if (UNTAG_Bool(REGB10)) {
8444 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8445 }
8446 /* ../lib/standard/collection/array.nit:718 */
8447 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
8448 /* ../lib/standard/collection/array.nit:281 */
8449 goto label5;
8450 label5: while(0);
8451 /* syntax/typing.nit:1461 */
8452 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8453 /* syntax/typing.nit:1462 */
8454 REGB9 = TAG_Int(1);
8455 /* ../lib/standard/kernel.nit:238 */
8456 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
8457 /* syntax/typing.nit:1462 */
8458 REGB5 = REGB9;
8459 /* ../lib/standard/kernel.nit:346 */
8460 REGB9 = TAG_Int(1);
8461 /* ../lib/standard/kernel.nit:238 */
8462 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
8463 /* ../lib/standard/kernel.nit:346 */
8464 REGB8 = REGB9;
8465 } else {
8466 /* ../lib/standard/kernel.nit:344 */
8467 goto label6;
8468 }
8469 }
8470 label6: while(0);
8471 } else {
8472 /* syntax/typing.nit:1465 */
8473 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8474 if (UNTAG_Bool(REGB8)) {
8475 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1465);
8476 }
8477 /* ../lib/standard/collection/array.nit:278 */
8478 fra.me.REG[3] = fra.me.REG[4];
8479 REGB8 = REGB5;
8480 /* ../lib/standard/collection/array.nit:280 */
8481 REGB7 = TAG_Int(0);
8482 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8483 if (UNTAG_Bool(REGB9)) {
8484 } else {
8485 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8486 }
8487 /* ../lib/standard/kernel.nit:236 */
8488 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8489 /* ../lib/standard/collection/array.nit:280 */
8490 if (UNTAG_Bool(REGB7)) {
8491 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8492 if (UNTAG_Bool(REGB7)) {
8493 } else {
8494 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8495 }
8496 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8497 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8498 if (UNTAG_Bool(REGB9)) {
8499 } else {
8500 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8501 }
8502 /* ../lib/standard/kernel.nit:235 */
8503 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8504 } else {
8505 /* ../lib/standard/collection/array.nit:280 */
8506 REGB9 = TAG_Bool(0);
8507 REGB7 = REGB9;
8508 }
8509 if (UNTAG_Bool(REGB7)) {
8510 } else {
8511 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8512 }
8513 /* ../lib/standard/collection/array.nit:281 */
8514 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8515 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8516 if (UNTAG_Bool(REGB7)) {
8517 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8518 }
8519 /* ../lib/standard/collection/array.nit:718 */
8520 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8521 /* ../lib/standard/collection/array.nit:281 */
8522 goto label7;
8523 label7: while(0);
8524 /* syntax/typing.nit:1465 */
8525 fra.me.REG[0] = fra.me.REG[3];
8526 /* syntax/typing.nit:1466 */
8527 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8528 /* syntax/typing.nit:1467 */
8529 REGB8 = TAG_Int(1);
8530 /* ../lib/standard/kernel.nit:238 */
8531 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8532 /* syntax/typing.nit:1467 */
8533 REGB5 = REGB8;
8534 }
8535 /* ../lib/standard/kernel.nit:357 */
8536 REGB8 = TAG_Int(1);
8537 /* ../lib/standard/kernel.nit:238 */
8538 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8539 /* ../lib/standard/kernel.nit:357 */
8540 REGB4 = REGB8;
8541 } else {
8542 /* ../lib/standard/kernel.nit:355 */
8543 goto label8;
8544 }
8545 }
8546 label8: while(0);
8547 /* syntax/typing.nit:1470 */
8548 REGB4 = TAG_Bool(1);
8549 REGB3 = REGB4;
8550 goto label4;
8551 label4: while(0);
8552 stack_frame_head = fra.me.prev;
8553 return REGB3;
8554 }
8555 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures[] = "typing::AAbsAbsSendExpr::process_closures";
8556 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8557 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8558 val_t REGB0;
8559 val_t REGB1;
8560 val_t REGB2;
8561 val_t REGB3;
8562 val_t REGB4;
8563 val_t REGB5;
8564 val_t tmp;
8565 static val_t once_value_2; /* Once value */
8566 static val_t once_value_3; /* Once value */
8567 static val_t once_value_4; /* Once value */
8568 static val_t once_value_5; /* Once value */
8569 static val_t once_value_6; /* Once value */
8570 static val_t once_value_7; /* Once value */
8571 static val_t once_value_8; /* Once value */
8572 static val_t once_value_11; /* Once value */
8573 static val_t once_value_12; /* Once value */
8574 static val_t once_value_13; /* Once value */
8575 static val_t once_value_14; /* Once value */
8576 static val_t once_value_15; /* Once value */
8577 static val_t once_value_16; /* Once value */
8578 static val_t once_value_18; /* Once value */
8579 static val_t once_value_19; /* Once value */
8580 static val_t once_value_20; /* Once value */
8581 static val_t once_value_21; /* Once value */
8582 static val_t once_value_22; /* Once value */
8583 static val_t once_value_24; /* Once value */
8584 static val_t once_value_25; /* Once value */
8585 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8586 fra.me.file = LOCATE_syntax___typing;
8587 fra.me.line = 1473;
8588 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8589 fra.me.has_broke = 0;
8590 fra.me.REG_size = 17;
8591 fra.me.nitni_local_ref_head = NULL;
8592 fra.me.REG[0] = NIT_NULL;
8593 fra.me.REG[1] = NIT_NULL;
8594 fra.me.REG[2] = NIT_NULL;
8595 fra.me.REG[3] = NIT_NULL;
8596 fra.me.REG[4] = NIT_NULL;
8597 fra.me.REG[5] = NIT_NULL;
8598 fra.me.REG[6] = NIT_NULL;
8599 fra.me.REG[7] = NIT_NULL;
8600 fra.me.REG[8] = NIT_NULL;
8601 fra.me.REG[9] = NIT_NULL;
8602 fra.me.REG[10] = NIT_NULL;
8603 fra.me.REG[11] = NIT_NULL;
8604 fra.me.REG[12] = NIT_NULL;
8605 fra.me.REG[13] = NIT_NULL;
8606 fra.me.REG[14] = NIT_NULL;
8607 fra.me.REG[15] = NIT_NULL;
8608 fra.me.REG[16] = NIT_NULL;
8609 fra.me.REG[0] = p0;
8610 fra.me.REG[1] = p1;
8611 fra.me.REG[2] = p2;
8612 fra.me.REG[3] = p3;
8613 fra.me.REG[4] = p4;
8614 /* syntax/typing.nit:1476 */
8615 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8616 /* syntax/typing.nit:1477 */
8617 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8618 /* syntax/typing.nit:1478 */
8619 REGB0 = TAG_Int(0);
8620 /* ../lib/standard/collection/array.nit:266 */
8621 fra.me.REG[7] = fra.me.REG[6];
8622 /* ../lib/standard/collection/array.nit:269 */
8623 REGB1 = TAG_Int(0);
8624 /* ../lib/standard/collection/array.nit:270 */
8625 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8626 if (UNTAG_Bool(REGB2)) {
8627 } else {
8628 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8629 }
8630 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8631 /* ../lib/standard/collection/array.nit:271 */
8632 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8633 /* ../lib/standard/collection/array.nit:272 */
8634 while(1) {
8635 /* ../lib/standard/collection/array.nit:24 */
8636 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8637 if (UNTAG_Bool(REGB2)) {
8638 } else {
8639 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8640 }
8641 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8642 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8643 if (UNTAG_Bool(REGB3)) {
8644 } else {
8645 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8646 }
8647 /* ../lib/standard/kernel.nit:235 */
8648 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8649 /* ../lib/standard/collection/array.nit:272 */
8650 if (UNTAG_Bool(REGB2)) {
8651 /* ../lib/standard/collection/array.nit:273 */
8652 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8653 if (UNTAG_Bool(REGB2)) {
8654 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8655 }
8656 /* ../lib/standard/collection/array.nit:718 */
8657 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8658 /* syntax/typing.nit:1480 */
8659 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8660 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8661 if (UNTAG_Bool(REGB2)) {
8662 REGB2 = TAG_Int(1);
8663 /* ../lib/standard/kernel.nit:238 */
8664 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8665 /* syntax/typing.nit:1480 */
8666 REGB0 = REGB2;
8667 }
8668 /* ../lib/standard/collection/array.nit:274 */
8669 REGB2 = TAG_Int(1);
8670 /* ../lib/standard/kernel.nit:238 */
8671 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8672 /* ../lib/standard/collection/array.nit:274 */
8673 REGB1 = REGB2;
8674 } else {
8675 /* ../lib/standard/collection/array.nit:272 */
8676 goto label1;
8677 }
8678 }
8679 label1: while(0);
8680 /* syntax/typing.nit:1482 */
8681 REGB1 = TAG_Int(0);
8682 /* syntax/typing.nit:1483 */
8683 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8684 if (UNTAG_Bool(REGB2)) {
8685 } else {
8686 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8687 if (UNTAG_Bool(REGB3)) {
8688 REGB3 = TAG_Bool(0);
8689 REGB2 = REGB3;
8690 } else {
8691 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8692 REGB2 = REGB3;
8693 }
8694 }
8695 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8696 if (UNTAG_Bool(REGB2)) {
8697 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8698 if (UNTAG_Bool(REGB2)) {
8699 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1483);
8700 }
8701 /* ../lib/standard/collection/array.nit:24 */
8702 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8703 if (UNTAG_Bool(REGB2)) {
8704 } else {
8705 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8706 }
8707 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8708 /* syntax/typing.nit:1483 */
8709 REGB1 = REGB2;
8710 }
8711 /* ../lib/standard/collection/array.nit:24 */
8712 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8713 if (UNTAG_Bool(REGB2)) {
8714 } else {
8715 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8716 }
8717 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8718 /* syntax/typing.nit:1484 */
8719 REGB3 = TAG_Int(0);
8720 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8721 if (UNTAG_Bool(REGB4)) {
8722 } else {
8723 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8724 }
8725 /* ../lib/standard/kernel.nit:237 */
8726 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8727 /* syntax/typing.nit:1484 */
8728 if (UNTAG_Bool(REGB3)) {
8729 /* syntax/typing.nit:1485 */
8730 REGB3 = TAG_Int(0);
8731 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8732 if (UNTAG_Bool(REGB2)) {
8733 } else {
8734 /* ../lib/standard/kernel.nit:230 */
8735 REGB3 = TAG_Bool((REGB1)==(REGB3));
8736 /* syntax/typing.nit:1485 */
8737 REGB2 = REGB3;
8738 }
8739 if (UNTAG_Bool(REGB2)) {
8740 REGB2 = TAG_Int(0);
8741 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8742 if (UNTAG_Bool(REGB3)) {
8743 } else {
8744 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8745 }
8746 /* ../lib/standard/kernel.nit:237 */
8747 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8748 } else {
8749 /* syntax/typing.nit:1485 */
8750 REGB3 = TAG_Bool(0);
8751 REGB2 = REGB3;
8752 }
8753 if (UNTAG_Bool(REGB2)) {
8754 /* syntax/typing.nit:1486 */
8755 REGB2 = TAG_Int(5);
8756 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8757 if (!once_value_2) {
8758 fra.me.REG[7] = BOX_NativeString("Error: ");
8759 REGB2 = TAG_Int(7);
8760 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8761 once_value_2 = fra.me.REG[7];
8762 register_static_object(&once_value_2);
8763 } else fra.me.REG[7] = once_value_2;
8764 fra.me.REG[7] = fra.me.REG[7];
8765 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8766 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8767 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8768 if (!once_value_3) {
8769 fra.me.REG[7] = BOX_NativeString(" requires ");
8770 REGB2 = TAG_Int(10);
8771 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8772 once_value_3 = fra.me.REG[7];
8773 register_static_object(&once_value_3);
8774 } else fra.me.REG[7] = once_value_3;
8775 fra.me.REG[7] = fra.me.REG[7];
8776 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8777 /* ../lib/standard/collection/array.nit:24 */
8778 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8779 if (UNTAG_Bool(REGB2)) {
8780 } else {
8781 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8782 }
8783 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8784 /* syntax/typing.nit:1486 */
8785 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8786 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8787 if (!once_value_4) {
8788 fra.me.REG[7] = BOX_NativeString(" blocks.");
8789 REGB2 = TAG_Int(8);
8790 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8791 once_value_4 = fra.me.REG[7];
8792 register_static_object(&once_value_4);
8793 } else fra.me.REG[7] = once_value_4;
8794 fra.me.REG[7] = fra.me.REG[7];
8795 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8796 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8797 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8798 } else {
8799 /* ../lib/standard/collection/array.nit:24 */
8800 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8801 if (UNTAG_Bool(REGB2)) {
8802 } else {
8803 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8804 }
8805 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8806 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8807 if (UNTAG_Bool(REGB3)) {
8808 } else {
8809 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8810 }
8811 /* ../lib/standard/kernel.nit:237 */
8812 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8813 /* syntax/typing.nit:1487 */
8814 if (UNTAG_Bool(REGB2)) {
8815 REGB2 = TAG_Bool(1);
8816 } else {
8817 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8818 if (UNTAG_Bool(REGB3)) {
8819 } else {
8820 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8821 }
8822 /* ../lib/standard/kernel.nit:235 */
8823 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8824 /* syntax/typing.nit:1487 */
8825 REGB2 = REGB0;
8826 }
8827 if (UNTAG_Bool(REGB2)) {
8828 /* syntax/typing.nit:1488 */
8829 REGB2 = TAG_Int(7);
8830 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8831 if (!once_value_5) {
8832 fra.me.REG[7] = BOX_NativeString("Error: ");
8833 REGB2 = TAG_Int(7);
8834 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8835 once_value_5 = fra.me.REG[7];
8836 register_static_object(&once_value_5);
8837 } else fra.me.REG[7] = once_value_5;
8838 fra.me.REG[7] = fra.me.REG[7];
8839 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8840 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8841 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8842 if (!once_value_6) {
8843 fra.me.REG[7] = BOX_NativeString(" requires ");
8844 REGB2 = TAG_Int(10);
8845 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8846 once_value_6 = fra.me.REG[7];
8847 register_static_object(&once_value_6);
8848 } else fra.me.REG[7] = once_value_6;
8849 fra.me.REG[7] = fra.me.REG[7];
8850 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8851 /* ../lib/standard/collection/array.nit:24 */
8852 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8853 if (UNTAG_Bool(REGB2)) {
8854 } else {
8855 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8856 }
8857 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8858 /* syntax/typing.nit:1488 */
8859 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8860 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8861 if (!once_value_7) {
8862 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8863 REGB2 = TAG_Int(9);
8864 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8865 once_value_7 = fra.me.REG[7];
8866 register_static_object(&once_value_7);
8867 } else fra.me.REG[7] = once_value_7;
8868 fra.me.REG[7] = fra.me.REG[7];
8869 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8870 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8871 if (UNTAG_Bool(REGB2)) {
8872 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1488);
8873 }
8874 /* ../lib/standard/collection/array.nit:24 */
8875 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8876 if (UNTAG_Bool(REGB2)) {
8877 } else {
8878 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8879 }
8880 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8881 /* syntax/typing.nit:1488 */
8882 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8884 if (!once_value_8) {
8885 fra.me.REG[7] = BOX_NativeString(" found.");
8886 REGB2 = TAG_Int(7);
8887 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8888 once_value_8 = fra.me.REG[7];
8889 register_static_object(&once_value_8);
8890 } else fra.me.REG[7] = once_value_8;
8891 fra.me.REG[7] = fra.me.REG[7];
8892 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8893 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8894 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8895 } else {
8896 /* syntax/typing.nit:1491 */
8897 fra.me.REG[8] = NIT_NULL;
8898 /* syntax/typing.nit:1492 */
8899 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8900 if (UNTAG_Bool(REGB2)) {
8901 } else {
8902 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8903 if (UNTAG_Bool(REGB0)) {
8904 REGB0 = TAG_Bool(0);
8905 REGB2 = REGB0;
8906 } else {
8907 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8908 REGB2 = REGB0;
8909 }
8910 }
8911 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8912 if (UNTAG_Bool(REGB2)) {
8913 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8914 fra.me.REG[8] = fra.me.REG[7];
8915 }
8916 /* syntax/typing.nit:1495 */
8917 REGB2 = TAG_Int(0);
8918 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8919 if (UNTAG_Bool(REGB0)) {
8920 } else {
8921 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8922 }
8923 /* ../lib/standard/kernel.nit:237 */
8924 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8925 /* syntax/typing.nit:1495 */
8926 if (UNTAG_Bool(REGB2)) {
8927 REGB2 = TAG_Int(1);
8928 /* ../lib/standard/kernel.nit:240 */
8929 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8930 /* syntax/typing.nit:1495 */
8931 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8932 if (UNTAG_Bool(REGB0)) {
8933 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1495);
8934 }
8935 /* ../lib/standard/collection/array.nit:278 */
8936 fra.me.REG[7] = fra.me.REG[4];
8937 /* ../lib/standard/collection/array.nit:280 */
8938 REGB0 = TAG_Int(0);
8939 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8940 if (UNTAG_Bool(REGB3)) {
8941 } else {
8942 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8943 }
8944 /* ../lib/standard/kernel.nit:236 */
8945 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8946 /* ../lib/standard/collection/array.nit:280 */
8947 if (UNTAG_Bool(REGB0)) {
8948 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8949 if (UNTAG_Bool(REGB0)) {
8950 } else {
8951 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8952 }
8953 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8954 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8955 if (UNTAG_Bool(REGB3)) {
8956 } else {
8957 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8958 }
8959 /* ../lib/standard/kernel.nit:235 */
8960 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8961 } else {
8962 /* ../lib/standard/collection/array.nit:280 */
8963 REGB3 = TAG_Bool(0);
8964 REGB0 = REGB3;
8965 }
8966 if (UNTAG_Bool(REGB0)) {
8967 } else {
8968 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8969 }
8970 /* ../lib/standard/collection/array.nit:281 */
8971 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8972 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8973 if (UNTAG_Bool(REGB0)) {
8974 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8975 }
8976 /* ../lib/standard/collection/array.nit:718 */
8977 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8978 /* ../lib/standard/collection/array.nit:281 */
8979 goto label9;
8980 label9: while(0);
8981 /* syntax/typing.nit:1495 */
8982 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8983 if (UNTAG_Bool(REGB2)) {
8984 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1495);
8985 }
8986 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
8987 } else {
8988 fra.me.REG[7] = NIT_NULL;
8989 }
8990 /* syntax/typing.nit:1498 */
8991 REGB2 = TAG_Int(0);
8992 /* ../lib/standard/kernel.nit:350 */
8993 REGB0 = REGB1;
8994 /* ../lib/standard/kernel.nit:355 */
8995 while(1) {
8996 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8997 if (UNTAG_Bool(REGB3)) {
8998 } else {
8999 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9000 }
9001 /* ../lib/standard/kernel.nit:235 */
9002 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
9003 /* ../lib/standard/kernel.nit:355 */
9004 if (UNTAG_Bool(REGB3)) {
9005 /* syntax/typing.nit:1498 */
9006 REGB3 = REGB2;
9007 /* syntax/typing.nit:1499 */
9008 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9009 if (UNTAG_Bool(REGB4)) {
9010 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1499);
9011 }
9012 /* ../lib/standard/collection/array.nit:278 */
9013 fra.me.REG[9] = fra.me.REG[4];
9014 /* ../lib/standard/collection/array.nit:280 */
9015 REGB4 = TAG_Int(0);
9016 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9017 if (UNTAG_Bool(REGB5)) {
9018 } else {
9019 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9020 }
9021 /* ../lib/standard/kernel.nit:236 */
9022 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
9023 /* ../lib/standard/collection/array.nit:280 */
9024 if (UNTAG_Bool(REGB4)) {
9025 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
9026 if (UNTAG_Bool(REGB4)) {
9027 } else {
9028 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
9029 }
9030 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
9031 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9032 if (UNTAG_Bool(REGB5)) {
9033 } else {
9034 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9035 }
9036 /* ../lib/standard/kernel.nit:235 */
9037 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
9038 } else {
9039 /* ../lib/standard/collection/array.nit:280 */
9040 REGB5 = TAG_Bool(0);
9041 REGB4 = REGB5;
9042 }
9043 if (UNTAG_Bool(REGB4)) {
9044 } else {
9045 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
9046 }
9047 /* ../lib/standard/collection/array.nit:281 */
9048 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
9049 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
9050 if (UNTAG_Bool(REGB4)) {
9051 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
9052 }
9053 /* ../lib/standard/collection/array.nit:718 */
9054 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
9055 /* ../lib/standard/collection/array.nit:281 */
9056 goto label10;
9057 label10: while(0);
9058 /* syntax/typing.nit:1500 */
9059 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9060 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
9061 /* syntax/typing.nit:1501 */
9062 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
9063 /* syntax/typing.nit:1502 */
9064 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9065 if (UNTAG_Bool(REGB3)) {
9066 } else {
9067 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9068 if (UNTAG_Bool(REGB4)) {
9069 REGB4 = TAG_Bool(0);
9070 REGB3 = REGB4;
9071 } else {
9072 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
9073 REGB3 = REGB4;
9074 }
9075 }
9076 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
9077 if (UNTAG_Bool(REGB3)) {
9078 /* syntax/typing.nit:1503 */
9079 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
9080 /* syntax/typing.nit:1504 */
9081 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9082 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
9083 /* syntax/typing.nit:1505 */
9084 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
9085 /* syntax/typing.nit:1506 */
9086 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9087 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
9088 } else {
9089 /* ../lib/standard/collection/array.nit:24 */
9090 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9091 if (UNTAG_Bool(REGB3)) {
9092 } else {
9093 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9094 }
9095 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
9096 /* syntax/typing.nit:1507 */
9097 REGB4 = TAG_Int(1);
9098 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
9099 if (UNTAG_Bool(REGB5)) {
9100 } else {
9101 /* ../lib/standard/kernel.nit:230 */
9102 REGB4 = TAG_Bool((REGB3)==(REGB4));
9103 /* syntax/typing.nit:1507 */
9104 REGB5 = REGB4;
9105 }
9106 if (UNTAG_Bool(REGB5)) {
9107 /* syntax/typing.nit:1508 */
9108 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9109 REGB5 = TAG_Int(7);
9110 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9111 if (!once_value_11) {
9112 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
9113 REGB5 = TAG_Int(26);
9114 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9115 once_value_11 = fra.me.REG[13];
9116 register_static_object(&once_value_11);
9117 } else fra.me.REG[13] = once_value_11;
9118 fra.me.REG[13] = fra.me.REG[13];
9119 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9120 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9121 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9122 if (!once_value_12) {
9123 fra.me.REG[13] = BOX_NativeString("' in ");
9124 REGB5 = TAG_Int(5);
9125 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9126 once_value_12 = fra.me.REG[13];
9127 register_static_object(&once_value_12);
9128 } else fra.me.REG[13] = once_value_12;
9129 fra.me.REG[13] = fra.me.REG[13];
9130 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9131 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9132 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9133 if (!once_value_13) {
9134 fra.me.REG[13] = BOX_NativeString("; only closure is !");
9135 REGB5 = TAG_Int(19);
9136 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9137 once_value_13 = fra.me.REG[13];
9138 register_static_object(&once_value_13);
9139 } else fra.me.REG[13] = once_value_13;
9140 fra.me.REG[13] = fra.me.REG[13];
9141 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9142 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
9143 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9144 if (UNTAG_Bool(REGB5)) {
9145 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1508);
9146 }
9147 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
9148 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9149 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9150 if (!once_value_14) {
9151 fra.me.REG[13] = BOX_NativeString(".");
9152 REGB5 = TAG_Int(1);
9153 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9154 once_value_14 = fra.me.REG[13];
9155 register_static_object(&once_value_14);
9156 } else fra.me.REG[13] = once_value_14;
9157 fra.me.REG[13] = fra.me.REG[13];
9158 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9159 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
9160 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
9161 } else {
9162 /* syntax/typing.nit:1510 */
9163 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
9164 /* ../lib/standard/collection/array.nit:266 */
9165 fra.me.REG[11] = fra.me.REG[6];
9166 /* ../lib/standard/collection/array.nit:269 */
9167 REGB5 = TAG_Int(0);
9168 /* ../lib/standard/collection/array.nit:270 */
9169 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9170 if (UNTAG_Bool(REGB4)) {
9171 } else {
9172 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
9173 }
9174 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9175 /* ../lib/standard/collection/array.nit:271 */
9176 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
9177 /* ../lib/standard/collection/array.nit:272 */
9178 while(1) {
9179 /* ../lib/standard/collection/array.nit:24 */
9180 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9181 if (UNTAG_Bool(REGB4)) {
9182 } else {
9183 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9184 }
9185 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9186 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
9187 if (UNTAG_Bool(REGB3)) {
9188 } else {
9189 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9190 }
9191 /* ../lib/standard/kernel.nit:235 */
9192 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
9193 /* ../lib/standard/collection/array.nit:272 */
9194 if (UNTAG_Bool(REGB4)) {
9195 /* ../lib/standard/collection/array.nit:273 */
9196 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9197 if (UNTAG_Bool(REGB4)) {
9198 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
9199 }
9200 /* ../lib/standard/collection/array.nit:718 */
9201 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
9202 /* syntax/typing.nit:1512 */
9203 REGB4 = TAG_Int(3);
9204 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
9205 if (!once_value_15) {
9206 fra.me.REG[16] = BOX_NativeString("!");
9207 REGB4 = TAG_Int(1);
9208 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
9209 once_value_15 = fra.me.REG[16];
9210 register_static_object(&once_value_15);
9211 } else fra.me.REG[16] = once_value_15;
9212 fra.me.REG[16] = fra.me.REG[16];
9213 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
9214 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
9215 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
9216 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9217 if (!once_value_16) {
9218 fra.me.REG[14] = BOX_NativeString("");
9219 REGB4 = TAG_Int(0);
9220 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
9221 once_value_16 = fra.me.REG[14];
9222 register_static_object(&once_value_16);
9223 } else fra.me.REG[14] = once_value_16;
9224 fra.me.REG[14] = fra.me.REG[14];
9225 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9226 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
9227 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
9228 /* ../lib/standard/collection/array.nit:274 */
9229 REGB4 = TAG_Int(1);
9230 /* ../lib/standard/kernel.nit:238 */
9231 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
9232 /* ../lib/standard/collection/array.nit:274 */
9233 REGB5 = REGB4;
9234 } else {
9235 /* ../lib/standard/collection/array.nit:272 */
9236 goto label17;
9237 }
9238 }
9239 label17: while(0);
9240 /* syntax/typing.nit:1514 */
9241 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9242 REGB5 = TAG_Int(7);
9243 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9244 if (!once_value_18) {
9245 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
9246 REGB5 = TAG_Int(26);
9247 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
9248 once_value_18 = fra.me.REG[11];
9249 register_static_object(&once_value_18);
9250 } else fra.me.REG[11] = once_value_18;
9251 fra.me.REG[11] = fra.me.REG[11];
9252 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
9253 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9254 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9255 if (!once_value_19) {
9256 fra.me.REG[10] = BOX_NativeString("' in ");
9257 REGB5 = TAG_Int(5);
9258 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9259 once_value_19 = fra.me.REG[10];
9260 register_static_object(&once_value_19);
9261 } else fra.me.REG[10] = once_value_19;
9262 fra.me.REG[10] = fra.me.REG[10];
9263 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9264 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9265 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9266 if (!once_value_20) {
9267 fra.me.REG[10] = BOX_NativeString("; only closures are ");
9268 REGB5 = TAG_Int(20);
9269 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9270 once_value_20 = fra.me.REG[10];
9271 register_static_object(&once_value_20);
9272 } else fra.me.REG[10] = once_value_20;
9273 fra.me.REG[10] = fra.me.REG[10];
9274 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9275 if (!once_value_21) {
9276 fra.me.REG[10] = BOX_NativeString(",");
9277 REGB5 = TAG_Int(1);
9278 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9279 once_value_21 = fra.me.REG[10];
9280 register_static_object(&once_value_21);
9281 } else fra.me.REG[10] = once_value_21;
9282 fra.me.REG[10] = fra.me.REG[10];
9283 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
9284 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9285 if (!once_value_22) {
9286 fra.me.REG[10] = BOX_NativeString(".");
9287 REGB5 = TAG_Int(1);
9288 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9289 once_value_22 = fra.me.REG[10];
9290 register_static_object(&once_value_22);
9291 } else fra.me.REG[10] = once_value_22;
9292 fra.me.REG[10] = fra.me.REG[10];
9293 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9294 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9295 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
9296 }
9297 }
9298 /* ../lib/standard/kernel.nit:357 */
9299 REGB5 = TAG_Int(1);
9300 /* ../lib/standard/kernel.nit:238 */
9301 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
9302 /* ../lib/standard/kernel.nit:357 */
9303 REGB2 = REGB5;
9304 } else {
9305 /* ../lib/standard/kernel.nit:355 */
9306 goto label23;
9307 }
9308 }
9309 label23: while(0);
9310 /* syntax/typing.nit:1519 */
9311 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9312 if (UNTAG_Bool(REGB2)) {
9313 } else {
9314 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9315 if (UNTAG_Bool(REGB0)) {
9316 REGB0 = TAG_Bool(0);
9317 REGB2 = REGB0;
9318 } else {
9319 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
9320 REGB2 = REGB0;
9321 }
9322 }
9323 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
9324 if (UNTAG_Bool(REGB2)) {
9325 /* syntax/typing.nit:1520 */
9326 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]);
9327 fra.me.REG[5] = fra.me.REG[8];
9328 }
9329 }
9330 }
9331 } else {
9332 /* syntax/typing.nit:1523 */
9333 REGB2 = TAG_Int(0);
9334 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
9335 if (UNTAG_Bool(REGB0)) {
9336 } else {
9337 /* ../lib/standard/kernel.nit:230 */
9338 REGB2 = TAG_Bool((REGB1)==(REGB2));
9339 /* syntax/typing.nit:1523 */
9340 REGB0 = REGB2;
9341 }
9342 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9343 if (UNTAG_Bool(REGB0)) {
9344 /* syntax/typing.nit:1524 */
9345 REGB0 = TAG_Int(3);
9346 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9347 if (!once_value_24) {
9348 fra.me.REG[6] = BOX_NativeString("Error: ");
9349 REGB0 = TAG_Int(7);
9350 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
9351 once_value_24 = fra.me.REG[6];
9352 register_static_object(&once_value_24);
9353 } else fra.me.REG[6] = once_value_24;
9354 fra.me.REG[6] = fra.me.REG[6];
9355 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
9356 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9357 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9358 if (!once_value_25) {
9359 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
9360 REGB0 = TAG_Int(25);
9361 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9362 once_value_25 = fra.me.REG[3];
9363 register_static_object(&once_value_25);
9364 } else fra.me.REG[3] = once_value_25;
9365 fra.me.REG[3] = fra.me.REG[3];
9366 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9367 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9368 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9369 }
9370 }
9371 /* syntax/typing.nit:1526 */
9372 goto label26;
9373 label26: while(0);
9374 stack_frame_head = fra.me.prev;
9375 return fra.me.REG[5];
9376 }
9377 static const char LOCATE_syntax___typing___AAbsSendExpr___do_typing[] = "typing::AAbsSendExpr::do_typing";
9378 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){
9379 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9380 val_t REGB0;
9381 val_t REGB1;
9382 val_t REGB2;
9383 val_t tmp;
9384 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9385 fra.me.file = LOCATE_syntax___typing;
9386 fra.me.line = 1531;
9387 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
9388 fra.me.has_broke = 0;
9389 fra.me.REG_size = 7;
9390 fra.me.nitni_local_ref_head = NULL;
9391 fra.me.REG[0] = NIT_NULL;
9392 fra.me.REG[1] = NIT_NULL;
9393 fra.me.REG[2] = NIT_NULL;
9394 fra.me.REG[3] = NIT_NULL;
9395 fra.me.REG[4] = NIT_NULL;
9396 fra.me.REG[5] = NIT_NULL;
9397 fra.me.REG[6] = NIT_NULL;
9398 fra.me.REG[0] = p0;
9399 fra.me.REG[1] = p1;
9400 fra.me.REG[2] = p2;
9401 REGB0 = p3;
9402 REGB1 = p4;
9403 fra.me.REG[3] = p5;
9404 fra.me.REG[4] = p6;
9405 fra.me.REG[5] = p7;
9406 /* syntax/typing.nit:1534 */
9407 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]);
9408 /* syntax/typing.nit:1535 */
9409 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9410 if (UNTAG_Bool(REGB0)) {
9411 } else {
9412 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9413 if (UNTAG_Bool(REGB2)) {
9414 REGB2 = TAG_Bool(0);
9415 REGB0 = REGB2;
9416 } else {
9417 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9418 REGB0 = REGB2;
9419 }
9420 }
9421 if (UNTAG_Bool(REGB0)) {
9422 goto label1;
9423 }
9424 /* syntax/typing.nit:1536 */
9425 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);
9426 /* syntax/typing.nit:1537 */
9427 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9428 if (UNTAG_Bool(REGB1)) {
9429 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1537);
9430 }
9431 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9432 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]);
9433 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9434 if (UNTAG_Bool(REGB1)) {
9435 goto label1;
9436 }
9437 /* syntax/typing.nit:1538 */
9438 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9439 if (UNTAG_Bool(REGB1)) {
9440 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1538);
9441 }
9442 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9443 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]);
9444 /* syntax/typing.nit:1539 */
9445 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9446 if (UNTAG_Bool(REGB1)) {
9447 } else {
9448 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9449 if (UNTAG_Bool(REGB0)) {
9450 REGB0 = TAG_Bool(0);
9451 REGB1 = REGB0;
9452 } else {
9453 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
9454 REGB1 = REGB0;
9455 }
9456 }
9457 if (UNTAG_Bool(REGB1)) {
9458 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9459 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9460 if (UNTAG_Bool(REGB1)) {
9461 } else {
9462 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9463 if (UNTAG_Bool(REGB0)) {
9464 REGB0 = TAG_Bool(0);
9465 REGB1 = REGB0;
9466 } else {
9467 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9468 REGB1 = REGB0;
9469 }
9470 }
9471 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9472 } else {
9473 REGB0 = TAG_Bool(0);
9474 REGB1 = REGB0;
9475 }
9476 if (UNTAG_Bool(REGB1)) {
9477 goto label1;
9478 }
9479 /* syntax/typing.nit:1540 */
9480 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
9481 /* syntax/typing.nit:1541 */
9482 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9483 /* syntax/typing.nit:1542 */
9484 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
9485 label1: while(0);
9486 stack_frame_head = fra.me.prev;
9487 return;
9488 }
9489 static const char LOCATE_syntax___typing___AAbsSendExpr___get_property[] = "typing::AAbsSendExpr::get_property";
9490 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9491 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9492 val_t REGB0;
9493 val_t REGB1;
9494 val_t REGB2;
9495 val_t REGB3;
9496 val_t tmp;
9497 static val_t once_value_1; /* Once value */
9498 static val_t once_value_2; /* Once value */
9499 static val_t once_value_3; /* Once value */
9500 static val_t once_value_4; /* Once value */
9501 static val_t once_value_5; /* Once value */
9502 static val_t once_value_6; /* Once value */
9503 static val_t once_value_8; /* Once value */
9504 static val_t once_value_9; /* Once value */
9505 static val_t once_value_10; /* Once value */
9506 static val_t once_value_11; /* Once value */
9507 static val_t once_value_12; /* Once value */
9508 static val_t once_value_13; /* Once value */
9509 static val_t once_value_14; /* Once value */
9510 static val_t once_value_15; /* Once value */
9511 static val_t once_value_16; /* Once value */
9512 static val_t once_value_17; /* Once value */
9513 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9514 fra.me.file = LOCATE_syntax___typing;
9515 fra.me.line = 1545;
9516 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9517 fra.me.has_broke = 0;
9518 fra.me.REG_size = 10;
9519 fra.me.nitni_local_ref_head = NULL;
9520 fra.me.REG[0] = NIT_NULL;
9521 fra.me.REG[1] = NIT_NULL;
9522 fra.me.REG[2] = NIT_NULL;
9523 fra.me.REG[3] = NIT_NULL;
9524 fra.me.REG[4] = NIT_NULL;
9525 fra.me.REG[5] = NIT_NULL;
9526 fra.me.REG[6] = NIT_NULL;
9527 fra.me.REG[7] = NIT_NULL;
9528 fra.me.REG[8] = NIT_NULL;
9529 fra.me.REG[9] = NIT_NULL;
9530 fra.me.REG[0] = p0;
9531 fra.me.REG[1] = p1;
9532 fra.me.REG[2] = p2;
9533 REGB0 = p3;
9534 fra.me.REG[3] = p4;
9535 /* syntax/typing.nit:1547 */
9536 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9537 if (UNTAG_Bool(REGB1)) {
9538 /* syntax/typing.nit:1548 */
9539 if (!once_value_1) {
9540 if (!once_value_2) {
9541 fra.me.REG[4] = BOX_NativeString("==");
9542 REGB1 = TAG_Int(2);
9543 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
9544 once_value_2 = fra.me.REG[4];
9545 register_static_object(&once_value_2);
9546 } else fra.me.REG[4] = once_value_2;
9547 fra.me.REG[4] = fra.me.REG[4];
9548 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9549 once_value_1 = fra.me.REG[4];
9550 register_static_object(&once_value_1);
9551 } else fra.me.REG[4] = once_value_1;
9552 fra.me.REG[4] = fra.me.REG[4];
9553 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9554 if (UNTAG_Bool(REGB1)) {
9555 } else {
9556 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9557 REGB1 = REGB2;
9558 }
9559 if (UNTAG_Bool(REGB1)) {
9560 REGB1 = TAG_Bool(1);
9561 } else {
9562 if (!once_value_3) {
9563 if (!once_value_4) {
9564 fra.me.REG[4] = BOX_NativeString("!=");
9565 REGB2 = TAG_Int(2);
9566 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
9567 once_value_4 = fra.me.REG[4];
9568 register_static_object(&once_value_4);
9569 } else fra.me.REG[4] = once_value_4;
9570 fra.me.REG[4] = fra.me.REG[4];
9571 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9572 once_value_3 = fra.me.REG[4];
9573 register_static_object(&once_value_3);
9574 } else fra.me.REG[4] = once_value_3;
9575 fra.me.REG[4] = fra.me.REG[4];
9576 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9577 if (UNTAG_Bool(REGB2)) {
9578 } else {
9579 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9580 REGB2 = REGB3;
9581 }
9582 REGB1 = REGB2;
9583 }
9584 if (UNTAG_Bool(REGB1)) {
9585 /* syntax/typing.nit:1550 */
9586 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9587 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9588 fra.me.REG[2] = fra.me.REG[4];
9589 } else {
9590 /* syntax/typing.nit:1552 */
9591 REGB1 = TAG_Int(3);
9592 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9593 if (!once_value_5) {
9594 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9595 REGB1 = TAG_Int(15);
9596 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9597 once_value_5 = fra.me.REG[5];
9598 register_static_object(&once_value_5);
9599 } else fra.me.REG[5] = once_value_5;
9600 fra.me.REG[5] = fra.me.REG[5];
9601 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9602 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9603 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9604 if (!once_value_6) {
9605 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9606 REGB1 = TAG_Int(17);
9607 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9608 once_value_6 = fra.me.REG[5];
9609 register_static_object(&once_value_6);
9610 } else fra.me.REG[5] = once_value_6;
9611 fra.me.REG[5] = fra.me.REG[5];
9612 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9613 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9614 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9615 /* syntax/typing.nit:1553 */
9616 fra.me.REG[4] = NIT_NULL;
9617 goto label7;
9618 }
9619 }
9620 /* syntax/typing.nit:1556 */
9621 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9622 /* syntax/typing.nit:1557 */
9623 fra.me.REG[6] = NIT_NULL;
9624 /* syntax/typing.nit:1558 */
9625 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9626 if (UNTAG_Bool(REGB1)) {
9627 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9628 fra.me.REG[6] = fra.me.REG[7];
9629 }
9630 /* syntax/typing.nit:1559 */
9631 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9632 if (UNTAG_Bool(REGB1)) {
9633 } else {
9634 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9635 if (UNTAG_Bool(REGB2)) {
9636 REGB2 = TAG_Bool(0);
9637 REGB1 = REGB2;
9638 } else {
9639 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9640 REGB1 = REGB2;
9641 }
9642 }
9643 if (UNTAG_Bool(REGB1)) {
9644 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
9645 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9646 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
9647 } else {
9648 REGB2 = TAG_Bool(0);
9649 REGB1 = REGB2;
9650 }
9651 if (UNTAG_Bool(REGB1)) {
9652 /* syntax/typing.nit:1560 */
9653 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9654 /* ../lib/standard/collection/array.nit:24 */
9655 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9656 if (UNTAG_Bool(REGB1)) {
9657 } else {
9658 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9659 }
9660 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9661 /* syntax/typing.nit:1561 */
9662 REGB2 = TAG_Int(1);
9663 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9664 if (UNTAG_Bool(REGB3)) {
9665 } else {
9666 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9667 }
9668 /* ../lib/standard/kernel.nit:237 */
9669 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9670 /* syntax/typing.nit:1561 */
9671 if (UNTAG_Bool(REGB2)) {
9672 /* syntax/typing.nit:1562 */
9673 REGB2 = TAG_Int(5);
9674 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9675 if (!once_value_8) {
9676 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9677 REGB2 = TAG_Int(29);
9678 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9679 once_value_8 = fra.me.REG[9];
9680 register_static_object(&once_value_8);
9681 } else fra.me.REG[9] = once_value_8;
9682 fra.me.REG[9] = fra.me.REG[9];
9683 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9684 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9685 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9686 if (!once_value_9) {
9687 fra.me.REG[9] = BOX_NativeString("' for ");
9688 REGB2 = TAG_Int(6);
9689 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9690 once_value_9 = fra.me.REG[9];
9691 register_static_object(&once_value_9);
9692 } else fra.me.REG[9] = once_value_9;
9693 fra.me.REG[9] = fra.me.REG[9];
9694 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9695 if (!once_value_10) {
9696 fra.me.REG[9] = BOX_NativeString(", ");
9697 REGB2 = TAG_Int(2);
9698 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9699 once_value_10 = fra.me.REG[9];
9700 register_static_object(&once_value_10);
9701 } else fra.me.REG[9] = once_value_10;
9702 fra.me.REG[9] = fra.me.REG[9];
9703 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9704 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9705 if (!once_value_11) {
9706 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9707 REGB2 = TAG_Int(27);
9708 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9709 once_value_11 = fra.me.REG[9];
9710 register_static_object(&once_value_11);
9711 } else fra.me.REG[9] = once_value_11;
9712 fra.me.REG[9] = fra.me.REG[9];
9713 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9714 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9715 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9716 /* syntax/typing.nit:1563 */
9717 fra.me.REG[4] = NIT_NULL;
9718 goto label7;
9719 } else {
9720 /* ../lib/standard/collection/array.nit:24 */
9721 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9722 if (UNTAG_Bool(REGB2)) {
9723 } else {
9724 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9725 }
9726 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9727 /* syntax/typing.nit:1564 */
9728 REGB1 = TAG_Int(1);
9729 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9730 if (UNTAG_Bool(REGB3)) {
9731 } else {
9732 /* ../lib/standard/kernel.nit:230 */
9733 REGB1 = TAG_Bool((REGB2)==(REGB1));
9734 /* syntax/typing.nit:1564 */
9735 REGB3 = REGB1;
9736 }
9737 if (UNTAG_Bool(REGB3)) {
9738 /* syntax/typing.nit:1565 */
9739 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9740 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9741 if (UNTAG_Bool(REGB3)) {
9742 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1565);
9743 }
9744 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9745 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9746 /* syntax/typing.nit:1566 */
9747 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9748 if (UNTAG_Bool(REGB3)) {
9749 } else {
9750 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1566);
9751 }
9752 /* syntax/typing.nit:1567 */
9753 fra.me.REG[6] = fra.me.REG[7];
9754 }
9755 }
9756 }
9757 /* syntax/typing.nit:1571 */
9758 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9759 if (UNTAG_Bool(REGB3)) {
9760 } else {
9761 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9762 if (UNTAG_Bool(REGB1)) {
9763 REGB1 = TAG_Bool(0);
9764 REGB3 = REGB1;
9765 } else {
9766 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9767 REGB3 = REGB1;
9768 }
9769 }
9770 if (UNTAG_Bool(REGB3)) {
9771 /* syntax/typing.nit:1572 */
9772 if (UNTAG_Bool(REGB0)) {
9773 /* syntax/typing.nit:1573 */
9774 REGB0 = TAG_Int(5);
9775 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9776 if (!once_value_12) {
9777 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9778 REGB0 = TAG_Int(27);
9779 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9780 once_value_12 = fra.me.REG[5];
9781 register_static_object(&once_value_12);
9782 } else fra.me.REG[5] = once_value_12;
9783 fra.me.REG[5] = fra.me.REG[5];
9784 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9785 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9786 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9787 if (!once_value_13) {
9788 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9789 REGB0 = TAG_Int(13);
9790 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9791 once_value_13 = fra.me.REG[5];
9792 register_static_object(&once_value_13);
9793 } else fra.me.REG[5] = once_value_13;
9794 fra.me.REG[5] = fra.me.REG[5];
9795 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9796 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9797 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9798 if (!once_value_14) {
9799 fra.me.REG[5] = BOX_NativeString(".");
9800 REGB0 = TAG_Int(1);
9801 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9802 once_value_14 = fra.me.REG[5];
9803 register_static_object(&once_value_14);
9804 } else fra.me.REG[5] = once_value_14;
9805 fra.me.REG[5] = fra.me.REG[5];
9806 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9807 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9808 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9809 } else {
9810 /* syntax/typing.nit:1575 */
9811 REGB0 = TAG_Int(5);
9812 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9813 if (!once_value_15) {
9814 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9815 REGB0 = TAG_Int(15);
9816 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9817 once_value_15 = fra.me.REG[5];
9818 register_static_object(&once_value_15);
9819 } else fra.me.REG[5] = once_value_15;
9820 fra.me.REG[5] = fra.me.REG[5];
9821 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9822 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9823 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9824 if (!once_value_16) {
9825 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9826 REGB0 = TAG_Int(20);
9827 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9828 once_value_16 = fra.me.REG[3];
9829 register_static_object(&once_value_16);
9830 } else fra.me.REG[3] = once_value_16;
9831 fra.me.REG[3] = fra.me.REG[3];
9832 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9833 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9834 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9835 if (!once_value_17) {
9836 fra.me.REG[2] = BOX_NativeString(".");
9837 REGB0 = TAG_Int(1);
9838 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9839 once_value_17 = fra.me.REG[2];
9840 register_static_object(&once_value_17);
9841 } else fra.me.REG[2] = once_value_17;
9842 fra.me.REG[2] = fra.me.REG[2];
9843 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9844 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9845 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9846 }
9847 /* syntax/typing.nit:1577 */
9848 fra.me.REG[4] = NIT_NULL;
9849 goto label7;
9850 }
9851 /* syntax/typing.nit:1579 */
9852 fra.me.REG[4] = fra.me.REG[6];
9853 goto label7;
9854 label7: while(0);
9855 stack_frame_head = fra.me.prev;
9856 return fra.me.REG[4];
9857 }
9858 static const char LOCATE_syntax___typing___AAbsSendExpr___get_signature[] = "typing::AAbsSendExpr::get_signature";
9859 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9860 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9861 val_t REGB0;
9862 val_t tmp;
9863 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9864 fra.me.file = LOCATE_syntax___typing;
9865 fra.me.line = 1582;
9866 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9867 fra.me.has_broke = 0;
9868 fra.me.REG_size = 6;
9869 fra.me.nitni_local_ref_head = NULL;
9870 fra.me.REG[0] = NIT_NULL;
9871 fra.me.REG[1] = NIT_NULL;
9872 fra.me.REG[2] = NIT_NULL;
9873 fra.me.REG[3] = NIT_NULL;
9874 fra.me.REG[4] = NIT_NULL;
9875 fra.me.REG[5] = NIT_NULL;
9876 fra.me.REG[0] = p0;
9877 fra.me.REG[1] = p1;
9878 fra.me.REG[2] = p2;
9879 fra.me.REG[3] = p3;
9880 REGB0 = p4;
9881 /* syntax/typing.nit:1585 */
9882 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9883 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9884 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);
9885 /* syntax/typing.nit:1586 */
9886 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9887 /* syntax/typing.nit:1587 */
9888 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9889 if (UNTAG_Bool(REGB0)) {
9890 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9891 fra.me.REG[2] = fra.me.REG[3];
9892 }
9893 /* syntax/typing.nit:1588 */
9894 goto label1;
9895 label1: while(0);
9896 stack_frame_head = fra.me.prev;
9897 return fra.me.REG[2];
9898 }
9899 static const char LOCATE_syntax___typing___AAbsSendExpr___prop[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::prop)";
9900 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9901 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9902 val_t REGB0;
9903 val_t tmp;
9904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9905 fra.me.file = LOCATE_syntax___typing;
9906 fra.me.line = 1591;
9907 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9908 fra.me.has_broke = 0;
9909 fra.me.REG_size = 2;
9910 fra.me.nitni_local_ref_head = NULL;
9911 fra.me.REG[0] = NIT_NULL;
9912 fra.me.REG[1] = NIT_NULL;
9913 fra.me.REG[0] = p0;
9914 /* syntax/typing.nit:1591 */
9915 fra.me.REG[1] = fra.me.REG[0];
9916 /* syntax/typing.nit:1592 */
9917 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9918 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9919 if (UNTAG_Bool(REGB0)) {
9920 } else {
9921 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1592);
9922 }
9923 goto label1;
9924 label1: while(0);
9925 stack_frame_head = fra.me.prev;
9926 return fra.me.REG[1];
9927 }
9928 static const char LOCATE_syntax___typing___AAbsSendExpr___return_type[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::return_type)";
9929 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9930 struct {struct stack_frame_t me;} fra;
9931 val_t tmp;
9932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9933 fra.me.file = LOCATE_syntax___typing;
9934 fra.me.line = 1595;
9935 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9936 fra.me.has_broke = 0;
9937 fra.me.REG_size = 1;
9938 fra.me.nitni_local_ref_head = NULL;
9939 fra.me.REG[0] = NIT_NULL;
9940 fra.me.REG[0] = p0;
9941 /* syntax/typing.nit:1595 */
9942 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9943 stack_frame_head = fra.me.prev;
9944 return fra.me.REG[0];
9945 }
9946 static const char LOCATE_syntax___typing___ASuperInitCall___register_super_init_call[] = "typing::ASuperInitCall::register_super_init_call";
9947 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9948 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
9949 val_t REGB0;
9950 val_t REGB1;
9951 val_t REGB2;
9952 val_t tmp;
9953 static val_t once_value_1; /* Once value */
9954 static val_t once_value_2; /* Once value */
9955 static val_t once_value_3; /* Once value */
9956 static val_t once_value_4; /* Once value */
9957 static val_t once_value_5; /* Once value */
9958 static val_t once_value_6; /* Once value */
9959 static val_t once_value_7; /* Once value */
9960 static val_t once_value_8; /* Once value */
9961 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9962 fra.me.file = LOCATE_syntax___typing;
9963 fra.me.line = 1602;
9964 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9965 fra.me.has_broke = 0;
9966 fra.me.REG_size = 9;
9967 fra.me.nitni_local_ref_head = NULL;
9968 fra.me.REG[0] = NIT_NULL;
9969 fra.me.REG[1] = NIT_NULL;
9970 fra.me.REG[2] = NIT_NULL;
9971 fra.me.REG[3] = NIT_NULL;
9972 fra.me.REG[4] = NIT_NULL;
9973 fra.me.REG[5] = NIT_NULL;
9974 fra.me.REG[6] = NIT_NULL;
9975 fra.me.REG[7] = NIT_NULL;
9976 fra.me.REG[8] = NIT_NULL;
9977 fra.me.REG[0] = p0;
9978 fra.me.REG[1] = p1;
9979 fra.me.REG[2] = p2;
9980 /* syntax/typing.nit:1602 */
9981 fra.me.REG[3] = fra.me.REG[0];
9982 /* syntax/typing.nit:1604 */
9983 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9984 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9985 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9986 if (UNTAG_Bool(REGB0)) {
9987 } else {
9988 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9989 if (UNTAG_Bool(REGB1)) {
9990 REGB1 = TAG_Bool(0);
9991 REGB0 = REGB1;
9992 } else {
9993 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9994 REGB0 = REGB1;
9995 }
9996 }
9997 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9998 if (UNTAG_Bool(REGB0)) {
9999 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
10000 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
10001 if (UNTAG_Bool(REGB0)) {
10002 } else {
10003 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10004 REGB0 = REGB1;
10005 }
10006 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10007 } else {
10008 REGB1 = TAG_Bool(0);
10009 REGB0 = REGB1;
10010 }
10011 if (UNTAG_Bool(REGB0)) {
10012 /* syntax/typing.nit:1605 */
10013 REGB0 = TAG_Int(3);
10014 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10015 if (!once_value_1) {
10016 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
10017 REGB0 = TAG_Int(30);
10018 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10019 once_value_1 = fra.me.REG[4];
10020 register_static_object(&once_value_1);
10021 } else fra.me.REG[4] = once_value_1;
10022 fra.me.REG[4] = fra.me.REG[4];
10023 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10024 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10025 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10026 if (!once_value_2) {
10027 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
10028 REGB0 = TAG_Int(29);
10029 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10030 once_value_2 = fra.me.REG[4];
10031 register_static_object(&once_value_2);
10032 } else fra.me.REG[4] = once_value_2;
10033 fra.me.REG[4] = fra.me.REG[4];
10034 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10035 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10036 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
10037 }
10038 /* syntax/typing.nit:1607 */
10039 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
10040 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
10041 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
10042 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
10043 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
10044 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10045 /* syntax/typing.nit:1608 */
10046 fra.me.REG[5] = NIT_NULL;
10047 /* syntax/typing.nit:1609 */
10048 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
10049 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10050 if (UNTAG_Bool(REGB0)) {
10051 } else {
10052 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1609);
10053 }
10054 /* syntax/typing.nit:1610 */
10055 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
10056 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10057 if (UNTAG_Bool(REGB0)) {
10058 /* syntax/typing.nit:1611 */
10059 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
10060 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
10061 if (UNTAG_Bool(REGB0)) {
10062 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1611);
10063 }
10064 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10065 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
10066 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
10067 fra.me.REG[5] = fra.me.REG[0];
10068 }
10069 /* syntax/typing.nit:1613 */
10070 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10071 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
10072 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
10073 /* syntax/typing.nit:1614 */
10074 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10075 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
10076 if (UNTAG_Bool(REGB0)) {
10077 } else {
10078 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
10079 REGB0 = REGB1;
10080 }
10081 if (UNTAG_Bool(REGB0)) {
10082 /* syntax/typing.nit:1615 */
10083 REGB0 = TAG_Bool(1);
10084 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
10085 } else {
10086 /* syntax/typing.nit:1616 */
10087 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
10088 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10089 if (UNTAG_Bool(REGB0)) {
10090 /* syntax/typing.nit:1617 */
10091 REGB0 = TAG_Int(5);
10092 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10093 if (!once_value_3) {
10094 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
10095 REGB0 = TAG_Int(28);
10096 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10097 once_value_3 = fra.me.REG[8];
10098 register_static_object(&once_value_3);
10099 } else fra.me.REG[8] = once_value_3;
10100 fra.me.REG[8] = fra.me.REG[8];
10101 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10102 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10103 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10104 if (!once_value_4) {
10105 fra.me.REG[8] = BOX_NativeString(" must be one in ");
10106 REGB0 = TAG_Int(16);
10107 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10108 once_value_4 = fra.me.REG[8];
10109 register_static_object(&once_value_4);
10110 } else fra.me.REG[8] = once_value_4;
10111 fra.me.REG[8] = fra.me.REG[8];
10112 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10113 if (!once_value_5) {
10114 fra.me.REG[8] = BOX_NativeString(", ");
10115 REGB0 = TAG_Int(2);
10116 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10117 once_value_5 = fra.me.REG[8];
10118 register_static_object(&once_value_5);
10119 } else fra.me.REG[8] = once_value_5;
10120 fra.me.REG[8] = fra.me.REG[8];
10121 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
10122 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10123 if (!once_value_6) {
10124 fra.me.REG[8] = BOX_NativeString(".");
10125 REGB0 = TAG_Int(1);
10126 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10127 once_value_6 = fra.me.REG[8];
10128 register_static_object(&once_value_6);
10129 } else fra.me.REG[8] = once_value_6;
10130 fra.me.REG[8] = fra.me.REG[8];
10131 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10132 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10133 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10134 } else {
10135 /* syntax/typing.nit:1618 */
10136 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
10137 if (UNTAG_Bool(REGB0)) {
10138 } else {
10139 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10140 REGB0 = REGB1;
10141 }
10142 if (UNTAG_Bool(REGB0)) {
10143 /* syntax/typing.nit:1619 */
10144 REGB0 = TAG_Int(3);
10145 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10146 if (!once_value_7) {
10147 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
10148 REGB0 = TAG_Int(54);
10149 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10150 once_value_7 = fra.me.REG[8];
10151 register_static_object(&once_value_7);
10152 } else fra.me.REG[8] = once_value_7;
10153 fra.me.REG[8] = fra.me.REG[8];
10154 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10155 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10156 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10157 if (!once_value_8) {
10158 fra.me.REG[8] = BOX_NativeString(" is allowed.");
10159 REGB0 = TAG_Int(12);
10160 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10161 once_value_8 = fra.me.REG[8];
10162 register_static_object(&once_value_8);
10163 } else fra.me.REG[8] = once_value_8;
10164 fra.me.REG[8] = fra.me.REG[8];
10165 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10166 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10167 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10168 } else {
10169 /* ../lib/standard/collection/array.nit:269 */
10170 REGB0 = TAG_Int(0);
10171 /* ../lib/standard/collection/array.nit:270 */
10172 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10173 if (UNTAG_Bool(REGB1)) {
10174 } else {
10175 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
10176 }
10177 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10178 /* ../lib/standard/collection/array.nit:271 */
10179 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
10180 /* ../lib/standard/collection/array.nit:272 */
10181 while(1) {
10182 /* ../lib/standard/collection/array.nit:24 */
10183 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10184 if (UNTAG_Bool(REGB1)) {
10185 } else {
10186 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
10187 }
10188 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10189 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
10190 if (UNTAG_Bool(REGB2)) {
10191 } else {
10192 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
10193 }
10194 /* ../lib/standard/kernel.nit:235 */
10195 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
10196 /* ../lib/standard/collection/array.nit:272 */
10197 if (UNTAG_Bool(REGB1)) {
10198 /* ../lib/standard/collection/array.nit:273 */
10199 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10200 if (UNTAG_Bool(REGB1)) {
10201 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
10202 }
10203 /* ../lib/standard/collection/array.nit:718 */
10204 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
10205 /* syntax/typing.nit:1622 */
10206 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
10207 if (UNTAG_Bool(REGB1)) {
10208 } else {
10209 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10210 REGB1 = REGB2;
10211 }
10212 if (UNTAG_Bool(REGB1)) {
10213 /* syntax/typing.nit:1623 */
10214 fra.me.REG[5] = NIT_NULL;
10215 } else {
10216 /* syntax/typing.nit:1624 */
10217 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
10218 if (UNTAG_Bool(REGB1)) {
10219 } else {
10220 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10221 REGB1 = REGB2;
10222 }
10223 if (UNTAG_Bool(REGB1)) {
10224 /* syntax/typing.nit:1625 */
10225 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
10226 /* syntax/typing.nit:1626 */
10227 goto label9;
10228 }
10229 }
10230 /* ../lib/standard/collection/array.nit:274 */
10231 REGB1 = TAG_Int(1);
10232 /* ../lib/standard/kernel.nit:238 */
10233 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
10234 /* ../lib/standard/collection/array.nit:274 */
10235 REGB0 = REGB1;
10236 } else {
10237 /* ../lib/standard/collection/array.nit:272 */
10238 goto label10;
10239 }
10240 }
10241 label10: while(0);
10242 label9: while(0);
10243 }
10244 }
10245 }
10246 stack_frame_head = fra.me.prev;
10247 return;
10248 }
10249 static const char LOCATE_syntax___typing___ANewExpr___compute_raw_arguments[] = "typing::ANewExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
10250 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
10251 struct {struct stack_frame_t me;} fra;
10252 val_t tmp;
10253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10254 fra.me.file = LOCATE_syntax___typing;
10255 fra.me.line = 1635;
10256 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
10257 fra.me.has_broke = 0;
10258 fra.me.REG_size = 1;
10259 fra.me.nitni_local_ref_head = NULL;
10260 fra.me.REG[0] = NIT_NULL;
10261 fra.me.REG[0] = p0;
10262 /* syntax/typing.nit:1635 */
10263 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10264 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
10265 goto label1;
10266 label1: while(0);
10267 stack_frame_head = fra.me.prev;
10268 return fra.me.REG[0];
10269 }
10270 static const char LOCATE_syntax___typing___ANewExpr___after_typing[] = "typing::ANewExpr::(typing::ANode::after_typing)";
10271 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
10272 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10273 val_t REGB0;
10274 val_t REGB1;
10275 val_t tmp;
10276 static val_t once_value_2; /* Once value */
10277 static val_t once_value_3; /* Once value */
10278 static val_t once_value_4; /* Once value */
10279 static val_t once_value_5; /* Once value */
10280 static val_t once_value_6; /* Once value */
10281 static val_t once_value_7; /* Once value */
10282 static val_t once_value_8; /* Once value */
10283 static val_t once_value_9; /* Once value */
10284 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10285 fra.me.file = LOCATE_syntax___typing;
10286 fra.me.line = 1636;
10287 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
10288 fra.me.has_broke = 0;
10289 fra.me.REG_size = 5;
10290 fra.me.nitni_local_ref_head = NULL;
10291 fra.me.REG[0] = NIT_NULL;
10292 fra.me.REG[1] = NIT_NULL;
10293 fra.me.REG[2] = NIT_NULL;
10294 fra.me.REG[3] = NIT_NULL;
10295 fra.me.REG[4] = NIT_NULL;
10296 fra.me.REG[0] = p0;
10297 fra.me.REG[1] = p1;
10298 /* syntax/typing.nit:1638 */
10299 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10300 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
10301 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10302 if (UNTAG_Bool(REGB0)) {
10303 goto label1;
10304 }
10305 /* syntax/typing.nit:1639 */
10306 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10307 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
10308 /* syntax/typing.nit:1640 */
10309 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10310 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
10311 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
10312 if (UNTAG_Bool(REGB0)) {
10313 /* syntax/typing.nit:1641 */
10314 REGB0 = TAG_Int(3);
10315 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10316 if (!once_value_2) {
10317 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
10318 REGB0 = TAG_Int(41);
10319 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10320 once_value_2 = fra.me.REG[4];
10321 register_static_object(&once_value_2);
10322 } else fra.me.REG[4] = once_value_2;
10323 fra.me.REG[4] = fra.me.REG[4];
10324 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10325 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10326 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10327 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10328 if (!once_value_3) {
10329 fra.me.REG[4] = BOX_NativeString(".");
10330 REGB0 = TAG_Int(1);
10331 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10332 once_value_3 = fra.me.REG[4];
10333 register_static_object(&once_value_3);
10334 } else fra.me.REG[4] = once_value_3;
10335 fra.me.REG[4] = fra.me.REG[4];
10336 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10337 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10338 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10339 /* syntax/typing.nit:1642 */
10340 goto label1;
10341 }
10342 /* syntax/typing.nit:1644 */
10343 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
10344 if (UNTAG_Bool(REGB0)) {
10345 /* syntax/typing.nit:1645 */
10346 REGB0 = TAG_Int(3);
10347 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10348 if (!once_value_4) {
10349 fra.me.REG[4] = BOX_NativeString("Type error: cannot instantiate the nullable type ");
10350 REGB0 = TAG_Int(49);
10351 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10352 once_value_4 = fra.me.REG[4];
10353 register_static_object(&once_value_4);
10354 } else fra.me.REG[4] = once_value_4;
10355 fra.me.REG[4] = fra.me.REG[4];
10356 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10357 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10358 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10359 if (!once_value_5) {
10360 fra.me.REG[4] = BOX_NativeString(".");
10361 REGB0 = TAG_Int(1);
10362 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10363 once_value_5 = fra.me.REG[4];
10364 register_static_object(&once_value_5);
10365 } else fra.me.REG[4] = once_value_5;
10366 fra.me.REG[4] = fra.me.REG[4];
10367 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10368 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10369 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10370 }
10371 /* syntax/typing.nit:1648 */
10372 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10373 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10374 if (UNTAG_Bool(REGB0)) {
10375 } else {
10376 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10377 if (UNTAG_Bool(REGB1)) {
10378 REGB1 = TAG_Bool(0);
10379 REGB0 = REGB1;
10380 } else {
10381 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10382 REGB0 = REGB1;
10383 }
10384 }
10385 if (UNTAG_Bool(REGB0)) {
10386 /* syntax/typing.nit:1649 */
10387 if (!once_value_6) {
10388 if (!once_value_7) {
10389 fra.me.REG[3] = BOX_NativeString("init");
10390 REGB0 = TAG_Int(4);
10391 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10392 once_value_7 = fra.me.REG[3];
10393 register_static_object(&once_value_7);
10394 } else fra.me.REG[3] = once_value_7;
10395 fra.me.REG[3] = fra.me.REG[3];
10396 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10397 once_value_6 = fra.me.REG[3];
10398 register_static_object(&once_value_6);
10399 } else fra.me.REG[3] = once_value_6;
10400 fra.me.REG[3] = fra.me.REG[3];
10401 } else {
10402 /* syntax/typing.nit:1651 */
10403 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10404 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10405 if (UNTAG_Bool(REGB0)) {
10406 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1651);
10407 }
10408 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10409 fra.me.REG[3] = fra.me.REG[4];
10410 }
10411 /* syntax/typing.nit:1654 */
10412 REGB0 = TAG_Bool(0);
10413 REGB1 = TAG_Bool(0);
10414 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10415 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);
10416 /* syntax/typing.nit:1655 */
10417 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
10418 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10419 if (UNTAG_Bool(REGB1)) {
10420 } else {
10421 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10422 if (UNTAG_Bool(REGB0)) {
10423 REGB0 = TAG_Bool(0);
10424 REGB1 = REGB0;
10425 } else {
10426 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10427 REGB1 = REGB0;
10428 }
10429 }
10430 if (UNTAG_Bool(REGB1)) {
10431 goto label1;
10432 }
10433 /* syntax/typing.nit:1657 */
10434 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10435 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10436 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10437 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10438 if (UNTAG_Bool(REGB1)) {
10439 /* syntax/typing.nit:1658 */
10440 REGB1 = TAG_Int(3);
10441 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10442 if (!once_value_8) {
10443 fra.me.REG[3] = BOX_NativeString("Error: ");
10444 REGB1 = TAG_Int(7);
10445 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10446 once_value_8 = fra.me.REG[3];
10447 register_static_object(&once_value_8);
10448 } else fra.me.REG[3] = once_value_8;
10449 fra.me.REG[3] = fra.me.REG[3];
10450 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10451 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10452 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10453 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10454 if (!once_value_9) {
10455 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
10456 REGB1 = TAG_Int(22);
10457 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10458 once_value_9 = fra.me.REG[3];
10459 register_static_object(&once_value_9);
10460 } else fra.me.REG[3] = once_value_9;
10461 fra.me.REG[3] = fra.me.REG[3];
10462 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10463 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10464 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10465 /* syntax/typing.nit:1659 */
10466 goto label1;
10467 }
10468 /* syntax/typing.nit:1661 */
10469 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10470 /* syntax/typing.nit:1662 */
10471 REGB1 = TAG_Bool(1);
10472 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
10473 label1: while(0);
10474 stack_frame_head = fra.me.prev;
10475 return;
10476 }
10477 static const char LOCATE_syntax___typing___ASendExpr___name[] = "typing::ASendExpr::name";
10478 val_t syntax___typing___ASendExpr___name(val_t p0){
10479 struct {struct stack_frame_t me;} fra;
10480 val_t tmp;
10481 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10482 fra.me.file = LOCATE_syntax___typing;
10483 fra.me.line = 1668;
10484 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10485 fra.me.has_broke = 0;
10486 fra.me.REG_size = 0;
10487 fra.me.nitni_local_ref_head = NULL;
10488 /* syntax/typing.nit:1668 */
10489 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1668);
10490 stack_frame_head = fra.me.prev;
10491 return NIT_NULL;
10492 }
10493 static const char LOCATE_syntax___typing___ASendExpr___closure_defs[] = "typing::ASendExpr::(syntax_base::ASendExpr::closure_defs)";
10494 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10495 struct {struct stack_frame_t me;} fra;
10496 val_t tmp;
10497 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10498 fra.me.file = LOCATE_syntax___typing;
10499 fra.me.line = 1671;
10500 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10501 fra.me.has_broke = 0;
10502 fra.me.REG_size = 1;
10503 fra.me.nitni_local_ref_head = NULL;
10504 fra.me.REG[0] = NIT_NULL;
10505 fra.me.REG[0] = p0;
10506 /* syntax/typing.nit:1672 */
10507 fra.me.REG[0] = NIT_NULL;
10508 goto label1;
10509 label1: while(0);
10510 stack_frame_head = fra.me.prev;
10511 return fra.me.REG[0];
10512 }
10513 static const char LOCATE_syntax___typing___ASendExpr___after_typing[] = "typing::ASendExpr::(typing::ANode::after_typing)";
10514 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10515 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10516 val_t tmp;
10517 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10518 fra.me.file = LOCATE_syntax___typing;
10519 fra.me.line = 1674;
10520 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10521 fra.me.has_broke = 0;
10522 fra.me.REG_size = 2;
10523 fra.me.nitni_local_ref_head = NULL;
10524 fra.me.REG[0] = NIT_NULL;
10525 fra.me.REG[1] = NIT_NULL;
10526 fra.me.REG[0] = p0;
10527 fra.me.REG[1] = p1;
10528 /* syntax/typing.nit:1676 */
10529 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10530 stack_frame_head = fra.me.prev;
10531 return;
10532 }
10533 static const char LOCATE_syntax___typing___ASendExpr___do_all_typing[] = "typing::ASendExpr::do_all_typing";
10534 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10535 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10536 val_t REGB0;
10537 val_t REGB1;
10538 val_t tmp;
10539 static val_t once_value_2; /* Once value */
10540 static val_t once_value_3; /* Once value */
10541 static val_t once_value_4; /* Once value */
10542 static val_t once_value_5; /* Once value */
10543 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10544 fra.me.file = LOCATE_syntax___typing;
10545 fra.me.line = 1679;
10546 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10547 fra.me.has_broke = 0;
10548 fra.me.REG_size = 7;
10549 fra.me.nitni_local_ref_head = NULL;
10550 fra.me.REG[0] = NIT_NULL;
10551 fra.me.REG[1] = NIT_NULL;
10552 fra.me.REG[2] = NIT_NULL;
10553 fra.me.REG[3] = NIT_NULL;
10554 fra.me.REG[4] = NIT_NULL;
10555 fra.me.REG[5] = NIT_NULL;
10556 fra.me.REG[6] = NIT_NULL;
10557 fra.me.REG[0] = p0;
10558 fra.me.REG[1] = p1;
10559 /* syntax/typing.nit:1679 */
10560 fra.me.REG[2] = fra.me.REG[0];
10561 /* syntax/typing.nit:1681 */
10562 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10563 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10564 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10565 if (UNTAG_Bool(REGB0)) {
10566 goto label1;
10567 }
10568 /* syntax/typing.nit:1682 */
10569 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10570 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10571 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10572 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10573 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10574 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10575 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10576 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10577 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10578 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]);
10579 /* syntax/typing.nit:1683 */
10580 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10581 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10582 if (UNTAG_Bool(REGB1)) {
10583 } else {
10584 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10585 if (UNTAG_Bool(REGB0)) {
10586 REGB0 = TAG_Bool(0);
10587 REGB1 = REGB0;
10588 } else {
10589 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10590 REGB1 = REGB0;
10591 }
10592 }
10593 if (UNTAG_Bool(REGB1)) {
10594 goto label1;
10595 }
10596 /* syntax/typing.nit:1684 */
10597 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10598 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10599 if (UNTAG_Bool(REGB1)) {
10600 } else {
10601 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1684);
10602 }
10603 /* syntax/typing.nit:1686 */
10604 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10605 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10606 if (UNTAG_Bool(REGB1)) {
10607 /* syntax/typing.nit:1687 */
10608 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10609 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10610 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10611 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10612 if (UNTAG_Bool(REGB1)) {
10613 /* syntax/typing.nit:1688 */
10614 REGB1 = TAG_Int(3);
10615 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10616 if (!once_value_2) {
10617 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10618 REGB1 = TAG_Int(33);
10619 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10620 once_value_2 = fra.me.REG[5];
10621 register_static_object(&once_value_2);
10622 } else fra.me.REG[5] = once_value_2;
10623 fra.me.REG[5] = fra.me.REG[5];
10624 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10625 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10626 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10627 if (!once_value_3) {
10628 fra.me.REG[5] = BOX_NativeString(" in a method.");
10629 REGB1 = TAG_Int(13);
10630 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10631 once_value_3 = fra.me.REG[5];
10632 register_static_object(&once_value_3);
10633 } else fra.me.REG[5] = once_value_3;
10634 fra.me.REG[5] = fra.me.REG[5];
10635 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10636 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10637 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10638 } else {
10639 /* syntax/typing.nit:1689 */
10640 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10641 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10642 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10643 if (UNTAG_Bool(REGB1)) {
10644 /* syntax/typing.nit:1690 */
10645 REGB1 = TAG_Int(3);
10646 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10647 if (!once_value_4) {
10648 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10649 REGB1 = TAG_Int(19);
10650 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10651 once_value_4 = fra.me.REG[5];
10652 register_static_object(&once_value_4);
10653 } else fra.me.REG[5] = once_value_4;
10654 fra.me.REG[5] = fra.me.REG[5];
10655 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10656 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10657 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10658 if (!once_value_5) {
10659 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10660 REGB1 = TAG_Int(26);
10661 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10662 once_value_5 = fra.me.REG[5];
10663 register_static_object(&once_value_5);
10664 } else fra.me.REG[5] = once_value_5;
10665 fra.me.REG[5] = fra.me.REG[5];
10666 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10667 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10668 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10669 } else {
10670 /* syntax/typing.nit:1692 */
10671 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10672 }
10673 }
10674 }
10675 /* syntax/typing.nit:1696 */
10676 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10677 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10678 /* syntax/typing.nit:1697 */
10679 REGB1 = TAG_Bool(1);
10680 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10681 label1: while(0);
10682 stack_frame_head = fra.me.prev;
10683 return;
10684 }
10685 static const char LOCATE_syntax___typing___ASendReassignExpr___read_prop[] = "typing::ASendReassignExpr::(syntax_base::ASendReassignExpr::read_prop)";
10686 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10687 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10688 val_t REGB0;
10689 val_t tmp;
10690 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10691 fra.me.file = LOCATE_syntax___typing;
10692 fra.me.line = 1702;
10693 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10694 fra.me.has_broke = 0;
10695 fra.me.REG_size = 2;
10696 fra.me.nitni_local_ref_head = NULL;
10697 fra.me.REG[0] = NIT_NULL;
10698 fra.me.REG[1] = NIT_NULL;
10699 fra.me.REG[0] = p0;
10700 /* syntax/typing.nit:1702 */
10701 fra.me.REG[1] = fra.me.REG[0];
10702 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10703 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10704 if (UNTAG_Bool(REGB0)) {
10705 } else {
10706 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1702);
10707 }
10708 goto label1;
10709 label1: while(0);
10710 stack_frame_head = fra.me.prev;
10711 return fra.me.REG[1];
10712 }
10713 static const char LOCATE_syntax___typing___ASendReassignExpr___do_all_typing[] = "typing::ASendReassignExpr::(typing::ASendExpr::do_all_typing)";
10714 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10715 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10716 val_t REGB0;
10717 val_t REGB1;
10718 val_t REGB2;
10719 val_t tmp;
10720 static val_t once_value_2; /* Once value */
10721 static val_t once_value_3; /* Once value */
10722 static val_t once_value_4; /* Once value */
10723 static val_t once_value_5; /* Once value */
10724 static val_t once_value_6; /* Once value */
10725 static val_t once_value_7; /* Once value */
10726 static val_t once_value_8; /* Once value */
10727 static val_t once_value_9; /* Once value */
10728 static val_t once_value_10; /* Once value */
10729 static val_t once_value_11; /* Once value */
10730 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10731 fra.me.file = LOCATE_syntax___typing;
10732 fra.me.line = 1704;
10733 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10734 fra.me.has_broke = 0;
10735 fra.me.REG_size = 7;
10736 fra.me.nitni_local_ref_head = NULL;
10737 fra.me.REG[0] = NIT_NULL;
10738 fra.me.REG[1] = NIT_NULL;
10739 fra.me.REG[2] = NIT_NULL;
10740 fra.me.REG[3] = NIT_NULL;
10741 fra.me.REG[4] = NIT_NULL;
10742 fra.me.REG[5] = NIT_NULL;
10743 fra.me.REG[6] = NIT_NULL;
10744 fra.me.REG[0] = p0;
10745 fra.me.REG[1] = p1;
10746 /* syntax/typing.nit:1704 */
10747 fra.me.REG[2] = fra.me.REG[0];
10748 /* syntax/typing.nit:1706 */
10749 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10750 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10751 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10752 if (UNTAG_Bool(REGB0)) {
10753 goto label1;
10754 }
10755 /* syntax/typing.nit:1707 */
10756 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10757 /* syntax/typing.nit:1708 */
10758 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10759 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10760 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10761 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10762 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10763 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10764 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10765 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);
10766 /* syntax/typing.nit:1709 */
10767 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10768 /* syntax/typing.nit:1710 */
10769 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10770 if (UNTAG_Bool(REGB1)) {
10771 } else {
10772 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10773 if (UNTAG_Bool(REGB0)) {
10774 REGB0 = TAG_Bool(0);
10775 REGB1 = REGB0;
10776 } else {
10777 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10778 REGB1 = REGB0;
10779 }
10780 }
10781 if (UNTAG_Bool(REGB1)) {
10782 goto label1;
10783 }
10784 /* syntax/typing.nit:1711 */
10785 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10786 if (UNTAG_Bool(REGB1)) {
10787 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1711);
10788 }
10789 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10790 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10791 if (UNTAG_Bool(REGB1)) {
10792 /* syntax/typing.nit:1712 */
10793 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10794 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10795 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10796 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10797 if (UNTAG_Bool(REGB1)) {
10798 /* syntax/typing.nit:1713 */
10799 REGB1 = TAG_Int(3);
10800 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10801 if (!once_value_2) {
10802 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10803 REGB1 = TAG_Int(33);
10804 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10805 once_value_2 = fra.me.REG[6];
10806 register_static_object(&once_value_2);
10807 } else fra.me.REG[6] = once_value_2;
10808 fra.me.REG[6] = fra.me.REG[6];
10809 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10810 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10811 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10812 if (!once_value_3) {
10813 fra.me.REG[6] = BOX_NativeString(" in a method.");
10814 REGB1 = TAG_Int(13);
10815 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10816 once_value_3 = fra.me.REG[6];
10817 register_static_object(&once_value_3);
10818 } else fra.me.REG[6] = once_value_3;
10819 fra.me.REG[6] = fra.me.REG[6];
10820 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10821 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10822 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10823 } else {
10824 /* syntax/typing.nit:1714 */
10825 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10826 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10827 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10828 if (UNTAG_Bool(REGB1)) {
10829 /* syntax/typing.nit:1715 */
10830 REGB1 = TAG_Int(3);
10831 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10832 if (!once_value_4) {
10833 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10834 REGB1 = TAG_Int(19);
10835 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10836 once_value_4 = fra.me.REG[6];
10837 register_static_object(&once_value_4);
10838 } else fra.me.REG[6] = once_value_4;
10839 fra.me.REG[6] = fra.me.REG[6];
10840 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10841 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10842 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10843 if (!once_value_5) {
10844 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10845 REGB1 = TAG_Int(26);
10846 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10847 once_value_5 = fra.me.REG[6];
10848 register_static_object(&once_value_5);
10849 } else fra.me.REG[6] = once_value_5;
10850 fra.me.REG[6] = fra.me.REG[6];
10851 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10852 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10853 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10854 }
10855 }
10856 }
10857 /* syntax/typing.nit:1718 */
10858 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10859 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10860 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10861 if (UNTAG_Bool(REGB1)) {
10862 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1718);
10863 }
10864 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10865 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10866 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*/;
10867 if (UNTAG_Bool(REGB1)) {
10868 } else {
10869 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1718);
10870 }
10871 /* syntax/typing.nit:1719 */
10872 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10873 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10874 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10875 if (UNTAG_Bool(REGB1)) {
10876 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10877 fra.me.REG[4] = fra.me.REG[0];
10878 }
10879 /* syntax/typing.nit:1721 */
10880 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]);
10881 /* syntax/typing.nit:1722 */
10882 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10883 if (UNTAG_Bool(REGB1)) {
10884 } else {
10885 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10886 if (UNTAG_Bool(REGB0)) {
10887 REGB0 = TAG_Bool(0);
10888 REGB1 = REGB0;
10889 } else {
10890 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10891 REGB1 = REGB0;
10892 }
10893 }
10894 if (UNTAG_Bool(REGB1)) {
10895 goto label1;
10896 }
10897 /* syntax/typing.nit:1723 */
10898 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10899 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10900 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]);
10901 /* syntax/typing.nit:1725 */
10902 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10903 /* syntax/typing.nit:1726 */
10904 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10905 fra.me.REG[3] = fra.me.REG[0];
10906 /* syntax/typing.nit:1727 */
10907 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10908 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10909 /* syntax/typing.nit:1729 */
10910 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10911 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10912 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10913 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10914 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10915 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10916 REGB2 = TAG_Int(3);
10917 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10918 if (!once_value_6) {
10919 fra.me.REG[6] = BOX_NativeString("");
10920 REGB2 = TAG_Int(0);
10921 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10922 once_value_6 = fra.me.REG[6];
10923 register_static_object(&once_value_6);
10924 } else fra.me.REG[6] = once_value_6;
10925 fra.me.REG[6] = fra.me.REG[6];
10926 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10927 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10928 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10929 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10930 if (!once_value_7) {
10931 fra.me.REG[6] = BOX_NativeString("=");
10932 REGB2 = TAG_Int(1);
10933 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10934 once_value_7 = fra.me.REG[6];
10935 register_static_object(&once_value_7);
10936 } else fra.me.REG[6] = once_value_7;
10937 fra.me.REG[6] = fra.me.REG[6];
10938 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10939 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10940 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10941 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);
10942 /* syntax/typing.nit:1730 */
10943 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10944 if (UNTAG_Bool(REGB0)) {
10945 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1730);
10946 }
10947 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10948 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10949 if (UNTAG_Bool(REGB0)) {
10950 /* syntax/typing.nit:1731 */
10951 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10952 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
10953 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
10954 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10955 if (UNTAG_Bool(REGB0)) {
10956 /* syntax/typing.nit:1732 */
10957 REGB0 = TAG_Int(3);
10958 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10959 if (!once_value_8) {
10960 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
10961 REGB0 = TAG_Int(33);
10962 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10963 once_value_8 = fra.me.REG[4];
10964 register_static_object(&once_value_8);
10965 } else fra.me.REG[4] = once_value_8;
10966 fra.me.REG[4] = fra.me.REG[4];
10967 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10968 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10969 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10970 if (!once_value_9) {
10971 fra.me.REG[4] = BOX_NativeString(" in a method.");
10972 REGB0 = TAG_Int(13);
10973 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10974 once_value_9 = fra.me.REG[4];
10975 register_static_object(&once_value_9);
10976 } else fra.me.REG[4] = once_value_9;
10977 fra.me.REG[4] = fra.me.REG[4];
10978 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10979 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10980 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
10981 } else {
10982 /* syntax/typing.nit:1733 */
10983 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10984 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
10985 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10986 if (UNTAG_Bool(REGB0)) {
10987 /* syntax/typing.nit:1734 */
10988 REGB0 = TAG_Int(3);
10989 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10990 if (!once_value_10) {
10991 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
10992 REGB0 = TAG_Int(19);
10993 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10994 once_value_10 = fra.me.REG[4];
10995 register_static_object(&once_value_10);
10996 } else fra.me.REG[4] = once_value_10;
10997 fra.me.REG[4] = fra.me.REG[4];
10998 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10999 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
11000 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11001 if (!once_value_11) {
11002 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
11003 REGB0 = TAG_Int(26);
11004 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11005 once_value_11 = fra.me.REG[5];
11006 register_static_object(&once_value_11);
11007 } else fra.me.REG[5] = once_value_11;
11008 fra.me.REG[5] = fra.me.REG[5];
11009 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11010 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11011 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
11012 }
11013 }
11014 }
11015 /* syntax/typing.nit:1738 */
11016 REGB0 = TAG_Bool(1);
11017 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
11018 label1: while(0);
11019 stack_frame_head = fra.me.prev;
11020 return;
11021 }
11022 static const char LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments[] = "typing::ABinopExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
11023 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
11024 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11025 val_t REGB0;
11026 val_t tmp;
11027 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11028 fra.me.file = LOCATE_syntax___typing;
11029 fra.me.line = 1743;
11030 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
11031 fra.me.has_broke = 0;
11032 fra.me.REG_size = 2;
11033 fra.me.nitni_local_ref_head = NULL;
11034 fra.me.REG[0] = NIT_NULL;
11035 fra.me.REG[1] = NIT_NULL;
11036 fra.me.REG[0] = p0;
11037 /* syntax/typing.nit:1743 */
11038 REGB0 = TAG_Int(1);
11039 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11040 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
11041 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11042 goto label1;
11043 label1: while(0);
11044 stack_frame_head = fra.me.prev;
11045 return fra.me.REG[1];
11046 }
11047 static const char LOCATE_syntax___typing___AEqExpr___name[] = "typing::AEqExpr::(typing::ASendExpr::name)";
11048 val_t syntax___typing___AEqExpr___name(val_t p0){
11049 struct {struct stack_frame_t me;} fra;
11050 val_t REGB0;
11051 val_t tmp;
11052 static val_t once_value_1; /* Once value */
11053 static val_t once_value_2; /* Once value */
11054 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11055 fra.me.file = LOCATE_syntax___typing;
11056 fra.me.line = 1746;
11057 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
11058 fra.me.has_broke = 0;
11059 fra.me.REG_size = 1;
11060 fra.me.nitni_local_ref_head = NULL;
11061 fra.me.REG[0] = NIT_NULL;
11062 fra.me.REG[0] = p0;
11063 /* syntax/typing.nit:1746 */
11064 if (!once_value_1) {
11065 if (!once_value_2) {
11066 fra.me.REG[0] = BOX_NativeString("==");
11067 REGB0 = TAG_Int(2);
11068 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11069 once_value_2 = fra.me.REG[0];
11070 register_static_object(&once_value_2);
11071 } else fra.me.REG[0] = once_value_2;
11072 fra.me.REG[0] = fra.me.REG[0];
11073 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11074 once_value_1 = fra.me.REG[0];
11075 register_static_object(&once_value_1);
11076 } else fra.me.REG[0] = once_value_1;
11077 fra.me.REG[0] = fra.me.REG[0];
11078 goto label3;
11079 label3: while(0);
11080 stack_frame_head = fra.me.prev;
11081 return fra.me.REG[0];
11082 }
11083 static const char LOCATE_syntax___typing___AEqExpr___after_typing[] = "typing::AEqExpr::(typing::ANode::after_typing)";
11084 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
11085 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11086 val_t REGB0;
11087 val_t REGB1;
11088 val_t tmp;
11089 static val_t once_value_2; /* Once value */
11090 static val_t once_value_3; /* Once value */
11091 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11092 fra.me.file = LOCATE_syntax___typing;
11093 fra.me.line = 1747;
11094 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
11095 fra.me.has_broke = 0;
11096 fra.me.REG_size = 4;
11097 fra.me.nitni_local_ref_head = NULL;
11098 fra.me.REG[0] = NIT_NULL;
11099 fra.me.REG[1] = NIT_NULL;
11100 fra.me.REG[2] = NIT_NULL;
11101 fra.me.REG[3] = NIT_NULL;
11102 fra.me.REG[0] = p0;
11103 fra.me.REG[1] = p1;
11104 /* syntax/typing.nit:1747 */
11105 fra.me.REG[2] = fra.me.REG[0];
11106 fra.me.REG[3] = fra.me.REG[1];
11107 /* syntax/typing.nit:1749 */
11108 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11109 /* syntax/typing.nit:1750 */
11110 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11111 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11112 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11113 if (UNTAG_Bool(REGB0)) {
11114 REGB0 = TAG_Bool(1);
11115 } else {
11116 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11117 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11118 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11119 REGB0 = REGB1;
11120 }
11121 if (UNTAG_Bool(REGB0)) {
11122 goto label1;
11123 }
11124 /* syntax/typing.nit:1751 */
11125 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11126 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11127 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11128 if (UNTAG_Bool(REGB0)) {
11129 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11130 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11131 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11132 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11133 } else {
11134 REGB1 = TAG_Bool(0);
11135 REGB0 = REGB1;
11136 }
11137 if (UNTAG_Bool(REGB0)) {
11138 REGB0 = TAG_Bool(1);
11139 } else {
11140 /* syntax/typing.nit:1752 */
11141 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11142 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11143 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11144 /* syntax/typing.nit:1751 */
11145 REGB0 = REGB1;
11146 }
11147 if (UNTAG_Bool(REGB0)) {
11148 /* syntax/typing.nit:1752 */
11149 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11150 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11151 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11152 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11153 } else {
11154 /* syntax/typing.nit:1751 */
11155 REGB1 = TAG_Bool(0);
11156 REGB0 = REGB1;
11157 }
11158 if (UNTAG_Bool(REGB0)) {
11159 /* syntax/typing.nit:1753 */
11160 if (!once_value_2) {
11161 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11162 REGB0 = TAG_Int(59);
11163 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11164 once_value_2 = fra.me.REG[1];
11165 register_static_object(&once_value_2);
11166 } else fra.me.REG[1] = once_value_2;
11167 fra.me.REG[1] = fra.me.REG[1];
11168 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11169 }
11170 /* syntax/typing.nit:1756 */
11171 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11172 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11173 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11174 if (UNTAG_Bool(REGB0)) {
11175 /* syntax/typing.nit:1757 */
11176 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11177 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11178 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11179 if (UNTAG_Bool(REGB0)) {
11180 /* syntax/typing.nit:1758 */
11181 if (!once_value_3) {
11182 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11183 REGB0 = TAG_Int(45);
11184 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11185 once_value_3 = fra.me.REG[1];
11186 register_static_object(&once_value_3);
11187 } else fra.me.REG[1] = once_value_3;
11188 fra.me.REG[1] = fra.me.REG[1];
11189 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11190 } else {
11191 /* syntax/typing.nit:1760 */
11192 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11193 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11194 }
11195 } else {
11196 /* syntax/typing.nit:1762 */
11197 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11198 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11199 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11200 if (UNTAG_Bool(REGB0)) {
11201 /* syntax/typing.nit:1763 */
11202 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11203 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11204 }
11205 }
11206 label1: while(0);
11207 stack_frame_head = fra.me.prev;
11208 return;
11209 }
11210 static const char LOCATE_syntax___typing___AEqExpr___try_to_isa[] = "typing::AEqExpr::try_to_isa";
11211 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11212 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11213 val_t REGB0;
11214 val_t REGB1;
11215 val_t tmp;
11216 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11217 fra.me.file = LOCATE_syntax___typing;
11218 fra.me.line = 1767;
11219 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
11220 fra.me.has_broke = 0;
11221 fra.me.REG_size = 5;
11222 fra.me.nitni_local_ref_head = NULL;
11223 fra.me.REG[0] = NIT_NULL;
11224 fra.me.REG[1] = NIT_NULL;
11225 fra.me.REG[2] = NIT_NULL;
11226 fra.me.REG[3] = NIT_NULL;
11227 fra.me.REG[4] = NIT_NULL;
11228 fra.me.REG[0] = p0;
11229 fra.me.REG[1] = p1;
11230 fra.me.REG[2] = p2;
11231 /* syntax/typing.nit:1769 */
11232 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11233 /* syntax/typing.nit:1770 */
11234 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11235 if (UNTAG_Bool(REGB0)) {
11236 } else {
11237 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11238 if (UNTAG_Bool(REGB1)) {
11239 REGB1 = TAG_Bool(0);
11240 REGB0 = REGB1;
11241 } else {
11242 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11243 REGB0 = REGB1;
11244 }
11245 }
11246 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11247 if (UNTAG_Bool(REGB0)) {
11248 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11249 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11250 } else {
11251 REGB1 = TAG_Bool(0);
11252 REGB0 = REGB1;
11253 }
11254 if (UNTAG_Bool(REGB0)) {
11255 /* syntax/typing.nit:1771 */
11256 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11257 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11258 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11259 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]);
11260 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11261 /* syntax/typing.nit:1772 */
11262 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11263 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11264 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]);
11265 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11266 }
11267 stack_frame_head = fra.me.prev;
11268 return;
11269 }
11270 static const char LOCATE_syntax___typing___ANeExpr___name[] = "typing::ANeExpr::(typing::ASendExpr::name)";
11271 val_t syntax___typing___ANeExpr___name(val_t p0){
11272 struct {struct stack_frame_t me;} fra;
11273 val_t REGB0;
11274 val_t tmp;
11275 static val_t once_value_1; /* Once value */
11276 static val_t once_value_2; /* Once value */
11277 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11278 fra.me.file = LOCATE_syntax___typing;
11279 fra.me.line = 1777;
11280 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
11281 fra.me.has_broke = 0;
11282 fra.me.REG_size = 1;
11283 fra.me.nitni_local_ref_head = NULL;
11284 fra.me.REG[0] = NIT_NULL;
11285 fra.me.REG[0] = p0;
11286 /* syntax/typing.nit:1777 */
11287 if (!once_value_1) {
11288 if (!once_value_2) {
11289 fra.me.REG[0] = BOX_NativeString("!=");
11290 REGB0 = TAG_Int(2);
11291 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11292 once_value_2 = fra.me.REG[0];
11293 register_static_object(&once_value_2);
11294 } else fra.me.REG[0] = once_value_2;
11295 fra.me.REG[0] = fra.me.REG[0];
11296 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11297 once_value_1 = fra.me.REG[0];
11298 register_static_object(&once_value_1);
11299 } else fra.me.REG[0] = once_value_1;
11300 fra.me.REG[0] = fra.me.REG[0];
11301 goto label3;
11302 label3: while(0);
11303 stack_frame_head = fra.me.prev;
11304 return fra.me.REG[0];
11305 }
11306 static const char LOCATE_syntax___typing___ANeExpr___after_typing[] = "typing::ANeExpr::(typing::ANode::after_typing)";
11307 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
11308 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11309 val_t REGB0;
11310 val_t REGB1;
11311 val_t tmp;
11312 static val_t once_value_2; /* Once value */
11313 static val_t once_value_3; /* Once value */
11314 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11315 fra.me.file = LOCATE_syntax___typing;
11316 fra.me.line = 1778;
11317 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
11318 fra.me.has_broke = 0;
11319 fra.me.REG_size = 4;
11320 fra.me.nitni_local_ref_head = NULL;
11321 fra.me.REG[0] = NIT_NULL;
11322 fra.me.REG[1] = NIT_NULL;
11323 fra.me.REG[2] = NIT_NULL;
11324 fra.me.REG[3] = NIT_NULL;
11325 fra.me.REG[0] = p0;
11326 fra.me.REG[1] = p1;
11327 /* syntax/typing.nit:1778 */
11328 fra.me.REG[2] = fra.me.REG[0];
11329 fra.me.REG[3] = fra.me.REG[1];
11330 /* syntax/typing.nit:1780 */
11331 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11332 /* syntax/typing.nit:1781 */
11333 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11334 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11335 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11336 if (UNTAG_Bool(REGB0)) {
11337 REGB0 = TAG_Bool(1);
11338 } else {
11339 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11340 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11341 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11342 REGB0 = REGB1;
11343 }
11344 if (UNTAG_Bool(REGB0)) {
11345 goto label1;
11346 }
11347 /* syntax/typing.nit:1782 */
11348 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11349 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11350 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11351 if (UNTAG_Bool(REGB0)) {
11352 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11353 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11354 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11355 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11356 } else {
11357 REGB1 = TAG_Bool(0);
11358 REGB0 = REGB1;
11359 }
11360 if (UNTAG_Bool(REGB0)) {
11361 REGB0 = TAG_Bool(1);
11362 } else {
11363 /* syntax/typing.nit:1783 */
11364 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11365 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11366 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11367 /* syntax/typing.nit:1782 */
11368 REGB0 = REGB1;
11369 }
11370 if (UNTAG_Bool(REGB0)) {
11371 /* syntax/typing.nit:1783 */
11372 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11373 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11374 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11375 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11376 } else {
11377 /* syntax/typing.nit:1782 */
11378 REGB1 = TAG_Bool(0);
11379 REGB0 = REGB1;
11380 }
11381 if (UNTAG_Bool(REGB0)) {
11382 /* syntax/typing.nit:1784 */
11383 if (!once_value_2) {
11384 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11385 REGB0 = TAG_Int(59);
11386 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11387 once_value_2 = fra.me.REG[1];
11388 register_static_object(&once_value_2);
11389 } else fra.me.REG[1] = once_value_2;
11390 fra.me.REG[1] = fra.me.REG[1];
11391 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11392 }
11393 /* syntax/typing.nit:1787 */
11394 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11395 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11396 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11397 if (UNTAG_Bool(REGB0)) {
11398 /* syntax/typing.nit:1788 */
11399 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11400 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11401 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11402 if (UNTAG_Bool(REGB0)) {
11403 /* syntax/typing.nit:1789 */
11404 if (!once_value_3) {
11405 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11406 REGB0 = TAG_Int(45);
11407 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11408 once_value_3 = fra.me.REG[1];
11409 register_static_object(&once_value_3);
11410 } else fra.me.REG[1] = once_value_3;
11411 fra.me.REG[1] = fra.me.REG[1];
11412 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11413 } else {
11414 /* syntax/typing.nit:1791 */
11415 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11416 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11417 }
11418 } else {
11419 /* syntax/typing.nit:1793 */
11420 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11421 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11422 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11423 if (UNTAG_Bool(REGB0)) {
11424 /* syntax/typing.nit:1794 */
11425 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11426 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11427 }
11428 }
11429 label1: while(0);
11430 stack_frame_head = fra.me.prev;
11431 return;
11432 }
11433 static const char LOCATE_syntax___typing___ANeExpr___try_to_isa[] = "typing::ANeExpr::try_to_isa";
11434 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11435 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11436 val_t REGB0;
11437 val_t REGB1;
11438 val_t tmp;
11439 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11440 fra.me.file = LOCATE_syntax___typing;
11441 fra.me.line = 1798;
11442 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
11443 fra.me.has_broke = 0;
11444 fra.me.REG_size = 5;
11445 fra.me.nitni_local_ref_head = NULL;
11446 fra.me.REG[0] = NIT_NULL;
11447 fra.me.REG[1] = NIT_NULL;
11448 fra.me.REG[2] = NIT_NULL;
11449 fra.me.REG[3] = NIT_NULL;
11450 fra.me.REG[4] = NIT_NULL;
11451 fra.me.REG[0] = p0;
11452 fra.me.REG[1] = p1;
11453 fra.me.REG[2] = p2;
11454 /* syntax/typing.nit:1800 */
11455 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11456 /* syntax/typing.nit:1801 */
11457 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11458 if (UNTAG_Bool(REGB0)) {
11459 } else {
11460 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11461 if (UNTAG_Bool(REGB1)) {
11462 REGB1 = TAG_Bool(0);
11463 REGB0 = REGB1;
11464 } else {
11465 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11466 REGB0 = REGB1;
11467 }
11468 }
11469 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11470 if (UNTAG_Bool(REGB0)) {
11471 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11472 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11473 } else {
11474 REGB1 = TAG_Bool(0);
11475 REGB0 = REGB1;
11476 }
11477 if (UNTAG_Bool(REGB0)) {
11478 /* syntax/typing.nit:1802 */
11479 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11480 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11481 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11482 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]);
11483 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11484 /* syntax/typing.nit:1803 */
11485 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11486 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11487 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]);
11488 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11489 }
11490 stack_frame_head = fra.me.prev;
11491 return;
11492 }
11493 static const char LOCATE_syntax___typing___ALtExpr___name[] = "typing::ALtExpr::(typing::ASendExpr::name)";
11494 val_t syntax___typing___ALtExpr___name(val_t p0){
11495 struct {struct stack_frame_t me;} fra;
11496 val_t REGB0;
11497 val_t tmp;
11498 static val_t once_value_1; /* Once value */
11499 static val_t once_value_2; /* Once value */
11500 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11501 fra.me.file = LOCATE_syntax___typing;
11502 fra.me.line = 1808;
11503 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11504 fra.me.has_broke = 0;
11505 fra.me.REG_size = 1;
11506 fra.me.nitni_local_ref_head = NULL;
11507 fra.me.REG[0] = NIT_NULL;
11508 fra.me.REG[0] = p0;
11509 /* syntax/typing.nit:1808 */
11510 if (!once_value_1) {
11511 if (!once_value_2) {
11512 fra.me.REG[0] = BOX_NativeString("<");
11513 REGB0 = TAG_Int(1);
11514 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11515 once_value_2 = fra.me.REG[0];
11516 register_static_object(&once_value_2);
11517 } else fra.me.REG[0] = once_value_2;
11518 fra.me.REG[0] = fra.me.REG[0];
11519 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11520 once_value_1 = fra.me.REG[0];
11521 register_static_object(&once_value_1);
11522 } else fra.me.REG[0] = once_value_1;
11523 fra.me.REG[0] = fra.me.REG[0];
11524 goto label3;
11525 label3: while(0);
11526 stack_frame_head = fra.me.prev;
11527 return fra.me.REG[0];
11528 }
11529 static const char LOCATE_syntax___typing___ALeExpr___name[] = "typing::ALeExpr::(typing::ASendExpr::name)";
11530 val_t syntax___typing___ALeExpr___name(val_t p0){
11531 struct {struct stack_frame_t me;} fra;
11532 val_t REGB0;
11533 val_t tmp;
11534 static val_t once_value_1; /* Once value */
11535 static val_t once_value_2; /* Once value */
11536 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11537 fra.me.file = LOCATE_syntax___typing;
11538 fra.me.line = 1811;
11539 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11540 fra.me.has_broke = 0;
11541 fra.me.REG_size = 1;
11542 fra.me.nitni_local_ref_head = NULL;
11543 fra.me.REG[0] = NIT_NULL;
11544 fra.me.REG[0] = p0;
11545 /* syntax/typing.nit:1811 */
11546 if (!once_value_1) {
11547 if (!once_value_2) {
11548 fra.me.REG[0] = BOX_NativeString("<=");
11549 REGB0 = TAG_Int(2);
11550 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11551 once_value_2 = fra.me.REG[0];
11552 register_static_object(&once_value_2);
11553 } else fra.me.REG[0] = once_value_2;
11554 fra.me.REG[0] = fra.me.REG[0];
11555 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11556 once_value_1 = fra.me.REG[0];
11557 register_static_object(&once_value_1);
11558 } else fra.me.REG[0] = once_value_1;
11559 fra.me.REG[0] = fra.me.REG[0];
11560 goto label3;
11561 label3: while(0);
11562 stack_frame_head = fra.me.prev;
11563 return fra.me.REG[0];
11564 }
11565 static const char LOCATE_syntax___typing___ALlExpr___name[] = "typing::ALlExpr::(typing::ASendExpr::name)";
11566 val_t syntax___typing___ALlExpr___name(val_t p0){
11567 struct {struct stack_frame_t me;} fra;
11568 val_t REGB0;
11569 val_t tmp;
11570 static val_t once_value_1; /* Once value */
11571 static val_t once_value_2; /* Once value */
11572 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11573 fra.me.file = LOCATE_syntax___typing;
11574 fra.me.line = 1814;
11575 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11576 fra.me.has_broke = 0;
11577 fra.me.REG_size = 1;
11578 fra.me.nitni_local_ref_head = NULL;
11579 fra.me.REG[0] = NIT_NULL;
11580 fra.me.REG[0] = p0;
11581 /* syntax/typing.nit:1814 */
11582 if (!once_value_1) {
11583 if (!once_value_2) {
11584 fra.me.REG[0] = BOX_NativeString("<<");
11585 REGB0 = TAG_Int(2);
11586 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11587 once_value_2 = fra.me.REG[0];
11588 register_static_object(&once_value_2);
11589 } else fra.me.REG[0] = once_value_2;
11590 fra.me.REG[0] = fra.me.REG[0];
11591 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11592 once_value_1 = fra.me.REG[0];
11593 register_static_object(&once_value_1);
11594 } else fra.me.REG[0] = once_value_1;
11595 fra.me.REG[0] = fra.me.REG[0];
11596 goto label3;
11597 label3: while(0);
11598 stack_frame_head = fra.me.prev;
11599 return fra.me.REG[0];
11600 }
11601 static const char LOCATE_syntax___typing___AGtExpr___name[] = "typing::AGtExpr::(typing::ASendExpr::name)";
11602 val_t syntax___typing___AGtExpr___name(val_t p0){
11603 struct {struct stack_frame_t me;} fra;
11604 val_t REGB0;
11605 val_t tmp;
11606 static val_t once_value_1; /* Once value */
11607 static val_t once_value_2; /* Once value */
11608 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11609 fra.me.file = LOCATE_syntax___typing;
11610 fra.me.line = 1817;
11611 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11612 fra.me.has_broke = 0;
11613 fra.me.REG_size = 1;
11614 fra.me.nitni_local_ref_head = NULL;
11615 fra.me.REG[0] = NIT_NULL;
11616 fra.me.REG[0] = p0;
11617 /* syntax/typing.nit:1817 */
11618 if (!once_value_1) {
11619 if (!once_value_2) {
11620 fra.me.REG[0] = BOX_NativeString(">");
11621 REGB0 = TAG_Int(1);
11622 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11623 once_value_2 = fra.me.REG[0];
11624 register_static_object(&once_value_2);
11625 } else fra.me.REG[0] = once_value_2;
11626 fra.me.REG[0] = fra.me.REG[0];
11627 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11628 once_value_1 = fra.me.REG[0];
11629 register_static_object(&once_value_1);
11630 } else fra.me.REG[0] = once_value_1;
11631 fra.me.REG[0] = fra.me.REG[0];
11632 goto label3;
11633 label3: while(0);
11634 stack_frame_head = fra.me.prev;
11635 return fra.me.REG[0];
11636 }
11637 static const char LOCATE_syntax___typing___AGeExpr___name[] = "typing::AGeExpr::(typing::ASendExpr::name)";
11638 val_t syntax___typing___AGeExpr___name(val_t p0){
11639 struct {struct stack_frame_t me;} fra;
11640 val_t REGB0;
11641 val_t tmp;
11642 static val_t once_value_1; /* Once value */
11643 static val_t once_value_2; /* Once value */
11644 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11645 fra.me.file = LOCATE_syntax___typing;
11646 fra.me.line = 1820;
11647 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11648 fra.me.has_broke = 0;
11649 fra.me.REG_size = 1;
11650 fra.me.nitni_local_ref_head = NULL;
11651 fra.me.REG[0] = NIT_NULL;
11652 fra.me.REG[0] = p0;
11653 /* syntax/typing.nit:1820 */
11654 if (!once_value_1) {
11655 if (!once_value_2) {
11656 fra.me.REG[0] = BOX_NativeString(">=");
11657 REGB0 = TAG_Int(2);
11658 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11659 once_value_2 = fra.me.REG[0];
11660 register_static_object(&once_value_2);
11661 } else fra.me.REG[0] = once_value_2;
11662 fra.me.REG[0] = fra.me.REG[0];
11663 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11664 once_value_1 = fra.me.REG[0];
11665 register_static_object(&once_value_1);
11666 } else fra.me.REG[0] = once_value_1;
11667 fra.me.REG[0] = fra.me.REG[0];
11668 goto label3;
11669 label3: while(0);
11670 stack_frame_head = fra.me.prev;
11671 return fra.me.REG[0];
11672 }
11673 static const char LOCATE_syntax___typing___AGgExpr___name[] = "typing::AGgExpr::(typing::ASendExpr::name)";
11674 val_t syntax___typing___AGgExpr___name(val_t p0){
11675 struct {struct stack_frame_t me;} fra;
11676 val_t REGB0;
11677 val_t tmp;
11678 static val_t once_value_1; /* Once value */
11679 static val_t once_value_2; /* Once value */
11680 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11681 fra.me.file = LOCATE_syntax___typing;
11682 fra.me.line = 1823;
11683 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
11684 fra.me.has_broke = 0;
11685 fra.me.REG_size = 1;
11686 fra.me.nitni_local_ref_head = NULL;
11687 fra.me.REG[0] = NIT_NULL;
11688 fra.me.REG[0] = p0;
11689 /* syntax/typing.nit:1823 */
11690 if (!once_value_1) {
11691 if (!once_value_2) {
11692 fra.me.REG[0] = BOX_NativeString(">>");
11693 REGB0 = TAG_Int(2);
11694 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11695 once_value_2 = fra.me.REG[0];
11696 register_static_object(&once_value_2);
11697 } else fra.me.REG[0] = once_value_2;
11698 fra.me.REG[0] = fra.me.REG[0];
11699 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11700 once_value_1 = fra.me.REG[0];
11701 register_static_object(&once_value_1);
11702 } else fra.me.REG[0] = once_value_1;
11703 fra.me.REG[0] = fra.me.REG[0];
11704 goto label3;
11705 label3: while(0);
11706 stack_frame_head = fra.me.prev;
11707 return fra.me.REG[0];
11708 }
11709 static const char LOCATE_syntax___typing___APlusExpr___name[] = "typing::APlusExpr::(typing::ASendExpr::name)";
11710 val_t syntax___typing___APlusExpr___name(val_t p0){
11711 struct {struct stack_frame_t me;} fra;
11712 val_t REGB0;
11713 val_t tmp;
11714 static val_t once_value_1; /* Once value */
11715 static val_t once_value_2; /* Once value */
11716 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11717 fra.me.file = LOCATE_syntax___typing;
11718 fra.me.line = 1826;
11719 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11720 fra.me.has_broke = 0;
11721 fra.me.REG_size = 1;
11722 fra.me.nitni_local_ref_head = NULL;
11723 fra.me.REG[0] = NIT_NULL;
11724 fra.me.REG[0] = p0;
11725 /* syntax/typing.nit:1826 */
11726 if (!once_value_1) {
11727 if (!once_value_2) {
11728 fra.me.REG[0] = BOX_NativeString("+");
11729 REGB0 = TAG_Int(1);
11730 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11731 once_value_2 = fra.me.REG[0];
11732 register_static_object(&once_value_2);
11733 } else fra.me.REG[0] = once_value_2;
11734 fra.me.REG[0] = fra.me.REG[0];
11735 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11736 once_value_1 = fra.me.REG[0];
11737 register_static_object(&once_value_1);
11738 } else fra.me.REG[0] = once_value_1;
11739 fra.me.REG[0] = fra.me.REG[0];
11740 goto label3;
11741 label3: while(0);
11742 stack_frame_head = fra.me.prev;
11743 return fra.me.REG[0];
11744 }
11745 static const char LOCATE_syntax___typing___AMinusExpr___name[] = "typing::AMinusExpr::(typing::ASendExpr::name)";
11746 val_t syntax___typing___AMinusExpr___name(val_t p0){
11747 struct {struct stack_frame_t me;} fra;
11748 val_t REGB0;
11749 val_t tmp;
11750 static val_t once_value_1; /* Once value */
11751 static val_t once_value_2; /* Once value */
11752 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11753 fra.me.file = LOCATE_syntax___typing;
11754 fra.me.line = 1829;
11755 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11756 fra.me.has_broke = 0;
11757 fra.me.REG_size = 1;
11758 fra.me.nitni_local_ref_head = NULL;
11759 fra.me.REG[0] = NIT_NULL;
11760 fra.me.REG[0] = p0;
11761 /* syntax/typing.nit:1829 */
11762 if (!once_value_1) {
11763 if (!once_value_2) {
11764 fra.me.REG[0] = BOX_NativeString("-");
11765 REGB0 = TAG_Int(1);
11766 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11767 once_value_2 = fra.me.REG[0];
11768 register_static_object(&once_value_2);
11769 } else fra.me.REG[0] = once_value_2;
11770 fra.me.REG[0] = fra.me.REG[0];
11771 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11772 once_value_1 = fra.me.REG[0];
11773 register_static_object(&once_value_1);
11774 } else fra.me.REG[0] = once_value_1;
11775 fra.me.REG[0] = fra.me.REG[0];
11776 goto label3;
11777 label3: while(0);
11778 stack_frame_head = fra.me.prev;
11779 return fra.me.REG[0];
11780 }
11781 static const char LOCATE_syntax___typing___AStarshipExpr___name[] = "typing::AStarshipExpr::(typing::ASendExpr::name)";
11782 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11783 struct {struct stack_frame_t me;} fra;
11784 val_t REGB0;
11785 val_t tmp;
11786 static val_t once_value_1; /* Once value */
11787 static val_t once_value_2; /* Once value */
11788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11789 fra.me.file = LOCATE_syntax___typing;
11790 fra.me.line = 1832;
11791 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11792 fra.me.has_broke = 0;
11793 fra.me.REG_size = 1;
11794 fra.me.nitni_local_ref_head = NULL;
11795 fra.me.REG[0] = NIT_NULL;
11796 fra.me.REG[0] = p0;
11797 /* syntax/typing.nit:1832 */
11798 if (!once_value_1) {
11799 if (!once_value_2) {
11800 fra.me.REG[0] = BOX_NativeString("<=>");
11801 REGB0 = TAG_Int(3);
11802 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11803 once_value_2 = fra.me.REG[0];
11804 register_static_object(&once_value_2);
11805 } else fra.me.REG[0] = once_value_2;
11806 fra.me.REG[0] = fra.me.REG[0];
11807 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11808 once_value_1 = fra.me.REG[0];
11809 register_static_object(&once_value_1);
11810 } else fra.me.REG[0] = once_value_1;
11811 fra.me.REG[0] = fra.me.REG[0];
11812 goto label3;
11813 label3: while(0);
11814 stack_frame_head = fra.me.prev;
11815 return fra.me.REG[0];
11816 }
11817 static const char LOCATE_syntax___typing___AStarExpr___name[] = "typing::AStarExpr::(typing::ASendExpr::name)";
11818 val_t syntax___typing___AStarExpr___name(val_t p0){
11819 struct {struct stack_frame_t me;} fra;
11820 val_t REGB0;
11821 val_t tmp;
11822 static val_t once_value_1; /* Once value */
11823 static val_t once_value_2; /* Once value */
11824 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11825 fra.me.file = LOCATE_syntax___typing;
11826 fra.me.line = 1835;
11827 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11828 fra.me.has_broke = 0;
11829 fra.me.REG_size = 1;
11830 fra.me.nitni_local_ref_head = NULL;
11831 fra.me.REG[0] = NIT_NULL;
11832 fra.me.REG[0] = p0;
11833 /* syntax/typing.nit:1835 */
11834 if (!once_value_1) {
11835 if (!once_value_2) {
11836 fra.me.REG[0] = BOX_NativeString("*");
11837 REGB0 = TAG_Int(1);
11838 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11839 once_value_2 = fra.me.REG[0];
11840 register_static_object(&once_value_2);
11841 } else fra.me.REG[0] = once_value_2;
11842 fra.me.REG[0] = fra.me.REG[0];
11843 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11844 once_value_1 = fra.me.REG[0];
11845 register_static_object(&once_value_1);
11846 } else fra.me.REG[0] = once_value_1;
11847 fra.me.REG[0] = fra.me.REG[0];
11848 goto label3;
11849 label3: while(0);
11850 stack_frame_head = fra.me.prev;
11851 return fra.me.REG[0];
11852 }
11853 static const char LOCATE_syntax___typing___ASlashExpr___name[] = "typing::ASlashExpr::(typing::ASendExpr::name)";
11854 val_t syntax___typing___ASlashExpr___name(val_t p0){
11855 struct {struct stack_frame_t me;} fra;
11856 val_t REGB0;
11857 val_t tmp;
11858 static val_t once_value_1; /* Once value */
11859 static val_t once_value_2; /* Once value */
11860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11861 fra.me.file = LOCATE_syntax___typing;
11862 fra.me.line = 1838;
11863 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11864 fra.me.has_broke = 0;
11865 fra.me.REG_size = 1;
11866 fra.me.nitni_local_ref_head = NULL;
11867 fra.me.REG[0] = NIT_NULL;
11868 fra.me.REG[0] = p0;
11869 /* syntax/typing.nit:1838 */
11870 if (!once_value_1) {
11871 if (!once_value_2) {
11872 fra.me.REG[0] = BOX_NativeString("/");
11873 REGB0 = TAG_Int(1);
11874 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11875 once_value_2 = fra.me.REG[0];
11876 register_static_object(&once_value_2);
11877 } else fra.me.REG[0] = once_value_2;
11878 fra.me.REG[0] = fra.me.REG[0];
11879 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11880 once_value_1 = fra.me.REG[0];
11881 register_static_object(&once_value_1);
11882 } else fra.me.REG[0] = once_value_1;
11883 fra.me.REG[0] = fra.me.REG[0];
11884 goto label3;
11885 label3: while(0);
11886 stack_frame_head = fra.me.prev;
11887 return fra.me.REG[0];
11888 }
11889 static const char LOCATE_syntax___typing___APercentExpr___name[] = "typing::APercentExpr::(typing::ASendExpr::name)";
11890 val_t syntax___typing___APercentExpr___name(val_t p0){
11891 struct {struct stack_frame_t me;} fra;
11892 val_t REGB0;
11893 val_t tmp;
11894 static val_t once_value_1; /* Once value */
11895 static val_t once_value_2; /* Once value */
11896 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11897 fra.me.file = LOCATE_syntax___typing;
11898 fra.me.line = 1841;
11899 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11900 fra.me.has_broke = 0;
11901 fra.me.REG_size = 1;
11902 fra.me.nitni_local_ref_head = NULL;
11903 fra.me.REG[0] = NIT_NULL;
11904 fra.me.REG[0] = p0;
11905 /* syntax/typing.nit:1841 */
11906 if (!once_value_1) {
11907 if (!once_value_2) {
11908 fra.me.REG[0] = BOX_NativeString("%");
11909 REGB0 = TAG_Int(1);
11910 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11911 once_value_2 = fra.me.REG[0];
11912 register_static_object(&once_value_2);
11913 } else fra.me.REG[0] = once_value_2;
11914 fra.me.REG[0] = fra.me.REG[0];
11915 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11916 once_value_1 = fra.me.REG[0];
11917 register_static_object(&once_value_1);
11918 } else fra.me.REG[0] = once_value_1;
11919 fra.me.REG[0] = fra.me.REG[0];
11920 goto label3;
11921 label3: while(0);
11922 stack_frame_head = fra.me.prev;
11923 return fra.me.REG[0];
11924 }
11925 static const char LOCATE_syntax___typing___AUminusExpr___name[] = "typing::AUminusExpr::(typing::ASendExpr::name)";
11926 val_t syntax___typing___AUminusExpr___name(val_t p0){
11927 struct {struct stack_frame_t me;} fra;
11928 val_t REGB0;
11929 val_t tmp;
11930 static val_t once_value_1; /* Once value */
11931 static val_t once_value_2; /* Once value */
11932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11933 fra.me.file = LOCATE_syntax___typing;
11934 fra.me.line = 1845;
11935 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11936 fra.me.has_broke = 0;
11937 fra.me.REG_size = 1;
11938 fra.me.nitni_local_ref_head = NULL;
11939 fra.me.REG[0] = NIT_NULL;
11940 fra.me.REG[0] = p0;
11941 /* syntax/typing.nit:1845 */
11942 if (!once_value_1) {
11943 if (!once_value_2) {
11944 fra.me.REG[0] = BOX_NativeString("unary -");
11945 REGB0 = TAG_Int(7);
11946 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11947 once_value_2 = fra.me.REG[0];
11948 register_static_object(&once_value_2);
11949 } else fra.me.REG[0] = once_value_2;
11950 fra.me.REG[0] = fra.me.REG[0];
11951 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11952 once_value_1 = fra.me.REG[0];
11953 register_static_object(&once_value_1);
11954 } else fra.me.REG[0] = once_value_1;
11955 fra.me.REG[0] = fra.me.REG[0];
11956 goto label3;
11957 label3: while(0);
11958 stack_frame_head = fra.me.prev;
11959 return fra.me.REG[0];
11960 }
11961 static const char LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments[] = "typing::AUminusExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
11962 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
11963 struct {struct stack_frame_t me;} fra;
11964 val_t tmp;
11965 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11966 fra.me.file = LOCATE_syntax___typing;
11967 fra.me.line = 1846;
11968 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
11969 fra.me.has_broke = 0;
11970 fra.me.REG_size = 1;
11971 fra.me.nitni_local_ref_head = NULL;
11972 fra.me.REG[0] = NIT_NULL;
11973 fra.me.REG[0] = p0;
11974 /* syntax/typing.nit:1846 */
11975 fra.me.REG[0] = NIT_NULL;
11976 goto label1;
11977 label1: while(0);
11978 stack_frame_head = fra.me.prev;
11979 return fra.me.REG[0];
11980 }
11981 static const char LOCATE_syntax___typing___ACallFormExpr___after_typing[] = "typing::ACallFormExpr::(typing::ANode::after_typing)";
11982 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
11983 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
11984 val_t REGB0;
11985 val_t REGB1;
11986 val_t tmp;
11987 static val_t once_value_1; /* Once value */
11988 static val_t once_value_2; /* Once value */
11989 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11990 fra.me.file = LOCATE_syntax___typing;
11991 fra.me.line = 1850;
11992 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
11993 fra.me.has_broke = 0;
11994 fra.me.REG_size = 9;
11995 fra.me.nitni_local_ref_head = NULL;
11996 fra.me.REG[0] = NIT_NULL;
11997 fra.me.REG[1] = NIT_NULL;
11998 fra.me.REG[2] = NIT_NULL;
11999 fra.me.REG[3] = NIT_NULL;
12000 fra.me.REG[4] = NIT_NULL;
12001 fra.me.REG[5] = NIT_NULL;
12002 fra.me.REG[6] = NIT_NULL;
12003 fra.me.REG[7] = NIT_NULL;
12004 fra.me.REG[8] = NIT_NULL;
12005 fra.me.REG[0] = p0;
12006 fra.me.REG[1] = p1;
12007 /* syntax/typing.nit:1850 */
12008 fra.me.REG[2] = fra.me.REG[0];
12009 fra.me.REG[3] = fra.me.REG[1];
12010 /* syntax/typing.nit:1852 */
12011 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
12012 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
12013 if (UNTAG_Bool(REGB0)) {
12014 /* syntax/typing.nit:1853 */
12015 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12016 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12017 /* syntax/typing.nit:1854 */
12018 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
12019 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
12020 /* syntax/typing.nit:1855 */
12021 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12022 if (UNTAG_Bool(REGB0)) {
12023 } else {
12024 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12025 if (UNTAG_Bool(REGB1)) {
12026 REGB1 = TAG_Bool(0);
12027 REGB0 = REGB1;
12028 } else {
12029 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
12030 REGB0 = REGB1;
12031 }
12032 }
12033 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12034 if (UNTAG_Bool(REGB0)) {
12035 /* syntax/typing.nit:1857 */
12036 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*/;
12037 if (UNTAG_Bool(REGB0)) {
12038 /* syntax/typing.nit:1858 */
12039 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12040 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12041 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
12042 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
12043 /* syntax/typing.nit:1859 */
12044 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12045 } else {
12046 /* syntax/typing.nit:1861 */
12047 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12048 fra.me.REG[7] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[7])(fra.me.REG[7]);
12049 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
12050 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12051 if (UNTAG_Bool(REGB0)) {
12052 REGB0 = TAG_Bool(1);
12053 } else {
12054 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12055 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AParExprs, ID_parser___parser_nodes___AParExprs)) /*cast AParExprs*/;
12056 REGB0 = REGB1;
12057 }
12058 if (UNTAG_Bool(REGB0)) {
12059 /* syntax/typing.nit:1862 */
12060 REGB0 = TAG_Int(3);
12061 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12062 if (!once_value_1) {
12063 fra.me.REG[6] = BOX_NativeString("Error: ");
12064 REGB0 = TAG_Int(7);
12065 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
12066 once_value_1 = fra.me.REG[6];
12067 register_static_object(&once_value_1);
12068 } else fra.me.REG[6] = once_value_1;
12069 fra.me.REG[6] = fra.me.REG[6];
12070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12071 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12072 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12073 if (!once_value_2) {
12074 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
12075 REGB0 = TAG_Int(29);
12076 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12077 once_value_2 = fra.me.REG[4];
12078 register_static_object(&once_value_2);
12079 } else fra.me.REG[4] = once_value_2;
12080 fra.me.REG[4] = fra.me.REG[4];
12081 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12082 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
12083 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
12084 /* syntax/typing.nit:1863 */
12085 goto label3;
12086 }
12087 /* syntax/typing.nit:1865 */
12088 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
12089 fra.me.REG[8] = fra.me.REG[7];
12090 /* syntax/typing.nit:1866 */
12091 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12092 }
12093 /* syntax/typing.nit:1868 */
12094 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
12095 /* syntax/typing.nit:1869 */
12096 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
12097 /* syntax/typing.nit:1870 */
12098 goto label3;
12099 }
12100 }
12101 /* syntax/typing.nit:1874 */
12102 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12103 label3: while(0);
12104 stack_frame_head = fra.me.prev;
12105 return;
12106 }
12107 static const char LOCATE_syntax___typing___ACallFormExpr___closure_defs[] = "typing::ACallFormExpr::(syntax_base::ASendExpr::closure_defs)";
12108 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
12109 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12110 val_t REGB0;
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 = 1877;
12115 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
12116 fra.me.has_broke = 0;
12117 fra.me.REG_size = 2;
12118 fra.me.nitni_local_ref_head = NULL;
12119 fra.me.REG[0] = NIT_NULL;
12120 fra.me.REG[1] = NIT_NULL;
12121 fra.me.REG[0] = p0;
12122 /* syntax/typing.nit:1879 */
12123 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12124 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12125 if (UNTAG_Bool(REGB0)) {
12126 /* syntax/typing.nit:1880 */
12127 fra.me.REG[1] = NIT_NULL;
12128 goto label1;
12129 } else {
12130 /* syntax/typing.nit:1882 */
12131 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12132 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12133 fra.me.REG[1] = fra.me.REG[0];
12134 goto label1;
12135 }
12136 label1: while(0);
12137 stack_frame_head = fra.me.prev;
12138 return fra.me.REG[1];
12139 }
12140 static const char LOCATE_syntax___typing___ACallFormExpr___variable_create[] = "typing::ACallFormExpr::variable_create";
12141 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
12142 struct {struct stack_frame_t me;} fra;
12143 val_t tmp;
12144 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12145 fra.me.file = LOCATE_syntax___typing;
12146 fra.me.line = 1886;
12147 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
12148 fra.me.has_broke = 0;
12149 fra.me.REG_size = 0;
12150 fra.me.nitni_local_ref_head = NULL;
12151 /* syntax/typing.nit:1886 */
12152 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1886);
12153 stack_frame_head = fra.me.prev;
12154 return NIT_NULL;
12155 }
12156 static const char LOCATE_syntax___typing___ACallExpr___variable_create[] = "typing::ACallExpr::(typing::ACallFormExpr::variable_create)";
12157 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
12158 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12159 val_t tmp;
12160 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12161 fra.me.file = LOCATE_syntax___typing;
12162 fra.me.line = 1891;
12163 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
12164 fra.me.has_broke = 0;
12165 fra.me.REG_size = 2;
12166 fra.me.nitni_local_ref_head = NULL;
12167 fra.me.REG[0] = NIT_NULL;
12168 fra.me.REG[1] = NIT_NULL;
12169 fra.me.REG[0] = p0;
12170 fra.me.REG[1] = p1;
12171 /* syntax/typing.nit:1893 */
12172 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12173 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
12174 goto label1;
12175 label1: while(0);
12176 stack_frame_head = fra.me.prev;
12177 return fra.me.REG[0];
12178 }
12179 static const char LOCATE_syntax___typing___ACallExpr___name[] = "typing::ACallExpr::(typing::ASendExpr::name)";
12180 val_t syntax___typing___ACallExpr___name(val_t p0){
12181 struct {struct stack_frame_t me;} fra;
12182 val_t tmp;
12183 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12184 fra.me.file = LOCATE_syntax___typing;
12185 fra.me.line = 1896;
12186 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
12187 fra.me.has_broke = 0;
12188 fra.me.REG_size = 1;
12189 fra.me.nitni_local_ref_head = NULL;
12190 fra.me.REG[0] = NIT_NULL;
12191 fra.me.REG[0] = p0;
12192 /* syntax/typing.nit:1896 */
12193 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12194 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12195 goto label1;
12196 label1: while(0);
12197 stack_frame_head = fra.me.prev;
12198 return fra.me.REG[0];
12199 }
12200 static const char LOCATE_syntax___typing___ACallExpr___compute_raw_arguments[] = "typing::ACallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12201 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
12202 struct {struct stack_frame_t me;} fra;
12203 val_t tmp;
12204 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12205 fra.me.file = LOCATE_syntax___typing;
12206 fra.me.line = 1897;
12207 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
12208 fra.me.has_broke = 0;
12209 fra.me.REG_size = 1;
12210 fra.me.nitni_local_ref_head = NULL;
12211 fra.me.REG[0] = NIT_NULL;
12212 fra.me.REG[0] = p0;
12213 /* syntax/typing.nit:1897 */
12214 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12215 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12216 goto label1;
12217 label1: while(0);
12218 stack_frame_head = fra.me.prev;
12219 return fra.me.REG[0];
12220 }
12221 static const char LOCATE_syntax___typing___ACallAssignExpr___variable_create[] = "typing::ACallAssignExpr::(typing::ACallFormExpr::variable_create)";
12222 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
12223 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12224 val_t tmp;
12225 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12226 fra.me.file = LOCATE_syntax___typing;
12227 fra.me.line = 1901;
12228 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
12229 fra.me.has_broke = 0;
12230 fra.me.REG_size = 3;
12231 fra.me.nitni_local_ref_head = NULL;
12232 fra.me.REG[0] = NIT_NULL;
12233 fra.me.REG[1] = NIT_NULL;
12234 fra.me.REG[2] = NIT_NULL;
12235 fra.me.REG[0] = p0;
12236 fra.me.REG[1] = p1;
12237 /* syntax/typing.nit:1903 */
12238 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12239 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
12240 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12241 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12242 goto label1;
12243 label1: while(0);
12244 stack_frame_head = fra.me.prev;
12245 return fra.me.REG[0];
12246 }
12247 static const char LOCATE_syntax___typing___ACallAssignExpr___name[] = "typing::ACallAssignExpr::(typing::ASendExpr::name)";
12248 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
12249 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12250 val_t REGB0;
12251 val_t tmp;
12252 static val_t once_value_1; /* Once value */
12253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12254 fra.me.file = LOCATE_syntax___typing;
12255 fra.me.line = 1906;
12256 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
12257 fra.me.has_broke = 0;
12258 fra.me.REG_size = 2;
12259 fra.me.nitni_local_ref_head = NULL;
12260 fra.me.REG[0] = NIT_NULL;
12261 fra.me.REG[1] = NIT_NULL;
12262 fra.me.REG[0] = p0;
12263 /* syntax/typing.nit:1906 */
12264 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12265 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
12266 if (!once_value_1) {
12267 fra.me.REG[1] = BOX_NativeString("=");
12268 REGB0 = TAG_Int(1);
12269 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
12270 once_value_1 = fra.me.REG[1];
12271 register_static_object(&once_value_1);
12272 } else fra.me.REG[1] = once_value_1;
12273 fra.me.REG[1] = fra.me.REG[1];
12274 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12275 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
12276 goto label2;
12277 label2: while(0);
12278 stack_frame_head = fra.me.prev;
12279 return fra.me.REG[1];
12280 }
12281 static const char LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments[] = "typing::ACallAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12282 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
12283 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12284 val_t tmp;
12285 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12286 fra.me.file = LOCATE_syntax___typing;
12287 fra.me.line = 1907;
12288 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
12289 fra.me.has_broke = 0;
12290 fra.me.REG_size = 2;
12291 fra.me.nitni_local_ref_head = NULL;
12292 fra.me.REG[0] = NIT_NULL;
12293 fra.me.REG[1] = NIT_NULL;
12294 fra.me.REG[0] = p0;
12295 /* syntax/typing.nit:1908 */
12296 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12297 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12298 /* syntax/typing.nit:1909 */
12299 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12300 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12301 /* syntax/typing.nit:1910 */
12302 goto label1;
12303 label1: while(0);
12304 stack_frame_head = fra.me.prev;
12305 return fra.me.REG[1];
12306 }
12307 static const char LOCATE_syntax___typing___ACallReassignExpr___variable_create[] = "typing::ACallReassignExpr::(typing::ACallFormExpr::variable_create)";
12308 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
12309 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12310 val_t tmp;
12311 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12312 fra.me.file = LOCATE_syntax___typing;
12313 fra.me.line = 1915;
12314 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
12315 fra.me.has_broke = 0;
12316 fra.me.REG_size = 3;
12317 fra.me.nitni_local_ref_head = NULL;
12318 fra.me.REG[0] = NIT_NULL;
12319 fra.me.REG[1] = NIT_NULL;
12320 fra.me.REG[2] = NIT_NULL;
12321 fra.me.REG[0] = p0;
12322 fra.me.REG[1] = p1;
12323 /* syntax/typing.nit:1917 */
12324 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12325 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
12326 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12327 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12328 goto label1;
12329 label1: while(0);
12330 stack_frame_head = fra.me.prev;
12331 return fra.me.REG[0];
12332 }
12333 static const char LOCATE_syntax___typing___ACallReassignExpr___name[] = "typing::ACallReassignExpr::(typing::ASendExpr::name)";
12334 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
12335 struct {struct stack_frame_t me;} fra;
12336 val_t tmp;
12337 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12338 fra.me.file = LOCATE_syntax___typing;
12339 fra.me.line = 1920;
12340 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
12341 fra.me.has_broke = 0;
12342 fra.me.REG_size = 1;
12343 fra.me.nitni_local_ref_head = NULL;
12344 fra.me.REG[0] = NIT_NULL;
12345 fra.me.REG[0] = p0;
12346 /* syntax/typing.nit:1920 */
12347 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12348 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12349 goto label1;
12350 label1: while(0);
12351 stack_frame_head = fra.me.prev;
12352 return fra.me.REG[0];
12353 }
12354 static const char LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments[] = "typing::ACallReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12355 val_t syntax___typing___ACallReassignExpr___compute_raw_arguments(val_t p0){
12356 struct {struct stack_frame_t me;} fra;
12357 val_t tmp;
12358 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12359 fra.me.file = LOCATE_syntax___typing;
12360 fra.me.line = 1921;
12361 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments;
12362 fra.me.has_broke = 0;
12363 fra.me.REG_size = 1;
12364 fra.me.nitni_local_ref_head = NULL;
12365 fra.me.REG[0] = NIT_NULL;
12366 fra.me.REG[0] = p0;
12367 /* syntax/typing.nit:1921 */
12368 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12369 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12370 goto label1;
12371 label1: while(0);
12372 stack_frame_head = fra.me.prev;
12373 return fra.me.REG[0];
12374 }
12375 static const char LOCATE_syntax___typing___ABraExpr___name[] = "typing::ABraExpr::(typing::ASendExpr::name)";
12376 val_t syntax___typing___ABraExpr___name(val_t p0){
12377 struct {struct stack_frame_t me;} fra;
12378 val_t REGB0;
12379 val_t tmp;
12380 static val_t once_value_1; /* Once value */
12381 static val_t once_value_2; /* Once value */
12382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12383 fra.me.file = LOCATE_syntax___typing;
12384 fra.me.line = 1925;
12385 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
12386 fra.me.has_broke = 0;
12387 fra.me.REG_size = 1;
12388 fra.me.nitni_local_ref_head = NULL;
12389 fra.me.REG[0] = NIT_NULL;
12390 fra.me.REG[0] = p0;
12391 /* syntax/typing.nit:1925 */
12392 if (!once_value_1) {
12393 if (!once_value_2) {
12394 fra.me.REG[0] = BOX_NativeString("[]");
12395 REGB0 = TAG_Int(2);
12396 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12397 once_value_2 = fra.me.REG[0];
12398 register_static_object(&once_value_2);
12399 } else fra.me.REG[0] = once_value_2;
12400 fra.me.REG[0] = fra.me.REG[0];
12401 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12402 once_value_1 = fra.me.REG[0];
12403 register_static_object(&once_value_1);
12404 } else fra.me.REG[0] = once_value_1;
12405 fra.me.REG[0] = fra.me.REG[0];
12406 goto label3;
12407 label3: while(0);
12408 stack_frame_head = fra.me.prev;
12409 return fra.me.REG[0];
12410 }
12411 static const char LOCATE_syntax___typing___ABraExpr___compute_raw_arguments[] = "typing::ABraExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12412 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
12413 struct {struct stack_frame_t me;} fra;
12414 val_t tmp;
12415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12416 fra.me.file = LOCATE_syntax___typing;
12417 fra.me.line = 1926;
12418 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
12419 fra.me.has_broke = 0;
12420 fra.me.REG_size = 1;
12421 fra.me.nitni_local_ref_head = NULL;
12422 fra.me.REG[0] = NIT_NULL;
12423 fra.me.REG[0] = p0;
12424 /* syntax/typing.nit:1926 */
12425 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12426 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12427 goto label1;
12428 label1: while(0);
12429 stack_frame_head = fra.me.prev;
12430 return fra.me.REG[0];
12431 }
12432 static const char LOCATE_syntax___typing___ABraExpr___closure_defs[] = "typing::ABraExpr::(syntax_base::ASendExpr::closure_defs)";
12433 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
12434 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12435 val_t REGB0;
12436 val_t tmp;
12437 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12438 fra.me.file = LOCATE_syntax___typing;
12439 fra.me.line = 1927;
12440 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
12441 fra.me.has_broke = 0;
12442 fra.me.REG_size = 2;
12443 fra.me.nitni_local_ref_head = NULL;
12444 fra.me.REG[0] = NIT_NULL;
12445 fra.me.REG[1] = NIT_NULL;
12446 fra.me.REG[0] = p0;
12447 /* syntax/typing.nit:1929 */
12448 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12449 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12450 if (UNTAG_Bool(REGB0)) {
12451 /* syntax/typing.nit:1930 */
12452 fra.me.REG[1] = NIT_NULL;
12453 goto label1;
12454 } else {
12455 /* syntax/typing.nit:1932 */
12456 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12457 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12458 fra.me.REG[1] = fra.me.REG[0];
12459 goto label1;
12460 }
12461 label1: while(0);
12462 stack_frame_head = fra.me.prev;
12463 return fra.me.REG[1];
12464 }
12465 static const char LOCATE_syntax___typing___ABraAssignExpr___name[] = "typing::ABraAssignExpr::(typing::ASendExpr::name)";
12466 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
12467 struct {struct stack_frame_t me;} fra;
12468 val_t REGB0;
12469 val_t tmp;
12470 static val_t once_value_1; /* Once value */
12471 static val_t once_value_2; /* Once value */
12472 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12473 fra.me.file = LOCATE_syntax___typing;
12474 fra.me.line = 1938;
12475 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
12476 fra.me.has_broke = 0;
12477 fra.me.REG_size = 1;
12478 fra.me.nitni_local_ref_head = NULL;
12479 fra.me.REG[0] = NIT_NULL;
12480 fra.me.REG[0] = p0;
12481 /* syntax/typing.nit:1938 */
12482 if (!once_value_1) {
12483 if (!once_value_2) {
12484 fra.me.REG[0] = BOX_NativeString("[]=");
12485 REGB0 = TAG_Int(3);
12486 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12487 once_value_2 = fra.me.REG[0];
12488 register_static_object(&once_value_2);
12489 } else fra.me.REG[0] = once_value_2;
12490 fra.me.REG[0] = fra.me.REG[0];
12491 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12492 once_value_1 = fra.me.REG[0];
12493 register_static_object(&once_value_1);
12494 } else fra.me.REG[0] = once_value_1;
12495 fra.me.REG[0] = fra.me.REG[0];
12496 goto label3;
12497 label3: while(0);
12498 stack_frame_head = fra.me.prev;
12499 return fra.me.REG[0];
12500 }
12501 static const char LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments[] = "typing::ABraAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12502 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
12503 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12504 val_t tmp;
12505 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12506 fra.me.file = LOCATE_syntax___typing;
12507 fra.me.line = 1939;
12508 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
12509 fra.me.has_broke = 0;
12510 fra.me.REG_size = 2;
12511 fra.me.nitni_local_ref_head = NULL;
12512 fra.me.REG[0] = NIT_NULL;
12513 fra.me.REG[1] = NIT_NULL;
12514 fra.me.REG[0] = p0;
12515 /* syntax/typing.nit:1940 */
12516 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12517 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12518 /* syntax/typing.nit:1941 */
12519 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12520 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12521 /* syntax/typing.nit:1942 */
12522 goto label1;
12523 label1: while(0);
12524 stack_frame_head = fra.me.prev;
12525 return fra.me.REG[1];
12526 }
12527 static const char LOCATE_syntax___typing___ABraReassignExpr___name[] = "typing::ABraReassignExpr::(typing::ASendExpr::name)";
12528 val_t syntax___typing___ABraReassignExpr___name(val_t p0){
12529 struct {struct stack_frame_t me;} fra;
12530 val_t REGB0;
12531 val_t tmp;
12532 static val_t once_value_1; /* Once value */
12533 static val_t once_value_2; /* Once value */
12534 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12535 fra.me.file = LOCATE_syntax___typing;
12536 fra.me.line = 1947;
12537 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___name;
12538 fra.me.has_broke = 0;
12539 fra.me.REG_size = 1;
12540 fra.me.nitni_local_ref_head = NULL;
12541 fra.me.REG[0] = NIT_NULL;
12542 fra.me.REG[0] = p0;
12543 /* syntax/typing.nit:1947 */
12544 if (!once_value_1) {
12545 if (!once_value_2) {
12546 fra.me.REG[0] = BOX_NativeString("[]");
12547 REGB0 = TAG_Int(2);
12548 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12549 once_value_2 = fra.me.REG[0];
12550 register_static_object(&once_value_2);
12551 } else fra.me.REG[0] = once_value_2;
12552 fra.me.REG[0] = fra.me.REG[0];
12553 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12554 once_value_1 = fra.me.REG[0];
12555 register_static_object(&once_value_1);
12556 } else fra.me.REG[0] = once_value_1;
12557 fra.me.REG[0] = fra.me.REG[0];
12558 goto label3;
12559 label3: while(0);
12560 stack_frame_head = fra.me.prev;
12561 return fra.me.REG[0];
12562 }
12563 static const char LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments[] = "typing::ABraReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12564 val_t syntax___typing___ABraReassignExpr___compute_raw_arguments(val_t p0){
12565 struct {struct stack_frame_t me;} fra;
12566 val_t tmp;
12567 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12568 fra.me.file = LOCATE_syntax___typing;
12569 fra.me.line = 1948;
12570 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___compute_raw_arguments;
12571 fra.me.has_broke = 0;
12572 fra.me.REG_size = 1;
12573 fra.me.nitni_local_ref_head = NULL;
12574 fra.me.REG[0] = NIT_NULL;
12575 fra.me.REG[0] = p0;
12576 /* syntax/typing.nit:1948 */
12577 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12578 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12579 goto label1;
12580 label1: while(0);
12581 stack_frame_head = fra.me.prev;
12582 return fra.me.REG[0];
12583 }
12584 static const char LOCATE_syntax___typing___AInitExpr___name[] = "typing::AInitExpr::(typing::ASendExpr::name)";
12585 val_t syntax___typing___AInitExpr___name(val_t p0){
12586 struct {struct stack_frame_t me;} fra;
12587 val_t REGB0;
12588 val_t tmp;
12589 static val_t once_value_1; /* Once value */
12590 static val_t once_value_2; /* Once value */
12591 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12592 fra.me.file = LOCATE_syntax___typing;
12593 fra.me.line = 1952;
12594 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12595 fra.me.has_broke = 0;
12596 fra.me.REG_size = 1;
12597 fra.me.nitni_local_ref_head = NULL;
12598 fra.me.REG[0] = NIT_NULL;
12599 fra.me.REG[0] = p0;
12600 /* syntax/typing.nit:1952 */
12601 if (!once_value_1) {
12602 if (!once_value_2) {
12603 fra.me.REG[0] = BOX_NativeString("init");
12604 REGB0 = TAG_Int(4);
12605 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12606 once_value_2 = fra.me.REG[0];
12607 register_static_object(&once_value_2);
12608 } else fra.me.REG[0] = once_value_2;
12609 fra.me.REG[0] = fra.me.REG[0];
12610 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12611 once_value_1 = fra.me.REG[0];
12612 register_static_object(&once_value_1);
12613 } else fra.me.REG[0] = once_value_1;
12614 fra.me.REG[0] = fra.me.REG[0];
12615 goto label3;
12616 label3: while(0);
12617 stack_frame_head = fra.me.prev;
12618 return fra.me.REG[0];
12619 }
12620 static const char LOCATE_syntax___typing___AInitExpr___compute_raw_arguments[] = "typing::AInitExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12621 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
12622 struct {struct stack_frame_t me;} fra;
12623 val_t tmp;
12624 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12625 fra.me.file = LOCATE_syntax___typing;
12626 fra.me.line = 1953;
12627 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
12628 fra.me.has_broke = 0;
12629 fra.me.REG_size = 1;
12630 fra.me.nitni_local_ref_head = NULL;
12631 fra.me.REG[0] = NIT_NULL;
12632 fra.me.REG[0] = p0;
12633 /* syntax/typing.nit:1953 */
12634 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12635 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12636 goto label1;
12637 label1: while(0);
12638 stack_frame_head = fra.me.prev;
12639 return fra.me.REG[0];
12640 }
12641 static const char LOCATE_syntax___typing___AClosureCallExpr___variable[] = "typing::AClosureCallExpr::(syntax_base::AClosureCallExpr::variable)";
12642 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12643 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12644 val_t REGB0;
12645 val_t tmp;
12646 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12647 fra.me.file = LOCATE_syntax___typing;
12648 fra.me.line = 1958;
12649 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12650 fra.me.has_broke = 0;
12651 fra.me.REG_size = 2;
12652 fra.me.nitni_local_ref_head = NULL;
12653 fra.me.REG[0] = NIT_NULL;
12654 fra.me.REG[1] = NIT_NULL;
12655 fra.me.REG[0] = p0;
12656 /* syntax/typing.nit:1958 */
12657 fra.me.REG[1] = fra.me.REG[0];
12658 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12659 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12660 if (UNTAG_Bool(REGB0)) {
12661 } else {
12662 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1958);
12663 }
12664 goto label1;
12665 label1: while(0);
12666 stack_frame_head = fra.me.prev;
12667 return fra.me.REG[1];
12668 }
12669 static const char LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments[] = "typing::AClosureCallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12670 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12671 struct {struct stack_frame_t me;} fra;
12672 val_t tmp;
12673 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12674 fra.me.file = LOCATE_syntax___typing;
12675 fra.me.line = 1959;
12676 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12677 fra.me.has_broke = 0;
12678 fra.me.REG_size = 1;
12679 fra.me.nitni_local_ref_head = NULL;
12680 fra.me.REG[0] = NIT_NULL;
12681 fra.me.REG[0] = p0;
12682 /* syntax/typing.nit:1959 */
12683 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12684 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12685 goto label1;
12686 label1: while(0);
12687 stack_frame_head = fra.me.prev;
12688 return fra.me.REG[0];
12689 }
12690 static const char LOCATE_syntax___typing___AClosureCallExpr___after_typing[] = "typing::AClosureCallExpr::(typing::ANode::after_typing)";
12691 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12692 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12693 val_t REGB0;
12694 val_t REGB1;
12695 val_t tmp;
12696 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12697 fra.me.file = LOCATE_syntax___typing;
12698 fra.me.line = 1961;
12699 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12700 fra.me.has_broke = 0;
12701 fra.me.REG_size = 5;
12702 fra.me.nitni_local_ref_head = NULL;
12703 fra.me.REG[0] = NIT_NULL;
12704 fra.me.REG[1] = NIT_NULL;
12705 fra.me.REG[2] = NIT_NULL;
12706 fra.me.REG[3] = NIT_NULL;
12707 fra.me.REG[4] = NIT_NULL;
12708 fra.me.REG[0] = p0;
12709 fra.me.REG[1] = p1;
12710 /* syntax/typing.nit:1963 */
12711 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12712 /* syntax/typing.nit:1964 */
12713 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12714 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12715 if (UNTAG_Bool(REGB0)) {
12716 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12717 }
12718 /* syntax/typing.nit:1965 */
12719 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12720 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12721 /* syntax/typing.nit:1966 */
12722 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12723 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12724 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12725 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]);
12726 /* syntax/typing.nit:1967 */
12727 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12728 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12729 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12730 if (UNTAG_Bool(REGB1)) {
12731 /* syntax/typing.nit:1968 */
12732 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12733 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12734 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12735 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12736 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]);
12737 }
12738 /* syntax/typing.nit:1970 */
12739 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12740 if (UNTAG_Bool(REGB0)) {
12741 goto label1;
12742 }
12743 /* syntax/typing.nit:1971 */
12744 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12745 /* syntax/typing.nit:1972 */
12746 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12747 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12748 /* syntax/typing.nit:1973 */
12749 REGB0 = TAG_Bool(1);
12750 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12751 label1: while(0);
12752 stack_frame_head = fra.me.prev;
12753 return;
12754 }
12755 static const char LOCATE_syntax___typing___AClosureId___to_symbol[] = "typing::AClosureId::to_symbol";
12756 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12757 struct {struct stack_frame_t me;} fra;
12758 val_t tmp;
12759 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12760 fra.me.file = LOCATE_syntax___typing;
12761 fra.me.line = 1978;
12762 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12763 fra.me.has_broke = 0;
12764 fra.me.REG_size = 0;
12765 fra.me.nitni_local_ref_head = NULL;
12766 /* syntax/typing.nit:1978 */
12767 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1978);
12768 stack_frame_head = fra.me.prev;
12769 return NIT_NULL;
12770 }
12771 static const char LOCATE_syntax___typing___ASimpleClosureId___to_symbol[] = "typing::ASimpleClosureId::(typing::AClosureId::to_symbol)";
12772 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12773 struct {struct stack_frame_t me;} fra;
12774 val_t tmp;
12775 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12776 fra.me.file = LOCATE_syntax___typing;
12777 fra.me.line = 1981;
12778 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12779 fra.me.has_broke = 0;
12780 fra.me.REG_size = 1;
12781 fra.me.nitni_local_ref_head = NULL;
12782 fra.me.REG[0] = NIT_NULL;
12783 fra.me.REG[0] = p0;
12784 /* syntax/typing.nit:1981 */
12785 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12786 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12787 goto label1;
12788 label1: while(0);
12789 stack_frame_head = fra.me.prev;
12790 return fra.me.REG[0];
12791 }
12792 static const char LOCATE_syntax___typing___ABreakClosureId___to_symbol[] = "typing::ABreakClosureId::(typing::AClosureId::to_symbol)";
12793 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12794 struct {struct stack_frame_t me;} fra;
12795 val_t tmp;
12796 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12797 fra.me.file = LOCATE_syntax___typing;
12798 fra.me.line = 1984;
12799 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12800 fra.me.has_broke = 0;
12801 fra.me.REG_size = 1;
12802 fra.me.nitni_local_ref_head = NULL;
12803 fra.me.REG[0] = NIT_NULL;
12804 fra.me.REG[0] = p0;
12805 /* syntax/typing.nit:1984 */
12806 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12807 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12808 goto label1;
12809 label1: while(0);
12810 stack_frame_head = fra.me.prev;
12811 return fra.me.REG[0];
12812 }
12813 static const char LOCATE_syntax___typing___AClosureDef___closure[] = "typing::AClosureDef::(syntax_base::AClosureDef::closure)";
12814 val_t syntax___typing___AClosureDef___closure(val_t p0){
12815 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12816 val_t REGB0;
12817 val_t tmp;
12818 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12819 fra.me.file = LOCATE_syntax___typing;
12820 fra.me.line = 1989;
12821 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12822 fra.me.has_broke = 0;
12823 fra.me.REG_size = 2;
12824 fra.me.nitni_local_ref_head = NULL;
12825 fra.me.REG[0] = NIT_NULL;
12826 fra.me.REG[1] = NIT_NULL;
12827 fra.me.REG[0] = p0;
12828 /* syntax/typing.nit:1989 */
12829 fra.me.REG[1] = fra.me.REG[0];
12830 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12831 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12832 if (UNTAG_Bool(REGB0)) {
12833 } else {
12834 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1989);
12835 }
12836 goto label1;
12837 label1: while(0);
12838 stack_frame_head = fra.me.prev;
12839 return fra.me.REG[1];
12840 }
12841 static const char LOCATE_syntax___typing___AClosureDef___escapable[] = "typing::AClosureDef::escapable";
12842 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12843 struct {struct stack_frame_t me;} fra;
12844 val_t tmp;
12845 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12846 fra.me.file = LOCATE_syntax___typing;
12847 fra.me.line = 1991;
12848 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12849 fra.me.has_broke = 0;
12850 fra.me.REG_size = 1;
12851 fra.me.nitni_local_ref_head = NULL;
12852 fra.me.REG[0] = NIT_NULL;
12853 fra.me.REG[0] = p0;
12854 /* syntax/typing.nit:1991 */
12855 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12856 stack_frame_head = fra.me.prev;
12857 return fra.me.REG[0];
12858 }
12859 static const char LOCATE_syntax___typing___AClosureDef___accept_typing[] = "typing::AClosureDef::(typing::ANode::accept_typing)";
12860 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12861 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12862 val_t REGB0;
12863 val_t tmp;
12864 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12865 fra.me.file = LOCATE_syntax___typing;
12866 fra.me.line = 1995;
12867 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12868 fra.me.has_broke = 0;
12869 fra.me.REG_size = 3;
12870 fra.me.nitni_local_ref_head = NULL;
12871 fra.me.REG[0] = NIT_NULL;
12872 fra.me.REG[1] = NIT_NULL;
12873 fra.me.REG[2] = NIT_NULL;
12874 fra.me.REG[0] = p0;
12875 fra.me.REG[1] = p1;
12876 /* syntax/typing.nit:1995 */
12877 fra.me.REG[2] = fra.me.REG[0];
12878 /* syntax/typing.nit:1998 */
12879 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12880 if (UNTAG_Bool(REGB0)) {
12881 } else {
12882 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 1998);
12883 }
12884 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12885 if (UNTAG_Bool(REGB0)) {
12886 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12887 }
12888 stack_frame_head = fra.me.prev;
12889 return;
12890 }
12891 static const char LOCATE_syntax___typing___AClosureDef___accept_typing2[] = "typing::AClosureDef::accept_typing2";
12892 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12893 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12894 val_t REGB0;
12895 val_t REGB1;
12896 val_t REGB2;
12897 val_t REGB3;
12898 val_t tmp;
12899 static val_t once_value_1; /* Once value */
12900 static val_t once_value_2; /* Once value */
12901 static val_t once_value_3; /* Once value */
12902 static val_t once_value_6; /* Once value */
12903 static val_t once_value_7; /* Once value */
12904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12905 fra.me.file = LOCATE_syntax___typing;
12906 fra.me.line = 2001;
12907 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12908 fra.me.has_broke = 0;
12909 fra.me.REG_size = 8;
12910 fra.me.nitni_local_ref_head = NULL;
12911 fra.me.REG[0] = NIT_NULL;
12912 fra.me.REG[1] = NIT_NULL;
12913 fra.me.REG[2] = NIT_NULL;
12914 fra.me.REG[3] = NIT_NULL;
12915 fra.me.REG[4] = NIT_NULL;
12916 fra.me.REG[5] = NIT_NULL;
12917 fra.me.REG[6] = NIT_NULL;
12918 fra.me.REG[7] = NIT_NULL;
12919 fra.me.REG[0] = p0;
12920 fra.me.REG[1] = p1;
12921 fra.me.REG[2] = p2;
12922 /* syntax/typing.nit:2003 */
12923 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12924 /* syntax/typing.nit:2005 */
12925 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12926 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12927 /* syntax/typing.nit:2006 */
12928 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12929 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12930 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12931 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12932 if (UNTAG_Bool(REGB2)) {
12933 } else {
12934 /* ../lib/standard/kernel.nit:230 */
12935 REGB1 = TAG_Bool((REGB0)==(REGB1));
12936 /* syntax/typing.nit:2006 */
12937 REGB2 = REGB1;
12938 }
12939 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12940 if (UNTAG_Bool(REGB2)) {
12941 /* syntax/typing.nit:2007 */
12942 REGB2 = TAG_Int(5);
12943 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
12944 if (!once_value_1) {
12945 fra.me.REG[5] = BOX_NativeString("Error: ");
12946 REGB2 = TAG_Int(7);
12947 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12948 once_value_1 = fra.me.REG[5];
12949 register_static_object(&once_value_1);
12950 } else fra.me.REG[5] = once_value_1;
12951 fra.me.REG[5] = fra.me.REG[5];
12952 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12953 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12954 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12955 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12956 if (!once_value_2) {
12957 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
12958 REGB2 = TAG_Int(36);
12959 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12960 once_value_2 = fra.me.REG[5];
12961 register_static_object(&once_value_2);
12962 } else fra.me.REG[5] = once_value_2;
12963 fra.me.REG[5] = fra.me.REG[5];
12964 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12965 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12966 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
12967 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
12968 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12969 if (!once_value_3) {
12970 fra.me.REG[5] = BOX_NativeString(" found.");
12971 REGB2 = TAG_Int(7);
12972 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
12973 once_value_3 = fra.me.REG[5];
12974 register_static_object(&once_value_3);
12975 } else fra.me.REG[5] = once_value_3;
12976 fra.me.REG[5] = fra.me.REG[5];
12977 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
12978 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12979 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
12980 /* syntax/typing.nit:2008 */
12981 goto label4;
12982 }
12983 /* syntax/typing.nit:2011 */
12984 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12985 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
12986 /* syntax/typing.nit:2013 */
12987 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
12988 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
12989 /* syntax/typing.nit:2014 */
12990 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12991 /* syntax/typing.nit:2015 */
12992 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12993 /* syntax/typing.nit:2016 */
12994 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
12995 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
12996 /* syntax/typing.nit:2017 */
12997 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
12998 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
12999 /* syntax/typing.nit:2018 */
13000 REGB2 = TAG_Int(0);
13001 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13002 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
13003 /* ../lib/standard/kernel.nit:355 */
13004 while(1) {
13005 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
13006 if (UNTAG_Bool(REGB0)) {
13007 } else {
13008 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13009 }
13010 /* ../lib/standard/kernel.nit:235 */
13011 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
13012 /* ../lib/standard/kernel.nit:355 */
13013 if (UNTAG_Bool(REGB0)) {
13014 /* syntax/typing.nit:2018 */
13015 REGB0 = REGB2;
13016 /* syntax/typing.nit:2019 */
13017 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13018 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
13019 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
13020 if (UNTAG_Bool(REGB3)) {
13021 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2019);
13022 }
13023 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
13024 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13025 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
13026 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
13027 /* syntax/typing.nit:2020 */
13028 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
13029 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
13030 if (UNTAG_Bool(REGB3)) {
13031 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2020);
13032 }
13033 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13034 /* syntax/typing.nit:2021 */
13035 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
13036 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
13037 /* syntax/typing.nit:2022 */
13038 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13039 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13040 /* ../lib/standard/kernel.nit:357 */
13041 REGB0 = TAG_Int(1);
13042 /* ../lib/standard/kernel.nit:238 */
13043 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
13044 /* ../lib/standard/kernel.nit:357 */
13045 REGB2 = REGB0;
13046 } else {
13047 /* ../lib/standard/kernel.nit:355 */
13048 goto label5;
13049 }
13050 }
13051 label5: while(0);
13052 /* syntax/typing.nit:2025 */
13053 REGB2 = TAG_Bool(1);
13054 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
13055 /* syntax/typing.nit:2026 */
13056 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13057 /* syntax/typing.nit:2028 */
13058 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13059 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
13060 REGB1 = TAG_Bool(0);
13061 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
13062 if (UNTAG_Bool(REGB0)) {
13063 } else {
13064 /* ../lib/standard/kernel.nit:198 */
13065 REGB1 = TAG_Bool((REGB2)==(REGB1));
13066 /* syntax/typing.nit:2028 */
13067 REGB0 = REGB1;
13068 }
13069 if (UNTAG_Bool(REGB0)) {
13070 /* syntax/typing.nit:2029 */
13071 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13072 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
13073 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
13074 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13075 if (UNTAG_Bool(REGB0)) {
13076 } else {
13077 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13078 if (UNTAG_Bool(REGB1)) {
13079 REGB1 = TAG_Bool(0);
13080 REGB0 = REGB1;
13081 } else {
13082 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13083 REGB0 = REGB1;
13084 }
13085 }
13086 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13087 if (UNTAG_Bool(REGB0)) {
13088 /* syntax/typing.nit:2030 */
13089 if (!once_value_6) {
13090 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
13091 REGB0 = TAG_Int(77);
13092 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13093 once_value_6 = fra.me.REG[3];
13094 register_static_object(&once_value_6);
13095 } else fra.me.REG[3] = once_value_6;
13096 fra.me.REG[3] = fra.me.REG[3];
13097 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13098 } else {
13099 /* syntax/typing.nit:2031 */
13100 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13101 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
13102 if (UNTAG_Bool(REGB0)) {
13103 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
13104 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13105 if (UNTAG_Bool(REGB0)) {
13106 } else {
13107 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13108 if (UNTAG_Bool(REGB1)) {
13109 REGB1 = TAG_Bool(0);
13110 REGB0 = REGB1;
13111 } else {
13112 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
13113 REGB0 = REGB1;
13114 }
13115 }
13116 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13117 } else {
13118 REGB1 = TAG_Bool(0);
13119 REGB0 = REGB1;
13120 }
13121 if (UNTAG_Bool(REGB0)) {
13122 /* syntax/typing.nit:2032 */
13123 if (!once_value_7) {
13124 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
13125 REGB0 = TAG_Int(80);
13126 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
13127 once_value_7 = fra.me.REG[2];
13128 register_static_object(&once_value_7);
13129 } else fra.me.REG[2] = once_value_7;
13130 fra.me.REG[2] = fra.me.REG[2];
13131 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
13132 }
13133 }
13134 }
13135 /* syntax/typing.nit:2035 */
13136 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
13137 /* syntax/typing.nit:2036 */
13138 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
13139 /* syntax/typing.nit:2037 */
13140 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13141 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
13142 label4: while(0);
13143 stack_frame_head = fra.me.prev;
13144 return;
13145 }
13146 static const char LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast[] = "typing::ATypeCheckExpr::check_expr_cast";
13147 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
13148 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13149 val_t REGB0;
13150 val_t REGB1;
13151 val_t tmp;
13152 static val_t once_value_2; /* Once value */
13153 static val_t once_value_3; /* Once value */
13154 static val_t once_value_4; /* Once value */
13155 static val_t once_value_5; /* Once value */
13156 static val_t once_value_6; /* Once value */
13157 static val_t once_value_7; /* Once value */
13158 static val_t once_value_8; /* Once value */
13159 static val_t once_value_9; /* Once value */
13160 static val_t once_value_10; /* Once value */
13161 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13162 fra.me.file = LOCATE_syntax___typing;
13163 fra.me.line = 2043;
13164 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
13165 fra.me.has_broke = 0;
13166 fra.me.REG_size = 6;
13167 fra.me.nitni_local_ref_head = NULL;
13168 fra.me.REG[0] = NIT_NULL;
13169 fra.me.REG[1] = NIT_NULL;
13170 fra.me.REG[2] = NIT_NULL;
13171 fra.me.REG[3] = NIT_NULL;
13172 fra.me.REG[4] = NIT_NULL;
13173 fra.me.REG[5] = NIT_NULL;
13174 fra.me.REG[0] = p0;
13175 fra.me.REG[1] = p1;
13176 fra.me.REG[2] = p2;
13177 fra.me.REG[3] = p3;
13178 /* syntax/typing.nit:2045 */
13179 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13180 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13181 if (UNTAG_Bool(REGB0)) {
13182 goto label1;
13183 }
13184 /* syntax/typing.nit:2046 */
13185 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13186 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13187 if (UNTAG_Bool(REGB0)) {
13188 goto label1;
13189 }
13190 /* syntax/typing.nit:2047 */
13191 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13192 /* syntax/typing.nit:2048 */
13193 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13194 /* syntax/typing.nit:2049 */
13195 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13196 if (UNTAG_Bool(REGB0)) {
13197 } else {
13198 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13199 REGB0 = REGB1;
13200 }
13201 if (UNTAG_Bool(REGB0)) {
13202 /* syntax/typing.nit:2050 */
13203 REGB0 = TAG_Int(3);
13204 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13205 if (!once_value_2) {
13206 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13207 REGB0 = TAG_Int(33);
13208 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13209 once_value_2 = fra.me.REG[5];
13210 register_static_object(&once_value_2);
13211 } else fra.me.REG[5] = once_value_2;
13212 fra.me.REG[5] = fra.me.REG[5];
13213 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13214 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13215 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13216 if (!once_value_3) {
13217 fra.me.REG[5] = BOX_NativeString(".");
13218 REGB0 = TAG_Int(1);
13219 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13220 once_value_3 = fra.me.REG[5];
13221 register_static_object(&once_value_3);
13222 } else fra.me.REG[5] = once_value_3;
13223 fra.me.REG[5] = fra.me.REG[5];
13224 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13225 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13226 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13227 } else {
13228 /* syntax/typing.nit:2051 */
13229 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13230 if (UNTAG_Bool(REGB0)) {
13231 /* syntax/typing.nit:2052 */
13232 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
13233 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13234 if (UNTAG_Bool(REGB0)) {
13235 /* syntax/typing.nit:2054 */
13236 REGB0 = TAG_Int(5);
13237 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13238 if (!once_value_4) {
13239 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13240 REGB0 = TAG_Int(33);
13241 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13242 once_value_4 = fra.me.REG[5];
13243 register_static_object(&once_value_4);
13244 } else fra.me.REG[5] = once_value_4;
13245 fra.me.REG[5] = fra.me.REG[5];
13246 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13247 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13248 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13249 if (!once_value_5) {
13250 fra.me.REG[5] = BOX_NativeString(" since it is a ");
13251 REGB0 = TAG_Int(15);
13252 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13253 once_value_5 = fra.me.REG[5];
13254 register_static_object(&once_value_5);
13255 } else fra.me.REG[5] = once_value_5;
13256 fra.me.REG[5] = fra.me.REG[5];
13257 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13258 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13259 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13260 if (!once_value_6) {
13261 fra.me.REG[5] = BOX_NativeString(".");
13262 REGB0 = TAG_Int(1);
13263 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13264 once_value_6 = fra.me.REG[5];
13265 register_static_object(&once_value_6);
13266 } else fra.me.REG[5] = once_value_6;
13267 fra.me.REG[5] = fra.me.REG[5];
13268 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13269 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13270 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13271 }
13272 } else {
13273 /* syntax/typing.nit:2056 */
13274 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13275 if (UNTAG_Bool(REGB0)) {
13276 /* syntax/typing.nit:2058 */
13277 REGB0 = TAG_Int(3);
13278 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13279 if (!once_value_7) {
13280 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
13281 REGB0 = TAG_Int(50);
13282 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13283 once_value_7 = fra.me.REG[5];
13284 register_static_object(&once_value_7);
13285 } else fra.me.REG[5] = once_value_7;
13286 fra.me.REG[5] = fra.me.REG[5];
13287 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13288 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13289 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13290 if (!once_value_8) {
13291 fra.me.REG[5] = BOX_NativeString(".");
13292 REGB0 = TAG_Int(1);
13293 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13294 once_value_8 = fra.me.REG[5];
13295 register_static_object(&once_value_8);
13296 } else fra.me.REG[5] = once_value_8;
13297 fra.me.REG[5] = fra.me.REG[5];
13298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13299 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13300 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13301 } else {
13302 /* syntax/typing.nit:2059 */
13303 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13304 if (UNTAG_Bool(REGB0)) {
13305 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
13306 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13307 if (UNTAG_Bool(REGB0)) {
13308 } else {
13309 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13310 REGB0 = REGB1;
13311 }
13312 } else {
13313 REGB1 = TAG_Bool(0);
13314 REGB0 = REGB1;
13315 }
13316 if (UNTAG_Bool(REGB0)) {
13317 /* syntax/typing.nit:2060 */
13318 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
13319 if (UNTAG_Bool(REGB0)) {
13320 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
13321 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
13322 } else {
13323 REGB1 = TAG_Bool(0);
13324 REGB0 = REGB1;
13325 }
13326 if (UNTAG_Bool(REGB0)) {
13327 } else {
13328 /* syntax/typing.nit:2066 */
13329 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
13330 if (UNTAG_Bool(REGB0)) {
13331 /* syntax/typing.nit:2067 */
13332 if (!once_value_9) {
13333 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
13334 REGB0 = TAG_Int(26);
13335 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13336 once_value_9 = fra.me.REG[3];
13337 register_static_object(&once_value_9);
13338 } else fra.me.REG[3] = once_value_9;
13339 fra.me.REG[3] = fra.me.REG[3];
13340 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13341 } else {
13342 /* syntax/typing.nit:2069 */
13343 if (!once_value_10) {
13344 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
13345 REGB0 = TAG_Int(32);
13346 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13347 once_value_10 = fra.me.REG[3];
13348 register_static_object(&once_value_10);
13349 } else fra.me.REG[3] = once_value_10;
13350 fra.me.REG[3] = fra.me.REG[3];
13351 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13352 }
13353 }
13354 }
13355 }
13356 }
13357 }
13358 label1: while(0);
13359 stack_frame_head = fra.me.prev;
13360 return;
13361 }
13362 static const char LOCATE_syntax___typing___AIsaExpr___after_typing[] = "typing::AIsaExpr::(typing::ANode::after_typing)";
13363 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
13364 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13365 val_t REGB0;
13366 val_t REGB1;
13367 val_t tmp;
13368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13369 fra.me.file = LOCATE_syntax___typing;
13370 fra.me.line = 2077;
13371 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
13372 fra.me.has_broke = 0;
13373 fra.me.REG_size = 5;
13374 fra.me.nitni_local_ref_head = NULL;
13375 fra.me.REG[0] = NIT_NULL;
13376 fra.me.REG[1] = NIT_NULL;
13377 fra.me.REG[2] = NIT_NULL;
13378 fra.me.REG[3] = NIT_NULL;
13379 fra.me.REG[4] = NIT_NULL;
13380 fra.me.REG[0] = p0;
13381 fra.me.REG[1] = p1;
13382 /* syntax/typing.nit:2079 */
13383 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13384 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13385 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]);
13386 /* syntax/typing.nit:2080 */
13387 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13388 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13389 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13390 if (UNTAG_Bool(REGB0)) {
13391 goto label1;
13392 }
13393 /* syntax/typing.nit:2081 */
13394 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13395 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
13396 /* syntax/typing.nit:2082 */
13397 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13398 if (UNTAG_Bool(REGB0)) {
13399 } else {
13400 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13401 if (UNTAG_Bool(REGB1)) {
13402 REGB1 = TAG_Bool(0);
13403 REGB0 = REGB1;
13404 } else {
13405 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13406 REGB0 = REGB1;
13407 }
13408 }
13409 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13410 if (UNTAG_Bool(REGB0)) {
13411 /* syntax/typing.nit:2083 */
13412 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13413 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13414 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
13415 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]);
13416 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
13417 }
13418 /* syntax/typing.nit:2085 */
13419 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
13420 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13421 /* syntax/typing.nit:2086 */
13422 REGB0 = TAG_Bool(1);
13423 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13424 label1: while(0);
13425 stack_frame_head = fra.me.prev;
13426 return;
13427 }
13428 static const char LOCATE_syntax___typing___AAsCastExpr___after_typing[] = "typing::AAsCastExpr::(typing::ANode::after_typing)";
13429 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
13430 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
13431 val_t REGB0;
13432 val_t REGB1;
13433 val_t tmp;
13434 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13435 fra.me.file = LOCATE_syntax___typing;
13436 fra.me.line = 2092;
13437 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
13438 fra.me.has_broke = 0;
13439 fra.me.REG_size = 4;
13440 fra.me.nitni_local_ref_head = NULL;
13441 fra.me.REG[0] = NIT_NULL;
13442 fra.me.REG[1] = NIT_NULL;
13443 fra.me.REG[2] = NIT_NULL;
13444 fra.me.REG[3] = NIT_NULL;
13445 fra.me.REG[0] = p0;
13446 fra.me.REG[1] = p1;
13447 /* syntax/typing.nit:2094 */
13448 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13449 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13450 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]);
13451 /* syntax/typing.nit:2095 */
13452 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13453 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13454 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13455 if (UNTAG_Bool(REGB0)) {
13456 goto label1;
13457 }
13458 /* syntax/typing.nit:2096 */
13459 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13460 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13461 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
13462 /* syntax/typing.nit:2097 */
13463 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
13464 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13465 if (UNTAG_Bool(REGB0)) {
13466 } else {
13467 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13468 if (UNTAG_Bool(REGB1)) {
13469 REGB1 = TAG_Bool(0);
13470 REGB0 = REGB1;
13471 } else {
13472 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13473 REGB0 = REGB1;
13474 }
13475 }
13476 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13477 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13478 label1: while(0);
13479 stack_frame_head = fra.me.prev;
13480 return;
13481 }
13482 static const char LOCATE_syntax___typing___AAsNotnullExpr___after_typing[] = "typing::AAsNotnullExpr::(typing::ANode::after_typing)";
13483 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
13484 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13485 val_t REGB0;
13486 val_t tmp;
13487 static val_t once_value_2; /* Once value */
13488 static val_t once_value_3; /* Once value */
13489 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13490 fra.me.file = LOCATE_syntax___typing;
13491 fra.me.line = 2102;
13492 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
13493 fra.me.has_broke = 0;
13494 fra.me.REG_size = 5;
13495 fra.me.nitni_local_ref_head = NULL;
13496 fra.me.REG[0] = NIT_NULL;
13497 fra.me.REG[1] = NIT_NULL;
13498 fra.me.REG[2] = NIT_NULL;
13499 fra.me.REG[3] = NIT_NULL;
13500 fra.me.REG[4] = NIT_NULL;
13501 fra.me.REG[0] = p0;
13502 fra.me.REG[1] = p1;
13503 /* syntax/typing.nit:2104 */
13504 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13505 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13506 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13507 if (UNTAG_Bool(REGB0)) {
13508 goto label1;
13509 }
13510 /* syntax/typing.nit:2105 */
13511 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13512 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13513 /* syntax/typing.nit:2106 */
13514 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13515 if (UNTAG_Bool(REGB0)) {
13516 /* syntax/typing.nit:2107 */
13517 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13518 if (!once_value_2) {
13519 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
13520 REGB0 = TAG_Int(43);
13521 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13522 once_value_2 = fra.me.REG[4];
13523 register_static_object(&once_value_2);
13524 } else fra.me.REG[4] = once_value_2;
13525 fra.me.REG[4] = fra.me.REG[4];
13526 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
13527 /* syntax/typing.nit:2108 */
13528 goto label1;
13529 } else {
13530 /* syntax/typing.nit:2109 */
13531 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13532 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13533 if (UNTAG_Bool(REGB0)) {
13534 /* syntax/typing.nit:2110 */
13535 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13536 if (!once_value_3) {
13537 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
13538 REGB0 = TAG_Int(45);
13539 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13540 once_value_3 = fra.me.REG[4];
13541 register_static_object(&once_value_3);
13542 } else fra.me.REG[4] = once_value_3;
13543 fra.me.REG[4] = fra.me.REG[4];
13544 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
13545 }
13546 }
13547 /* syntax/typing.nit:2112 */
13548 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13549 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
13550 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
13551 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
13552 /* syntax/typing.nit:2113 */
13553 REGB0 = TAG_Bool(1);
13554 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13555 label1: while(0);
13556 stack_frame_head = fra.me.prev;
13557 return;
13558 }
13559 static const char LOCATE_syntax___typing___AProxyExpr___after_typing[] = "typing::AProxyExpr::(typing::ANode::after_typing)";
13560 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
13561 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
13562 val_t REGB0;
13563 val_t tmp;
13564 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13565 fra.me.file = LOCATE_syntax___typing;
13566 fra.me.line = 2118;
13567 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
13568 fra.me.has_broke = 0;
13569 fra.me.REG_size = 2;
13570 fra.me.nitni_local_ref_head = NULL;
13571 fra.me.REG[0] = NIT_NULL;
13572 fra.me.REG[1] = NIT_NULL;
13573 fra.me.REG[0] = p0;
13574 fra.me.REG[1] = p1;
13575 /* syntax/typing.nit:2120 */
13576 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13577 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
13578 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13579 if (UNTAG_Bool(REGB0)) {
13580 goto label1;
13581 }
13582 /* syntax/typing.nit:2121 */
13583 REGB0 = TAG_Bool(1);
13584 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13585 /* syntax/typing.nit:2122 */
13586 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13587 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
13588 if (UNTAG_Bool(REGB0)) {
13589 goto label1;
13590 }
13591 /* syntax/typing.nit:2123 */
13592 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13593 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
13594 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13595 /* syntax/typing.nit:2124 */
13596 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13597 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[1]);
13598 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13599 /* syntax/typing.nit:2125 */
13600 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13601 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[1]);
13602 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13603 label1: while(0);
13604 stack_frame_head = fra.me.prev;
13605 return;
13606 }
13607 static const char LOCATE_syntax___typing___AProxyExpr___is_self[] = "typing::AProxyExpr::(typing::AExpr::is_self)";
13608 val_t syntax___typing___AProxyExpr___is_self(val_t p0){
13609 struct {struct stack_frame_t me;} fra;
13610 val_t REGB0;
13611 val_t tmp;
13612 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13613 fra.me.file = LOCATE_syntax___typing;
13614 fra.me.line = 2128;
13615 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___is_self;
13616 fra.me.has_broke = 0;
13617 fra.me.REG_size = 1;
13618 fra.me.nitni_local_ref_head = NULL;
13619 fra.me.REG[0] = NIT_NULL;
13620 fra.me.REG[0] = p0;
13621 /* syntax/typing.nit:2128 */
13622 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13623 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
13624 goto label1;
13625 label1: while(0);
13626 stack_frame_head = fra.me.prev;
13627 return REGB0;
13628 }
13629 static const char LOCATE_syntax___typing___AProxyExpr___its_variable[] = "typing::AProxyExpr::(typing::AExpr::its_variable)";
13630 val_t syntax___typing___AProxyExpr___its_variable(val_t p0){
13631 struct {struct stack_frame_t me;} fra;
13632 val_t tmp;
13633 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13634 fra.me.file = LOCATE_syntax___typing;
13635 fra.me.line = 2130;
13636 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___its_variable;
13637 fra.me.has_broke = 0;
13638 fra.me.REG_size = 1;
13639 fra.me.nitni_local_ref_head = NULL;
13640 fra.me.REG[0] = NIT_NULL;
13641 fra.me.REG[0] = p0;
13642 /* syntax/typing.nit:2130 */
13643 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13644 fra.me.REG[0] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[0])(fra.me.REG[0]);
13645 goto label1;
13646 label1: while(0);
13647 stack_frame_head = fra.me.prev;
13648 return fra.me.REG[0];
13649 }
13650 static const char LOCATE_syntax___typing___AOnceExpr___accept_typing[] = "typing::AOnceExpr::(typing::ANode::accept_typing)";
13651 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
13652 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13653 val_t REGB0;
13654 val_t REGB1;
13655 val_t REGB2;
13656 val_t tmp;
13657 static val_t once_value_1; /* Once value */
13658 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13659 fra.me.file = LOCATE_syntax___typing;
13660 fra.me.line = 2134;
13661 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
13662 fra.me.has_broke = 0;
13663 fra.me.REG_size = 5;
13664 fra.me.nitni_local_ref_head = NULL;
13665 fra.me.REG[0] = NIT_NULL;
13666 fra.me.REG[1] = NIT_NULL;
13667 fra.me.REG[2] = NIT_NULL;
13668 fra.me.REG[3] = NIT_NULL;
13669 fra.me.REG[4] = NIT_NULL;
13670 fra.me.REG[0] = p0;
13671 fra.me.REG[1] = p1;
13672 /* syntax/typing.nit:2134 */
13673 fra.me.REG[2] = fra.me.REG[0];
13674 fra.me.REG[3] = fra.me.REG[1];
13675 /* syntax/typing.nit:2136 */
13676 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13677 REGB1 = TAG_Int(0);
13678 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13679 if (UNTAG_Bool(REGB2)) {
13680 } else {
13681 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13682 }
13683 /* ../lib/standard/kernel.nit:237 */
13684 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13685 /* syntax/typing.nit:2136 */
13686 if (UNTAG_Bool(REGB1)) {
13687 /* syntax/typing.nit:2137 */
13688 if (!once_value_1) {
13689 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13690 REGB1 = TAG_Int(34);
13691 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
13692 once_value_1 = fra.me.REG[4];
13693 register_static_object(&once_value_1);
13694 } else fra.me.REG[4] = once_value_1;
13695 fra.me.REG[4] = fra.me.REG[4];
13696 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13697 }
13698 /* syntax/typing.nit:2139 */
13699 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13700 REGB0 = TAG_Int(1);
13701 /* ../lib/standard/kernel.nit:238 */
13702 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13703 /* syntax/typing.nit:2139 */
13704 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13705 /* syntax/typing.nit:2141 */
13706 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13707 /* syntax/typing.nit:2143 */
13708 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13709 REGB1 = TAG_Int(1);
13710 /* ../lib/standard/kernel.nit:240 */
13711 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13712 /* syntax/typing.nit:2143 */
13713 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13714 stack_frame_head = fra.me.prev;
13715 return;
13716 }
13717 static const char LOCATE_syntax___typing___ADebugTypeExpr___after_typing[] = "typing::ADebugTypeExpr::(typing::ANode::after_typing)";
13718 void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
13719 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13720 val_t REGB0;
13721 val_t REGB1;
13722 val_t tmp;
13723 static val_t once_value_2; /* Once value */
13724 static val_t once_value_3; /* Once value */
13725 static val_t once_value_4; /* Once value */
13726 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13727 fra.me.file = LOCATE_syntax___typing;
13728 fra.me.line = 2148;
13729 fra.me.meth = LOCATE_syntax___typing___ADebugTypeExpr___after_typing;
13730 fra.me.has_broke = 0;
13731 fra.me.REG_size = 6;
13732 fra.me.nitni_local_ref_head = NULL;
13733 fra.me.REG[0] = NIT_NULL;
13734 fra.me.REG[1] = NIT_NULL;
13735 fra.me.REG[2] = NIT_NULL;
13736 fra.me.REG[3] = NIT_NULL;
13737 fra.me.REG[4] = NIT_NULL;
13738 fra.me.REG[5] = NIT_NULL;
13739 fra.me.REG[0] = p0;
13740 fra.me.REG[1] = p1;
13741 /* syntax/typing.nit:2150 */
13742 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13743 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13744 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13745 if (UNTAG_Bool(REGB0)) {
13746 goto label1;
13747 }
13748 /* syntax/typing.nit:2151 */
13749 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13750 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
13751 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13752 if (UNTAG_Bool(REGB0)) {
13753 goto label1;
13754 }
13755 /* syntax/typing.nit:2152 */
13756 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13757 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13758 /* syntax/typing.nit:2153 */
13759 fra.me.REG[3] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13760 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13761 /* syntax/typing.nit:2154 */
13762 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13763 if (UNTAG_Bool(REGB0)) {
13764 } else {
13765 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13766 REGB0 = REGB1;
13767 }
13768 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13769 if (UNTAG_Bool(REGB0)) {
13770 /* syntax/typing.nit:2155 */
13771 REGB0 = TAG_Int(5);
13772 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13773 if (!once_value_2) {
13774 fra.me.REG[5] = BOX_NativeString("Warning: Expression is a ");
13775 REGB0 = TAG_Int(25);
13776 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13777 once_value_2 = fra.me.REG[5];
13778 register_static_object(&once_value_2);
13779 } else fra.me.REG[5] = once_value_2;
13780 fra.me.REG[5] = fra.me.REG[5];
13781 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13782 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13783 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13784 if (!once_value_3) {
13785 fra.me.REG[2] = BOX_NativeString(", expected ");
13786 REGB0 = TAG_Int(11);
13787 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
13788 once_value_3 = fra.me.REG[2];
13789 register_static_object(&once_value_3);
13790 } else fra.me.REG[2] = once_value_3;
13791 fra.me.REG[2] = fra.me.REG[2];
13792 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13793 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13794 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13795 if (!once_value_4) {
13796 fra.me.REG[3] = BOX_NativeString(".");
13797 REGB0 = TAG_Int(1);
13798 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13799 once_value_4 = fra.me.REG[3];
13800 register_static_object(&once_value_4);
13801 } else fra.me.REG[3] = once_value_4;
13802 fra.me.REG[3] = fra.me.REG[3];
13803 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13804 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13805 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13806 }
13807 label1: while(0);
13808 stack_frame_head = fra.me.prev;
13809 return;
13810 }