2c7e58443ffbb31fdb43c1251f5160f074ac86bb
[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:724 */
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:724 */
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:724 */
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:724 */
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:724 */
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:724 */
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 /* syntax/typing.nit:445 */
3014 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
3015 if (UNTAG_Bool(REGB0)) {
3016 /* syntax/typing.nit:446 */
3017 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
3018 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
3019 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
3020 /* syntax/typing.nit:447 */
3021 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3022 fra.me.REG[4] = 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]);
3023 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3024 } else {
3025 /* syntax/typing.nit:449 */
3026 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3027 }
3028 } else {
3029 /* syntax/typing.nit:452 */
3030 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
3031 fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
3032 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3033 }
3034 }
3035 /* syntax/typing.nit:454 */
3036 REGB0 = TAG_Bool(1);
3037 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3038 label1: while(0);
3039 stack_frame_head = fra.me.prev;
3040 return;
3041 }
3042 static const char LOCATE_syntax___typing___ABlockExpr___accept_typing[] = "typing::ABlockExpr::(typing::ANode::accept_typing)";
3043 void syntax___typing___ABlockExpr___accept_typing(val_t p0, val_t p1){
3044 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3045 val_t REGB0;
3046 val_t tmp;
3047 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3048 fra.me.file = LOCATE_syntax___typing;
3049 fra.me.line = 459;
3050 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3051 fra.me.has_broke = 0;
3052 fra.me.REG_size = 3;
3053 fra.me.nitni_local_ref_head = NULL;
3054 fra.me.REG[0] = NIT_NULL;
3055 fra.me.REG[1] = NIT_NULL;
3056 fra.me.REG[2] = NIT_NULL;
3057 fra.me.REG[0] = p0;
3058 fra.me.REG[1] = p1;
3059 /* syntax/typing.nit:461 */
3060 fra.me.REG[2] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3061 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));
3062 /* syntax/typing.nit:470 */
3063 REGB0 = TAG_Bool(1);
3064 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3065 stack_frame_head = fra.me.prev;
3066 return;
3067 }
3068 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){
3069 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3070 val_t REGB0;
3071 fun_t CREG[1];
3072 val_t tmp;
3073 static val_t once_value_2; /* Once value */
3074 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3075 fra.me.file = LOCATE_syntax___typing;
3076 fra.me.line = 0;
3077 fra.me.meth = LOCATE_syntax___typing___ABlockExpr___accept_typing;
3078 fra.me.has_broke = 0;
3079 fra.me.REG_size = 2;
3080 fra.me.nitni_local_ref_head = NULL;
3081 fra.me.REG[0] = NIT_NULL;
3082 fra.me.REG[1] = NIT_NULL;
3083 fra.me.closure_ctx = closctx_param;
3084 fra.me.closure_funs = CREG;
3085 fra.me.REG[0] = p0;
3086 CREG[0] = clos_fun0;
3087 /* syntax/typing.nit:462 */
3088 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3089 REGB0 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[1])(fra.me.REG[1]);
3090 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3091 if (UNTAG_Bool(REGB0)) {
3092 /* syntax/typing.nit:463 */
3093 CALL_parser___parser_prod___Visitor___enter_visit(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
3094 } else {
3095 /* syntax/typing.nit:464 */
3096 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3097 REGB0 = CALL_syntax___flow___FlowContext___already_unreash(fra.me.REG[1])(fra.me.REG[1]);
3098 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3099 if (UNTAG_Bool(REGB0)) {
3100 /* syntax/typing.nit:465 */
3101 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(closctx->REG[1])(closctx->REG[1]);
3102 REGB0 = TAG_Bool(1);
3103 CALL_syntax___flow___FlowContext___already_unreash__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
3104 /* syntax/typing.nit:466 */
3105 if (!once_value_2) {
3106 fra.me.REG[1] = BOX_NativeString("Error: unreachable statement.");
3107 REGB0 = TAG_Int(29);
3108 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
3109 once_value_2 = fra.me.REG[1];
3110 register_static_object(&once_value_2);
3111 } else fra.me.REG[1] = once_value_2;
3112 fra.me.REG[1] = fra.me.REG[1];
3113 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
3114 }
3115 }
3116 stack_frame_head = fra.me.prev;
3117 return;
3118 }
3119 static const char LOCATE_syntax___typing___AReturnExpr___after_typing[] = "typing::AReturnExpr::(typing::ANode::after_typing)";
3120 void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
3121 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3122 val_t REGB0;
3123 val_t REGB1;
3124 val_t tmp;
3125 static val_t once_value_1; /* Once value */
3126 static val_t once_value_3; /* Once value */
3127 static val_t once_value_4; /* Once value */
3128 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3129 fra.me.file = LOCATE_syntax___typing;
3130 fra.me.line = 475;
3131 fra.me.meth = LOCATE_syntax___typing___AReturnExpr___after_typing;
3132 fra.me.has_broke = 0;
3133 fra.me.REG_size = 5;
3134 fra.me.nitni_local_ref_head = NULL;
3135 fra.me.REG[0] = NIT_NULL;
3136 fra.me.REG[1] = NIT_NULL;
3137 fra.me.REG[2] = NIT_NULL;
3138 fra.me.REG[3] = NIT_NULL;
3139 fra.me.REG[4] = NIT_NULL;
3140 fra.me.REG[0] = p0;
3141 fra.me.REG[1] = p1;
3142 /* syntax/typing.nit:477 */
3143 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3144 /* syntax/typing.nit:478 */
3145 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
3146 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
3147 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3148 if (UNTAG_Bool(REGB0)) {
3149 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 478);
3150 }
3151 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
3152 /* syntax/typing.nit:480 */
3153 REGB0 = CALL_syntax___typing___TypingVisitor___is_default_closure_definition(fra.me.REG[1])(fra.me.REG[1]);
3154 if (UNTAG_Bool(REGB0)) {
3155 /* syntax/typing.nit:481 */
3156 if (!once_value_1) {
3157 fra.me.REG[3] = BOX_NativeString("Error: 'return' invalid in default closure definitions. Use 'continue' or 'break'.");
3158 REGB0 = TAG_Int(82);
3159 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3160 once_value_1 = fra.me.REG[3];
3161 register_static_object(&once_value_1);
3162 } else fra.me.REG[3] = once_value_1;
3163 fra.me.REG[3] = fra.me.REG[3];
3164 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3165 /* syntax/typing.nit:482 */
3166 goto label2;
3167 }
3168 /* syntax/typing.nit:485 */
3169 fra.me.REG[3] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3170 /* syntax/typing.nit:486 */
3171 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3172 if (UNTAG_Bool(REGB0)) {
3173 } else {
3174 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3175 if (UNTAG_Bool(REGB1)) {
3176 REGB1 = TAG_Bool(0);
3177 REGB0 = REGB1;
3178 } else {
3179 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3180 REGB0 = REGB1;
3181 }
3182 }
3183 if (UNTAG_Bool(REGB0)) {
3184 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3185 if (UNTAG_Bool(REGB0)) {
3186 } else {
3187 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3188 if (UNTAG_Bool(REGB1)) {
3189 REGB1 = TAG_Bool(0);
3190 REGB0 = REGB1;
3191 } else {
3192 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3193 REGB0 = REGB1;
3194 }
3195 }
3196 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3197 } else {
3198 REGB1 = TAG_Bool(0);
3199 REGB0 = REGB1;
3200 }
3201 if (UNTAG_Bool(REGB0)) {
3202 /* syntax/typing.nit:487 */
3203 if (!once_value_3) {
3204 fra.me.REG[4] = BOX_NativeString("Error: Return without value in a function.");
3205 REGB0 = TAG_Int(42);
3206 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3207 once_value_3 = fra.me.REG[4];
3208 register_static_object(&once_value_3);
3209 } else fra.me.REG[4] = once_value_3;
3210 fra.me.REG[4] = fra.me.REG[4];
3211 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3212 } else {
3213 /* syntax/typing.nit:488 */
3214 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3215 if (UNTAG_Bool(REGB0)) {
3216 } else {
3217 REGB1 = TAG_Bool(fra.me.REG[3]==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[3])(fra.me.REG[3], NIT_NULL);
3223 REGB0 = REGB1;
3224 }
3225 }
3226 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3227 if (UNTAG_Bool(REGB0)) {
3228 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3229 if (UNTAG_Bool(REGB0)) {
3230 } else {
3231 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3232 if (UNTAG_Bool(REGB1)) {
3233 REGB1 = TAG_Bool(0);
3234 REGB0 = REGB1;
3235 } else {
3236 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3237 REGB0 = REGB1;
3238 }
3239 }
3240 } else {
3241 REGB1 = TAG_Bool(0);
3242 REGB0 = REGB1;
3243 }
3244 if (UNTAG_Bool(REGB0)) {
3245 /* syntax/typing.nit:489 */
3246 if (!once_value_4) {
3247 fra.me.REG[4] = BOX_NativeString("Error: Return with value in a procedure.");
3248 REGB0 = TAG_Int(40);
3249 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3250 once_value_4 = fra.me.REG[4];
3251 register_static_object(&once_value_4);
3252 } else fra.me.REG[4] = once_value_4;
3253 fra.me.REG[4] = fra.me.REG[4];
3254 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3255 } else {
3256 /* syntax/typing.nit:490 */
3257 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3258 if (UNTAG_Bool(REGB0)) {
3259 } else {
3260 REGB1 = TAG_Bool(fra.me.REG[3]==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[3])(fra.me.REG[3], NIT_NULL);
3266 REGB0 = REGB1;
3267 }
3268 }
3269 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3270 if (UNTAG_Bool(REGB0)) {
3271 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3272 if (UNTAG_Bool(REGB0)) {
3273 } else {
3274 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3275 if (UNTAG_Bool(REGB1)) {
3276 REGB1 = TAG_Bool(0);
3277 REGB0 = REGB1;
3278 } else {
3279 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3280 REGB0 = REGB1;
3281 }
3282 }
3283 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3284 } else {
3285 REGB1 = TAG_Bool(0);
3286 REGB0 = REGB1;
3287 }
3288 if (UNTAG_Bool(REGB0)) {
3289 /* syntax/typing.nit:491 */
3290 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3291 }
3292 }
3293 }
3294 /* syntax/typing.nit:493 */
3295 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3296 if (UNTAG_Bool(REGB0)) {
3297 } else {
3298 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3299 if (UNTAG_Bool(REGB1)) {
3300 REGB1 = TAG_Bool(0);
3301 REGB0 = REGB1;
3302 } else {
3303 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3304 REGB0 = REGB1;
3305 }
3306 }
3307 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3308 if (UNTAG_Bool(REGB0)) {
3309 /* syntax/typing.nit:494 */
3310 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3311 if (UNTAG_Bool(REGB0)) {
3312 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 494);
3313 }
3314 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3315 }
3316 /* syntax/typing.nit:496 */
3317 REGB0 = TAG_Bool(1);
3318 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3319 label2: while(0);
3320 stack_frame_head = fra.me.prev;
3321 return;
3322 }
3323 static const char LOCATE_syntax___typing___AContinueExpr___after_typing[] = "typing::AContinueExpr::(typing::ANode::after_typing)";
3324 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
3325 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3326 val_t REGB0;
3327 val_t REGB1;
3328 val_t tmp;
3329 static val_t once_value_2; /* Once value */
3330 static val_t once_value_3; /* Once value */
3331 static val_t once_value_4; /* Once value */
3332 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3333 fra.me.file = LOCATE_syntax___typing;
3334 fra.me.line = 501;
3335 fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
3336 fra.me.has_broke = 0;
3337 fra.me.REG_size = 5;
3338 fra.me.nitni_local_ref_head = NULL;
3339 fra.me.REG[0] = NIT_NULL;
3340 fra.me.REG[1] = NIT_NULL;
3341 fra.me.REG[2] = NIT_NULL;
3342 fra.me.REG[3] = NIT_NULL;
3343 fra.me.REG[4] = NIT_NULL;
3344 fra.me.REG[0] = p0;
3345 fra.me.REG[1] = p1;
3346 /* syntax/typing.nit:503 */
3347 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3348 /* syntax/typing.nit:504 */
3349 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3350 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3351 /* syntax/typing.nit:505 */
3352 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3353 if (UNTAG_Bool(REGB0)) {
3354 } else {
3355 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3356 if (UNTAG_Bool(REGB1)) {
3357 REGB1 = TAG_Bool(0);
3358 REGB0 = REGB1;
3359 } else {
3360 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3361 REGB0 = REGB1;
3362 }
3363 }
3364 if (UNTAG_Bool(REGB0)) {
3365 goto label1;
3366 }
3367 /* syntax/typing.nit:507 */
3368 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3369 if (UNTAG_Bool(REGB0)) {
3370 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 507);
3371 }
3372 REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
3373 if (UNTAG_Bool(REGB0)) {
3374 /* syntax/typing.nit:508 */
3375 if (!once_value_2) {
3376 fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
3377 REGB0 = TAG_Int(39);
3378 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
3379 once_value_2 = fra.me.REG[3];
3380 register_static_object(&once_value_2);
3381 } else fra.me.REG[3] = once_value_2;
3382 fra.me.REG[3] = fra.me.REG[3];
3383 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
3384 /* syntax/typing.nit:509 */
3385 goto label1;
3386 }
3387 /* syntax/typing.nit:512 */
3388 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3389 if (UNTAG_Bool(REGB0)) {
3390 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 512);
3391 }
3392 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
3393 /* syntax/typing.nit:513 */
3394 fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3395 /* syntax/typing.nit:514 */
3396 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3397 if (UNTAG_Bool(REGB0)) {
3398 } else {
3399 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3400 if (UNTAG_Bool(REGB1)) {
3401 REGB1 = TAG_Bool(0);
3402 REGB0 = REGB1;
3403 } else {
3404 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3405 REGB0 = REGB1;
3406 }
3407 }
3408 if (UNTAG_Bool(REGB0)) {
3409 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3410 if (UNTAG_Bool(REGB0)) {
3411 } else {
3412 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3413 if (UNTAG_Bool(REGB1)) {
3414 REGB1 = TAG_Bool(0);
3415 REGB0 = REGB1;
3416 } else {
3417 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3418 REGB0 = REGB1;
3419 }
3420 }
3421 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3422 } else {
3423 REGB1 = TAG_Bool(0);
3424 REGB0 = REGB1;
3425 }
3426 if (UNTAG_Bool(REGB0)) {
3427 /* syntax/typing.nit:515 */
3428 if (!once_value_3) {
3429 fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
3430 REGB0 = TAG_Int(52);
3431 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3432 once_value_3 = fra.me.REG[4];
3433 register_static_object(&once_value_3);
3434 } else fra.me.REG[4] = once_value_3;
3435 fra.me.REG[4] = fra.me.REG[4];
3436 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3437 } else {
3438 /* syntax/typing.nit:516 */
3439 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3440 if (UNTAG_Bool(REGB0)) {
3441 } else {
3442 REGB1 = TAG_Bool(fra.me.REG[3]==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[3])(fra.me.REG[3], NIT_NULL);
3448 REGB0 = REGB1;
3449 }
3450 }
3451 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3452 if (UNTAG_Bool(REGB0)) {
3453 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3454 if (UNTAG_Bool(REGB0)) {
3455 } else {
3456 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3457 if (UNTAG_Bool(REGB1)) {
3458 REGB1 = TAG_Bool(0);
3459 REGB0 = REGB1;
3460 } else {
3461 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3462 REGB0 = REGB1;
3463 }
3464 }
3465 } else {
3466 REGB1 = TAG_Bool(0);
3467 REGB0 = REGB1;
3468 }
3469 if (UNTAG_Bool(REGB0)) {
3470 /* syntax/typing.nit:517 */
3471 if (!once_value_4) {
3472 fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
3473 REGB0 = TAG_Int(53);
3474 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3475 once_value_4 = fra.me.REG[4];
3476 register_static_object(&once_value_4);
3477 } else fra.me.REG[4] = once_value_4;
3478 fra.me.REG[4] = fra.me.REG[4];
3479 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3480 } else {
3481 /* syntax/typing.nit:518 */
3482 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3483 if (UNTAG_Bool(REGB0)) {
3484 } else {
3485 REGB1 = TAG_Bool(fra.me.REG[3]==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[3])(fra.me.REG[3], NIT_NULL);
3491 REGB0 = REGB1;
3492 }
3493 }
3494 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3495 if (UNTAG_Bool(REGB0)) {
3496 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3497 if (UNTAG_Bool(REGB0)) {
3498 } else {
3499 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3500 if (UNTAG_Bool(REGB1)) {
3501 REGB1 = TAG_Bool(0);
3502 REGB0 = REGB1;
3503 } else {
3504 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3505 REGB0 = REGB1;
3506 }
3507 }
3508 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3509 } else {
3510 REGB1 = TAG_Bool(0);
3511 REGB0 = REGB1;
3512 }
3513 if (UNTAG_Bool(REGB0)) {
3514 /* syntax/typing.nit:519 */
3515 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3516 }
3517 }
3518 }
3519 /* syntax/typing.nit:521 */
3520 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3521 if (UNTAG_Bool(REGB0)) {
3522 } else {
3523 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3524 if (UNTAG_Bool(REGB1)) {
3525 REGB1 = TAG_Bool(0);
3526 REGB0 = REGB1;
3527 } else {
3528 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3529 REGB0 = REGB1;
3530 }
3531 }
3532 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3533 if (UNTAG_Bool(REGB0)) {
3534 /* syntax/typing.nit:522 */
3535 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3536 if (UNTAG_Bool(REGB0)) {
3537 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 522);
3538 }
3539 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3540 }
3541 /* syntax/typing.nit:524 */
3542 REGB0 = TAG_Bool(1);
3543 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3544 label1: while(0);
3545 stack_frame_head = fra.me.prev;
3546 return;
3547 }
3548 static const char LOCATE_syntax___typing___ABreakExpr___after_typing[] = "typing::ABreakExpr::(typing::ANode::after_typing)";
3549 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
3550 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3551 val_t REGB0;
3552 val_t REGB1;
3553 val_t tmp;
3554 static val_t once_value_2; /* Once value */
3555 static val_t once_value_3; /* Once value */
3556 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3557 fra.me.file = LOCATE_syntax___typing;
3558 fra.me.line = 529;
3559 fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
3560 fra.me.has_broke = 0;
3561 fra.me.REG_size = 5;
3562 fra.me.nitni_local_ref_head = NULL;
3563 fra.me.REG[0] = NIT_NULL;
3564 fra.me.REG[1] = NIT_NULL;
3565 fra.me.REG[2] = NIT_NULL;
3566 fra.me.REG[3] = NIT_NULL;
3567 fra.me.REG[4] = NIT_NULL;
3568 fra.me.REG[0] = p0;
3569 fra.me.REG[1] = p1;
3570 /* syntax/typing.nit:531 */
3571 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3572 /* syntax/typing.nit:532 */
3573 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3574 /* syntax/typing.nit:533 */
3575 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3576 fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
3577 /* syntax/typing.nit:534 */
3578 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3579 if (UNTAG_Bool(REGB0)) {
3580 } else {
3581 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3582 if (UNTAG_Bool(REGB1)) {
3583 REGB1 = TAG_Bool(0);
3584 REGB0 = REGB1;
3585 } else {
3586 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3587 REGB0 = REGB1;
3588 }
3589 }
3590 if (UNTAG_Bool(REGB0)) {
3591 goto label1;
3592 }
3593 /* syntax/typing.nit:536 */
3594 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3595 if (UNTAG_Bool(REGB0)) {
3596 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 536);
3597 }
3598 fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
3599 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
3600 /* syntax/typing.nit:538 */
3601 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3602 if (UNTAG_Bool(REGB0)) {
3603 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 538);
3604 }
3605 fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
3606 /* syntax/typing.nit:539 */
3607 fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3608 /* syntax/typing.nit:540 */
3609 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3610 if (UNTAG_Bool(REGB0)) {
3611 } else {
3612 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3613 if (UNTAG_Bool(REGB1)) {
3614 REGB1 = TAG_Bool(0);
3615 REGB0 = REGB1;
3616 } else {
3617 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3618 REGB0 = REGB1;
3619 }
3620 }
3621 if (UNTAG_Bool(REGB0)) {
3622 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3623 if (UNTAG_Bool(REGB0)) {
3624 } else {
3625 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3626 if (UNTAG_Bool(REGB1)) {
3627 REGB1 = TAG_Bool(0);
3628 REGB0 = REGB1;
3629 } else {
3630 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3631 REGB0 = REGB1;
3632 }
3633 }
3634 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3635 } else {
3636 REGB1 = TAG_Bool(0);
3637 REGB0 = REGB1;
3638 }
3639 if (UNTAG_Bool(REGB0)) {
3640 /* syntax/typing.nit:541 */
3641 if (!once_value_2) {
3642 fra.me.REG[4] = BOX_NativeString("Error: break with a value required in this block.");
3643 REGB0 = TAG_Int(49);
3644 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3645 once_value_2 = fra.me.REG[4];
3646 register_static_object(&once_value_2);
3647 } else fra.me.REG[4] = once_value_2;
3648 fra.me.REG[4] = fra.me.REG[4];
3649 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3650 } else {
3651 /* syntax/typing.nit:542 */
3652 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3653 if (UNTAG_Bool(REGB0)) {
3654 } else {
3655 REGB1 = TAG_Bool(fra.me.REG[2]==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[2])(fra.me.REG[2], NIT_NULL);
3661 REGB0 = REGB1;
3662 }
3663 }
3664 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3665 if (UNTAG_Bool(REGB0)) {
3666 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3667 if (UNTAG_Bool(REGB0)) {
3668 } else {
3669 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3670 if (UNTAG_Bool(REGB1)) {
3671 REGB1 = TAG_Bool(0);
3672 REGB0 = REGB1;
3673 } else {
3674 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3675 REGB0 = REGB1;
3676 }
3677 }
3678 } else {
3679 REGB1 = TAG_Bool(0);
3680 REGB0 = REGB1;
3681 }
3682 if (UNTAG_Bool(REGB0)) {
3683 /* syntax/typing.nit:543 */
3684 if (!once_value_3) {
3685 fra.me.REG[4] = BOX_NativeString("Error: break without value required in this block.");
3686 REGB0 = TAG_Int(50);
3687 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3688 once_value_3 = fra.me.REG[4];
3689 register_static_object(&once_value_3);
3690 } else fra.me.REG[4] = once_value_3;
3691 fra.me.REG[4] = fra.me.REG[4];
3692 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
3693 } else {
3694 /* syntax/typing.nit:544 */
3695 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3696 if (UNTAG_Bool(REGB0)) {
3697 } else {
3698 REGB1 = TAG_Bool(fra.me.REG[2]==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[2])(fra.me.REG[2], NIT_NULL);
3704 REGB0 = REGB1;
3705 }
3706 }
3707 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3708 if (UNTAG_Bool(REGB0)) {
3709 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3710 if (UNTAG_Bool(REGB0)) {
3711 } else {
3712 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3713 if (UNTAG_Bool(REGB1)) {
3714 REGB1 = TAG_Bool(0);
3715 REGB0 = REGB1;
3716 } else {
3717 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3718 REGB0 = REGB1;
3719 }
3720 }
3721 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3722 } else {
3723 REGB1 = TAG_Bool(0);
3724 REGB0 = REGB1;
3725 }
3726 if (UNTAG_Bool(REGB0)) {
3727 /* syntax/typing.nit:546 */
3728 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3729 if (UNTAG_Bool(REGB0)) {
3730 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 546);
3731 }
3732 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
3733 }
3734 }
3735 }
3736 /* syntax/typing.nit:548 */
3737 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3738 if (UNTAG_Bool(REGB0)) {
3739 } else {
3740 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3741 if (UNTAG_Bool(REGB1)) {
3742 REGB1 = TAG_Bool(0);
3743 REGB0 = REGB1;
3744 } else {
3745 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3746 REGB0 = REGB1;
3747 }
3748 }
3749 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3750 if (UNTAG_Bool(REGB0)) {
3751 /* syntax/typing.nit:549 */
3752 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3753 if (UNTAG_Bool(REGB0)) {
3754 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 549);
3755 }
3756 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
3757 }
3758 /* syntax/typing.nit:551 */
3759 REGB0 = TAG_Bool(1);
3760 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3761 label1: while(0);
3762 stack_frame_head = fra.me.prev;
3763 return;
3764 }
3765 static const char LOCATE_syntax___typing___AAbortExpr___after_typing[] = "typing::AAbortExpr::(typing::ANode::after_typing)";
3766 void syntax___typing___AAbortExpr___after_typing(val_t p0, val_t p1){
3767 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3768 val_t REGB0;
3769 val_t tmp;
3770 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3771 fra.me.file = LOCATE_syntax___typing;
3772 fra.me.line = 556;
3773 fra.me.meth = LOCATE_syntax___typing___AAbortExpr___after_typing;
3774 fra.me.has_broke = 0;
3775 fra.me.REG_size = 2;
3776 fra.me.nitni_local_ref_head = NULL;
3777 fra.me.REG[0] = NIT_NULL;
3778 fra.me.REG[1] = NIT_NULL;
3779 fra.me.REG[0] = p0;
3780 fra.me.REG[1] = p1;
3781 /* syntax/typing.nit:558 */
3782 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3783 /* syntax/typing.nit:559 */
3784 REGB0 = TAG_Bool(1);
3785 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3786 stack_frame_head = fra.me.prev;
3787 return;
3788 }
3789 static const char LOCATE_syntax___typing___AAbsControl___escapable[] = "typing::AAbsControl::escapable";
3790 val_t syntax___typing___AAbsControl___escapable(val_t p0){
3791 struct {struct stack_frame_t me;} fra;
3792 val_t tmp;
3793 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3794 fra.me.file = LOCATE_syntax___typing;
3795 fra.me.line = 566;
3796 fra.me.meth = LOCATE_syntax___typing___AAbsControl___escapable;
3797 fra.me.has_broke = 0;
3798 fra.me.REG_size = 1;
3799 fra.me.nitni_local_ref_head = NULL;
3800 fra.me.REG[0] = NIT_NULL;
3801 fra.me.REG[0] = p0;
3802 /* syntax/typing.nit:566 */
3803 fra.me.REG[0] = ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]);
3804 stack_frame_head = fra.me.prev;
3805 return fra.me.REG[0];
3806 }
3807 static const char LOCATE_syntax___typing___AAbsControl___process_control[] = "typing::AAbsControl::process_control";
3808 void syntax___typing___AAbsControl___process_control(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
3809 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3810 val_t REGB0;
3811 val_t REGB1;
3812 val_t tmp;
3813 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3814 fra.me.file = LOCATE_syntax___typing;
3815 fra.me.line = 569;
3816 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control;
3817 fra.me.has_broke = 0;
3818 fra.me.REG_size = 7;
3819 fra.me.nitni_local_ref_head = NULL;
3820 fra.me.REG[0] = NIT_NULL;
3821 fra.me.REG[1] = NIT_NULL;
3822 fra.me.REG[2] = NIT_NULL;
3823 fra.me.REG[3] = NIT_NULL;
3824 fra.me.REG[4] = NIT_NULL;
3825 fra.me.REG[5] = NIT_NULL;
3826 fra.me.REG[6] = NIT_NULL;
3827 fra.me.REG[0] = p0;
3828 fra.me.REG[1] = p1;
3829 fra.me.REG[2] = p2;
3830 fra.me.REG[3] = p3;
3831 REGB0 = p4;
3832 /* syntax/typing.nit:573 */
3833 ATTR_syntax___typing___AAbsControl____escapable(fra.me.REG[0]) = fra.me.REG[2];
3834 /* syntax/typing.nit:574 */
3835 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3836 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
3837 /* syntax/typing.nit:577 */
3838 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3839 /* syntax/typing.nit:578 */
3840 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3841 /* syntax/typing.nit:579 */
3842 if (UNTAG_Bool(REGB0)) {
3843 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3844 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3845 }
3846 /* syntax/typing.nit:582 */
3847 CALL_syntax___typing___AAbsControl___process_control_inside(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
3848 /* syntax/typing.nit:585 */
3849 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3850 REGB1 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[5])(fra.me.REG[5]);
3851 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
3852 if (UNTAG_Bool(REGB1)) {
3853 /* syntax/typing.nit:586 */
3854 fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3855 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3856 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3857 }
3858 /* syntax/typing.nit:590 */
3859 fra.me.REG[6] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3860 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
3861 if (UNTAG_Bool(REGB1)) {
3862 /* syntax/typing.nit:591 */
3863 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3864 /* syntax/typing.nit:592 */
3865 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3866 } else {
3867 /* syntax/typing.nit:594 */
3868 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[2])(fra.me.REG[2]);
3869 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]);
3870 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3871 }
3872 /* syntax/typing.nit:597 */
3873 if (UNTAG_Bool(REGB0)) {
3874 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3875 }
3876 /* syntax/typing.nit:598 */
3877 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
3878 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
3879 /* syntax/typing.nit:599 */
3880 REGB0 = TAG_Bool(1);
3881 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
3882 stack_frame_head = fra.me.prev;
3883 return;
3884 }
3885 static const char LOCATE_syntax___typing___AAbsControl___process_control_inside[] = "typing::AAbsControl::process_control_inside";
3886 void syntax___typing___AAbsControl___process_control_inside(val_t p0, val_t p1){
3887 struct {struct stack_frame_t me;} fra;
3888 val_t tmp;
3889 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3890 fra.me.file = LOCATE_syntax___typing;
3891 fra.me.line = 602;
3892 fra.me.meth = LOCATE_syntax___typing___AAbsControl___process_control_inside;
3893 fra.me.has_broke = 0;
3894 fra.me.REG_size = 0;
3895 fra.me.nitni_local_ref_head = NULL;
3896 /* syntax/typing.nit:602 */
3897 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 602);
3898 stack_frame_head = fra.me.prev;
3899 return;
3900 }
3901 static const char LOCATE_syntax___typing___ADoExpr___accept_typing[] = "typing::ADoExpr::(typing::ANode::accept_typing)";
3902 void syntax___typing___ADoExpr___accept_typing(val_t p0, val_t p1){
3903 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3904 val_t REGB0;
3905 val_t tmp;
3906 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3907 fra.me.file = LOCATE_syntax___typing;
3908 fra.me.line = 608;
3909 fra.me.meth = LOCATE_syntax___typing___ADoExpr___accept_typing;
3910 fra.me.has_broke = 0;
3911 fra.me.REG_size = 4;
3912 fra.me.nitni_local_ref_head = NULL;
3913 fra.me.REG[0] = NIT_NULL;
3914 fra.me.REG[1] = NIT_NULL;
3915 fra.me.REG[2] = NIT_NULL;
3916 fra.me.REG[3] = NIT_NULL;
3917 fra.me.REG[0] = p0;
3918 fra.me.REG[1] = p1;
3919 /* syntax/typing.nit:610 */
3920 fra.me.REG[2] = NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[0]);
3921 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
3922 REGB0 = TAG_Bool(0);
3923 CALL_syntax___typing___AAbsControl___process_control(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], REGB0);
3924 stack_frame_head = fra.me.prev;
3925 return;
3926 }
3927 static const char LOCATE_syntax___typing___ADoExpr___process_control_inside[] = "typing::ADoExpr::(typing::AAbsControl::process_control_inside)";
3928 void syntax___typing___ADoExpr___process_control_inside(val_t p0, val_t p1){
3929 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3930 val_t tmp;
3931 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3932 fra.me.file = LOCATE_syntax___typing;
3933 fra.me.line = 613;
3934 fra.me.meth = LOCATE_syntax___typing___ADoExpr___process_control_inside;
3935 fra.me.has_broke = 0;
3936 fra.me.REG_size = 2;
3937 fra.me.nitni_local_ref_head = NULL;
3938 fra.me.REG[0] = NIT_NULL;
3939 fra.me.REG[1] = NIT_NULL;
3940 fra.me.REG[0] = p0;
3941 fra.me.REG[1] = p1;
3942 /* syntax/typing.nit:615 */
3943 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3944 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3945 stack_frame_head = fra.me.prev;
3946 return;
3947 }
3948 static const char LOCATE_syntax___typing___AIfExpr___accept_typing[] = "typing::AIfExpr::(typing::ANode::accept_typing)";
3949 void syntax___typing___AIfExpr___accept_typing(val_t p0, val_t p1){
3950 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3951 val_t REGB0;
3952 val_t tmp;
3953 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3954 fra.me.file = LOCATE_syntax___typing;
3955 fra.me.line = 620;
3956 fra.me.meth = LOCATE_syntax___typing___AIfExpr___accept_typing;
3957 fra.me.has_broke = 0;
3958 fra.me.REG_size = 5;
3959 fra.me.nitni_local_ref_head = NULL;
3960 fra.me.REG[0] = NIT_NULL;
3961 fra.me.REG[1] = NIT_NULL;
3962 fra.me.REG[2] = NIT_NULL;
3963 fra.me.REG[3] = NIT_NULL;
3964 fra.me.REG[4] = NIT_NULL;
3965 fra.me.REG[0] = p0;
3966 fra.me.REG[1] = p1;
3967 /* syntax/typing.nit:622 */
3968 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3969 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3970 /* syntax/typing.nit:623 */
3971 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3972 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
3973 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
3974 /* syntax/typing.nit:625 */
3975 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3976 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
3977 /* syntax/typing.nit:628 */
3978 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3979 /* syntax/typing.nit:629 */
3980 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3981 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3982 /* syntax/typing.nit:632 */
3983 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3984 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3985 /* syntax/typing.nit:635 */
3986 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3987 /* syntax/typing.nit:638 */
3988 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3989 /* syntax/typing.nit:639 */
3990 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3991 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3992 /* syntax/typing.nit:642 */
3993 fra.me.REG[3] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3994 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3995 /* syntax/typing.nit:645 */
3996 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3997 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
3998 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]);
3999 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4000 /* syntax/typing.nit:646 */
4001 REGB0 = TAG_Bool(1);
4002 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4003 stack_frame_head = fra.me.prev;
4004 return;
4005 }
4006 static const char LOCATE_syntax___typing___AWhileExpr___accept_typing[] = "typing::AWhileExpr::(typing::ANode::accept_typing)";
4007 void syntax___typing___AWhileExpr___accept_typing(val_t p0, val_t p1){
4008 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4009 val_t REGB0;
4010 val_t tmp;
4011 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4012 fra.me.file = LOCATE_syntax___typing;
4013 fra.me.line = 652;
4014 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___accept_typing;
4015 fra.me.has_broke = 0;
4016 fra.me.REG_size = 4;
4017 fra.me.nitni_local_ref_head = NULL;
4018 fra.me.REG[0] = NIT_NULL;
4019 fra.me.REG[1] = NIT_NULL;
4020 fra.me.REG[2] = NIT_NULL;
4021 fra.me.REG[3] = NIT_NULL;
4022 fra.me.REG[0] = p0;
4023 fra.me.REG[1] = p1;
4024 /* syntax/typing.nit:654 */
4025 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4026 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4027 REGB0 = TAG_Bool(1);
4028 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);
4029 stack_frame_head = fra.me.prev;
4030 return;
4031 }
4032 static const char LOCATE_syntax___typing___AWhileExpr___process_control_inside[] = "typing::AWhileExpr::(typing::AAbsControl::process_control_inside)";
4033 void syntax___typing___AWhileExpr___process_control_inside(val_t p0, val_t p1){
4034 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4035 val_t REGB0;
4036 val_t tmp;
4037 static val_t once_value_1; /* Once value */
4038 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4039 fra.me.file = LOCATE_syntax___typing;
4040 fra.me.line = 657;
4041 fra.me.meth = LOCATE_syntax___typing___AWhileExpr___process_control_inside;
4042 fra.me.has_broke = 0;
4043 fra.me.REG_size = 5;
4044 fra.me.nitni_local_ref_head = NULL;
4045 fra.me.REG[0] = NIT_NULL;
4046 fra.me.REG[1] = NIT_NULL;
4047 fra.me.REG[2] = NIT_NULL;
4048 fra.me.REG[3] = NIT_NULL;
4049 fra.me.REG[4] = NIT_NULL;
4050 fra.me.REG[0] = p0;
4051 fra.me.REG[1] = p1;
4052 /* syntax/typing.nit:659 */
4053 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4054 /* syntax/typing.nit:662 */
4055 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4056 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4057 /* syntax/typing.nit:663 */
4058 fra.me.REG[3] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4059 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4060 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4061 /* syntax/typing.nit:665 */
4062 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4063 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ATrueExpr, ID_parser___parser_nodes___ATrueExpr)) /*cast ATrueExpr*/;
4064 if (UNTAG_Bool(REGB0)) {
4065 /* syntax/typing.nit:666 */
4066 if (!once_value_1) {
4067 fra.me.REG[4] = BOX_NativeString("Warning: use 'loop' instead of 'while true do'.");
4068 REGB0 = TAG_Int(47);
4069 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4070 once_value_1 = fra.me.REG[4];
4071 register_static_object(&once_value_1);
4072 } else fra.me.REG[4] = once_value_1;
4073 fra.me.REG[4] = fra.me.REG[4];
4074 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
4075 } else {
4076 /* syntax/typing.nit:668 */
4077 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4078 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
4079 }
4080 /* syntax/typing.nit:672 */
4081 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4082 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4083 /* syntax/typing.nit:675 */
4084 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4085 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4086 /* syntax/typing.nit:678 */
4087 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4088 /* syntax/typing.nit:679 */
4089 fra.me.REG[2] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4090 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4091 /* syntax/typing.nit:680 */
4092 fra.me.REG[0] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
4093 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4094 if (UNTAG_Bool(REGB0)) {
4095 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 680);
4096 }
4097 fra.me.REG[0] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[0])(fra.me.REG[0]);
4098 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4099 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4100 stack_frame_head = fra.me.prev;
4101 return;
4102 }
4103 static const char LOCATE_syntax___typing___ALoopExpr___accept_typing[] = "typing::ALoopExpr::(typing::ANode::accept_typing)";
4104 void syntax___typing___ALoopExpr___accept_typing(val_t p0, val_t p1){
4105 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4106 val_t REGB0;
4107 val_t tmp;
4108 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4109 fra.me.file = LOCATE_syntax___typing;
4110 fra.me.line = 686;
4111 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___accept_typing;
4112 fra.me.has_broke = 0;
4113 fra.me.REG_size = 4;
4114 fra.me.nitni_local_ref_head = NULL;
4115 fra.me.REG[0] = NIT_NULL;
4116 fra.me.REG[1] = NIT_NULL;
4117 fra.me.REG[2] = NIT_NULL;
4118 fra.me.REG[3] = NIT_NULL;
4119 fra.me.REG[0] = p0;
4120 fra.me.REG[1] = p1;
4121 /* syntax/typing.nit:688 */
4122 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4123 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4124 REGB0 = TAG_Bool(1);
4125 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);
4126 stack_frame_head = fra.me.prev;
4127 return;
4128 }
4129 static const char LOCATE_syntax___typing___ALoopExpr___process_control_inside[] = "typing::ALoopExpr::(typing::AAbsControl::process_control_inside)";
4130 void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
4131 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4132 val_t tmp;
4133 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4134 fra.me.file = LOCATE_syntax___typing;
4135 fra.me.line = 691;
4136 fra.me.meth = LOCATE_syntax___typing___ALoopExpr___process_control_inside;
4137 fra.me.has_broke = 0;
4138 fra.me.REG_size = 3;
4139 fra.me.nitni_local_ref_head = NULL;
4140 fra.me.REG[0] = NIT_NULL;
4141 fra.me.REG[1] = NIT_NULL;
4142 fra.me.REG[2] = NIT_NULL;
4143 fra.me.REG[0] = p0;
4144 fra.me.REG[1] = p1;
4145 /* syntax/typing.nit:694 */
4146 fra.me.REG[2] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4147 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4148 /* syntax/typing.nit:697 */
4149 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4150 stack_frame_head = fra.me.prev;
4151 return;
4152 }
4153 static const char LOCATE_syntax___typing___AForExpr___variables[] = "typing::AForExpr::(syntax_base::AForExpr::variables)";
4154 val_t syntax___typing___AForExpr___variables(val_t p0){
4155 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4156 val_t REGB0;
4157 val_t tmp;
4158 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4159 fra.me.file = LOCATE_syntax___typing;
4160 fra.me.line = 704;
4161 fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
4162 fra.me.has_broke = 0;
4163 fra.me.REG_size = 2;
4164 fra.me.nitni_local_ref_head = NULL;
4165 fra.me.REG[0] = NIT_NULL;
4166 fra.me.REG[1] = NIT_NULL;
4167 fra.me.REG[0] = p0;
4168 /* syntax/typing.nit:704 */
4169 fra.me.REG[1] = fra.me.REG[0];
4170 fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
4171 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4172 if (UNTAG_Bool(REGB0)) {
4173 } else {
4174 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 704);
4175 }
4176 goto label1;
4177 label1: while(0);
4178 stack_frame_head = fra.me.prev;
4179 return fra.me.REG[1];
4180 }
4181 static const char LOCATE_syntax___typing___AForExpr___accept_typing[] = "typing::AForExpr::(typing::ANode::accept_typing)";
4182 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
4183 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4184 val_t REGB0;
4185 val_t tmp;
4186 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4187 fra.me.file = LOCATE_syntax___typing;
4188 fra.me.line = 706;
4189 fra.me.meth = LOCATE_syntax___typing___AForExpr___accept_typing;
4190 fra.me.has_broke = 0;
4191 fra.me.REG_size = 4;
4192 fra.me.nitni_local_ref_head = NULL;
4193 fra.me.REG[0] = NIT_NULL;
4194 fra.me.REG[1] = NIT_NULL;
4195 fra.me.REG[2] = NIT_NULL;
4196 fra.me.REG[3] = NIT_NULL;
4197 fra.me.REG[0] = p0;
4198 fra.me.REG[1] = p1;
4199 /* syntax/typing.nit:708 */
4200 fra.me.REG[2] = NEW_EscapableBlock_syntax___scope___EscapableBlock___init(fra.me.REG[0]);
4201 fra.me.REG[3] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[0])(fra.me.REG[0]);
4202 REGB0 = TAG_Bool(1);
4203 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);
4204 stack_frame_head = fra.me.prev;
4205 return;
4206 }
4207 static const char LOCATE_syntax___typing___AForExpr___process_control_inside[] = "typing::AForExpr::(typing::AAbsControl::process_control_inside)";
4208 void syntax___typing___AForExpr___process_control_inside(val_t p0, val_t p1){
4209 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4210 val_t tmp;
4211 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4212 fra.me.file = LOCATE_syntax___typing;
4213 fra.me.line = 711;
4214 fra.me.meth = LOCATE_syntax___typing___AForExpr___process_control_inside;
4215 fra.me.has_broke = 0;
4216 fra.me.REG_size = 3;
4217 fra.me.nitni_local_ref_head = NULL;
4218 fra.me.REG[0] = NIT_NULL;
4219 fra.me.REG[1] = NIT_NULL;
4220 fra.me.REG[2] = NIT_NULL;
4221 fra.me.REG[0] = p0;
4222 fra.me.REG[1] = p1;
4223 /* syntax/typing.nit:713 */
4224 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4225 CALL_syntax___scope___ScopeContext___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
4226 /* syntax/typing.nit:714 */
4227 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4228 /* syntax/typing.nit:716 */
4229 CALL_syntax___typing___AForExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
4230 /* syntax/typing.nit:719 */
4231 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
4232 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4233 /* syntax/typing.nit:722 */
4234 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4235 /* syntax/typing.nit:723 */
4236 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
4237 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
4238 stack_frame_head = fra.me.prev;
4239 return;
4240 }
4241 static const char LOCATE_syntax___typing___AForExpr___do_typing[] = "typing::AForExpr::do_typing";
4242 void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
4243 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4244 val_t REGB0;
4245 val_t REGB1;
4246 val_t REGB2;
4247 val_t REGB3;
4248 val_t REGB4;
4249 val_t REGB5;
4250 val_t tmp;
4251 static val_t once_value_3; /* Once value */
4252 static val_t once_value_4; /* Once value */
4253 static val_t once_value_5; /* Once value */
4254 static val_t once_value_6; /* Once value */
4255 static val_t once_value_7; /* Once value */
4256 static val_t once_value_8; /* Once value */
4257 static val_t once_value_9; /* Once value */
4258 static val_t once_value_10; /* Once value */
4259 static val_t once_value_11; /* Once value */
4260 static val_t once_value_12; /* Once value */
4261 static val_t once_value_13; /* Once value */
4262 static val_t once_value_14; /* Once value */
4263 static val_t once_value_15; /* Once value */
4264 static val_t once_value_16; /* Once value */
4265 static val_t once_value_17; /* Once value */
4266 static val_t once_value_18; /* Once value */
4267 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4268 fra.me.file = LOCATE_syntax___typing;
4269 fra.me.line = 726;
4270 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4271 fra.me.has_broke = 0;
4272 fra.me.REG_size = 8;
4273 fra.me.nitni_local_ref_head = NULL;
4274 fra.me.REG[0] = NIT_NULL;
4275 fra.me.REG[1] = NIT_NULL;
4276 fra.me.REG[2] = NIT_NULL;
4277 fra.me.REG[3] = NIT_NULL;
4278 fra.me.REG[4] = NIT_NULL;
4279 fra.me.REG[5] = NIT_NULL;
4280 fra.me.REG[6] = NIT_NULL;
4281 fra.me.REG[7] = NIT_NULL;
4282 fra.me.REG[0] = p0;
4283 fra.me.REG[1] = p1;
4284 /* syntax/typing.nit:729 */
4285 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
4286 /* syntax/typing.nit:730 */
4287 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_ids(fra.me.REG[0])(fra.me.REG[0]);
4288 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));
4289 /* syntax/typing.nit:735 */
4290 ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]) = fra.me.REG[2];
4291 /* syntax/typing.nit:738 */
4292 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4293 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4294 /* syntax/typing.nit:739 */
4295 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4296 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4297 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4298 if (UNTAG_Bool(REGB0)) {
4299 goto label2;
4300 }
4301 /* syntax/typing.nit:740 */
4302 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4303 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4304 /* syntax/typing.nit:742 */
4305 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4306 if (UNTAG_Bool(REGB0)) {
4307 /* syntax/typing.nit:743 */
4308 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4309 if (!once_value_3) {
4310 fra.me.REG[5] = BOX_NativeString("Type error: 'for' on a nullable expression.");
4311 REGB0 = TAG_Int(43);
4312 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4313 once_value_3 = fra.me.REG[5];
4314 register_static_object(&once_value_3);
4315 } else fra.me.REG[5] = once_value_3;
4316 fra.me.REG[5] = fra.me.REG[5];
4317 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4318 /* syntax/typing.nit:744 */
4319 goto label2;
4320 }
4321 /* syntax/typing.nit:746 */
4322 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4323 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
4324 /* syntax/typing.nit:749 */
4325 if (!once_value_4) {
4326 if (!once_value_5) {
4327 fra.me.REG[5] = BOX_NativeString("iterate");
4328 REGB0 = TAG_Int(7);
4329 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4330 once_value_5 = fra.me.REG[5];
4331 register_static_object(&once_value_5);
4332 } else fra.me.REG[5] = once_value_5;
4333 fra.me.REG[5] = fra.me.REG[5];
4334 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4335 once_value_4 = fra.me.REG[5];
4336 register_static_object(&once_value_4);
4337 } else fra.me.REG[5] = once_value_4;
4338 fra.me.REG[5] = fra.me.REG[5];
4339 /* syntax/typing.nit:750 */
4340 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4341 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
4342 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4343 if (UNTAG_Bool(REGB0)) {
4344 /* syntax/typing.nit:751 */
4345 fra.me.REG[4] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4346 REGB0 = TAG_Int(3);
4347 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4348 if (!once_value_6) {
4349 fra.me.REG[7] = BOX_NativeString("Type error: Expected a type with an 'iterate' method. Found ");
4350 REGB0 = TAG_Int(60);
4351 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4352 once_value_6 = fra.me.REG[7];
4353 register_static_object(&once_value_6);
4354 } else fra.me.REG[7] = once_value_6;
4355 fra.me.REG[7] = fra.me.REG[7];
4356 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4357 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4358 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4359 if (!once_value_7) {
4360 fra.me.REG[7] = BOX_NativeString(".");
4361 REGB0 = TAG_Int(1);
4362 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
4363 once_value_7 = fra.me.REG[7];
4364 register_static_object(&once_value_7);
4365 } else fra.me.REG[7] = once_value_7;
4366 fra.me.REG[7] = fra.me.REG[7];
4367 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
4368 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
4369 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4370 /* syntax/typing.nit:752 */
4371 goto label2;
4372 }
4373 /* syntax/typing.nit:754 */
4374 fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
4375 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
4376 /* syntax/typing.nit:755 */
4377 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
4378 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4379 fra.me.REG[7] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4380 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[7])(fra.me.REG[7]);
4381 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);
4382 /* syntax/typing.nit:756 */
4383 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
4384 /* syntax/typing.nit:757 */
4385 fra.me.REG[5] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4386 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
4387 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4388 if (UNTAG_Bool(REGB0)) {
4389 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
4390 fra.me.REG[3] = fra.me.REG[5];
4391 }
4392 /* syntax/typing.nit:758 */
4393 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4394 REGB1 = TAG_Int(0);
4395 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4396 if (UNTAG_Bool(REGB2)) {
4397 } else {
4398 /* ../lib/standard/kernel.nit:230 */
4399 REGB1 = TAG_Bool((REGB0)==(REGB1));
4400 /* syntax/typing.nit:758 */
4401 REGB2 = REGB1;
4402 }
4403 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4404 if (UNTAG_Bool(REGB2)) {
4405 /* syntax/typing.nit:759 */
4406 if (!once_value_8) {
4407 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require no arguments.");
4408 REGB2 = TAG_Int(63);
4409 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
4410 once_value_8 = fra.me.REG[5];
4411 register_static_object(&once_value_8);
4412 } else fra.me.REG[5] = once_value_8;
4413 fra.me.REG[5] = fra.me.REG[5];
4414 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4415 /* syntax/typing.nit:760 */
4416 goto label2;
4417 } else {
4418 /* syntax/typing.nit:761 */
4419 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4420 /* ../lib/standard/collection/array.nit:24 */
4421 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4422 if (UNTAG_Bool(REGB2)) {
4423 } else {
4424 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4425 }
4426 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4427 /* syntax/typing.nit:761 */
4428 REGB1 = TAG_Int(1);
4429 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4430 if (UNTAG_Bool(REGB0)) {
4431 } else {
4432 /* ../lib/standard/kernel.nit:230 */
4433 REGB1 = TAG_Bool((REGB2)==(REGB1));
4434 /* syntax/typing.nit:761 */
4435 REGB0 = REGB1;
4436 }
4437 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4438 if (UNTAG_Bool(REGB0)) {
4439 /* syntax/typing.nit:762 */
4440 if (!once_value_9) {
4441 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one closure.");
4442 REGB0 = TAG_Int(62);
4443 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4444 once_value_9 = fra.me.REG[5];
4445 register_static_object(&once_value_9);
4446 } else fra.me.REG[5] = once_value_9;
4447 fra.me.REG[5] = fra.me.REG[5];
4448 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4449 /* syntax/typing.nit:763 */
4450 goto label2;
4451 }
4452 }
4453 /* syntax/typing.nit:765 */
4454 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
4455 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
4456 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4457 if (UNTAG_Bool(REGB0)) {
4458 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 765);
4459 }
4460 fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
4461 fra.me.REG[3] = fra.me.REG[5];
4462 /* syntax/typing.nit:766 */
4463 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
4464 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4465 if (UNTAG_Bool(REGB0)) {
4466 } else {
4467 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4468 if (UNTAG_Bool(REGB1)) {
4469 REGB1 = TAG_Bool(0);
4470 REGB0 = REGB1;
4471 } else {
4472 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
4473 REGB0 = REGB1;
4474 }
4475 }
4476 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4477 if (UNTAG_Bool(REGB0)) {
4478 /* syntax/typing.nit:767 */
4479 if (!once_value_10) {
4480 fra.me.REG[5] = BOX_NativeString("Error: 'iterate' incompatible with 'for': require one procedural closure.");
4481 REGB0 = TAG_Int(73);
4482 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4483 once_value_10 = fra.me.REG[5];
4484 register_static_object(&once_value_10);
4485 } else fra.me.REG[5] = once_value_10;
4486 fra.me.REG[5] = fra.me.REG[5];
4487 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4488 /* syntax/typing.nit:768 */
4489 goto label2;
4490 }
4491 /* ../lib/standard/collection/array.nit:24 */
4492 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4493 if (UNTAG_Bool(REGB0)) {
4494 } else {
4495 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4496 }
4497 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4498 /* syntax/typing.nit:770 */
4499 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4500 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4501 if (UNTAG_Bool(REGB2)) {
4502 } else {
4503 /* ../lib/standard/kernel.nit:230 */
4504 REGB1 = TAG_Bool((REGB0)==(REGB1));
4505 /* syntax/typing.nit:770 */
4506 REGB2 = REGB1;
4507 }
4508 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4509 if (UNTAG_Bool(REGB2)) {
4510 /* syntax/typing.nit:771 */
4511 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4512 REGB1 = TAG_Int(1);
4513 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
4514 if (UNTAG_Bool(REGB0)) {
4515 } else {
4516 /* ../lib/standard/kernel.nit:230 */
4517 REGB1 = TAG_Bool((REGB2)==(REGB1));
4518 /* syntax/typing.nit:771 */
4519 REGB0 = REGB1;
4520 }
4521 if (UNTAG_Bool(REGB0)) {
4522 /* syntax/typing.nit:772 */
4523 REGB0 = TAG_Int(7);
4524 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4525 if (!once_value_11) {
4526 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4527 REGB0 = TAG_Int(16);
4528 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4529 once_value_11 = fra.me.REG[4];
4530 register_static_object(&once_value_11);
4531 } else fra.me.REG[4] = once_value_11;
4532 fra.me.REG[4] = fra.me.REG[4];
4533 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4534 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4535 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4536 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4537 if (!once_value_12) {
4538 fra.me.REG[4] = BOX_NativeString(" variable ");
4539 REGB0 = TAG_Int(10);
4540 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4541 once_value_12 = fra.me.REG[4];
4542 register_static_object(&once_value_12);
4543 } else fra.me.REG[4] = once_value_12;
4544 fra.me.REG[4] = fra.me.REG[4];
4545 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4546 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4547 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4548 if (!once_value_13) {
4549 fra.me.REG[4] = BOX_NativeString(", found ");
4550 REGB0 = TAG_Int(8);
4551 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4552 once_value_13 = fra.me.REG[4];
4553 register_static_object(&once_value_13);
4554 } else fra.me.REG[4] = once_value_13;
4555 fra.me.REG[4] = fra.me.REG[4];
4556 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4557 /* ../lib/standard/collection/array.nit:24 */
4558 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4559 if (UNTAG_Bool(REGB0)) {
4560 } else {
4561 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4562 }
4563 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4564 /* syntax/typing.nit:772 */
4565 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4566 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4567 if (!once_value_14) {
4568 fra.me.REG[4] = BOX_NativeString(".");
4569 REGB0 = TAG_Int(1);
4570 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4571 once_value_14 = fra.me.REG[4];
4572 register_static_object(&once_value_14);
4573 } else fra.me.REG[4] = once_value_14;
4574 fra.me.REG[4] = fra.me.REG[4];
4575 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4576 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4577 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4578 } else {
4579 /* syntax/typing.nit:774 */
4580 REGB0 = TAG_Int(7);
4581 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4582 if (!once_value_15) {
4583 fra.me.REG[4] = BOX_NativeString("Error: Expected ");
4584 REGB0 = TAG_Int(16);
4585 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4586 once_value_15 = fra.me.REG[4];
4587 register_static_object(&once_value_15);
4588 } else fra.me.REG[4] = once_value_15;
4589 fra.me.REG[4] = fra.me.REG[4];
4590 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4591 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
4592 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4593 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4594 if (!once_value_16) {
4595 fra.me.REG[4] = BOX_NativeString(" variables ");
4596 REGB0 = TAG_Int(11);
4597 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4598 once_value_16 = fra.me.REG[4];
4599 register_static_object(&once_value_16);
4600 } else fra.me.REG[4] = once_value_16;
4601 fra.me.REG[4] = fra.me.REG[4];
4602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4603 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
4604 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4605 if (!once_value_17) {
4606 fra.me.REG[4] = BOX_NativeString(", found ");
4607 REGB0 = TAG_Int(8);
4608 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4609 once_value_17 = fra.me.REG[4];
4610 register_static_object(&once_value_17);
4611 } else fra.me.REG[4] = once_value_17;
4612 fra.me.REG[4] = fra.me.REG[4];
4613 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4614 /* ../lib/standard/collection/array.nit:24 */
4615 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4616 if (UNTAG_Bool(REGB0)) {
4617 } else {
4618 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4619 }
4620 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4621 /* syntax/typing.nit:774 */
4622 fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
4623 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4624 if (!once_value_18) {
4625 fra.me.REG[4] = BOX_NativeString(".");
4626 REGB0 = TAG_Int(1);
4627 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
4628 once_value_18 = fra.me.REG[4];
4629 register_static_object(&once_value_18);
4630 } else fra.me.REG[4] = once_value_18;
4631 fra.me.REG[4] = fra.me.REG[4];
4632 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
4633 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
4634 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
4635 }
4636 /* syntax/typing.nit:776 */
4637 goto label2;
4638 }
4639 /* syntax/typing.nit:780 */
4640 REGB0 = TAG_Int(0);
4641 /* ../lib/standard/collection/array.nit:24 */
4642 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
4643 if (UNTAG_Bool(REGB1)) {
4644 } else {
4645 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4646 }
4647 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
4648 /* ../lib/standard/kernel.nit:355 */
4649 while(1) {
4650 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
4651 if (UNTAG_Bool(REGB2)) {
4652 } else {
4653 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4654 }
4655 /* ../lib/standard/kernel.nit:235 */
4656 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
4657 /* ../lib/standard/kernel.nit:355 */
4658 if (UNTAG_Bool(REGB2)) {
4659 /* syntax/typing.nit:780 */
4660 REGB2 = REGB0;
4661 /* ../lib/standard/collection/array.nit:278 */
4662 fra.me.REG[5] = fra.me.REG[2];
4663 REGB3 = REGB2;
4664 /* ../lib/standard/collection/array.nit:280 */
4665 REGB4 = TAG_Int(0);
4666 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4667 if (UNTAG_Bool(REGB5)) {
4668 } else {
4669 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4670 }
4671 /* ../lib/standard/kernel.nit:236 */
4672 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
4673 /* ../lib/standard/collection/array.nit:280 */
4674 if (UNTAG_Bool(REGB4)) {
4675 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
4676 if (UNTAG_Bool(REGB4)) {
4677 } else {
4678 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
4679 }
4680 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
4681 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
4682 if (UNTAG_Bool(REGB5)) {
4683 } else {
4684 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4685 }
4686 /* ../lib/standard/kernel.nit:235 */
4687 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
4688 } else {
4689 /* ../lib/standard/collection/array.nit:280 */
4690 REGB5 = TAG_Bool(0);
4691 REGB4 = REGB5;
4692 }
4693 if (UNTAG_Bool(REGB4)) {
4694 } else {
4695 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
4696 }
4697 /* ../lib/standard/collection/array.nit:281 */
4698 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
4699 REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4700 if (UNTAG_Bool(REGB4)) {
4701 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
4702 }
4703 /* ../lib/standard/collection/array.nit:724 */
4704 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
4705 /* ../lib/standard/collection/array.nit:281 */
4706 goto label19;
4707 label19: while(0);
4708 /* syntax/typing.nit:781 */
4709 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
4710 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
4711 if (UNTAG_Bool(REGB2)) {
4712 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 781);
4713 }
4714 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
4715 /* ../lib/standard/kernel.nit:357 */
4716 REGB2 = TAG_Int(1);
4717 /* ../lib/standard/kernel.nit:238 */
4718 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
4719 /* ../lib/standard/kernel.nit:357 */
4720 REGB0 = REGB2;
4721 } else {
4722 /* ../lib/standard/kernel.nit:355 */
4723 goto label20;
4724 }
4725 }
4726 label20: while(0);
4727 label2: while(0);
4728 stack_frame_head = fra.me.prev;
4729 return;
4730 }
4731 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){
4732 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4733 fun_t CREG[1];
4734 val_t tmp;
4735 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4736 fra.me.file = LOCATE_syntax___typing;
4737 fra.me.line = 0;
4738 fra.me.meth = LOCATE_syntax___typing___AForExpr___do_typing;
4739 fra.me.has_broke = 0;
4740 fra.me.REG_size = 2;
4741 fra.me.nitni_local_ref_head = NULL;
4742 fra.me.REG[0] = NIT_NULL;
4743 fra.me.REG[1] = NIT_NULL;
4744 fra.me.closure_ctx = closctx_param;
4745 fra.me.closure_funs = CREG;
4746 fra.me.REG[0] = p0;
4747 CREG[0] = clos_fun0;
4748 /* syntax/typing.nit:731 */
4749 fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
4750 fra.me.REG[0] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[1], fra.me.REG[0]);
4751 /* syntax/typing.nit:732 */
4752 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(closctx->REG[1])(closctx->REG[1]);
4753 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4754 /* syntax/typing.nit:733 */
4755 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4756 stack_frame_head = fra.me.prev;
4757 return;
4758 }
4759 static const char LOCATE_syntax___typing___AAssertExpr___accept_typing[] = "typing::AAssertExpr::(typing::ANode::accept_typing)";
4760 void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
4761 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4762 val_t REGB0;
4763 val_t REGB1;
4764 val_t tmp;
4765 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4766 fra.me.file = LOCATE_syntax___typing;
4767 fra.me.line = 787;
4768 fra.me.meth = LOCATE_syntax___typing___AAssertExpr___accept_typing;
4769 fra.me.has_broke = 0;
4770 fra.me.REG_size = 4;
4771 fra.me.nitni_local_ref_head = NULL;
4772 fra.me.REG[0] = NIT_NULL;
4773 fra.me.REG[1] = NIT_NULL;
4774 fra.me.REG[2] = NIT_NULL;
4775 fra.me.REG[3] = NIT_NULL;
4776 fra.me.REG[0] = p0;
4777 fra.me.REG[1] = p1;
4778 /* syntax/typing.nit:790 */
4779 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4780 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4781 /* syntax/typing.nit:791 */
4782 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4783 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
4784 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
4785 /* syntax/typing.nit:792 */
4786 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4787 CALL_syntax___typing___AExpr___warn_parentheses(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
4788 /* syntax/typing.nit:795 */
4789 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4790 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4791 if (UNTAG_Bool(REGB0)) {
4792 } else {
4793 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4794 if (UNTAG_Bool(REGB1)) {
4795 REGB1 = TAG_Bool(0);
4796 REGB0 = REGB1;
4797 } else {
4798 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4799 REGB0 = REGB1;
4800 }
4801 }
4802 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4803 if (UNTAG_Bool(REGB0)) {
4804 /* syntax/typing.nit:796 */
4805 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4806 /* syntax/typing.nit:797 */
4807 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4808 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4809 /* syntax/typing.nit:798 */
4810 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
4811 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4812 /* syntax/typing.nit:799 */
4813 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4814 }
4815 /* syntax/typing.nit:803 */
4816 fra.me.REG[3] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4817 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4818 /* syntax/typing.nit:804 */
4819 REGB0 = TAG_Bool(1);
4820 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4821 stack_frame_head = fra.me.prev;
4822 return;
4823 }
4824 static const char LOCATE_syntax___typing___AVarFormExpr___variable[] = "typing::AVarFormExpr::(syntax_base::AVarFormExpr::variable)";
4825 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
4826 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4827 val_t REGB0;
4828 val_t tmp;
4829 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4830 fra.me.file = LOCATE_syntax___typing;
4831 fra.me.line = 810;
4832 fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
4833 fra.me.has_broke = 0;
4834 fra.me.REG_size = 2;
4835 fra.me.nitni_local_ref_head = NULL;
4836 fra.me.REG[0] = NIT_NULL;
4837 fra.me.REG[1] = NIT_NULL;
4838 fra.me.REG[0] = p0;
4839 /* syntax/typing.nit:810 */
4840 fra.me.REG[1] = fra.me.REG[0];
4841 fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
4842 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
4843 if (UNTAG_Bool(REGB0)) {
4844 } else {
4845 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 810);
4846 }
4847 goto label1;
4848 label1: while(0);
4849 stack_frame_head = fra.me.prev;
4850 return fra.me.REG[1];
4851 }
4852 static const char LOCATE_syntax___typing___AVarExpr___its_variable[] = "typing::AVarExpr::(typing::AExpr::its_variable)";
4853 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
4854 struct {struct stack_frame_t me;} fra;
4855 val_t tmp;
4856 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4857 fra.me.file = LOCATE_syntax___typing;
4858 fra.me.line = 814;
4859 fra.me.meth = LOCATE_syntax___typing___AVarExpr___its_variable;
4860 fra.me.has_broke = 0;
4861 fra.me.REG_size = 1;
4862 fra.me.nitni_local_ref_head = NULL;
4863 fra.me.REG[0] = NIT_NULL;
4864 fra.me.REG[0] = p0;
4865 /* syntax/typing.nit:814 */
4866 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4867 goto label1;
4868 label1: while(0);
4869 stack_frame_head = fra.me.prev;
4870 return fra.me.REG[0];
4871 }
4872 static const char LOCATE_syntax___typing___AVarExpr___after_typing[] = "typing::AVarExpr::(typing::ANode::after_typing)";
4873 void syntax___typing___AVarExpr___after_typing(val_t p0, val_t p1){
4874 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4875 val_t REGB0;
4876 val_t REGB1;
4877 val_t tmp;
4878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4879 fra.me.file = LOCATE_syntax___typing;
4880 fra.me.line = 816;
4881 fra.me.meth = LOCATE_syntax___typing___AVarExpr___after_typing;
4882 fra.me.has_broke = 0;
4883 fra.me.REG_size = 4;
4884 fra.me.nitni_local_ref_head = NULL;
4885 fra.me.REG[0] = NIT_NULL;
4886 fra.me.REG[1] = NIT_NULL;
4887 fra.me.REG[2] = NIT_NULL;
4888 fra.me.REG[3] = NIT_NULL;
4889 fra.me.REG[0] = p0;
4890 fra.me.REG[1] = p1;
4891 /* syntax/typing.nit:818 */
4892 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4893 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4894 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
4895 /* syntax/typing.nit:819 */
4896 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4897 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4898 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4899 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
4900 /* syntax/typing.nit:820 */
4901 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
4902 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4903 if (UNTAG_Bool(REGB0)) {
4904 } else {
4905 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4906 if (UNTAG_Bool(REGB1)) {
4907 REGB1 = TAG_Bool(0);
4908 REGB0 = REGB1;
4909 } else {
4910 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4911 REGB0 = REGB1;
4912 }
4913 }
4914 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4915 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4916 stack_frame_head = fra.me.prev;
4917 return;
4918 }
4919 static const char LOCATE_syntax___typing___AVarAssignExpr___after_typing[] = "typing::AVarAssignExpr::(typing::ANode::after_typing)";
4920 void syntax___typing___AVarAssignExpr___after_typing(val_t p0, val_t p1){
4921 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4922 val_t REGB0;
4923 val_t REGB1;
4924 val_t tmp;
4925 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4926 fra.me.file = LOCATE_syntax___typing;
4927 fra.me.line = 825;
4928 fra.me.meth = LOCATE_syntax___typing___AVarAssignExpr___after_typing;
4929 fra.me.has_broke = 0;
4930 fra.me.REG_size = 5;
4931 fra.me.nitni_local_ref_head = NULL;
4932 fra.me.REG[0] = NIT_NULL;
4933 fra.me.REG[1] = NIT_NULL;
4934 fra.me.REG[2] = NIT_NULL;
4935 fra.me.REG[3] = NIT_NULL;
4936 fra.me.REG[4] = NIT_NULL;
4937 fra.me.REG[0] = p0;
4938 fra.me.REG[1] = p1;
4939 /* syntax/typing.nit:827 */
4940 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4941 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4942 /* syntax/typing.nit:830 */
4943 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4944 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4945 fra.me.REG[3] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4946 /* syntax/typing.nit:831 */
4947 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4948 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4949 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4950 if (UNTAG_Bool(REGB0)) {
4951 goto label1;
4952 }
4953 /* syntax/typing.nit:832 */
4954 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4955 if (UNTAG_Bool(REGB0)) {
4956 } else {
4957 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4958 if (UNTAG_Bool(REGB1)) {
4959 REGB1 = TAG_Bool(0);
4960 REGB0 = REGB1;
4961 } else {
4962 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4963 REGB0 = REGB1;
4964 }
4965 }
4966 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4967 if (UNTAG_Bool(REGB0)) {
4968 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4969 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]);
4970 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4971 } else {
4972 REGB1 = TAG_Bool(0);
4973 REGB0 = REGB1;
4974 }
4975 if (UNTAG_Bool(REGB0)) {
4976 goto label1;
4977 }
4978 /* syntax/typing.nit:835 */
4979 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
4980 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
4981 fra.me.REG[4] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4982 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
4983 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]);
4984 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4985 /* syntax/typing.nit:837 */
4986 REGB0 = TAG_Bool(1);
4987 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
4988 label1: while(0);
4989 stack_frame_head = fra.me.prev;
4990 return;
4991 }
4992 static const char LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing[] = "typing::AReassignFormExpr::do_rvalue_typing";
4993 val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1, val_t p2){
4994 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
4995 val_t REGB0;
4996 val_t REGB1;
4997 val_t tmp;
4998 static val_t once_value_2; /* Once value */
4999 static val_t once_value_3; /* Once value */
5000 static val_t once_value_4; /* Once value */
5001 static val_t once_value_5; /* Once value */
5002 static val_t once_value_6; /* Once value */
5003 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5004 fra.me.file = LOCATE_syntax___typing;
5005 fra.me.line = 842;
5006 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___do_rvalue_typing;
5007 fra.me.has_broke = 0;
5008 fra.me.REG_size = 8;
5009 fra.me.nitni_local_ref_head = NULL;
5010 fra.me.REG[0] = NIT_NULL;
5011 fra.me.REG[1] = NIT_NULL;
5012 fra.me.REG[2] = NIT_NULL;
5013 fra.me.REG[3] = NIT_NULL;
5014 fra.me.REG[4] = NIT_NULL;
5015 fra.me.REG[5] = NIT_NULL;
5016 fra.me.REG[6] = NIT_NULL;
5017 fra.me.REG[7] = NIT_NULL;
5018 fra.me.REG[0] = p0;
5019 fra.me.REG[1] = p1;
5020 fra.me.REG[2] = p2;
5021 /* syntax/typing.nit:847 */
5022 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5023 if (UNTAG_Bool(REGB0)) {
5024 } else {
5025 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5026 if (UNTAG_Bool(REGB1)) {
5027 REGB1 = TAG_Bool(0);
5028 REGB0 = REGB1;
5029 } else {
5030 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5031 REGB0 = REGB1;
5032 }
5033 }
5034 if (UNTAG_Bool(REGB0)) {
5035 /* syntax/typing.nit:848 */
5036 fra.me.REG[3] = NIT_NULL;
5037 goto label1;
5038 }
5039 /* syntax/typing.nit:850 */
5040 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
5041 fra.me.REG[4] = CALL_syntax___typing___AAssignOp___method_name(fra.me.REG[4])(fra.me.REG[4]);
5042 /* syntax/typing.nit:851 */
5043 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*/;
5044 if (UNTAG_Bool(REGB0)) {
5045 /* syntax/typing.nit:852 */
5046 REGB0 = TAG_Int(3);
5047 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5048 if (!once_value_2) {
5049 fra.me.REG[6] = BOX_NativeString("Error: Method '");
5050 REGB0 = TAG_Int(15);
5051 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5052 once_value_2 = fra.me.REG[6];
5053 register_static_object(&once_value_2);
5054 } else fra.me.REG[6] = once_value_2;
5055 fra.me.REG[6] = fra.me.REG[6];
5056 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5057 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5058 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5059 if (!once_value_3) {
5060 fra.me.REG[6] = BOX_NativeString("' call on 'null'.");
5061 REGB0 = TAG_Int(17);
5062 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5063 once_value_3 = fra.me.REG[6];
5064 register_static_object(&once_value_3);
5065 } else fra.me.REG[6] = once_value_3;
5066 fra.me.REG[6] = fra.me.REG[6];
5067 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
5068 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
5069 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
5070 /* syntax/typing.nit:853 */
5071 fra.me.REG[3] = NIT_NULL;
5072 goto label1;
5073 }
5074 /* syntax/typing.nit:855 */
5075 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5076 if (UNTAG_Bool(REGB0)) {
5077 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 855);
5078 }
5079 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
5080 /* syntax/typing.nit:856 */
5081 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5082 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5083 if (UNTAG_Bool(REGB0)) {
5084 /* syntax/typing.nit:857 */
5085 REGB0 = TAG_Int(5);
5086 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5087 if (!once_value_4) {
5088 fra.me.REG[7] = BOX_NativeString("Error: Method '");
5089 REGB0 = TAG_Int(15);
5090 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5091 once_value_4 = fra.me.REG[7];
5092 register_static_object(&once_value_4);
5093 } else fra.me.REG[7] = once_value_4;
5094 fra.me.REG[7] = fra.me.REG[7];
5095 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5096 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
5097 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5098 if (!once_value_5) {
5099 fra.me.REG[7] = BOX_NativeString("' doesn't exists in ");
5100 REGB0 = TAG_Int(20);
5101 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5102 once_value_5 = fra.me.REG[7];
5103 register_static_object(&once_value_5);
5104 } else fra.me.REG[7] = once_value_5;
5105 fra.me.REG[7] = fra.me.REG[7];
5106 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5107 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
5108 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5109 if (!once_value_6) {
5110 fra.me.REG[7] = BOX_NativeString(".");
5111 REGB0 = TAG_Int(1);
5112 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
5113 once_value_6 = fra.me.REG[7];
5114 register_static_object(&once_value_6);
5115 } else fra.me.REG[7] = once_value_6;
5116 fra.me.REG[7] = fra.me.REG[7];
5117 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
5118 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
5119 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
5120 /* syntax/typing.nit:858 */
5121 fra.me.REG[3] = NIT_NULL;
5122 goto label1;
5123 }
5124 /* syntax/typing.nit:860 */
5125 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5126 /* syntax/typing.nit:861 */
5127 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
5128 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
5129 REGB0 = TAG_Bool(0);
5130 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);
5131 /* syntax/typing.nit:862 */
5132 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5133 /* syntax/typing.nit:863 */
5134 ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]) = fra.me.REG[4];
5135 /* syntax/typing.nit:864 */
5136 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5137 REGB0 = TAG_Int(0);
5138 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
5139 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
5140 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]);
5141 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5142 if (UNTAG_Bool(REGB0)) {
5143 fra.me.REG[3] = NIT_NULL;
5144 goto label1;
5145 }
5146 /* syntax/typing.nit:865 */
5147 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
5148 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5149 if (UNTAG_Bool(REGB0)) {
5150 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 865);
5151 }
5152 fra.me.REG[2] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
5153 fra.me.REG[3] = fra.me.REG[2];
5154 goto label1;
5155 label1: while(0);
5156 stack_frame_head = fra.me.prev;
5157 return fra.me.REG[3];
5158 }
5159 static const char LOCATE_syntax___typing___AReassignFormExpr___assign_method[] = "typing::AReassignFormExpr::(syntax_base::AReassignFormExpr::assign_method)";
5160 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
5161 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5162 val_t REGB0;
5163 val_t tmp;
5164 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5165 fra.me.file = LOCATE_syntax___typing;
5166 fra.me.line = 868;
5167 fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
5168 fra.me.has_broke = 0;
5169 fra.me.REG_size = 2;
5170 fra.me.nitni_local_ref_head = NULL;
5171 fra.me.REG[0] = NIT_NULL;
5172 fra.me.REG[1] = NIT_NULL;
5173 fra.me.REG[0] = p0;
5174 /* syntax/typing.nit:868 */
5175 fra.me.REG[1] = fra.me.REG[0];
5176 fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
5177 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5178 if (UNTAG_Bool(REGB0)) {
5179 } else {
5180 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 868);
5181 }
5182 goto label1;
5183 label1: while(0);
5184 stack_frame_head = fra.me.prev;
5185 return fra.me.REG[1];
5186 }
5187 static const char LOCATE_syntax___typing___AVarReassignExpr___after_typing[] = "typing::AVarReassignExpr::(typing::ANode::after_typing)";
5188 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
5189 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5190 val_t REGB0;
5191 val_t REGB1;
5192 val_t tmp;
5193 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5194 fra.me.file = LOCATE_syntax___typing;
5195 fra.me.line = 873;
5196 fra.me.meth = LOCATE_syntax___typing___AVarReassignExpr___after_typing;
5197 fra.me.has_broke = 0;
5198 fra.me.REG_size = 5;
5199 fra.me.nitni_local_ref_head = NULL;
5200 fra.me.REG[0] = NIT_NULL;
5201 fra.me.REG[1] = NIT_NULL;
5202 fra.me.REG[2] = NIT_NULL;
5203 fra.me.REG[3] = NIT_NULL;
5204 fra.me.REG[4] = NIT_NULL;
5205 fra.me.REG[0] = p0;
5206 fra.me.REG[1] = p1;
5207 /* syntax/typing.nit:875 */
5208 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5209 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5210 CALL_syntax___flow___FlowContext___check_is_set(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[3]);
5211 /* syntax/typing.nit:876 */
5212 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5213 CALL_syntax___typing___TypingVisitor___mark_is_set(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5214 /* syntax/typing.nit:877 */
5215 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5216 fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5217 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5218 /* syntax/typing.nit:878 */
5219 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]);
5220 /* syntax/typing.nit:879 */
5221 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5222 if (UNTAG_Bool(REGB0)) {
5223 } else {
5224 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5225 if (UNTAG_Bool(REGB1)) {
5226 REGB1 = TAG_Bool(0);
5227 REGB0 = REGB1;
5228 } else {
5229 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5230 REGB0 = REGB1;
5231 }
5232 }
5233 if (UNTAG_Bool(REGB0)) {
5234 goto label1;
5235 }
5236 /* syntax/typing.nit:882 */
5237 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5238 fra.me.REG[4] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5239 fra.me.REG[4] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5240 /* syntax/typing.nit:883 */
5241 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5242 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5243 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5244 if (UNTAG_Bool(REGB0)) {
5245 goto label1;
5246 }
5247 /* syntax/typing.nit:884 */
5248 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5249 if (UNTAG_Bool(REGB0)) {
5250 } else {
5251 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5252 if (UNTAG_Bool(REGB1)) {
5253 REGB1 = TAG_Bool(0);
5254 REGB0 = REGB1;
5255 } else {
5256 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5257 REGB0 = REGB1;
5258 }
5259 }
5260 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5261 if (UNTAG_Bool(REGB0)) {
5262 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5263 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]);
5264 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5265 } else {
5266 REGB1 = TAG_Bool(0);
5267 REGB0 = REGB1;
5268 }
5269 if (UNTAG_Bool(REGB0)) {
5270 goto label1;
5271 }
5272 /* syntax/typing.nit:887 */
5273 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5274 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5275 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]);
5276 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5277 /* syntax/typing.nit:889 */
5278 REGB0 = TAG_Bool(1);
5279 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5280 label1: while(0);
5281 stack_frame_head = fra.me.prev;
5282 return;
5283 }
5284 static const char LOCATE_syntax___typing___AAssignOp___method_name[] = "typing::AAssignOp::method_name";
5285 val_t syntax___typing___AAssignOp___method_name(val_t p0){
5286 struct {struct stack_frame_t me;} fra;
5287 val_t tmp;
5288 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5289 fra.me.file = LOCATE_syntax___typing;
5290 fra.me.line = 894;
5291 fra.me.meth = LOCATE_syntax___typing___AAssignOp___method_name;
5292 fra.me.has_broke = 0;
5293 fra.me.REG_size = 0;
5294 fra.me.nitni_local_ref_head = NULL;
5295 /* syntax/typing.nit:894 */
5296 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 894);
5297 stack_frame_head = fra.me.prev;
5298 return NIT_NULL;
5299 }
5300 static const char LOCATE_syntax___typing___APlusAssignOp___method_name[] = "typing::APlusAssignOp::(typing::AAssignOp::method_name)";
5301 val_t syntax___typing___APlusAssignOp___method_name(val_t p0){
5302 struct {struct stack_frame_t me;} fra;
5303 val_t REGB0;
5304 val_t tmp;
5305 static val_t once_value_1; /* Once value */
5306 static val_t once_value_2; /* Once value */
5307 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5308 fra.me.file = LOCATE_syntax___typing;
5309 fra.me.line = 897;
5310 fra.me.meth = LOCATE_syntax___typing___APlusAssignOp___method_name;
5311 fra.me.has_broke = 0;
5312 fra.me.REG_size = 1;
5313 fra.me.nitni_local_ref_head = NULL;
5314 fra.me.REG[0] = NIT_NULL;
5315 fra.me.REG[0] = p0;
5316 /* syntax/typing.nit:897 */
5317 if (!once_value_1) {
5318 if (!once_value_2) {
5319 fra.me.REG[0] = BOX_NativeString("+");
5320 REGB0 = TAG_Int(1);
5321 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5322 once_value_2 = fra.me.REG[0];
5323 register_static_object(&once_value_2);
5324 } else fra.me.REG[0] = once_value_2;
5325 fra.me.REG[0] = fra.me.REG[0];
5326 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5327 once_value_1 = fra.me.REG[0];
5328 register_static_object(&once_value_1);
5329 } else fra.me.REG[0] = once_value_1;
5330 fra.me.REG[0] = fra.me.REG[0];
5331 goto label3;
5332 label3: while(0);
5333 stack_frame_head = fra.me.prev;
5334 return fra.me.REG[0];
5335 }
5336 static const char LOCATE_syntax___typing___AMinusAssignOp___method_name[] = "typing::AMinusAssignOp::(typing::AAssignOp::method_name)";
5337 val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
5338 struct {struct stack_frame_t me;} fra;
5339 val_t REGB0;
5340 val_t tmp;
5341 static val_t once_value_1; /* Once value */
5342 static val_t once_value_2; /* Once value */
5343 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5344 fra.me.file = LOCATE_syntax___typing;
5345 fra.me.line = 900;
5346 fra.me.meth = LOCATE_syntax___typing___AMinusAssignOp___method_name;
5347 fra.me.has_broke = 0;
5348 fra.me.REG_size = 1;
5349 fra.me.nitni_local_ref_head = NULL;
5350 fra.me.REG[0] = NIT_NULL;
5351 fra.me.REG[0] = p0;
5352 /* syntax/typing.nit:900 */
5353 if (!once_value_1) {
5354 if (!once_value_2) {
5355 fra.me.REG[0] = BOX_NativeString("-");
5356 REGB0 = TAG_Int(1);
5357 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
5358 once_value_2 = fra.me.REG[0];
5359 register_static_object(&once_value_2);
5360 } else fra.me.REG[0] = once_value_2;
5361 fra.me.REG[0] = fra.me.REG[0];
5362 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
5363 once_value_1 = fra.me.REG[0];
5364 register_static_object(&once_value_1);
5365 } else fra.me.REG[0] = once_value_1;
5366 fra.me.REG[0] = fra.me.REG[0];
5367 goto label3;
5368 label3: while(0);
5369 stack_frame_head = fra.me.prev;
5370 return fra.me.REG[0];
5371 }
5372 static const char LOCATE_syntax___typing___ASelfExpr___variable[] = "typing::ASelfExpr::(syntax_base::ASelfExpr::variable)";
5373 val_t syntax___typing___ASelfExpr___variable(val_t p0){
5374 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5375 val_t REGB0;
5376 val_t tmp;
5377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5378 fra.me.file = LOCATE_syntax___typing;
5379 fra.me.line = 905;
5380 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
5381 fra.me.has_broke = 0;
5382 fra.me.REG_size = 2;
5383 fra.me.nitni_local_ref_head = NULL;
5384 fra.me.REG[0] = NIT_NULL;
5385 fra.me.REG[1] = NIT_NULL;
5386 fra.me.REG[0] = p0;
5387 /* syntax/typing.nit:905 */
5388 fra.me.REG[1] = fra.me.REG[0];
5389 fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
5390 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
5391 if (UNTAG_Bool(REGB0)) {
5392 } else {
5393 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 905);
5394 }
5395 goto label1;
5396 label1: while(0);
5397 stack_frame_head = fra.me.prev;
5398 return fra.me.REG[1];
5399 }
5400 static const char LOCATE_syntax___typing___ASelfExpr___its_variable[] = "typing::ASelfExpr::(typing::AExpr::its_variable)";
5401 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
5402 struct {struct stack_frame_t me;} fra;
5403 val_t tmp;
5404 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5405 fra.me.file = LOCATE_syntax___typing;
5406 fra.me.line = 907;
5407 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___its_variable;
5408 fra.me.has_broke = 0;
5409 fra.me.REG_size = 1;
5410 fra.me.nitni_local_ref_head = NULL;
5411 fra.me.REG[0] = NIT_NULL;
5412 fra.me.REG[0] = p0;
5413 /* syntax/typing.nit:907 */
5414 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5415 goto label1;
5416 label1: while(0);
5417 stack_frame_head = fra.me.prev;
5418 return fra.me.REG[0];
5419 }
5420 static const char LOCATE_syntax___typing___ASelfExpr___after_typing[] = "typing::ASelfExpr::(typing::ANode::after_typing)";
5421 void syntax___typing___ASelfExpr___after_typing(val_t p0, val_t p1){
5422 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5423 val_t REGB0;
5424 val_t tmp;
5425 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5426 fra.me.file = LOCATE_syntax___typing;
5427 fra.me.line = 909;
5428 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___after_typing;
5429 fra.me.has_broke = 0;
5430 fra.me.REG_size = 3;
5431 fra.me.nitni_local_ref_head = NULL;
5432 fra.me.REG[0] = NIT_NULL;
5433 fra.me.REG[1] = NIT_NULL;
5434 fra.me.REG[2] = NIT_NULL;
5435 fra.me.REG[0] = p0;
5436 fra.me.REG[1] = p1;
5437 /* syntax/typing.nit:911 */
5438 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
5439 ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]) = fra.me.REG[2];
5440 /* syntax/typing.nit:912 */
5441 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5442 fra.me.REG[2] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
5443 fra.me.REG[2] = CALL_syntax___flow___FlowContext___stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5444 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5445 /* syntax/typing.nit:913 */
5446 REGB0 = TAG_Bool(1);
5447 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5448 stack_frame_head = fra.me.prev;
5449 return;
5450 }
5451 static const char LOCATE_syntax___typing___ASelfExpr___is_self[] = "typing::ASelfExpr::(typing::AExpr::is_self)";
5452 val_t syntax___typing___ASelfExpr___is_self(val_t p0){
5453 struct {struct stack_frame_t me;} fra;
5454 val_t REGB0;
5455 val_t tmp;
5456 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5457 fra.me.file = LOCATE_syntax___typing;
5458 fra.me.line = 916;
5459 fra.me.meth = LOCATE_syntax___typing___ASelfExpr___is_self;
5460 fra.me.has_broke = 0;
5461 fra.me.REG_size = 1;
5462 fra.me.nitni_local_ref_head = NULL;
5463 fra.me.REG[0] = NIT_NULL;
5464 fra.me.REG[0] = p0;
5465 /* syntax/typing.nit:916 */
5466 REGB0 = TAG_Bool(1);
5467 goto label1;
5468 label1: while(0);
5469 stack_frame_head = fra.me.prev;
5470 return REGB0;
5471 }
5472 static const char LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self[] = "typing::AImplicitSelfExpr::(typing::AExpr::is_implicit_self)";
5473 val_t syntax___typing___AImplicitSelfExpr___is_implicit_self(val_t p0){
5474 struct {struct stack_frame_t me;} fra;
5475 val_t REGB0;
5476 val_t tmp;
5477 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5478 fra.me.file = LOCATE_syntax___typing;
5479 fra.me.line = 920;
5480 fra.me.meth = LOCATE_syntax___typing___AImplicitSelfExpr___is_implicit_self;
5481 fra.me.has_broke = 0;
5482 fra.me.REG_size = 1;
5483 fra.me.nitni_local_ref_head = NULL;
5484 fra.me.REG[0] = NIT_NULL;
5485 fra.me.REG[0] = p0;
5486 /* syntax/typing.nit:920 */
5487 REGB0 = TAG_Bool(1);
5488 goto label1;
5489 label1: while(0);
5490 stack_frame_head = fra.me.prev;
5491 return REGB0;
5492 }
5493 static const char LOCATE_syntax___typing___AIfexprExpr___accept_typing[] = "typing::AIfexprExpr::(typing::ANode::accept_typing)";
5494 void syntax___typing___AIfexprExpr___accept_typing(val_t p0, val_t p1){
5495 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5496 val_t REGB0;
5497 val_t REGB1;
5498 val_t tmp;
5499 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5500 fra.me.file = LOCATE_syntax___typing;
5501 fra.me.line = 924;
5502 fra.me.meth = LOCATE_syntax___typing___AIfexprExpr___accept_typing;
5503 fra.me.has_broke = 0;
5504 fra.me.REG_size = 5;
5505 fra.me.nitni_local_ref_head = NULL;
5506 fra.me.REG[0] = NIT_NULL;
5507 fra.me.REG[1] = NIT_NULL;
5508 fra.me.REG[2] = NIT_NULL;
5509 fra.me.REG[3] = NIT_NULL;
5510 fra.me.REG[4] = NIT_NULL;
5511 fra.me.REG[0] = p0;
5512 fra.me.REG[1] = p1;
5513 /* syntax/typing.nit:926 */
5514 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5515 /* syntax/typing.nit:929 */
5516 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5517 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5518 /* syntax/typing.nit:930 */
5519 fra.me.REG[3] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5520 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5521 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5522 /* syntax/typing.nit:933 */
5523 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5524 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5525 /* syntax/typing.nit:936 */
5526 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5527 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5528 /* syntax/typing.nit:939 */
5529 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5530 /* syntax/typing.nit:942 */
5531 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5532 /* syntax/typing.nit:943 */
5533 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5534 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5535 /* syntax/typing.nit:946 */
5536 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5537 CALL_syntax___typing___TypingVisitor___enter_visit_block(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5538 /* syntax/typing.nit:949 */
5539 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5540 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5541 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]);
5542 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5543 /* syntax/typing.nit:951 */
5544 REGB0 = TAG_Int(2);
5545 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5546 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
5547 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5548 fra.me.REG[4] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
5549 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
5550 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]);
5551 /* syntax/typing.nit:952 */
5552 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5553 if (UNTAG_Bool(REGB0)) {
5554 } else {
5555 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5556 if (UNTAG_Bool(REGB1)) {
5557 REGB1 = TAG_Bool(0);
5558 REGB0 = REGB1;
5559 } else {
5560 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5561 REGB0 = REGB1;
5562 }
5563 }
5564 if (UNTAG_Bool(REGB0)) {
5565 goto label1;
5566 }
5567 /* syntax/typing.nit:954 */
5568 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5569 /* syntax/typing.nit:955 */
5570 REGB0 = TAG_Bool(1);
5571 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5572 label1: while(0);
5573 stack_frame_head = fra.me.prev;
5574 return;
5575 }
5576 static const char LOCATE_syntax___typing___ABoolExpr___after_typing[] = "typing::ABoolExpr::(typing::ANode::after_typing)";
5577 void syntax___typing___ABoolExpr___after_typing(val_t p0, val_t p1){
5578 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5579 val_t REGB0;
5580 val_t tmp;
5581 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5582 fra.me.file = LOCATE_syntax___typing;
5583 fra.me.line = 960;
5584 fra.me.meth = LOCATE_syntax___typing___ABoolExpr___after_typing;
5585 fra.me.has_broke = 0;
5586 fra.me.REG_size = 2;
5587 fra.me.nitni_local_ref_head = NULL;
5588 fra.me.REG[0] = NIT_NULL;
5589 fra.me.REG[1] = NIT_NULL;
5590 fra.me.REG[0] = p0;
5591 fra.me.REG[1] = p1;
5592 /* syntax/typing.nit:962 */
5593 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5594 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5595 /* syntax/typing.nit:963 */
5596 REGB0 = TAG_Bool(1);
5597 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5598 stack_frame_head = fra.me.prev;
5599 return;
5600 }
5601 static const char LOCATE_syntax___typing___AOrExpr___accept_typing[] = "typing::AOrExpr::(typing::ANode::accept_typing)";
5602 void syntax___typing___AOrExpr___accept_typing(val_t p0, val_t p1){
5603 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5604 val_t REGB0;
5605 val_t REGB1;
5606 val_t tmp;
5607 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5608 fra.me.file = LOCATE_syntax___typing;
5609 fra.me.line = 968;
5610 fra.me.meth = LOCATE_syntax___typing___AOrExpr___accept_typing;
5611 fra.me.has_broke = 0;
5612 fra.me.REG_size = 5;
5613 fra.me.nitni_local_ref_head = NULL;
5614 fra.me.REG[0] = NIT_NULL;
5615 fra.me.REG[1] = NIT_NULL;
5616 fra.me.REG[2] = NIT_NULL;
5617 fra.me.REG[3] = NIT_NULL;
5618 fra.me.REG[4] = NIT_NULL;
5619 fra.me.REG[0] = p0;
5620 fra.me.REG[1] = p1;
5621 /* syntax/typing.nit:970 */
5622 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5623 /* syntax/typing.nit:971 */
5624 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5625 /* syntax/typing.nit:972 */
5626 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5627 /* syntax/typing.nit:975 */
5628 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5629 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5630 /* syntax/typing.nit:978 */
5631 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5632 CALL_syntax___typing___TypingVisitor___use_if_false_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5633 /* syntax/typing.nit:981 */
5634 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5635 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5636 /* syntax/typing.nit:982 */
5637 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5638 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5639 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5640 if (UNTAG_Bool(REGB0)) {
5641 } else {
5642 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5643 if (UNTAG_Bool(REGB1)) {
5644 REGB1 = TAG_Bool(0);
5645 REGB0 = REGB1;
5646 } else {
5647 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5648 REGB0 = REGB1;
5649 }
5650 }
5651 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5652 if (UNTAG_Bool(REGB0)) {
5653 /* syntax/typing.nit:983 */
5654 fra.me.REG[4] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5655 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_false_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5656 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5657 } else {
5658 /* syntax/typing.nit:985 */
5659 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5660 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5661 }
5662 /* syntax/typing.nit:988 */
5663 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5664 /* syntax/typing.nit:990 */
5665 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5666 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5667 /* syntax/typing.nit:991 */
5668 fra.me.REG[2] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5669 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5670 /* syntax/typing.nit:992 */
5671 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5672 /* syntax/typing.nit:993 */
5673 REGB0 = TAG_Bool(1);
5674 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5675 stack_frame_head = fra.me.prev;
5676 return;
5677 }
5678 static const char LOCATE_syntax___typing___AAndExpr___accept_typing[] = "typing::AAndExpr::(typing::ANode::accept_typing)";
5679 void syntax___typing___AAndExpr___accept_typing(val_t p0, val_t p1){
5680 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5681 val_t REGB0;
5682 val_t REGB1;
5683 val_t tmp;
5684 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5685 fra.me.file = LOCATE_syntax___typing;
5686 fra.me.line = 998;
5687 fra.me.meth = LOCATE_syntax___typing___AAndExpr___accept_typing;
5688 fra.me.has_broke = 0;
5689 fra.me.REG_size = 5;
5690 fra.me.nitni_local_ref_head = NULL;
5691 fra.me.REG[0] = NIT_NULL;
5692 fra.me.REG[1] = NIT_NULL;
5693 fra.me.REG[2] = NIT_NULL;
5694 fra.me.REG[3] = NIT_NULL;
5695 fra.me.REG[4] = NIT_NULL;
5696 fra.me.REG[0] = p0;
5697 fra.me.REG[1] = p1;
5698 /* syntax/typing.nit:1000 */
5699 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5700 /* syntax/typing.nit:1001 */
5701 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5702 /* syntax/typing.nit:1004 */
5703 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5704 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5705 /* syntax/typing.nit:1007 */
5706 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5707 CALL_syntax___typing___TypingVisitor___use_if_true_flow_ctx(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5708 /* syntax/typing.nit:1010 */
5709 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5710 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5711 /* syntax/typing.nit:1011 */
5712 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5713 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5714 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5715 if (UNTAG_Bool(REGB0)) {
5716 } else {
5717 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5718 if (UNTAG_Bool(REGB1)) {
5719 REGB1 = TAG_Bool(0);
5720 REGB0 = REGB1;
5721 } else {
5722 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5723 REGB0 = REGB1;
5724 }
5725 }
5726 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5727 if (UNTAG_Bool(REGB0)) {
5728 /* syntax/typing.nit:1012 */
5729 fra.me.REG[4] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5730 fra.me.REG[4] = CALL_syntax___typing___AExpr___if_true_flow_ctx(fra.me.REG[4])(fra.me.REG[4]);
5731 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5732 } else {
5733 /* syntax/typing.nit:1014 */
5734 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5735 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
5736 }
5737 /* syntax/typing.nit:1017 */
5738 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5739 /* syntax/typing.nit:1019 */
5740 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5741 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5742 /* syntax/typing.nit:1020 */
5743 fra.me.REG[2] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5744 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5745 /* syntax/typing.nit:1021 */
5746 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
5747 /* syntax/typing.nit:1022 */
5748 REGB0 = TAG_Bool(1);
5749 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5750 stack_frame_head = fra.me.prev;
5751 return;
5752 }
5753 static const char LOCATE_syntax___typing___ANotExpr___after_typing[] = "typing::ANotExpr::(typing::ANode::after_typing)";
5754 void syntax___typing___ANotExpr___after_typing(val_t p0, val_t p1){
5755 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5756 val_t REGB0;
5757 val_t tmp;
5758 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5759 fra.me.file = LOCATE_syntax___typing;
5760 fra.me.line = 1027;
5761 fra.me.meth = LOCATE_syntax___typing___ANotExpr___after_typing;
5762 fra.me.has_broke = 0;
5763 fra.me.REG_size = 4;
5764 fra.me.nitni_local_ref_head = NULL;
5765 fra.me.REG[0] = NIT_NULL;
5766 fra.me.REG[1] = NIT_NULL;
5767 fra.me.REG[2] = NIT_NULL;
5768 fra.me.REG[3] = NIT_NULL;
5769 fra.me.REG[0] = p0;
5770 fra.me.REG[1] = p1;
5771 /* syntax/typing.nit:1029 */
5772 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5773 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5774 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5775 /* syntax/typing.nit:1032 */
5776 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5777 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[3]);
5778 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5779 /* syntax/typing.nit:1033 */
5780 fra.me.REG[3] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5781 fra.me.REG[3] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[3]);
5782 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[3];
5783 /* syntax/typing.nit:1035 */
5784 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
5785 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5786 /* syntax/typing.nit:1036 */
5787 REGB0 = TAG_Bool(1);
5788 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5789 stack_frame_head = fra.me.prev;
5790 return;
5791 }
5792 static const char LOCATE_syntax___typing___AOrElseExpr___after_typing[] = "typing::AOrElseExpr::(typing::ANode::after_typing)";
5793 void syntax___typing___AOrElseExpr___after_typing(val_t p0, val_t p1){
5794 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5795 val_t REGB0;
5796 val_t REGB1;
5797 val_t tmp;
5798 static val_t once_value_1; /* Once value */
5799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5800 fra.me.file = LOCATE_syntax___typing;
5801 fra.me.line = 1041;
5802 fra.me.meth = LOCATE_syntax___typing___AOrElseExpr___after_typing;
5803 fra.me.has_broke = 0;
5804 fra.me.REG_size = 7;
5805 fra.me.nitni_local_ref_head = NULL;
5806 fra.me.REG[0] = NIT_NULL;
5807 fra.me.REG[1] = NIT_NULL;
5808 fra.me.REG[2] = NIT_NULL;
5809 fra.me.REG[3] = NIT_NULL;
5810 fra.me.REG[4] = NIT_NULL;
5811 fra.me.REG[5] = NIT_NULL;
5812 fra.me.REG[6] = NIT_NULL;
5813 fra.me.REG[0] = p0;
5814 fra.me.REG[1] = p1;
5815 /* syntax/typing.nit:1043 */
5816 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5817 /* syntax/typing.nit:1046 */
5818 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5819 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5820 /* syntax/typing.nit:1047 */
5821 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5822 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5823 /* syntax/typing.nit:1050 */
5824 fra.me.REG[3] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5825 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5826 /* syntax/typing.nit:1051 */
5827 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5828 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5829 if (UNTAG_Bool(REGB0)) {
5830 /* syntax/typing.nit:1052 */
5831 fra.me.REG[4] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5832 if (!once_value_1) {
5833 fra.me.REG[5] = BOX_NativeString("Warning: left operand of a 'or else' is not a nullable type.");
5834 REGB0 = TAG_Int(60);
5835 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
5836 once_value_1 = fra.me.REG[5];
5837 register_static_object(&once_value_1);
5838 } else fra.me.REG[5] = once_value_1;
5839 fra.me.REG[5] = fra.me.REG[5];
5840 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5841 } else {
5842 /* syntax/typing.nit:1054 */
5843 fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[3])(fra.me.REG[3]);
5844 fra.me.REG[3] = fra.me.REG[5];
5845 }
5846 /* syntax/typing.nit:1058 */
5847 fra.me.REG[5] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5848 fra.me.REG[5] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[5])(fra.me.REG[5]);
5849 /* syntax/typing.nit:1059 */
5850 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5851 if (UNTAG_Bool(REGB0)) {
5852 } else {
5853 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5854 if (UNTAG_Bool(REGB1)) {
5855 REGB1 = TAG_Bool(0);
5856 REGB0 = REGB1;
5857 } else {
5858 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5859 REGB0 = REGB1;
5860 }
5861 }
5862 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5863 if (UNTAG_Bool(REGB0)) {
5864 /* syntax/typing.nit:1060 */
5865 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
5866 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
5867 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]);
5868 }
5869 /* syntax/typing.nit:1064 */
5870 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5871 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5872 /* syntax/typing.nit:1065 */
5873 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5874 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
5875 /* syntax/typing.nit:1068 */
5876 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5877 /* syntax/typing.nit:1071 */
5878 REGB0 = TAG_Int(1);
5879 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5880 fra.me.REG[6] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5881 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
5882 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]);
5883 /* syntax/typing.nit:1072 */
5884 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5885 if (UNTAG_Bool(REGB0)) {
5886 } else {
5887 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5888 if (UNTAG_Bool(REGB1)) {
5889 REGB1 = TAG_Bool(0);
5890 REGB0 = REGB1;
5891 } else {
5892 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5893 REGB0 = REGB1;
5894 }
5895 }
5896 if (UNTAG_Bool(REGB0)) {
5897 goto label2;
5898 }
5899 /* syntax/typing.nit:1074 */
5900 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
5901 /* syntax/typing.nit:1075 */
5902 REGB0 = TAG_Bool(1);
5903 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5904 label2: while(0);
5905 stack_frame_head = fra.me.prev;
5906 return;
5907 }
5908 static const char LOCATE_syntax___typing___AIntExpr___after_typing[] = "typing::AIntExpr::(typing::ANode::after_typing)";
5909 void syntax___typing___AIntExpr___after_typing(val_t p0, val_t p1){
5910 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5911 val_t REGB0;
5912 val_t tmp;
5913 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5914 fra.me.file = LOCATE_syntax___typing;
5915 fra.me.line = 1080;
5916 fra.me.meth = LOCATE_syntax___typing___AIntExpr___after_typing;
5917 fra.me.has_broke = 0;
5918 fra.me.REG_size = 2;
5919 fra.me.nitni_local_ref_head = NULL;
5920 fra.me.REG[0] = NIT_NULL;
5921 fra.me.REG[1] = NIT_NULL;
5922 fra.me.REG[0] = p0;
5923 fra.me.REG[1] = p1;
5924 /* syntax/typing.nit:1082 */
5925 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
5926 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5927 /* syntax/typing.nit:1083 */
5928 REGB0 = TAG_Bool(1);
5929 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5930 stack_frame_head = fra.me.prev;
5931 return;
5932 }
5933 static const char LOCATE_syntax___typing___AFloatExpr___after_typing[] = "typing::AFloatExpr::(typing::ANode::after_typing)";
5934 void syntax___typing___AFloatExpr___after_typing(val_t p0, val_t p1){
5935 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5936 val_t REGB0;
5937 val_t tmp;
5938 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5939 fra.me.file = LOCATE_syntax___typing;
5940 fra.me.line = 1088;
5941 fra.me.meth = LOCATE_syntax___typing___AFloatExpr___after_typing;
5942 fra.me.has_broke = 0;
5943 fra.me.REG_size = 2;
5944 fra.me.nitni_local_ref_head = NULL;
5945 fra.me.REG[0] = NIT_NULL;
5946 fra.me.REG[1] = NIT_NULL;
5947 fra.me.REG[0] = p0;
5948 fra.me.REG[1] = p1;
5949 /* syntax/typing.nit:1090 */
5950 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
5951 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5952 /* syntax/typing.nit:1091 */
5953 REGB0 = TAG_Bool(1);
5954 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5955 stack_frame_head = fra.me.prev;
5956 return;
5957 }
5958 static const char LOCATE_syntax___typing___ACharExpr___after_typing[] = "typing::ACharExpr::(typing::ANode::after_typing)";
5959 void syntax___typing___ACharExpr___after_typing(val_t p0, val_t p1){
5960 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5961 val_t REGB0;
5962 val_t tmp;
5963 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5964 fra.me.file = LOCATE_syntax___typing;
5965 fra.me.line = 1096;
5966 fra.me.meth = LOCATE_syntax___typing___ACharExpr___after_typing;
5967 fra.me.has_broke = 0;
5968 fra.me.REG_size = 2;
5969 fra.me.nitni_local_ref_head = NULL;
5970 fra.me.REG[0] = NIT_NULL;
5971 fra.me.REG[1] = NIT_NULL;
5972 fra.me.REG[0] = p0;
5973 fra.me.REG[1] = p1;
5974 /* syntax/typing.nit:1098 */
5975 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
5976 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
5977 /* syntax/typing.nit:1099 */
5978 REGB0 = TAG_Bool(1);
5979 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
5980 stack_frame_head = fra.me.prev;
5981 return;
5982 }
5983 static const char LOCATE_syntax___typing___AStringFormExpr___after_typing[] = "typing::AStringFormExpr::(typing::ANode::after_typing)";
5984 void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
5985 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5986 val_t REGB0;
5987 val_t tmp;
5988 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5989 fra.me.file = LOCATE_syntax___typing;
5990 fra.me.line = 1104;
5991 fra.me.meth = LOCATE_syntax___typing___AStringFormExpr___after_typing;
5992 fra.me.has_broke = 0;
5993 fra.me.REG_size = 2;
5994 fra.me.nitni_local_ref_head = NULL;
5995 fra.me.REG[0] = NIT_NULL;
5996 fra.me.REG[1] = NIT_NULL;
5997 fra.me.REG[0] = p0;
5998 fra.me.REG[1] = p1;
5999 /* syntax/typing.nit:1106 */
6000 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
6001 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6002 /* syntax/typing.nit:1107 */
6003 REGB0 = TAG_Bool(1);
6004 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6005 stack_frame_head = fra.me.prev;
6006 return;
6007 }
6008 static const char LOCATE_syntax___typing___ASuperstringExpr___atype[] = "typing::ASuperstringExpr::(syntax_base::ASuperstringExpr::atype)";
6009 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
6010 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6011 val_t REGB0;
6012 val_t tmp;
6013 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6014 fra.me.file = LOCATE_syntax___typing;
6015 fra.me.line = 1112;
6016 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
6017 fra.me.has_broke = 0;
6018 fra.me.REG_size = 2;
6019 fra.me.nitni_local_ref_head = NULL;
6020 fra.me.REG[0] = NIT_NULL;
6021 fra.me.REG[1] = NIT_NULL;
6022 fra.me.REG[0] = p0;
6023 /* syntax/typing.nit:1112 */
6024 fra.me.REG[1] = fra.me.REG[0];
6025 fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
6026 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
6027 if (UNTAG_Bool(REGB0)) {
6028 } else {
6029 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1112);
6030 }
6031 goto label1;
6032 label1: while(0);
6033 stack_frame_head = fra.me.prev;
6034 return fra.me.REG[1];
6035 }
6036 static const char LOCATE_syntax___typing___ASuperstringExpr___after_typing[] = "typing::ASuperstringExpr::(typing::ANode::after_typing)";
6037 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
6038 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6039 val_t REGB0;
6040 val_t tmp;
6041 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6042 fra.me.file = LOCATE_syntax___typing;
6043 fra.me.line = 1114;
6044 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6045 fra.me.has_broke = 0;
6046 fra.me.REG_size = 5;
6047 fra.me.nitni_local_ref_head = NULL;
6048 fra.me.REG[0] = NIT_NULL;
6049 fra.me.REG[1] = NIT_NULL;
6050 fra.me.REG[2] = NIT_NULL;
6051 fra.me.REG[3] = NIT_NULL;
6052 fra.me.REG[4] = NIT_NULL;
6053 fra.me.REG[0] = p0;
6054 fra.me.REG[1] = p1;
6055 /* syntax/typing.nit:1116 */
6056 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
6057 /* syntax/typing.nit:1117 */
6058 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
6059 /* syntax/typing.nit:1118 */
6060 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
6061 /* syntax/typing.nit:1119 */
6062 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6063 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));
6064 /* syntax/typing.nit:1120 */
6065 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6066 /* syntax/typing.nit:1121 */
6067 ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]) = fra.me.REG[3];
6068 /* syntax/typing.nit:1122 */
6069 REGB0 = TAG_Bool(1);
6070 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6071 stack_frame_head = fra.me.prev;
6072 return;
6073 }
6074 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){
6075 struct {struct stack_frame_t me;} fra;
6076 fun_t CREG[1];
6077 val_t tmp;
6078 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6079 fra.me.file = LOCATE_syntax___typing;
6080 fra.me.line = 0;
6081 fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___after_typing;
6082 fra.me.has_broke = 0;
6083 fra.me.REG_size = 1;
6084 fra.me.nitni_local_ref_head = NULL;
6085 fra.me.REG[0] = NIT_NULL;
6086 fra.me.closure_ctx = closctx_param;
6087 fra.me.closure_funs = CREG;
6088 fra.me.REG[0] = p0;
6089 CREG[0] = clos_fun0;
6090 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], closctx->REG[2]);
6091 stack_frame_head = fra.me.prev;
6092 return;
6093 }
6094 static const char LOCATE_syntax___typing___ANullExpr___after_typing[] = "typing::ANullExpr::(typing::ANode::after_typing)";
6095 void syntax___typing___ANullExpr___after_typing(val_t p0, val_t p1){
6096 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6097 val_t REGB0;
6098 val_t tmp;
6099 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6100 fra.me.file = LOCATE_syntax___typing;
6101 fra.me.line = 1127;
6102 fra.me.meth = LOCATE_syntax___typing___ANullExpr___after_typing;
6103 fra.me.has_broke = 0;
6104 fra.me.REG_size = 2;
6105 fra.me.nitni_local_ref_head = NULL;
6106 fra.me.REG[0] = NIT_NULL;
6107 fra.me.REG[1] = NIT_NULL;
6108 fra.me.REG[0] = p0;
6109 fra.me.REG[1] = p1;
6110 /* syntax/typing.nit:1129 */
6111 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
6112 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
6113 /* syntax/typing.nit:1130 */
6114 REGB0 = TAG_Bool(1);
6115 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6116 stack_frame_head = fra.me.prev;
6117 return;
6118 }
6119 static const char LOCATE_syntax___typing___AArrayExpr___after_typing[] = "typing::AArrayExpr::(typing::ANode::after_typing)";
6120 void syntax___typing___AArrayExpr___after_typing(val_t p0, val_t p1){
6121 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6122 val_t REGB0;
6123 val_t REGB1;
6124 val_t tmp;
6125 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6126 fra.me.file = LOCATE_syntax___typing;
6127 fra.me.line = 1135;
6128 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___after_typing;
6129 fra.me.has_broke = 0;
6130 fra.me.REG_size = 3;
6131 fra.me.nitni_local_ref_head = NULL;
6132 fra.me.REG[0] = NIT_NULL;
6133 fra.me.REG[1] = NIT_NULL;
6134 fra.me.REG[2] = NIT_NULL;
6135 fra.me.REG[0] = p0;
6136 fra.me.REG[1] = p1;
6137 /* syntax/typing.nit:1137 */
6138 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
6139 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
6140 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]);
6141 /* syntax/typing.nit:1138 */
6142 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6143 if (UNTAG_Bool(REGB0)) {
6144 } else {
6145 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6146 if (UNTAG_Bool(REGB1)) {
6147 REGB1 = TAG_Bool(0);
6148 REGB0 = REGB1;
6149 } else {
6150 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6151 REGB0 = REGB1;
6152 }
6153 }
6154 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6155 if (UNTAG_Bool(REGB0)) {
6156 CALL_syntax___typing___AArrayExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
6157 }
6158 stack_frame_head = fra.me.prev;
6159 return;
6160 }
6161 static const char LOCATE_syntax___typing___AArrayExpr___do_typing[] = "typing::AArrayExpr::do_typing";
6162 void syntax___typing___AArrayExpr___do_typing(val_t p0, val_t p1, val_t p2){
6163 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
6164 val_t REGB0;
6165 val_t tmp;
6166 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6167 fra.me.file = LOCATE_syntax___typing;
6168 fra.me.line = 1141;
6169 fra.me.meth = LOCATE_syntax___typing___AArrayExpr___do_typing;
6170 fra.me.has_broke = 0;
6171 fra.me.REG_size = 3;
6172 fra.me.nitni_local_ref_head = NULL;
6173 fra.me.REG[0] = NIT_NULL;
6174 fra.me.REG[1] = NIT_NULL;
6175 fra.me.REG[2] = NIT_NULL;
6176 fra.me.REG[0] = p0;
6177 fra.me.REG[1] = p1;
6178 fra.me.REG[2] = p2;
6179 /* syntax/typing.nit:1143 */
6180 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6181 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6182 /* syntax/typing.nit:1144 */
6183 REGB0 = TAG_Bool(1);
6184 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6185 stack_frame_head = fra.me.prev;
6186 return;
6187 }
6188 static const char LOCATE_syntax___typing___ARangeExpr___after_typing[] = "typing::ARangeExpr::(typing::ANode::after_typing)";
6189 void syntax___typing___ARangeExpr___after_typing(val_t p0, val_t p1){
6190 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
6191 val_t REGB0;
6192 val_t REGB1;
6193 val_t tmp;
6194 static val_t once_value_2; /* Once value */
6195 static val_t once_value_3; /* Once value */
6196 static val_t once_value_4; /* Once value */
6197 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6198 fra.me.file = LOCATE_syntax___typing;
6199 fra.me.line = 1149;
6200 fra.me.meth = LOCATE_syntax___typing___ARangeExpr___after_typing;
6201 fra.me.has_broke = 0;
6202 fra.me.REG_size = 6;
6203 fra.me.nitni_local_ref_head = NULL;
6204 fra.me.REG[0] = NIT_NULL;
6205 fra.me.REG[1] = NIT_NULL;
6206 fra.me.REG[2] = NIT_NULL;
6207 fra.me.REG[3] = NIT_NULL;
6208 fra.me.REG[4] = NIT_NULL;
6209 fra.me.REG[5] = NIT_NULL;
6210 fra.me.REG[0] = p0;
6211 fra.me.REG[1] = p1;
6212 /* syntax/typing.nit:1151 */
6213 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6214 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6215 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6216 if (UNTAG_Bool(REGB0)) {
6217 REGB0 = TAG_Bool(1);
6218 } else {
6219 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6220 REGB1 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6221 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6222 REGB0 = REGB1;
6223 }
6224 if (UNTAG_Bool(REGB0)) {
6225 goto label1;
6226 }
6227 /* syntax/typing.nit:1152 */
6228 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6229 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6230 /* syntax/typing.nit:1153 */
6231 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6232 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
6233 /* syntax/typing.nit:1154 */
6234 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
6235 if (UNTAG_Bool(REGB0)) {
6236 /* syntax/typing.nit:1155 */
6237 fra.me.REG[2] = fra.me.REG[3];
6238 } else {
6239 /* syntax/typing.nit:1156 */
6240 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
6241 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6242 if (UNTAG_Bool(REGB0)) {
6243 /* syntax/typing.nit:1157 */
6244 REGB0 = TAG_Int(5);
6245 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6246 if (!once_value_2) {
6247 fra.me.REG[5] = BOX_NativeString("Type error: ");
6248 REGB0 = TAG_Int(12);
6249 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6250 once_value_2 = fra.me.REG[5];
6251 register_static_object(&once_value_2);
6252 } else fra.me.REG[5] = once_value_2;
6253 fra.me.REG[5] = fra.me.REG[5];
6254 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6255 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
6256 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6257 if (!once_value_3) {
6258 fra.me.REG[5] = BOX_NativeString(" incompatible with ");
6259 REGB0 = TAG_Int(19);
6260 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6261 once_value_3 = fra.me.REG[5];
6262 register_static_object(&once_value_3);
6263 } else fra.me.REG[5] = once_value_3;
6264 fra.me.REG[5] = fra.me.REG[5];
6265 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6266 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
6267 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6268 if (!once_value_4) {
6269 fra.me.REG[3] = BOX_NativeString(".");
6270 REGB0 = TAG_Int(1);
6271 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
6272 once_value_4 = fra.me.REG[3];
6273 register_static_object(&once_value_4);
6274 } else fra.me.REG[3] = once_value_4;
6275 fra.me.REG[3] = fra.me.REG[3];
6276 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6277 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6278 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
6279 /* syntax/typing.nit:1158 */
6280 goto label1;
6281 }
6282 }
6283 /* syntax/typing.nit:1160 */
6284 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_discrete(fra.me.REG[1])(fra.me.REG[1]);
6285 /* syntax/typing.nit:1161 */
6286 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6287 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]);
6288 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6289 if (UNTAG_Bool(REGB0)) {
6290 REGB0 = TAG_Bool(1);
6291 } else {
6292 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
6293 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]);
6294 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6295 REGB0 = REGB1;
6296 }
6297 if (UNTAG_Bool(REGB0)) {
6298 goto label1;
6299 }
6300 /* syntax/typing.nit:1162 */
6301 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6302 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
6303 /* syntax/typing.nit:1163 */
6304 REGB0 = TAG_Bool(1);
6305 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
6306 label1: while(0);
6307 stack_frame_head = fra.me.prev;
6308 return;
6309 }
6310 static const char LOCATE_syntax___typing___ASuperExpr___init_in_superclass[] = "typing::ASuperExpr::(syntax_base::ASuperExpr::init_in_superclass)";
6311 val_t syntax___typing___ASuperExpr___init_in_superclass(val_t p0){
6312 struct {struct stack_frame_t me;} fra;
6313 val_t tmp;
6314 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6315 fra.me.file = LOCATE_syntax___typing;
6316 fra.me.line = 1168;
6317 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___init_in_superclass;
6318 fra.me.has_broke = 0;
6319 fra.me.REG_size = 1;
6320 fra.me.nitni_local_ref_head = NULL;
6321 fra.me.REG[0] = NIT_NULL;
6322 fra.me.REG[0] = p0;
6323 /* syntax/typing.nit:1168 */
6324 fra.me.REG[0] = ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]);
6325 stack_frame_head = fra.me.prev;
6326 return fra.me.REG[0];
6327 }
6328 static const char LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments[] = "typing::ASuperExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
6329 val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
6330 struct {struct stack_frame_t me;} fra;
6331 val_t tmp;
6332 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6333 fra.me.file = LOCATE_syntax___typing;
6334 fra.me.line = 1169;
6335 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___compute_raw_arguments;
6336 fra.me.has_broke = 0;
6337 fra.me.REG_size = 1;
6338 fra.me.nitni_local_ref_head = NULL;
6339 fra.me.REG[0] = NIT_NULL;
6340 fra.me.REG[0] = p0;
6341 /* syntax/typing.nit:1169 */
6342 fra.me.REG[0] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
6343 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
6344 goto label1;
6345 label1: while(0);
6346 stack_frame_head = fra.me.prev;
6347 return fra.me.REG[0];
6348 }
6349 static const char LOCATE_syntax___typing___ASuperExpr___after_typing[] = "typing::ASuperExpr::(typing::ANode::after_typing)";
6350 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
6351 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
6352 val_t REGB0;
6353 val_t REGB1;
6354 val_t REGB2;
6355 val_t tmp;
6356 static val_t once_value_1; /* Once value */
6357 static val_t once_value_2; /* Once value */
6358 static val_t once_value_3; /* Once value */
6359 static val_t once_value_5; /* Once value */
6360 static val_t once_value_6; /* Once value */
6361 static val_t once_value_8; /* Once value */
6362 static val_t once_value_9; /* Once value */
6363 static val_t once_value_10; /* Once value */
6364 static val_t once_value_11; /* Once value */
6365 static val_t once_value_12; /* Once value */
6366 static val_t once_value_13; /* Once value */
6367 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6368 fra.me.file = LOCATE_syntax___typing;
6369 fra.me.line = 1170;
6370 fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
6371 fra.me.has_broke = 0;
6372 fra.me.REG_size = 10;
6373 fra.me.nitni_local_ref_head = NULL;
6374 fra.me.REG[0] = NIT_NULL;
6375 fra.me.REG[1] = NIT_NULL;
6376 fra.me.REG[2] = NIT_NULL;
6377 fra.me.REG[3] = NIT_NULL;
6378 fra.me.REG[4] = NIT_NULL;
6379 fra.me.REG[5] = NIT_NULL;
6380 fra.me.REG[6] = NIT_NULL;
6381 fra.me.REG[7] = NIT_NULL;
6382 fra.me.REG[8] = NIT_NULL;
6383 fra.me.REG[9] = NIT_NULL;
6384 fra.me.REG[0] = p0;
6385 fra.me.REG[1] = p1;
6386 /* syntax/typing.nit:1170 */
6387 fra.me.REG[2] = fra.me.REG[0];
6388 /* syntax/typing.nit:1172 */
6389 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6390 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[3])(fra.me.REG[3]);
6391 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
6392 /* syntax/typing.nit:1173 */
6393 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6394 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6395 if (UNTAG_Bool(REGB0)) {
6396 /* syntax/typing.nit:1174 */
6397 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6398 REGB0 = TAG_Bool(1);
6399 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
6400 } else {
6401 /* syntax/typing.nit:1175 */
6402 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6403 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
6404 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
6405 if (UNTAG_Bool(REGB0)) {
6406 /* syntax/typing.nit:1176 */
6407 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6408 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6409 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6410 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6411 /* ../lib/standard/collection/array.nit:266 */
6412 fra.me.REG[4] = fra.me.REG[5];
6413 /* ../lib/standard/collection/array.nit:269 */
6414 REGB0 = TAG_Int(0);
6415 /* ../lib/standard/collection/array.nit:270 */
6416 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6417 if (UNTAG_Bool(REGB1)) {
6418 } else {
6419 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6420 }
6421 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6422 /* ../lib/standard/collection/array.nit:271 */
6423 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6424 /* ../lib/standard/collection/array.nit:272 */
6425 while(1) {
6426 /* ../lib/standard/collection/array.nit:24 */
6427 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6428 if (UNTAG_Bool(REGB1)) {
6429 } else {
6430 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6431 }
6432 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6433 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6434 if (UNTAG_Bool(REGB2)) {
6435 } else {
6436 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6437 }
6438 /* ../lib/standard/kernel.nit:235 */
6439 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6440 /* ../lib/standard/collection/array.nit:272 */
6441 if (UNTAG_Bool(REGB1)) {
6442 /* ../lib/standard/collection/array.nit:273 */
6443 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6444 if (UNTAG_Bool(REGB1)) {
6445 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6446 }
6447 /* ../lib/standard/collection/array.nit:724 */
6448 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6449 /* syntax/typing.nit:1178 */
6450 fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6451 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
6452 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6453 if (UNTAG_Bool(REGB1)) {
6454 /* syntax/typing.nit:1179 */
6455 REGB1 = TAG_Int(5);
6456 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6457 if (!once_value_1) {
6458 fra.me.REG[9] = BOX_NativeString("Error: ");
6459 REGB1 = TAG_Int(7);
6460 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6461 once_value_1 = fra.me.REG[9];
6462 register_static_object(&once_value_1);
6463 } else fra.me.REG[9] = once_value_1;
6464 fra.me.REG[9] = fra.me.REG[9];
6465 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6466 fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
6467 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
6468 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6469 if (!once_value_2) {
6470 fra.me.REG[9] = BOX_NativeString("::");
6471 REGB1 = TAG_Int(2);
6472 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6473 once_value_2 = fra.me.REG[9];
6474 register_static_object(&once_value_2);
6475 } else fra.me.REG[9] = once_value_2;
6476 fra.me.REG[9] = fra.me.REG[9];
6477 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6478 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
6479 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6480 if (!once_value_3) {
6481 fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
6482 REGB1 = TAG_Int(22);
6483 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
6484 once_value_3 = fra.me.REG[9];
6485 register_static_object(&once_value_3);
6486 } else fra.me.REG[9] = once_value_3;
6487 fra.me.REG[9] = fra.me.REG[9];
6488 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
6489 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
6490 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
6491 } else {
6492 /* syntax/typing.nit:1181 */
6493 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
6494 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
6495 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6496 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
6497 }
6498 /* ../lib/standard/collection/array.nit:274 */
6499 REGB1 = TAG_Int(1);
6500 /* ../lib/standard/kernel.nit:238 */
6501 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6502 /* ../lib/standard/collection/array.nit:274 */
6503 REGB0 = REGB1;
6504 } else {
6505 /* ../lib/standard/collection/array.nit:272 */
6506 goto label4;
6507 }
6508 }
6509 label4: while(0);
6510 /* syntax/typing.nit:1184 */
6511 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
6512 if (UNTAG_Bool(REGB0)) {
6513 /* syntax/typing.nit:1185 */
6514 REGB0 = TAG_Int(3);
6515 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6516 if (!once_value_5) {
6517 fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
6518 REGB0 = TAG_Int(27);
6519 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6520 once_value_5 = fra.me.REG[4];
6521 register_static_object(&once_value_5);
6522 } else fra.me.REG[4] = once_value_5;
6523 fra.me.REG[4] = fra.me.REG[4];
6524 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6525 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6526 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6527 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6528 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6529 if (!once_value_6) {
6530 fra.me.REG[4] = BOX_NativeString(" in superclasses.");
6531 REGB0 = TAG_Int(17);
6532 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
6533 once_value_6 = fra.me.REG[4];
6534 register_static_object(&once_value_6);
6535 } else fra.me.REG[4] = once_value_6;
6536 fra.me.REG[4] = fra.me.REG[4];
6537 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6538 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6539 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6540 /* syntax/typing.nit:1186 */
6541 goto label7;
6542 } else {
6543 /* ../lib/standard/collection/array.nit:24 */
6544 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6545 if (UNTAG_Bool(REGB0)) {
6546 } else {
6547 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6548 }
6549 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6550 /* syntax/typing.nit:1187 */
6551 REGB1 = TAG_Int(1);
6552 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6553 if (UNTAG_Bool(REGB2)) {
6554 } else {
6555 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6556 }
6557 /* ../lib/standard/kernel.nit:237 */
6558 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
6559 /* syntax/typing.nit:1187 */
6560 if (UNTAG_Bool(REGB1)) {
6561 /* syntax/typing.nit:1188 */
6562 REGB1 = TAG_Int(5);
6563 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
6564 if (!once_value_8) {
6565 fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
6566 REGB1 = TAG_Int(37);
6567 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6568 once_value_8 = fra.me.REG[4];
6569 register_static_object(&once_value_8);
6570 } else fra.me.REG[4] = once_value_8;
6571 fra.me.REG[4] = fra.me.REG[4];
6572 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6573 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6574 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
6575 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6576 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6577 if (!once_value_9) {
6578 fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
6579 REGB1 = TAG_Int(18);
6580 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6581 once_value_9 = fra.me.REG[4];
6582 register_static_object(&once_value_9);
6583 } else fra.me.REG[4] = once_value_9;
6584 fra.me.REG[4] = fra.me.REG[4];
6585 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6586 if (!once_value_10) {
6587 fra.me.REG[4] = BOX_NativeString(", ");
6588 REGB1 = TAG_Int(2);
6589 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6590 once_value_10 = fra.me.REG[4];
6591 register_static_object(&once_value_10);
6592 } else fra.me.REG[4] = once_value_10;
6593 fra.me.REG[4] = fra.me.REG[4];
6594 fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6595 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6596 if (!once_value_11) {
6597 fra.me.REG[4] = BOX_NativeString(".");
6598 REGB1 = TAG_Int(1);
6599 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
6600 once_value_11 = fra.me.REG[4];
6601 register_static_object(&once_value_11);
6602 } else fra.me.REG[4] = once_value_11;
6603 fra.me.REG[4] = fra.me.REG[4];
6604 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6605 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
6606 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
6607 /* syntax/typing.nit:1189 */
6608 goto label7;
6609 }
6610 }
6611 /* syntax/typing.nit:1191 */
6612 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
6613 /* syntax/typing.nit:1192 */
6614 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6615 if (UNTAG_Bool(REGB1)) {
6616 } else {
6617 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1192);
6618 }
6619 /* syntax/typing.nit:1193 */
6620 ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
6621 /* syntax/typing.nit:1194 */
6622 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
6623 /* syntax/typing.nit:1195 */
6624 fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
6625 fra.me.REG[6] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[6])(fra.me.REG[6]);
6626 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6627 REGB0 = TAG_Int(0);
6628 REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
6629 if (UNTAG_Bool(REGB2)) {
6630 } else {
6631 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6632 }
6633 /* ../lib/standard/kernel.nit:237 */
6634 REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
6635 /* syntax/typing.nit:1195 */
6636 if (UNTAG_Bool(REGB0)) {
6637 /* syntax/typing.nit:1196 */
6638 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6639 fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[6])(fra.me.REG[6]);
6640 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*/;
6641 if (UNTAG_Bool(REGB0)) {
6642 } else {
6643 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1196);
6644 }
6645 REGB0 = TAG_Bool(1);
6646 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);
6647 /* syntax/typing.nit:1197 */
6648 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
6649 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
6650 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]);
6651 }
6652 } else {
6653 /* syntax/typing.nit:1200 */
6654 REGB0 = TAG_Int(3);
6655 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6656 if (!once_value_12) {
6657 fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
6658 REGB0 = TAG_Int(35);
6659 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6660 once_value_12 = fra.me.REG[5];
6661 register_static_object(&once_value_12);
6662 } else fra.me.REG[5] = once_value_12;
6663 fra.me.REG[5] = fra.me.REG[5];
6664 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6665 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6666 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
6667 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6668 if (!once_value_13) {
6669 fra.me.REG[5] = BOX_NativeString(".");
6670 REGB0 = TAG_Int(1);
6671 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
6672 once_value_13 = fra.me.REG[5];
6673 register_static_object(&once_value_13);
6674 } else fra.me.REG[5] = once_value_13;
6675 fra.me.REG[5] = fra.me.REG[5];
6676 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6677 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
6678 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
6679 /* syntax/typing.nit:1201 */
6680 goto label7;
6681 }
6682 }
6683 /* syntax/typing.nit:1204 */
6684 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
6685 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6686 fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[5])(fra.me.REG[5]);
6687 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*/;
6688 if (UNTAG_Bool(REGB0)) {
6689 } else {
6690 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1204);
6691 }
6692 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6693 if (UNTAG_Bool(REGB0)) {
6694 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1204);
6695 }
6696 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
6697 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6698 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6699 if (UNTAG_Bool(REGB0)) {
6700 } else {
6701 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6702 if (UNTAG_Bool(REGB1)) {
6703 REGB1 = TAG_Bool(0);
6704 REGB0 = REGB1;
6705 } else {
6706 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6707 REGB0 = REGB1;
6708 }
6709 }
6710 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6711 if (UNTAG_Bool(REGB0)) {
6712 /* syntax/typing.nit:1205 */
6713 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
6714 /* syntax/typing.nit:1206 */
6715 fra.me.REG[4] = NIT_NULL;
6716 /* ../lib/standard/collection/array.nit:269 */
6717 REGB0 = TAG_Int(0);
6718 /* ../lib/standard/collection/array.nit:270 */
6719 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6720 if (UNTAG_Bool(REGB1)) {
6721 } else {
6722 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6723 }
6724 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6725 /* ../lib/standard/collection/array.nit:271 */
6726 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
6727 /* ../lib/standard/collection/array.nit:272 */
6728 while(1) {
6729 /* ../lib/standard/collection/array.nit:24 */
6730 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
6731 if (UNTAG_Bool(REGB1)) {
6732 } else {
6733 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6734 }
6735 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
6736 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6737 if (UNTAG_Bool(REGB2)) {
6738 } else {
6739 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6740 }
6741 /* ../lib/standard/kernel.nit:235 */
6742 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6743 /* ../lib/standard/collection/array.nit:272 */
6744 if (UNTAG_Bool(REGB1)) {
6745 /* ../lib/standard/collection/array.nit:273 */
6746 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6747 if (UNTAG_Bool(REGB1)) {
6748 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6749 }
6750 /* ../lib/standard/collection/array.nit:724 */
6751 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6752 /* syntax/typing.nit:1208 */
6753 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
6754 if (UNTAG_Bool(REGB1)) {
6755 } else {
6756 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1208);
6757 }
6758 /* syntax/typing.nit:1209 */
6759 fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
6760 fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
6761 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*/;
6762 if (UNTAG_Bool(REGB1)) {
6763 } else {
6764 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1209);
6765 }
6766 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6767 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
6768 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
6769 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6770 if (UNTAG_Bool(REGB1)) {
6771 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1209);
6772 }
6773 fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
6774 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6775 fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
6776 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6777 if (UNTAG_Bool(REGB1)) {
6778 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1209);
6779 }
6780 fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
6781 fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
6782 /* syntax/typing.nit:1210 */
6783 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
6784 /* syntax/typing.nit:1211 */
6785 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6786 if (UNTAG_Bool(REGB1)) {
6787 } else {
6788 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6789 if (UNTAG_Bool(REGB2)) {
6790 REGB2 = TAG_Bool(0);
6791 REGB1 = REGB2;
6792 } else {
6793 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6794 REGB1 = REGB2;
6795 }
6796 }
6797 if (UNTAG_Bool(REGB1)) {
6798 REGB1 = TAG_Bool(1);
6799 } else {
6800 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6801 if (UNTAG_Bool(REGB2)) {
6802 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1211);
6803 }
6804 REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
6805 REGB1 = REGB2;
6806 }
6807 if (UNTAG_Bool(REGB1)) {
6808 /* syntax/typing.nit:1212 */
6809 fra.me.REG[4] = fra.me.REG[8];
6810 }
6811 /* ../lib/standard/collection/array.nit:274 */
6812 REGB1 = TAG_Int(1);
6813 /* ../lib/standard/kernel.nit:238 */
6814 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6815 /* ../lib/standard/collection/array.nit:274 */
6816 REGB0 = REGB1;
6817 } else {
6818 /* ../lib/standard/collection/array.nit:272 */
6819 goto label14;
6820 }
6821 }
6822 label14: while(0);
6823 /* ../lib/standard/collection/array.nit:269 */
6824 REGB0 = TAG_Int(0);
6825 /* ../lib/standard/collection/array.nit:270 */
6826 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6827 if (UNTAG_Bool(REGB1)) {
6828 } else {
6829 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
6830 }
6831 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6832 /* ../lib/standard/collection/array.nit:271 */
6833 fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
6834 /* ../lib/standard/collection/array.nit:272 */
6835 while(1) {
6836 /* ../lib/standard/collection/array.nit:24 */
6837 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
6838 if (UNTAG_Bool(REGB1)) {
6839 } else {
6840 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6841 }
6842 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
6843 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6844 if (UNTAG_Bool(REGB2)) {
6845 } else {
6846 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6847 }
6848 /* ../lib/standard/kernel.nit:235 */
6849 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6850 /* ../lib/standard/collection/array.nit:272 */
6851 if (UNTAG_Bool(REGB1)) {
6852 /* ../lib/standard/collection/array.nit:273 */
6853 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6854 if (UNTAG_Bool(REGB1)) {
6855 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6856 }
6857 /* ../lib/standard/collection/array.nit:724 */
6858 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
6859 /* syntax/typing.nit:1216 */
6860 REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
6861 if (UNTAG_Bool(REGB1)) {
6862 } else {
6863 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1216);
6864 }
6865 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]);
6866 /* ../lib/standard/collection/array.nit:274 */
6867 REGB1 = TAG_Int(1);
6868 /* ../lib/standard/kernel.nit:238 */
6869 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6870 /* ../lib/standard/collection/array.nit:274 */
6871 REGB0 = REGB1;
6872 } else {
6873 /* ../lib/standard/collection/array.nit:272 */
6874 goto label15;
6875 }
6876 }
6877 label15: while(0);
6878 /* syntax/typing.nit:1218 */
6879 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
6880 }
6881 /* syntax/typing.nit:1220 */
6882 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6883 /* syntax/typing.nit:1221 */
6884 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
6885 if (UNTAG_Bool(REGB0)) {
6886 } else {
6887 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1221);
6888 }
6889 /* syntax/typing.nit:1222 */
6890 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
6891 /* syntax/typing.nit:1223 */
6892 REGB0 = TAG_Bool(1);
6893 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
6894 label7: while(0);
6895 stack_frame_head = fra.me.prev;
6896 return;
6897 }
6898 static const char LOCATE_syntax___typing___AExternCall___target_class_name[] = "typing::AExternCall::target_class_name";
6899 val_t syntax___typing___AExternCall___target_class_name(val_t p0){
6900 struct {struct stack_frame_t me;} fra;
6901 val_t tmp;
6902 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6903 fra.me.file = LOCATE_syntax___typing;
6904 fra.me.line = 1228;
6905 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_class_name;
6906 fra.me.has_broke = 0;
6907 fra.me.REG_size = 1;
6908 fra.me.nitni_local_ref_head = NULL;
6909 fra.me.REG[0] = NIT_NULL;
6910 fra.me.REG[0] = p0;
6911 /* syntax/typing.nit:1228 */
6912 fra.me.REG[0] = NIT_NULL;
6913 goto label1;
6914 label1: while(0);
6915 stack_frame_head = fra.me.prev;
6916 return fra.me.REG[0];
6917 }
6918 static const char LOCATE_syntax___typing___AExternCall___target_method_name[] = "typing::AExternCall::target_method_name";
6919 val_t syntax___typing___AExternCall___target_method_name(val_t p0){
6920 struct {struct stack_frame_t me;} fra;
6921 val_t tmp;
6922 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6923 fra.me.file = LOCATE_syntax___typing;
6924 fra.me.line = 1229;
6925 fra.me.meth = LOCATE_syntax___typing___AExternCall___target_method_name;
6926 fra.me.has_broke = 0;
6927 fra.me.REG_size = 0;
6928 fra.me.nitni_local_ref_head = NULL;
6929 /* syntax/typing.nit:1229 */
6930 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1229);
6931 stack_frame_head = fra.me.prev;
6932 return NIT_NULL;
6933 }
6934 static const char LOCATE_syntax___typing___AExternCall___after_typing[] = "typing::AExternCall::(typing::ANode::after_typing)";
6935 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
6936 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6937 val_t REGB0;
6938 val_t REGB1;
6939 val_t tmp;
6940 static val_t once_value_1; /* Once value */
6941 static val_t once_value_2; /* Once value */
6942 static val_t once_value_4; /* Once value */
6943 static val_t once_value_5; /* Once value */
6944 static val_t once_value_6; /* Once value */
6945 static val_t once_value_7; /* Once value */
6946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6947 fra.me.file = LOCATE_syntax___typing;
6948 fra.me.line = 1231;
6949 fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
6950 fra.me.has_broke = 0;
6951 fra.me.REG_size = 8;
6952 fra.me.nitni_local_ref_head = NULL;
6953 fra.me.REG[0] = NIT_NULL;
6954 fra.me.REG[1] = NIT_NULL;
6955 fra.me.REG[2] = NIT_NULL;
6956 fra.me.REG[3] = NIT_NULL;
6957 fra.me.REG[4] = NIT_NULL;
6958 fra.me.REG[5] = NIT_NULL;
6959 fra.me.REG[6] = NIT_NULL;
6960 fra.me.REG[7] = NIT_NULL;
6961 fra.me.REG[0] = p0;
6962 fra.me.REG[1] = p1;
6963 /* syntax/typing.nit:1231 */
6964 fra.me.REG[2] = fra.me.REG[0];
6965 /* syntax/typing.nit:1233 */
6966 fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
6967 /* syntax/typing.nit:1234 */
6968 fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
6969 /* syntax/typing.nit:1241 */
6970 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6971 if (UNTAG_Bool(REGB0)) {
6972 } else {
6973 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6974 if (UNTAG_Bool(REGB1)) {
6975 REGB1 = TAG_Bool(0);
6976 REGB0 = REGB1;
6977 } else {
6978 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6979 REGB0 = REGB1;
6980 }
6981 }
6982 if (UNTAG_Bool(REGB0)) {
6983 /* syntax/typing.nit:1242 */
6984 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6985 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
6986 } else {
6987 /* syntax/typing.nit:1244 */
6988 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6989 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6990 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6991 if (UNTAG_Bool(REGB0)) {
6992 /* syntax/typing.nit:1245 */
6993 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6994 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
6995 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
6996 /* syntax/typing.nit:1246 */
6997 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
6998 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
6999 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
7000 fra.me.REG[5] = fra.me.REG[6];
7001 } else {
7002 /* syntax/typing.nit:1248 */
7003 REGB0 = TAG_Int(3);
7004 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7005 if (!once_value_1) {
7006 fra.me.REG[7] = BOX_NativeString("Error: class ");
7007 REGB0 = TAG_Int(13);
7008 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7009 once_value_1 = fra.me.REG[7];
7010 register_static_object(&once_value_1);
7011 } else fra.me.REG[7] = once_value_1;
7012 fra.me.REG[7] = fra.me.REG[7];
7013 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
7014 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
7015 if (UNTAG_Bool(REGB0)) {
7016 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1248);
7017 }
7018 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7019 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7020 if (!once_value_2) {
7021 fra.me.REG[3] = BOX_NativeString(", not found.");
7022 REGB0 = TAG_Int(12);
7023 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7024 once_value_2 = fra.me.REG[3];
7025 register_static_object(&once_value_2);
7026 } else fra.me.REG[3] = once_value_2;
7027 fra.me.REG[3] = fra.me.REG[3];
7028 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7029 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7030 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
7031 /* syntax/typing.nit:1249 */
7032 goto label3;
7033 }
7034 }
7035 /* syntax/typing.nit:1253 */
7036 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7037 if (UNTAG_Bool(REGB0)) {
7038 /* syntax/typing.nit:1254 */
7039 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
7040 /* syntax/typing.nit:1256 */
7041 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7042 /* syntax/typing.nit:1258 */
7043 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7044 if (UNTAG_Bool(REGB0)) {
7045 } else {
7046 /* syntax/typing.nit:1261 */
7047 REGB0 = TAG_Int(3);
7048 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7049 if (!once_value_4) {
7050 fra.me.REG[7] = BOX_NativeString("Error: property ");
7051 REGB0 = TAG_Int(16);
7052 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7053 once_value_4 = fra.me.REG[7];
7054 register_static_object(&once_value_4);
7055 } else fra.me.REG[7] = once_value_4;
7056 fra.me.REG[7] = fra.me.REG[7];
7057 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7058 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7059 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7060 if (!once_value_5) {
7061 fra.me.REG[7] = BOX_NativeString(" is not a method.");
7062 REGB0 = TAG_Int(17);
7063 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7064 once_value_5 = fra.me.REG[7];
7065 register_static_object(&once_value_5);
7066 } else fra.me.REG[7] = once_value_5;
7067 fra.me.REG[7] = fra.me.REG[7];
7068 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7069 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7070 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7071 /* syntax/typing.nit:1262 */
7072 goto label3;
7073 }
7074 } else {
7075 /* syntax/typing.nit:1265 */
7076 REGB0 = TAG_Int(3);
7077 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7078 if (!once_value_6) {
7079 fra.me.REG[7] = BOX_NativeString("Error: property ");
7080 REGB0 = TAG_Int(16);
7081 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
7082 once_value_6 = fra.me.REG[7];
7083 register_static_object(&once_value_6);
7084 } else fra.me.REG[7] = once_value_6;
7085 fra.me.REG[7] = fra.me.REG[7];
7086 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
7087 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7088 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7089 if (!once_value_7) {
7090 fra.me.REG[4] = BOX_NativeString(" not found in target class.");
7091 REGB0 = TAG_Int(27);
7092 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
7093 once_value_7 = fra.me.REG[4];
7094 register_static_object(&once_value_7);
7095 } else fra.me.REG[4] = once_value_7;
7096 fra.me.REG[4] = fra.me.REG[4];
7097 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
7098 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7099 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
7100 /* syntax/typing.nit:1266 */
7101 goto label3;
7102 }
7103 /* syntax/typing.nit:1269 */
7104 fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
7105 /* syntax/typing.nit:1270 */
7106 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7107 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
7108 if (UNTAG_Bool(REGB0)) {
7109 } else {
7110 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1270);
7111 }
7112 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
7113 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
7114 label3: while(0);
7115 stack_frame_head = fra.me.prev;
7116 return;
7117 }
7118 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_class_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_class_name)";
7119 val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
7120 struct {struct stack_frame_t me;} fra;
7121 val_t tmp;
7122 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7123 fra.me.file = LOCATE_syntax___typing;
7124 fra.me.line = 1275;
7125 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_class_name;
7126 fra.me.has_broke = 0;
7127 fra.me.REG_size = 1;
7128 fra.me.nitni_local_ref_head = NULL;
7129 fra.me.REG[0] = NIT_NULL;
7130 fra.me.REG[0] = p0;
7131 /* syntax/typing.nit:1275 */
7132 fra.me.REG[0] = NIT_NULL;
7133 goto label1;
7134 label1: while(0);
7135 stack_frame_head = fra.me.prev;
7136 return fra.me.REG[0];
7137 }
7138 static const char LOCATE_syntax___typing___ALocalPropExternCall___target_method_name[] = "typing::ALocalPropExternCall::(typing::AExternCall::target_method_name)";
7139 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
7140 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7141 val_t REGB0;
7142 val_t tmp;
7143 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7144 fra.me.file = LOCATE_syntax___typing;
7145 fra.me.line = 1276;
7146 fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
7147 fra.me.has_broke = 0;
7148 fra.me.REG_size = 2;
7149 fra.me.nitni_local_ref_head = NULL;
7150 fra.me.REG[0] = NIT_NULL;
7151 fra.me.REG[1] = NIT_NULL;
7152 fra.me.REG[0] = p0;
7153 /* syntax/typing.nit:1276 */
7154 fra.me.REG[1] = fra.me.REG[0];
7155 fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7156 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7157 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7158 if (UNTAG_Bool(REGB0)) {
7159 } else {
7160 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1276);
7161 }
7162 goto label1;
7163 label1: while(0);
7164 stack_frame_head = fra.me.prev;
7165 return fra.me.REG[1];
7166 }
7167 static const char LOCATE_syntax___typing___ASuperExternCall___after_typing[] = "typing::ASuperExternCall::(typing::ANode::after_typing)";
7168 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
7169 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7170 val_t REGB0;
7171 val_t tmp;
7172 static val_t once_value_1; /* Once value */
7173 static val_t once_value_2; /* Once value */
7174 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7175 fra.me.file = LOCATE_syntax___typing;
7176 fra.me.line = 1280;
7177 fra.me.meth = LOCATE_syntax___typing___ASuperExternCall___after_typing;
7178 fra.me.has_broke = 0;
7179 fra.me.REG_size = 4;
7180 fra.me.nitni_local_ref_head = NULL;
7181 fra.me.REG[0] = NIT_NULL;
7182 fra.me.REG[1] = NIT_NULL;
7183 fra.me.REG[2] = NIT_NULL;
7184 fra.me.REG[3] = NIT_NULL;
7185 fra.me.REG[0] = p0;
7186 fra.me.REG[1] = p1;
7187 /* syntax/typing.nit:1282 */
7188 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7189 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
7190 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
7191 /* syntax/typing.nit:1283 */
7192 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
7193 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7194 if (UNTAG_Bool(REGB0)) {
7195 /* syntax/typing.nit:1284 */
7196 fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7197 REGB0 = TAG_Bool(1);
7198 CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
7199 } else {
7200 /* syntax/typing.nit:1286 */
7201 REGB0 = TAG_Int(3);
7202 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7203 if (!once_value_1) {
7204 fra.me.REG[3] = BOX_NativeString("Error: No super method to call for ");
7205 REGB0 = TAG_Int(35);
7206 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7207 once_value_1 = fra.me.REG[3];
7208 register_static_object(&once_value_1);
7209 } else fra.me.REG[3] = once_value_1;
7210 fra.me.REG[3] = fra.me.REG[3];
7211 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7212 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7213 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7214 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7215 if (!once_value_2) {
7216 fra.me.REG[3] = BOX_NativeString(".");
7217 REGB0 = TAG_Int(1);
7218 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7219 once_value_2 = fra.me.REG[3];
7220 register_static_object(&once_value_2);
7221 } else fra.me.REG[3] = once_value_2;
7222 fra.me.REG[3] = fra.me.REG[3];
7223 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7224 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7225 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
7226 /* syntax/typing.nit:1287 */
7227 goto label3;
7228 }
7229 label3: while(0);
7230 stack_frame_head = fra.me.prev;
7231 return;
7232 }
7233 static const char LOCATE_syntax___typing___AFullPropExternCall___target_class_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_class_name)";
7234 val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
7235 struct {struct stack_frame_t me;} fra;
7236 val_t tmp;
7237 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7238 fra.me.file = LOCATE_syntax___typing;
7239 fra.me.line = 1293;
7240 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_class_name;
7241 fra.me.has_broke = 0;
7242 fra.me.REG_size = 1;
7243 fra.me.nitni_local_ref_head = NULL;
7244 fra.me.REG[0] = NIT_NULL;
7245 fra.me.REG[0] = p0;
7246 /* syntax/typing.nit:1293 */
7247 fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7248 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7249 goto label1;
7250 label1: while(0);
7251 stack_frame_head = fra.me.prev;
7252 return fra.me.REG[0];
7253 }
7254 static const char LOCATE_syntax___typing___AFullPropExternCall___target_method_name[] = "typing::AFullPropExternCall::(typing::AExternCall::target_method_name)";
7255 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
7256 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7257 val_t REGB0;
7258 val_t tmp;
7259 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7260 fra.me.file = LOCATE_syntax___typing;
7261 fra.me.line = 1294;
7262 fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
7263 fra.me.has_broke = 0;
7264 fra.me.REG_size = 2;
7265 fra.me.nitni_local_ref_head = NULL;
7266 fra.me.REG[0] = NIT_NULL;
7267 fra.me.REG[1] = NIT_NULL;
7268 fra.me.REG[0] = p0;
7269 /* syntax/typing.nit:1294 */
7270 fra.me.REG[1] = fra.me.REG[0];
7271 fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
7272 fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
7273 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_symbol___Symbol, ID_symbol___Symbol)) /*cast Symbol*/;
7274 if (UNTAG_Bool(REGB0)) {
7275 } else {
7276 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1294);
7277 }
7278 goto label1;
7279 label1: while(0);
7280 stack_frame_head = fra.me.prev;
7281 return fra.me.REG[1];
7282 }
7283 static const char LOCATE_syntax___typing___AInitPropExternCall___target_class_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_class_name)";
7284 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
7285 struct {struct stack_frame_t me;} fra;
7286 val_t tmp;
7287 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7288 fra.me.file = LOCATE_syntax___typing;
7289 fra.me.line = 1298;
7290 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_class_name;
7291 fra.me.has_broke = 0;
7292 fra.me.REG_size = 1;
7293 fra.me.nitni_local_ref_head = NULL;
7294 fra.me.REG[0] = NIT_NULL;
7295 fra.me.REG[0] = p0;
7296 /* syntax/typing.nit:1298 */
7297 fra.me.REG[0] = CALL_parser___parser_nodes___AInitPropExternCall___n_classid(fra.me.REG[0])(fra.me.REG[0]);
7298 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7299 goto label1;
7300 label1: while(0);
7301 stack_frame_head = fra.me.prev;
7302 return fra.me.REG[0];
7303 }
7304 static const char LOCATE_syntax___typing___AInitPropExternCall___target_method_name[] = "typing::AInitPropExternCall::(typing::AExternCall::target_method_name)";
7305 val_t syntax___typing___AInitPropExternCall___target_method_name(val_t p0){
7306 struct {struct stack_frame_t me;} fra;
7307 val_t REGB0;
7308 val_t tmp;
7309 static val_t once_value_1; /* Once value */
7310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7311 fra.me.file = LOCATE_syntax___typing;
7312 fra.me.line = 1299;
7313 fra.me.meth = LOCATE_syntax___typing___AInitPropExternCall___target_method_name;
7314 fra.me.has_broke = 0;
7315 fra.me.REG_size = 1;
7316 fra.me.nitni_local_ref_head = NULL;
7317 fra.me.REG[0] = NIT_NULL;
7318 fra.me.REG[0] = p0;
7319 /* syntax/typing.nit:1299 */
7320 if (!once_value_1) {
7321 fra.me.REG[0] = BOX_NativeString("init");
7322 REGB0 = TAG_Int(4);
7323 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
7324 once_value_1 = fra.me.REG[0];
7325 register_static_object(&once_value_1);
7326 } else fra.me.REG[0] = once_value_1;
7327 fra.me.REG[0] = fra.me.REG[0];
7328 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
7329 goto label2;
7330 label2: while(0);
7331 stack_frame_head = fra.me.prev;
7332 return fra.me.REG[0];
7333 }
7334 static const char LOCATE_syntax___typing___ACastExternCall___from_type[] = "typing::ACastExternCall::from_type";
7335 val_t syntax___typing___ACastExternCall___from_type(val_t p0){
7336 struct {struct stack_frame_t me;} fra;
7337 val_t tmp;
7338 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7339 fra.me.file = LOCATE_syntax___typing;
7340 fra.me.line = 1303;
7341 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___from_type;
7342 fra.me.has_broke = 0;
7343 fra.me.REG_size = 0;
7344 fra.me.nitni_local_ref_head = NULL;
7345 /* syntax/typing.nit:1303 */
7346 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1303);
7347 stack_frame_head = fra.me.prev;
7348 return NIT_NULL;
7349 }
7350 static const char LOCATE_syntax___typing___ACastExternCall___to_type[] = "typing::ACastExternCall::to_type";
7351 val_t syntax___typing___ACastExternCall___to_type(val_t p0){
7352 struct {struct stack_frame_t me;} fra;
7353 val_t tmp;
7354 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7355 fra.me.file = LOCATE_syntax___typing;
7356 fra.me.line = 1304;
7357 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___to_type;
7358 fra.me.has_broke = 0;
7359 fra.me.REG_size = 0;
7360 fra.me.nitni_local_ref_head = NULL;
7361 /* syntax/typing.nit:1304 */
7362 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1304);
7363 stack_frame_head = fra.me.prev;
7364 return NIT_NULL;
7365 }
7366 static const char LOCATE_syntax___typing___ACastExternCall___after_typing[] = "typing::ACastExternCall::(typing::ANode::after_typing)";
7367 void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
7368 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7369 val_t REGB0;
7370 val_t REGB1;
7371 val_t tmp;
7372 static val_t once_value_1; /* Once value */
7373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7374 fra.me.file = LOCATE_syntax___typing;
7375 fra.me.line = 1306;
7376 fra.me.meth = LOCATE_syntax___typing___ACastExternCall___after_typing;
7377 fra.me.has_broke = 0;
7378 fra.me.REG_size = 4;
7379 fra.me.nitni_local_ref_head = NULL;
7380 fra.me.REG[0] = NIT_NULL;
7381 fra.me.REG[1] = NIT_NULL;
7382 fra.me.REG[2] = NIT_NULL;
7383 fra.me.REG[3] = NIT_NULL;
7384 fra.me.REG[0] = p0;
7385 fra.me.REG[1] = p1;
7386 /* syntax/typing.nit:1308 */
7387 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7388 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7389 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
7390 if (UNTAG_Bool(REGB0)) {
7391 } else {
7392 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
7393 REGB0 = REGB1;
7394 }
7395 if (UNTAG_Bool(REGB0)) {
7396 /* syntax/typing.nit:1310 */
7397 if (!once_value_1) {
7398 fra.me.REG[3] = BOX_NativeString("Attepting to cast from and to the same type.");
7399 REGB0 = TAG_Int(44);
7400 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
7401 once_value_1 = fra.me.REG[3];
7402 register_static_object(&once_value_1);
7403 } else fra.me.REG[3] = once_value_1;
7404 fra.me.REG[3] = fra.me.REG[3];
7405 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
7406 }
7407 /* syntax/typing.nit:1313 */
7408 fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
7409 fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
7410 fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
7411 /* syntax/typing.nit:1314 */
7412 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
7413 /* syntax/typing.nit:1315 */
7414 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
7415 if (UNTAG_Bool(REGB0)) {
7416 } else {
7417 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1315);
7418 }
7419 /* syntax/typing.nit:1316 */
7420 fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
7421 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7422 stack_frame_head = fra.me.prev;
7423 return;
7424 }
7425 static const char LOCATE_syntax___typing___ACastAsExternCall___from_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::from_type)";
7426 val_t syntax___typing___ACastAsExternCall___from_type(val_t p0){
7427 struct {struct stack_frame_t me;} fra;
7428 val_t tmp;
7429 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7430 fra.me.file = LOCATE_syntax___typing;
7431 fra.me.line = 1321;
7432 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___from_type;
7433 fra.me.has_broke = 0;
7434 fra.me.REG_size = 1;
7435 fra.me.nitni_local_ref_head = NULL;
7436 fra.me.REG[0] = NIT_NULL;
7437 fra.me.REG[0] = p0;
7438 /* syntax/typing.nit:1321 */
7439 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_from_type(fra.me.REG[0])(fra.me.REG[0]);
7440 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7441 goto label1;
7442 label1: while(0);
7443 stack_frame_head = fra.me.prev;
7444 return fra.me.REG[0];
7445 }
7446 static const char LOCATE_syntax___typing___ACastAsExternCall___to_type[] = "typing::ACastAsExternCall::(typing::ACastExternCall::to_type)";
7447 val_t syntax___typing___ACastAsExternCall___to_type(val_t p0){
7448 struct {struct stack_frame_t me;} fra;
7449 val_t tmp;
7450 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7451 fra.me.file = LOCATE_syntax___typing;
7452 fra.me.line = 1322;
7453 fra.me.meth = LOCATE_syntax___typing___ACastAsExternCall___to_type;
7454 fra.me.has_broke = 0;
7455 fra.me.REG_size = 1;
7456 fra.me.nitni_local_ref_head = NULL;
7457 fra.me.REG[0] = NIT_NULL;
7458 fra.me.REG[0] = p0;
7459 /* syntax/typing.nit:1322 */
7460 fra.me.REG[0] = CALL_parser___parser_nodes___ACastAsExternCall___n_to_type(fra.me.REG[0])(fra.me.REG[0]);
7461 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7462 goto label1;
7463 label1: while(0);
7464 stack_frame_head = fra.me.prev;
7465 return fra.me.REG[0];
7466 }
7467 static const char LOCATE_syntax___typing___AAsNullableExternCall___from_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::from_type)";
7468 val_t syntax___typing___AAsNullableExternCall___from_type(val_t p0){
7469 struct {struct stack_frame_t me;} fra;
7470 val_t tmp;
7471 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7472 fra.me.file = LOCATE_syntax___typing;
7473 fra.me.line = 1326;
7474 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___from_type;
7475 fra.me.has_broke = 0;
7476 fra.me.REG_size = 1;
7477 fra.me.nitni_local_ref_head = NULL;
7478 fra.me.REG[0] = NIT_NULL;
7479 fra.me.REG[0] = p0;
7480 /* syntax/typing.nit:1326 */
7481 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7482 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7483 goto label1;
7484 label1: while(0);
7485 stack_frame_head = fra.me.prev;
7486 return fra.me.REG[0];
7487 }
7488 static const char LOCATE_syntax___typing___AAsNullableExternCall___to_type[] = "typing::AAsNullableExternCall::(typing::ACastExternCall::to_type)";
7489 val_t syntax___typing___AAsNullableExternCall___to_type(val_t p0){
7490 struct {struct stack_frame_t me;} fra;
7491 val_t tmp;
7492 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7493 fra.me.file = LOCATE_syntax___typing;
7494 fra.me.line = 1327;
7495 fra.me.meth = LOCATE_syntax___typing___AAsNullableExternCall___to_type;
7496 fra.me.has_broke = 0;
7497 fra.me.REG_size = 1;
7498 fra.me.nitni_local_ref_head = NULL;
7499 fra.me.REG[0] = NIT_NULL;
7500 fra.me.REG[0] = p0;
7501 /* syntax/typing.nit:1327 */
7502 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7503 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7504 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7505 goto label1;
7506 label1: while(0);
7507 stack_frame_head = fra.me.prev;
7508 return fra.me.REG[0];
7509 }
7510 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___from_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::from_type)";
7511 val_t syntax___typing___AAsNotNullableExternCall___from_type(val_t p0){
7512 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7513 val_t REGB0;
7514 val_t tmp;
7515 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7516 fra.me.file = LOCATE_syntax___typing;
7517 fra.me.line = 1331;
7518 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___from_type;
7519 fra.me.has_broke = 0;
7520 fra.me.REG_size = 2;
7521 fra.me.nitni_local_ref_head = NULL;
7522 fra.me.REG[0] = NIT_NULL;
7523 fra.me.REG[1] = NIT_NULL;
7524 fra.me.REG[0] = p0;
7525 /* syntax/typing.nit:1333 */
7526 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7527 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7528 /* syntax/typing.nit:1334 */
7529 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
7530 if (UNTAG_Bool(REGB0)) {
7531 /* syntax/typing.nit:1336 */
7532 fra.me.REG[1] = fra.me.REG[0];
7533 goto label1;
7534 } else {
7535 /* syntax/typing.nit:1338 */
7536 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[0])(fra.me.REG[0]);
7537 fra.me.REG[1] = fra.me.REG[0];
7538 goto label1;
7539 }
7540 label1: while(0);
7541 stack_frame_head = fra.me.prev;
7542 return fra.me.REG[1];
7543 }
7544 static const char LOCATE_syntax___typing___AAsNotNullableExternCall___to_type[] = "typing::AAsNotNullableExternCall::(typing::ACastExternCall::to_type)";
7545 val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
7546 struct {struct stack_frame_t me;} fra;
7547 val_t tmp;
7548 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7549 fra.me.file = LOCATE_syntax___typing;
7550 fra.me.line = 1341;
7551 fra.me.meth = LOCATE_syntax___typing___AAsNotNullableExternCall___to_type;
7552 fra.me.has_broke = 0;
7553 fra.me.REG_size = 1;
7554 fra.me.nitni_local_ref_head = NULL;
7555 fra.me.REG[0] = NIT_NULL;
7556 fra.me.REG[0] = p0;
7557 /* syntax/typing.nit:1341 */
7558 fra.me.REG[0] = CALL_parser___parser_nodes___AAsNotNullableExternCall___n_type(fra.me.REG[0])(fra.me.REG[0]);
7559 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
7560 fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
7561 goto label1;
7562 label1: while(0);
7563 stack_frame_head = fra.me.prev;
7564 return fra.me.REG[0];
7565 }
7566 static const char LOCATE_syntax___typing___AAttrFormExpr___prop[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::prop)";
7567 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
7568 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7569 val_t REGB0;
7570 val_t tmp;
7571 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7572 fra.me.file = LOCATE_syntax___typing;
7573 fra.me.line = 1345;
7574 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
7575 fra.me.has_broke = 0;
7576 fra.me.REG_size = 2;
7577 fra.me.nitni_local_ref_head = NULL;
7578 fra.me.REG[0] = NIT_NULL;
7579 fra.me.REG[1] = NIT_NULL;
7580 fra.me.REG[0] = p0;
7581 /* syntax/typing.nit:1345 */
7582 fra.me.REG[1] = fra.me.REG[0];
7583 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
7584 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7585 if (UNTAG_Bool(REGB0)) {
7586 } else {
7587 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1345);
7588 }
7589 goto label1;
7590 label1: while(0);
7591 stack_frame_head = fra.me.prev;
7592 return fra.me.REG[1];
7593 }
7594 static const char LOCATE_syntax___typing___AAttrFormExpr___attr_type[] = "typing::AAttrFormExpr::(syntax_base::AAttrFormExpr::attr_type)";
7595 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
7596 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7597 val_t REGB0;
7598 val_t tmp;
7599 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7600 fra.me.file = LOCATE_syntax___typing;
7601 fra.me.line = 1348;
7602 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
7603 fra.me.has_broke = 0;
7604 fra.me.REG_size = 2;
7605 fra.me.nitni_local_ref_head = NULL;
7606 fra.me.REG[0] = NIT_NULL;
7607 fra.me.REG[1] = NIT_NULL;
7608 fra.me.REG[0] = p0;
7609 /* syntax/typing.nit:1348 */
7610 fra.me.REG[1] = fra.me.REG[0];
7611 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
7612 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
7613 if (UNTAG_Bool(REGB0)) {
7614 } else {
7615 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1348);
7616 }
7617 goto label1;
7618 label1: while(0);
7619 stack_frame_head = fra.me.prev;
7620 return fra.me.REG[1];
7621 }
7622 static const char LOCATE_syntax___typing___AAttrFormExpr___do_typing[] = "typing::AAttrFormExpr::do_typing";
7623 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
7624 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
7625 val_t REGB0;
7626 val_t REGB1;
7627 val_t REGB2;
7628 val_t tmp;
7629 static val_t once_value_2; /* Once value */
7630 static val_t once_value_3; /* Once value */
7631 static val_t once_value_4; /* Once value */
7632 static val_t once_value_5; /* Once value */
7633 static val_t once_value_6; /* Once value */
7634 static val_t once_value_7; /* Once value */
7635 static val_t once_value_8; /* Once value */
7636 static val_t once_value_9; /* Once value */
7637 static val_t once_value_10; /* Once value */
7638 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7639 fra.me.file = LOCATE_syntax___typing;
7640 fra.me.line = 1351;
7641 fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___do_typing;
7642 fra.me.has_broke = 0;
7643 fra.me.REG_size = 7;
7644 fra.me.nitni_local_ref_head = NULL;
7645 fra.me.REG[0] = NIT_NULL;
7646 fra.me.REG[1] = NIT_NULL;
7647 fra.me.REG[2] = NIT_NULL;
7648 fra.me.REG[3] = NIT_NULL;
7649 fra.me.REG[4] = NIT_NULL;
7650 fra.me.REG[5] = NIT_NULL;
7651 fra.me.REG[6] = NIT_NULL;
7652 fra.me.REG[0] = p0;
7653 fra.me.REG[1] = p1;
7654 /* syntax/typing.nit:1354 */
7655 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7656 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
7657 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7658 if (UNTAG_Bool(REGB0)) {
7659 goto label1;
7660 }
7661 /* syntax/typing.nit:1355 */
7662 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7663 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
7664 /* syntax/typing.nit:1356 */
7665 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
7666 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
7667 /* syntax/typing.nit:1357 */
7668 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
7669 if (UNTAG_Bool(REGB0)) {
7670 /* syntax/typing.nit:1358 */
7671 REGB0 = TAG_Int(3);
7672 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7673 if (!once_value_2) {
7674 fra.me.REG[5] = BOX_NativeString("Error: Attribute '");
7675 REGB0 = TAG_Int(18);
7676 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7677 once_value_2 = fra.me.REG[5];
7678 register_static_object(&once_value_2);
7679 } else fra.me.REG[5] = once_value_2;
7680 fra.me.REG[5] = fra.me.REG[5];
7681 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7682 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7683 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7684 if (!once_value_3) {
7685 fra.me.REG[5] = BOX_NativeString("' access on 'null'.");
7686 REGB0 = TAG_Int(19);
7687 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
7688 once_value_3 = fra.me.REG[5];
7689 register_static_object(&once_value_3);
7690 } else fra.me.REG[5] = once_value_3;
7691 fra.me.REG[5] = fra.me.REG[5];
7692 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
7693 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
7694 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
7695 /* syntax/typing.nit:1359 */
7696 goto label1;
7697 }
7698 /* syntax/typing.nit:1361 */
7699 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
7700 /* syntax/typing.nit:1362 */
7701 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7702 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7703 if (UNTAG_Bool(REGB0)) {
7704 /* syntax/typing.nit:1363 */
7705 REGB0 = TAG_Int(5);
7706 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
7707 if (!once_value_4) {
7708 fra.me.REG[6] = BOX_NativeString("Error: Attribute ");
7709 REGB0 = TAG_Int(17);
7710 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7711 once_value_4 = fra.me.REG[6];
7712 register_static_object(&once_value_4);
7713 } else fra.me.REG[6] = once_value_4;
7714 fra.me.REG[6] = fra.me.REG[6];
7715 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7716 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7717 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7718 if (!once_value_5) {
7719 fra.me.REG[6] = BOX_NativeString(" doesn't exists in ");
7720 REGB0 = TAG_Int(19);
7721 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7722 once_value_5 = fra.me.REG[6];
7723 register_static_object(&once_value_5);
7724 } else fra.me.REG[6] = once_value_5;
7725 fra.me.REG[6] = fra.me.REG[6];
7726 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7727 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
7728 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7729 if (!once_value_6) {
7730 fra.me.REG[6] = BOX_NativeString(".");
7731 REGB0 = TAG_Int(1);
7732 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
7733 once_value_6 = fra.me.REG[6];
7734 register_static_object(&once_value_6);
7735 } else fra.me.REG[6] = once_value_6;
7736 fra.me.REG[6] = fra.me.REG[6];
7737 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7738 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
7739 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
7740 /* syntax/typing.nit:1364 */
7741 goto label1;
7742 }
7743 /* syntax/typing.nit:1366 */
7744 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_attribute(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
7745 /* syntax/typing.nit:1367 */
7746 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7747 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7748 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
7749 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
7750 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
7751 REGB1 = TAG_Int(3);
7752 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
7753 if (UNTAG_Bool(REGB2)) {
7754 } else {
7755 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
7756 }
7757 /* ../lib/standard/kernel.nit:235 */
7758 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
7759 /* syntax/typing.nit:1367 */
7760 if (UNTAG_Bool(REGB1)) {
7761 /* syntax/typing.nit:1368 */
7762 REGB1 = TAG_Int(7);
7763 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
7764 if (!once_value_7) {
7765 fra.me.REG[5] = BOX_NativeString("Error: Attribute ");
7766 REGB1 = TAG_Int(17);
7767 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
7768 once_value_7 = fra.me.REG[5];
7769 register_static_object(&once_value_7);
7770 } else fra.me.REG[5] = once_value_7;
7771 fra.me.REG[5] = fra.me.REG[5];
7772 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
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_8) {
7776 fra.me.REG[3] = BOX_NativeString(" from ");
7777 REGB1 = TAG_Int(6);
7778 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7779 once_value_8 = fra.me.REG[3];
7780 register_static_object(&once_value_8);
7781 } else fra.me.REG[3] = once_value_8;
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_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
7785 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
7786 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
7787 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7789 if (!once_value_9) {
7790 fra.me.REG[3] = BOX_NativeString(" is invisible in ");
7791 REGB1 = TAG_Int(17);
7792 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7793 once_value_9 = fra.me.REG[3];
7794 register_static_object(&once_value_9);
7795 } else fra.me.REG[3] = once_value_9;
7796 fra.me.REG[3] = fra.me.REG[3];
7797 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7798 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
7799 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
7800 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7801 if (!once_value_10) {
7802 fra.me.REG[3] = BOX_NativeString("");
7803 REGB1 = TAG_Int(0);
7804 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
7805 once_value_10 = fra.me.REG[3];
7806 register_static_object(&once_value_10);
7807 } else fra.me.REG[3] = once_value_10;
7808 fra.me.REG[3] = fra.me.REG[3];
7809 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
7810 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
7811 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
7812 }
7813 /* syntax/typing.nit:1370 */
7814 ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]) = fra.me.REG[4];
7815 /* syntax/typing.nit:1371 */
7816 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
7817 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
7818 /* syntax/typing.nit:1372 */
7819 fra.me.REG[4] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
7820 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
7821 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
7822 if (UNTAG_Bool(REGB1)) {
7823 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7824 if (UNTAG_Bool(REGB1)) {
7825 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1372);
7826 }
7827 fra.me.REG[4] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
7828 fra.me.REG[2] = fra.me.REG[4];
7829 }
7830 /* syntax/typing.nit:1373 */
7831 ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]) = fra.me.REG[2];
7832 label1: while(0);
7833 stack_frame_head = fra.me.prev;
7834 return;
7835 }
7836 static const char LOCATE_syntax___typing___AAttrExpr___after_typing[] = "typing::AAttrExpr::(typing::ANode::after_typing)";
7837 void syntax___typing___AAttrExpr___after_typing(val_t p0, val_t p1){
7838 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
7839 val_t REGB0;
7840 val_t REGB1;
7841 val_t tmp;
7842 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7843 fra.me.file = LOCATE_syntax___typing;
7844 fra.me.line = 1378;
7845 fra.me.meth = LOCATE_syntax___typing___AAttrExpr___after_typing;
7846 fra.me.has_broke = 0;
7847 fra.me.REG_size = 2;
7848 fra.me.nitni_local_ref_head = NULL;
7849 fra.me.REG[0] = NIT_NULL;
7850 fra.me.REG[1] = NIT_NULL;
7851 fra.me.REG[0] = p0;
7852 fra.me.REG[1] = p1;
7853 /* syntax/typing.nit:1380 */
7854 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7855 /* syntax/typing.nit:1381 */
7856 fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7857 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7858 if (UNTAG_Bool(REGB0)) {
7859 } else {
7860 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
7861 if (UNTAG_Bool(REGB1)) {
7862 REGB1 = TAG_Bool(0);
7863 REGB0 = REGB1;
7864 } else {
7865 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
7866 REGB0 = REGB1;
7867 }
7868 }
7869 if (UNTAG_Bool(REGB0)) {
7870 goto label1;
7871 }
7872 /* syntax/typing.nit:1382 */
7873 fra.me.REG[1] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7874 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
7875 /* syntax/typing.nit:1383 */
7876 REGB0 = TAG_Bool(1);
7877 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7878 label1: while(0);
7879 stack_frame_head = fra.me.prev;
7880 return;
7881 }
7882 static const char LOCATE_syntax___typing___AAttrAssignExpr___after_typing[] = "typing::AAttrAssignExpr::(typing::ANode::after_typing)";
7883 void syntax___typing___AAttrAssignExpr___after_typing(val_t p0, val_t p1){
7884 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7885 val_t REGB0;
7886 val_t REGB1;
7887 val_t tmp;
7888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7889 fra.me.file = LOCATE_syntax___typing;
7890 fra.me.line = 1388;
7891 fra.me.meth = LOCATE_syntax___typing___AAttrAssignExpr___after_typing;
7892 fra.me.has_broke = 0;
7893 fra.me.REG_size = 4;
7894 fra.me.nitni_local_ref_head = NULL;
7895 fra.me.REG[0] = NIT_NULL;
7896 fra.me.REG[1] = NIT_NULL;
7897 fra.me.REG[2] = NIT_NULL;
7898 fra.me.REG[3] = NIT_NULL;
7899 fra.me.REG[0] = p0;
7900 fra.me.REG[1] = p1;
7901 /* syntax/typing.nit:1390 */
7902 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7903 /* syntax/typing.nit:1391 */
7904 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7905 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7906 if (UNTAG_Bool(REGB0)) {
7907 } else {
7908 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7909 if (UNTAG_Bool(REGB1)) {
7910 REGB1 = TAG_Bool(0);
7911 REGB0 = REGB1;
7912 } else {
7913 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7914 REGB0 = REGB1;
7915 }
7916 }
7917 if (UNTAG_Bool(REGB0)) {
7918 goto label1;
7919 }
7920 /* syntax/typing.nit:1392 */
7921 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7922 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7923 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]);
7924 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
7925 if (UNTAG_Bool(REGB0)) {
7926 goto label1;
7927 }
7928 /* syntax/typing.nit:1393 */
7929 REGB0 = TAG_Bool(1);
7930 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7931 label1: while(0);
7932 stack_frame_head = fra.me.prev;
7933 return;
7934 }
7935 static const char LOCATE_syntax___typing___AAttrReassignExpr___after_typing[] = "typing::AAttrReassignExpr::(typing::ANode::after_typing)";
7936 void syntax___typing___AAttrReassignExpr___after_typing(val_t p0, val_t p1){
7937 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
7938 val_t REGB0;
7939 val_t REGB1;
7940 val_t tmp;
7941 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7942 fra.me.file = LOCATE_syntax___typing;
7943 fra.me.line = 1398;
7944 fra.me.meth = LOCATE_syntax___typing___AAttrReassignExpr___after_typing;
7945 fra.me.has_broke = 0;
7946 fra.me.REG_size = 4;
7947 fra.me.nitni_local_ref_head = NULL;
7948 fra.me.REG[0] = NIT_NULL;
7949 fra.me.REG[1] = NIT_NULL;
7950 fra.me.REG[2] = NIT_NULL;
7951 fra.me.REG[3] = NIT_NULL;
7952 fra.me.REG[0] = p0;
7953 fra.me.REG[1] = p1;
7954 /* syntax/typing.nit:1400 */
7955 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
7956 /* syntax/typing.nit:1401 */
7957 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
7958 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7959 if (UNTAG_Bool(REGB0)) {
7960 } else {
7961 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7962 if (UNTAG_Bool(REGB1)) {
7963 REGB1 = TAG_Bool(0);
7964 REGB0 = REGB1;
7965 } else {
7966 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7967 REGB0 = REGB1;
7968 }
7969 }
7970 if (UNTAG_Bool(REGB0)) {
7971 goto label1;
7972 }
7973 /* syntax/typing.nit:1402 */
7974 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
7975 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]);
7976 /* syntax/typing.nit:1403 */
7977 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7978 if (UNTAG_Bool(REGB0)) {
7979 } else {
7980 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
7981 if (UNTAG_Bool(REGB1)) {
7982 REGB1 = TAG_Bool(0);
7983 REGB0 = REGB1;
7984 } else {
7985 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
7986 REGB0 = REGB1;
7987 }
7988 }
7989 if (UNTAG_Bool(REGB0)) {
7990 goto label1;
7991 }
7992 /* syntax/typing.nit:1404 */
7993 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
7994 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
7995 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]);
7996 /* syntax/typing.nit:1405 */
7997 REGB0 = TAG_Bool(1);
7998 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
7999 label1: while(0);
8000 stack_frame_head = fra.me.prev;
8001 return;
8002 }
8003 static const char LOCATE_syntax___typing___AIssetAttrExpr___after_typing[] = "typing::AIssetAttrExpr::(typing::ANode::after_typing)";
8004 void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
8005 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
8006 val_t REGB0;
8007 val_t REGB1;
8008 val_t tmp;
8009 static val_t once_value_2; /* Once value */
8010 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8011 fra.me.file = LOCATE_syntax___typing;
8012 fra.me.line = 1410;
8013 fra.me.meth = LOCATE_syntax___typing___AIssetAttrExpr___after_typing;
8014 fra.me.has_broke = 0;
8015 fra.me.REG_size = 3;
8016 fra.me.nitni_local_ref_head = NULL;
8017 fra.me.REG[0] = NIT_NULL;
8018 fra.me.REG[1] = NIT_NULL;
8019 fra.me.REG[2] = NIT_NULL;
8020 fra.me.REG[0] = p0;
8021 fra.me.REG[1] = p1;
8022 /* syntax/typing.nit:1412 */
8023 CALL_syntax___typing___AAttrFormExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8024 /* syntax/typing.nit:1413 */
8025 fra.me.REG[2] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
8026 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8027 if (UNTAG_Bool(REGB0)) {
8028 } else {
8029 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
8030 if (UNTAG_Bool(REGB1)) {
8031 REGB1 = TAG_Bool(0);
8032 REGB0 = REGB1;
8033 } else {
8034 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
8035 REGB0 = REGB1;
8036 }
8037 }
8038 if (UNTAG_Bool(REGB0)) {
8039 goto label1;
8040 }
8041 /* syntax/typing.nit:1414 */
8042 fra.me.REG[2] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
8043 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
8044 if (UNTAG_Bool(REGB0)) {
8045 /* syntax/typing.nit:1415 */
8046 if (!once_value_2) {
8047 fra.me.REG[2] = BOX_NativeString("Error: isset on a nullable attribute.");
8048 REGB0 = TAG_Int(37);
8049 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8050 once_value_2 = fra.me.REG[2];
8051 register_static_object(&once_value_2);
8052 } else fra.me.REG[2] = once_value_2;
8053 fra.me.REG[2] = fra.me.REG[2];
8054 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
8055 }
8056 /* syntax/typing.nit:1417 */
8057 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
8058 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
8059 /* syntax/typing.nit:1418 */
8060 REGB0 = TAG_Bool(1);
8061 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
8062 label1: while(0);
8063 stack_frame_head = fra.me.prev;
8064 return;
8065 }
8066 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::prop_signature)";
8067 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
8068 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
8069 val_t REGB0;
8070 val_t tmp;
8071 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8072 fra.me.file = LOCATE_syntax___typing;
8073 fra.me.line = 1423;
8074 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
8075 fra.me.has_broke = 0;
8076 fra.me.REG_size = 2;
8077 fra.me.nitni_local_ref_head = NULL;
8078 fra.me.REG[0] = NIT_NULL;
8079 fra.me.REG[1] = NIT_NULL;
8080 fra.me.REG[0] = p0;
8081 /* syntax/typing.nit:1423 */
8082 fra.me.REG[1] = fra.me.REG[0];
8083 /* syntax/typing.nit:1424 */
8084 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
8085 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
8086 if (UNTAG_Bool(REGB0)) {
8087 } else {
8088 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1424);
8089 }
8090 goto label1;
8091 label1: while(0);
8092 stack_frame_head = fra.me.prev;
8093 return fra.me.REG[1];
8094 }
8095 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments[] = "typing::AAbsAbsSendExpr::(syntax_base::AAbsAbsSendExpr::raw_arguments)";
8096 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
8097 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
8098 val_t REGB0;
8099 val_t REGB1;
8100 val_t tmp;
8101 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8102 fra.me.file = LOCATE_syntax___typing;
8103 fra.me.line = 1427;
8104 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___raw_arguments;
8105 fra.me.has_broke = 0;
8106 fra.me.REG_size = 4;
8107 fra.me.nitni_local_ref_head = NULL;
8108 fra.me.REG[0] = NIT_NULL;
8109 fra.me.REG[1] = NIT_NULL;
8110 fra.me.REG[2] = NIT_NULL;
8111 fra.me.REG[3] = NIT_NULL;
8112 fra.me.REG[0] = p0;
8113 /* syntax/typing.nit:1430 */
8114 fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]);
8115 /* syntax/typing.nit:1431 */
8116 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8117 if (UNTAG_Bool(REGB0)) {
8118 } else {
8119 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8120 if (UNTAG_Bool(REGB1)) {
8121 REGB1 = TAG_Bool(0);
8122 REGB0 = REGB1;
8123 } else {
8124 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8125 REGB0 = REGB1;
8126 }
8127 }
8128 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
8129 if (UNTAG_Bool(REGB0)) {
8130 /* syntax/typing.nit:1432 */
8131 fra.me.REG[2] = fra.me.REG[1];
8132 goto label1;
8133 } else {
8134 /* syntax/typing.nit:1434 */
8135 fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
8136 fra.me.REG[1] = fra.me.REG[3];
8137 /* syntax/typing.nit:1435 */
8138 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8139 if (UNTAG_Bool(REGB0)) {
8140 } else {
8141 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
8142 if (UNTAG_Bool(REGB1)) {
8143 REGB1 = TAG_Bool(0);
8144 REGB0 = REGB1;
8145 } else {
8146 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
8147 REGB0 = REGB1;
8148 }
8149 }
8150 if (UNTAG_Bool(REGB0)) {
8151 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
8152 fra.me.REG[1] = fra.me.REG[3];
8153 }
8154 /* syntax/typing.nit:1436 */
8155 ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
8156 /* syntax/typing.nit:1437 */
8157 fra.me.REG[2] = fra.me.REG[1];
8158 goto label1;
8159 }
8160 label1: while(0);
8161 stack_frame_head = fra.me.prev;
8162 return fra.me.REG[2];
8163 }
8164 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments[] = "typing::AAbsAbsSendExpr::compute_raw_arguments";
8165 val_t syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(val_t p0){
8166 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
8167 val_t REGB0;
8168 val_t tmp;
8169 static val_t once_value_1; /* Once value */
8170 static val_t once_value_2; /* Once value */
8171 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8172 fra.me.file = LOCATE_syntax___typing;
8173 fra.me.line = 1443;
8174 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments;
8175 fra.me.has_broke = 0;
8176 fra.me.REG_size = 3;
8177 fra.me.nitni_local_ref_head = NULL;
8178 fra.me.REG[0] = NIT_NULL;
8179 fra.me.REG[1] = NIT_NULL;
8180 fra.me.REG[2] = NIT_NULL;
8181 fra.me.REG[0] = p0;
8182 /* syntax/typing.nit:1445 */
8183 REGB0 = TAG_Int(3);
8184 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
8185 if (!once_value_1) {
8186 fra.me.REG[2] = BOX_NativeString("");
8187 REGB0 = TAG_Int(0);
8188 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8189 once_value_1 = fra.me.REG[2];
8190 register_static_object(&once_value_1);
8191 } else fra.me.REG[2] = once_value_1;
8192 fra.me.REG[2] = fra.me.REG[2];
8193 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8194 fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
8195 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8196 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8197 if (!once_value_2) {
8198 fra.me.REG[2] = BOX_NativeString(" no compute_raw_arguments");
8199 REGB0 = TAG_Int(25);
8200 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
8201 once_value_2 = fra.me.REG[2];
8202 register_static_object(&once_value_2);
8203 } else fra.me.REG[2] = once_value_2;
8204 fra.me.REG[2] = fra.me.REG[2];
8205 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
8206 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
8207 CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
8208 /* syntax/typing.nit:1446 */
8209 fra.me.REG[1] = NIT_NULL;
8210 goto label3;
8211 label3: while(0);
8212 stack_frame_head = fra.me.prev;
8213 return fra.me.REG[1];
8214 }
8215 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature[] = "typing::AAbsAbsSendExpr::process_signature";
8216 val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8217 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
8218 val_t REGB0;
8219 val_t REGB1;
8220 val_t REGB2;
8221 val_t REGB3;
8222 val_t REGB4;
8223 val_t REGB5;
8224 val_t REGB6;
8225 val_t REGB7;
8226 val_t REGB8;
8227 val_t REGB9;
8228 val_t REGB10;
8229 val_t REGB11;
8230 val_t tmp;
8231 static val_t once_value_1; /* Once value */
8232 static val_t once_value_2; /* Once value */
8233 static val_t once_value_3; /* Once value */
8234 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8235 fra.me.file = LOCATE_syntax___typing;
8236 fra.me.line = 1449;
8237 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_signature;
8238 fra.me.has_broke = 0;
8239 fra.me.REG_size = 7;
8240 fra.me.nitni_local_ref_head = NULL;
8241 fra.me.REG[0] = NIT_NULL;
8242 fra.me.REG[1] = NIT_NULL;
8243 fra.me.REG[2] = NIT_NULL;
8244 fra.me.REG[3] = NIT_NULL;
8245 fra.me.REG[4] = NIT_NULL;
8246 fra.me.REG[5] = NIT_NULL;
8247 fra.me.REG[6] = NIT_NULL;
8248 fra.me.REG[0] = p0;
8249 fra.me.REG[1] = p1;
8250 fra.me.REG[2] = p2;
8251 fra.me.REG[3] = p3;
8252 fra.me.REG[4] = p4;
8253 /* syntax/typing.nit:1452 */
8254 REGB0 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
8255 /* syntax/typing.nit:1453 */
8256 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
8257 /* syntax/typing.nit:1455 */
8258 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8259 if (UNTAG_Bool(REGB2)) {
8260 } else {
8261 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8262 if (UNTAG_Bool(REGB3)) {
8263 REGB3 = TAG_Bool(0);
8264 REGB2 = REGB3;
8265 } else {
8266 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8267 REGB2 = REGB3;
8268 }
8269 }
8270 if (UNTAG_Bool(REGB2)) {
8271 REGB2 = TAG_Int(0);
8272 } else {
8273 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8274 if (UNTAG_Bool(REGB3)) {
8275 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1455);
8276 }
8277 /* ../lib/standard/collection/array.nit:24 */
8278 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8279 if (UNTAG_Bool(REGB3)) {
8280 } else {
8281 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8282 }
8283 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8284 /* syntax/typing.nit:1455 */
8285 REGB2 = REGB3;
8286 }
8287 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8288 if (UNTAG_Bool(REGB3)) {
8289 } else {
8290 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8291 }
8292 /* ../lib/standard/kernel.nit:237 */
8293 REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8294 /* syntax/typing.nit:1456 */
8295 if (UNTAG_Bool(REGB3)) {
8296 REGB3 = TAG_Bool(1);
8297 } else {
8298 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
8299 if (UNTAG_Bool(REGB4)) {
8300 } else {
8301 /* ../lib/standard/kernel.nit:230 */
8302 REGB5 = TAG_Bool((REGB1)==(REGB2));
8303 /* syntax/typing.nit:1456 */
8304 REGB4 = REGB5;
8305 }
8306 REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
8307 if (UNTAG_Bool(REGB4)) {
8308 REGB4 = TAG_Int(1);
8309 /* ../lib/standard/kernel.nit:239 */
8310 REGB4 = TAG_Int(-UNTAG_Int(REGB4));
8311 /* syntax/typing.nit:1456 */
8312 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
8313 if (UNTAG_Bool(REGB5)) {
8314 } else {
8315 /* ../lib/standard/kernel.nit:230 */
8316 REGB4 = TAG_Bool((REGB0)==(REGB4));
8317 /* syntax/typing.nit:1456 */
8318 REGB5 = REGB4;
8319 }
8320 } else {
8321 REGB4 = TAG_Bool(0);
8322 REGB5 = REGB4;
8323 }
8324 REGB3 = REGB5;
8325 }
8326 if (UNTAG_Bool(REGB3)) {
8327 /* syntax/typing.nit:1457 */
8328 REGB3 = TAG_Int(5);
8329 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
8330 if (!once_value_1) {
8331 fra.me.REG[6] = BOX_NativeString("Error: arity mismatch; prototype is '");
8332 REGB3 = TAG_Int(37);
8333 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
8334 once_value_1 = fra.me.REG[6];
8335 register_static_object(&once_value_1);
8336 } else fra.me.REG[6] = once_value_1;
8337 fra.me.REG[6] = fra.me.REG[6];
8338 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
8339 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8340 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8341 if (!once_value_2) {
8342 fra.me.REG[3] = BOX_NativeString("");
8343 REGB3 = TAG_Int(0);
8344 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8345 once_value_2 = fra.me.REG[3];
8346 register_static_object(&once_value_2);
8347 } else fra.me.REG[3] = once_value_2;
8348 fra.me.REG[3] = fra.me.REG[3];
8349 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8350 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
8351 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8352 if (!once_value_3) {
8353 fra.me.REG[3] = BOX_NativeString("'.");
8354 REGB3 = TAG_Int(2);
8355 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
8356 once_value_3 = fra.me.REG[3];
8357 register_static_object(&once_value_3);
8358 } else fra.me.REG[3] = once_value_3;
8359 fra.me.REG[3] = fra.me.REG[3];
8360 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
8361 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
8362 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8363 /* syntax/typing.nit:1458 */
8364 REGB3 = TAG_Bool(0);
8365 goto label4;
8366 }
8367 /* syntax/typing.nit:1460 */
8368 REGB5 = TAG_Int(0);
8369 /* syntax/typing.nit:1461 */
8370 REGB4 = TAG_Int(0);
8371 /* ../lib/standard/kernel.nit:350 */
8372 REGB6 = REGB1;
8373 /* ../lib/standard/kernel.nit:355 */
8374 while(1) {
8375 REGB7 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
8376 if (UNTAG_Bool(REGB7)) {
8377 } else {
8378 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8379 }
8380 /* ../lib/standard/kernel.nit:235 */
8381 REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
8382 /* ../lib/standard/kernel.nit:355 */
8383 if (UNTAG_Bool(REGB7)) {
8384 /* syntax/typing.nit:1461 */
8385 REGB7 = REGB4;
8386 /* syntax/typing.nit:1463 */
8387 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB7);
8388 /* syntax/typing.nit:1464 */
8389 REGB8 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB0));
8390 if (UNTAG_Bool(REGB8)) {
8391 } else {
8392 /* ../lib/standard/kernel.nit:230 */
8393 REGB7 = TAG_Bool((REGB7)==(REGB0));
8394 /* syntax/typing.nit:1464 */
8395 REGB8 = REGB7;
8396 }
8397 if (UNTAG_Bool(REGB8)) {
8398 /* syntax/typing.nit:1465 */
8399 REGB8 = TAG_Int(0);
8400 /* ../lib/standard/kernel.nit:240 */
8401 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
8402 /* ../lib/standard/kernel.nit:344 */
8403 while(1) {
8404 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8405 if (UNTAG_Bool(REGB9)) {
8406 } else {
8407 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8408 }
8409 /* ../lib/standard/kernel.nit:234 */
8410 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
8411 /* ../lib/standard/kernel.nit:344 */
8412 if (UNTAG_Bool(REGB9)) {
8413 /* syntax/typing.nit:1466 */
8414 REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8415 if (UNTAG_Bool(REGB9)) {
8416 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1466);
8417 }
8418 /* ../lib/standard/collection/array.nit:278 */
8419 fra.me.REG[0] = fra.me.REG[4];
8420 REGB9 = REGB5;
8421 /* ../lib/standard/collection/array.nit:280 */
8422 REGB10 = TAG_Int(0);
8423 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8424 if (UNTAG_Bool(REGB11)) {
8425 } else {
8426 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8427 }
8428 /* ../lib/standard/kernel.nit:236 */
8429 REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
8430 /* ../lib/standard/collection/array.nit:280 */
8431 if (UNTAG_Bool(REGB10)) {
8432 REGB10 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
8433 if (UNTAG_Bool(REGB10)) {
8434 } else {
8435 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8436 }
8437 REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
8438 REGB11 = TAG_Bool(VAL_ISA(REGB10, VTCOLOR_standard___kernel___Comparable___OTHER(REGB9), VTID_standard___kernel___Comparable___OTHER(REGB9))) /*cast OTHER*/;
8439 if (UNTAG_Bool(REGB11)) {
8440 } else {
8441 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8442 }
8443 /* ../lib/standard/kernel.nit:235 */
8444 REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
8445 } else {
8446 /* ../lib/standard/collection/array.nit:280 */
8447 REGB11 = TAG_Bool(0);
8448 REGB10 = REGB11;
8449 }
8450 if (UNTAG_Bool(REGB10)) {
8451 } else {
8452 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8453 }
8454 /* ../lib/standard/collection/array.nit:281 */
8455 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
8456 REGB10 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
8457 if (UNTAG_Bool(REGB10)) {
8458 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8459 }
8460 /* ../lib/standard/collection/array.nit:724 */
8461 fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
8462 /* ../lib/standard/collection/array.nit:281 */
8463 goto label5;
8464 label5: while(0);
8465 /* syntax/typing.nit:1467 */
8466 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8467 /* syntax/typing.nit:1468 */
8468 REGB9 = TAG_Int(1);
8469 /* ../lib/standard/kernel.nit:238 */
8470 REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
8471 /* syntax/typing.nit:1468 */
8472 REGB5 = REGB9;
8473 /* ../lib/standard/kernel.nit:346 */
8474 REGB9 = TAG_Int(1);
8475 /* ../lib/standard/kernel.nit:238 */
8476 REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
8477 /* ../lib/standard/kernel.nit:346 */
8478 REGB8 = REGB9;
8479 } else {
8480 /* ../lib/standard/kernel.nit:344 */
8481 goto label6;
8482 }
8483 }
8484 label6: while(0);
8485 } else {
8486 /* syntax/typing.nit:1471 */
8487 REGB8 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8488 if (UNTAG_Bool(REGB8)) {
8489 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1471);
8490 }
8491 /* ../lib/standard/collection/array.nit:278 */
8492 fra.me.REG[3] = fra.me.REG[4];
8493 REGB8 = REGB5;
8494 /* ../lib/standard/collection/array.nit:280 */
8495 REGB7 = TAG_Int(0);
8496 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8497 if (UNTAG_Bool(REGB9)) {
8498 } else {
8499 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8500 }
8501 /* ../lib/standard/kernel.nit:236 */
8502 REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
8503 /* ../lib/standard/collection/array.nit:280 */
8504 if (UNTAG_Bool(REGB7)) {
8505 REGB7 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
8506 if (UNTAG_Bool(REGB7)) {
8507 } else {
8508 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8509 }
8510 REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
8511 REGB9 = TAG_Bool(VAL_ISA(REGB7, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
8512 if (UNTAG_Bool(REGB9)) {
8513 } else {
8514 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8515 }
8516 /* ../lib/standard/kernel.nit:235 */
8517 REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
8518 } else {
8519 /* ../lib/standard/collection/array.nit:280 */
8520 REGB9 = TAG_Bool(0);
8521 REGB7 = REGB9;
8522 }
8523 if (UNTAG_Bool(REGB7)) {
8524 } else {
8525 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8526 }
8527 /* ../lib/standard/collection/array.nit:281 */
8528 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
8529 REGB7 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
8530 if (UNTAG_Bool(REGB7)) {
8531 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8532 }
8533 /* ../lib/standard/collection/array.nit:724 */
8534 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
8535 /* ../lib/standard/collection/array.nit:281 */
8536 goto label7;
8537 label7: while(0);
8538 /* syntax/typing.nit:1471 */
8539 fra.me.REG[0] = fra.me.REG[3];
8540 /* syntax/typing.nit:1472 */
8541 CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
8542 /* syntax/typing.nit:1473 */
8543 REGB8 = TAG_Int(1);
8544 /* ../lib/standard/kernel.nit:238 */
8545 REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
8546 /* syntax/typing.nit:1473 */
8547 REGB5 = REGB8;
8548 }
8549 /* ../lib/standard/kernel.nit:357 */
8550 REGB8 = TAG_Int(1);
8551 /* ../lib/standard/kernel.nit:238 */
8552 REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
8553 /* ../lib/standard/kernel.nit:357 */
8554 REGB4 = REGB8;
8555 } else {
8556 /* ../lib/standard/kernel.nit:355 */
8557 goto label8;
8558 }
8559 }
8560 label8: while(0);
8561 /* syntax/typing.nit:1476 */
8562 REGB4 = TAG_Bool(1);
8563 REGB3 = REGB4;
8564 goto label4;
8565 label4: while(0);
8566 stack_frame_head = fra.me.prev;
8567 return REGB3;
8568 }
8569 static const char LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures[] = "typing::AAbsAbsSendExpr::process_closures";
8570 val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
8571 struct {struct stack_frame_t me; val_t MORE_REG[16];} fra;
8572 val_t REGB0;
8573 val_t REGB1;
8574 val_t REGB2;
8575 val_t REGB3;
8576 val_t REGB4;
8577 val_t REGB5;
8578 val_t tmp;
8579 static val_t once_value_2; /* Once value */
8580 static val_t once_value_3; /* Once value */
8581 static val_t once_value_4; /* Once value */
8582 static val_t once_value_5; /* Once value */
8583 static val_t once_value_6; /* Once value */
8584 static val_t once_value_7; /* Once value */
8585 static val_t once_value_8; /* Once value */
8586 static val_t once_value_11; /* Once value */
8587 static val_t once_value_12; /* Once value */
8588 static val_t once_value_13; /* Once value */
8589 static val_t once_value_14; /* Once value */
8590 static val_t once_value_15; /* Once value */
8591 static val_t once_value_16; /* Once value */
8592 static val_t once_value_18; /* Once value */
8593 static val_t once_value_19; /* Once value */
8594 static val_t once_value_20; /* Once value */
8595 static val_t once_value_21; /* Once value */
8596 static val_t once_value_22; /* Once value */
8597 static val_t once_value_24; /* Once value */
8598 static val_t once_value_25; /* Once value */
8599 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8600 fra.me.file = LOCATE_syntax___typing;
8601 fra.me.line = 1479;
8602 fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___process_closures;
8603 fra.me.has_broke = 0;
8604 fra.me.REG_size = 17;
8605 fra.me.nitni_local_ref_head = NULL;
8606 fra.me.REG[0] = NIT_NULL;
8607 fra.me.REG[1] = NIT_NULL;
8608 fra.me.REG[2] = NIT_NULL;
8609 fra.me.REG[3] = NIT_NULL;
8610 fra.me.REG[4] = NIT_NULL;
8611 fra.me.REG[5] = NIT_NULL;
8612 fra.me.REG[6] = NIT_NULL;
8613 fra.me.REG[7] = NIT_NULL;
8614 fra.me.REG[8] = NIT_NULL;
8615 fra.me.REG[9] = NIT_NULL;
8616 fra.me.REG[10] = NIT_NULL;
8617 fra.me.REG[11] = NIT_NULL;
8618 fra.me.REG[12] = NIT_NULL;
8619 fra.me.REG[13] = NIT_NULL;
8620 fra.me.REG[14] = NIT_NULL;
8621 fra.me.REG[15] = NIT_NULL;
8622 fra.me.REG[16] = NIT_NULL;
8623 fra.me.REG[0] = p0;
8624 fra.me.REG[1] = p1;
8625 fra.me.REG[2] = p2;
8626 fra.me.REG[3] = p3;
8627 fra.me.REG[4] = p4;
8628 /* syntax/typing.nit:1482 */
8629 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
8630 /* syntax/typing.nit:1483 */
8631 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
8632 /* syntax/typing.nit:1484 */
8633 REGB0 = TAG_Int(0);
8634 /* ../lib/standard/collection/array.nit:266 */
8635 fra.me.REG[7] = fra.me.REG[6];
8636 /* ../lib/standard/collection/array.nit:269 */
8637 REGB1 = TAG_Int(0);
8638 /* ../lib/standard/collection/array.nit:270 */
8639 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8640 if (UNTAG_Bool(REGB2)) {
8641 } else {
8642 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
8643 }
8644 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8645 /* ../lib/standard/collection/array.nit:271 */
8646 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8647 /* ../lib/standard/collection/array.nit:272 */
8648 while(1) {
8649 /* ../lib/standard/collection/array.nit:24 */
8650 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8651 if (UNTAG_Bool(REGB2)) {
8652 } else {
8653 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8654 }
8655 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8656 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8657 if (UNTAG_Bool(REGB3)) {
8658 } else {
8659 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8660 }
8661 /* ../lib/standard/kernel.nit:235 */
8662 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
8663 /* ../lib/standard/collection/array.nit:272 */
8664 if (UNTAG_Bool(REGB2)) {
8665 /* ../lib/standard/collection/array.nit:273 */
8666 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
8667 if (UNTAG_Bool(REGB2)) {
8668 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
8669 }
8670 /* ../lib/standard/collection/array.nit:724 */
8671 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
8672 /* syntax/typing.nit:1486 */
8673 REGB2 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[9])(fra.me.REG[9]);
8674 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8675 if (UNTAG_Bool(REGB2)) {
8676 REGB2 = TAG_Int(1);
8677 /* ../lib/standard/kernel.nit:238 */
8678 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
8679 /* syntax/typing.nit:1486 */
8680 REGB0 = REGB2;
8681 }
8682 /* ../lib/standard/collection/array.nit:274 */
8683 REGB2 = TAG_Int(1);
8684 /* ../lib/standard/kernel.nit:238 */
8685 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
8686 /* ../lib/standard/collection/array.nit:274 */
8687 REGB1 = REGB2;
8688 } else {
8689 /* ../lib/standard/collection/array.nit:272 */
8690 goto label1;
8691 }
8692 }
8693 label1: while(0);
8694 /* syntax/typing.nit:1488 */
8695 REGB1 = TAG_Int(0);
8696 /* syntax/typing.nit:1489 */
8697 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8698 if (UNTAG_Bool(REGB2)) {
8699 } else {
8700 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8701 if (UNTAG_Bool(REGB3)) {
8702 REGB3 = TAG_Bool(0);
8703 REGB2 = REGB3;
8704 } else {
8705 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
8706 REGB2 = REGB3;
8707 }
8708 }
8709 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8710 if (UNTAG_Bool(REGB2)) {
8711 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8712 if (UNTAG_Bool(REGB2)) {
8713 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1489);
8714 }
8715 /* ../lib/standard/collection/array.nit:24 */
8716 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8717 if (UNTAG_Bool(REGB2)) {
8718 } else {
8719 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8720 }
8721 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8722 /* syntax/typing.nit:1489 */
8723 REGB1 = REGB2;
8724 }
8725 /* ../lib/standard/collection/array.nit:24 */
8726 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8727 if (UNTAG_Bool(REGB2)) {
8728 } else {
8729 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8730 }
8731 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8732 /* syntax/typing.nit:1490 */
8733 REGB3 = TAG_Int(0);
8734 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8735 if (UNTAG_Bool(REGB4)) {
8736 } else {
8737 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8738 }
8739 /* ../lib/standard/kernel.nit:237 */
8740 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
8741 /* syntax/typing.nit:1490 */
8742 if (UNTAG_Bool(REGB3)) {
8743 /* syntax/typing.nit:1491 */
8744 REGB3 = TAG_Int(0);
8745 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
8746 if (UNTAG_Bool(REGB2)) {
8747 } else {
8748 /* ../lib/standard/kernel.nit:230 */
8749 REGB3 = TAG_Bool((REGB1)==(REGB3));
8750 /* syntax/typing.nit:1491 */
8751 REGB2 = REGB3;
8752 }
8753 if (UNTAG_Bool(REGB2)) {
8754 REGB2 = TAG_Int(0);
8755 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
8756 if (UNTAG_Bool(REGB3)) {
8757 } else {
8758 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8759 }
8760 /* ../lib/standard/kernel.nit:237 */
8761 REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
8762 } else {
8763 /* syntax/typing.nit:1491 */
8764 REGB3 = TAG_Bool(0);
8765 REGB2 = REGB3;
8766 }
8767 if (UNTAG_Bool(REGB2)) {
8768 /* syntax/typing.nit:1492 */
8769 REGB2 = TAG_Int(5);
8770 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8771 if (!once_value_2) {
8772 fra.me.REG[7] = BOX_NativeString("Error: ");
8773 REGB2 = TAG_Int(7);
8774 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8775 once_value_2 = fra.me.REG[7];
8776 register_static_object(&once_value_2);
8777 } else fra.me.REG[7] = once_value_2;
8778 fra.me.REG[7] = fra.me.REG[7];
8779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8780 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8781 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8782 if (!once_value_3) {
8783 fra.me.REG[7] = BOX_NativeString(" requires ");
8784 REGB2 = TAG_Int(10);
8785 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8786 once_value_3 = fra.me.REG[7];
8787 register_static_object(&once_value_3);
8788 } else fra.me.REG[7] = once_value_3;
8789 fra.me.REG[7] = fra.me.REG[7];
8790 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8791 /* ../lib/standard/collection/array.nit:24 */
8792 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8793 if (UNTAG_Bool(REGB2)) {
8794 } else {
8795 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8796 }
8797 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8798 /* syntax/typing.nit:1492 */
8799 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8800 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8801 if (!once_value_4) {
8802 fra.me.REG[7] = BOX_NativeString(" blocks.");
8803 REGB2 = TAG_Int(8);
8804 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8805 once_value_4 = fra.me.REG[7];
8806 register_static_object(&once_value_4);
8807 } else fra.me.REG[7] = once_value_4;
8808 fra.me.REG[7] = fra.me.REG[7];
8809 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8810 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8811 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8812 } else {
8813 /* ../lib/standard/collection/array.nit:24 */
8814 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8815 if (UNTAG_Bool(REGB2)) {
8816 } else {
8817 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8818 }
8819 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8820 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8821 if (UNTAG_Bool(REGB3)) {
8822 } else {
8823 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8824 }
8825 /* ../lib/standard/kernel.nit:237 */
8826 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8827 /* syntax/typing.nit:1493 */
8828 if (UNTAG_Bool(REGB2)) {
8829 REGB2 = TAG_Bool(1);
8830 } else {
8831 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8832 if (UNTAG_Bool(REGB3)) {
8833 } else {
8834 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8835 }
8836 /* ../lib/standard/kernel.nit:235 */
8837 REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
8838 /* syntax/typing.nit:1493 */
8839 REGB2 = REGB0;
8840 }
8841 if (UNTAG_Bool(REGB2)) {
8842 /* syntax/typing.nit:1494 */
8843 REGB2 = TAG_Int(7);
8844 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
8845 if (!once_value_5) {
8846 fra.me.REG[7] = BOX_NativeString("Error: ");
8847 REGB2 = TAG_Int(7);
8848 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8849 once_value_5 = fra.me.REG[7];
8850 register_static_object(&once_value_5);
8851 } else fra.me.REG[7] = once_value_5;
8852 fra.me.REG[7] = fra.me.REG[7];
8853 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8854 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
8855 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8856 if (!once_value_6) {
8857 fra.me.REG[7] = BOX_NativeString(" requires ");
8858 REGB2 = TAG_Int(10);
8859 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8860 once_value_6 = fra.me.REG[7];
8861 register_static_object(&once_value_6);
8862 } else fra.me.REG[7] = once_value_6;
8863 fra.me.REG[7] = fra.me.REG[7];
8864 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8865 /* ../lib/standard/collection/array.nit:24 */
8866 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
8867 if (UNTAG_Bool(REGB2)) {
8868 } else {
8869 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8870 }
8871 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
8872 /* syntax/typing.nit:1494 */
8873 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8874 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8875 if (!once_value_7) {
8876 fra.me.REG[7] = BOX_NativeString(" blocks, ");
8877 REGB2 = TAG_Int(9);
8878 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8879 once_value_7 = fra.me.REG[7];
8880 register_static_object(&once_value_7);
8881 } else fra.me.REG[7] = once_value_7;
8882 fra.me.REG[7] = fra.me.REG[7];
8883 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8884 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8885 if (UNTAG_Bool(REGB2)) {
8886 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1494);
8887 }
8888 /* ../lib/standard/collection/array.nit:24 */
8889 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
8890 if (UNTAG_Bool(REGB2)) {
8891 } else {
8892 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
8893 }
8894 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
8895 /* syntax/typing.nit:1494 */
8896 fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
8897 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8898 if (!once_value_8) {
8899 fra.me.REG[7] = BOX_NativeString(" found.");
8900 REGB2 = TAG_Int(7);
8901 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
8902 once_value_8 = fra.me.REG[7];
8903 register_static_object(&once_value_8);
8904 } else fra.me.REG[7] = once_value_8;
8905 fra.me.REG[7] = fra.me.REG[7];
8906 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
8907 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
8908 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
8909 } else {
8910 /* syntax/typing.nit:1497 */
8911 fra.me.REG[8] = NIT_NULL;
8912 /* syntax/typing.nit:1498 */
8913 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8914 if (UNTAG_Bool(REGB2)) {
8915 } else {
8916 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
8917 if (UNTAG_Bool(REGB0)) {
8918 REGB0 = TAG_Bool(0);
8919 REGB2 = REGB0;
8920 } else {
8921 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
8922 REGB2 = REGB0;
8923 }
8924 }
8925 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
8926 if (UNTAG_Bool(REGB2)) {
8927 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
8928 fra.me.REG[8] = fra.me.REG[7];
8929 }
8930 /* syntax/typing.nit:1501 */
8931 REGB2 = TAG_Int(0);
8932 REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
8933 if (UNTAG_Bool(REGB0)) {
8934 } else {
8935 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8936 }
8937 /* ../lib/standard/kernel.nit:237 */
8938 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
8939 /* syntax/typing.nit:1501 */
8940 if (UNTAG_Bool(REGB2)) {
8941 REGB2 = TAG_Int(1);
8942 /* ../lib/standard/kernel.nit:240 */
8943 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
8944 /* syntax/typing.nit:1501 */
8945 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
8946 if (UNTAG_Bool(REGB0)) {
8947 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1501);
8948 }
8949 /* ../lib/standard/collection/array.nit:278 */
8950 fra.me.REG[7] = fra.me.REG[4];
8951 /* ../lib/standard/collection/array.nit:280 */
8952 REGB0 = TAG_Int(0);
8953 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8954 if (UNTAG_Bool(REGB3)) {
8955 } else {
8956 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8957 }
8958 /* ../lib/standard/kernel.nit:236 */
8959 REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
8960 /* ../lib/standard/collection/array.nit:280 */
8961 if (UNTAG_Bool(REGB0)) {
8962 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
8963 if (UNTAG_Bool(REGB0)) {
8964 } else {
8965 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
8966 }
8967 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
8968 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
8969 if (UNTAG_Bool(REGB3)) {
8970 } else {
8971 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
8972 }
8973 /* ../lib/standard/kernel.nit:235 */
8974 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
8975 } else {
8976 /* ../lib/standard/collection/array.nit:280 */
8977 REGB3 = TAG_Bool(0);
8978 REGB0 = REGB3;
8979 }
8980 if (UNTAG_Bool(REGB0)) {
8981 } else {
8982 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
8983 }
8984 /* ../lib/standard/collection/array.nit:281 */
8985 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
8986 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8987 if (UNTAG_Bool(REGB0)) {
8988 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
8989 }
8990 /* ../lib/standard/collection/array.nit:724 */
8991 fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
8992 /* ../lib/standard/collection/array.nit:281 */
8993 goto label9;
8994 label9: while(0);
8995 /* syntax/typing.nit:1501 */
8996 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
8997 if (UNTAG_Bool(REGB2)) {
8998 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1501);
8999 }
9000 fra.me.REG[7] = CALL_parser___parser_nodes___ALabelable___n_label(fra.me.REG[7])(fra.me.REG[7]);
9001 } else {
9002 fra.me.REG[7] = NIT_NULL;
9003 }
9004 /* syntax/typing.nit:1504 */
9005 REGB2 = TAG_Int(0);
9006 /* ../lib/standard/kernel.nit:350 */
9007 REGB0 = REGB1;
9008 /* ../lib/standard/kernel.nit:355 */
9009 while(1) {
9010 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
9011 if (UNTAG_Bool(REGB3)) {
9012 } else {
9013 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9014 }
9015 /* ../lib/standard/kernel.nit:235 */
9016 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
9017 /* ../lib/standard/kernel.nit:355 */
9018 if (UNTAG_Bool(REGB3)) {
9019 /* syntax/typing.nit:1504 */
9020 REGB3 = REGB2;
9021 /* syntax/typing.nit:1505 */
9022 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9023 if (UNTAG_Bool(REGB4)) {
9024 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1505);
9025 }
9026 /* ../lib/standard/collection/array.nit:278 */
9027 fra.me.REG[9] = fra.me.REG[4];
9028 /* ../lib/standard/collection/array.nit:280 */
9029 REGB4 = TAG_Int(0);
9030 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9031 if (UNTAG_Bool(REGB5)) {
9032 } else {
9033 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9034 }
9035 /* ../lib/standard/kernel.nit:236 */
9036 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
9037 /* ../lib/standard/collection/array.nit:280 */
9038 if (UNTAG_Bool(REGB4)) {
9039 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
9040 if (UNTAG_Bool(REGB4)) {
9041 } else {
9042 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
9043 }
9044 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
9045 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
9046 if (UNTAG_Bool(REGB5)) {
9047 } else {
9048 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9049 }
9050 /* ../lib/standard/kernel.nit:235 */
9051 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
9052 } else {
9053 /* ../lib/standard/collection/array.nit:280 */
9054 REGB5 = TAG_Bool(0);
9055 REGB4 = REGB5;
9056 }
9057 if (UNTAG_Bool(REGB4)) {
9058 } else {
9059 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
9060 }
9061 /* ../lib/standard/collection/array.nit:281 */
9062 fra.me.REG[9] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
9063 REGB4 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
9064 if (UNTAG_Bool(REGB4)) {
9065 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
9066 }
9067 /* ../lib/standard/collection/array.nit:724 */
9068 fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
9069 /* ../lib/standard/collection/array.nit:281 */
9070 goto label10;
9071 label10: while(0);
9072 /* syntax/typing.nit:1506 */
9073 fra.me.REG[10] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9074 fra.me.REG[10] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[10])(fra.me.REG[10]);
9075 /* syntax/typing.nit:1507 */
9076 fra.me.REG[11] = CALL_metamodel___static_type___MMSignature___closure_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[10]);
9077 /* syntax/typing.nit:1508 */
9078 REGB3 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9079 if (UNTAG_Bool(REGB3)) {
9080 } else {
9081 REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
9082 if (UNTAG_Bool(REGB4)) {
9083 REGB4 = TAG_Bool(0);
9084 REGB3 = REGB4;
9085 } else {
9086 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[11])(fra.me.REG[11], NIT_NULL);
9087 REGB3 = REGB4;
9088 }
9089 }
9090 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
9091 if (UNTAG_Bool(REGB3)) {
9092 /* syntax/typing.nit:1509 */
9093 fra.me.REG[11] = NEW_EscapableClosure_syntax___scope___EscapableClosure___init(fra.me.REG[9], fra.me.REG[11], fra.me.REG[8]);
9094 /* syntax/typing.nit:1510 */
9095 fra.me.REG[12] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9096 CALL_syntax___scope___ScopeContext___push_escapable(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11], fra.me.REG[7]);
9097 /* syntax/typing.nit:1511 */
9098 CALL_syntax___typing___AClosureDef___accept_typing2(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1], fra.me.REG[11]);
9099 /* syntax/typing.nit:1512 */
9100 fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
9101 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
9102 } else {
9103 /* ../lib/standard/collection/array.nit:24 */
9104 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
9105 if (UNTAG_Bool(REGB3)) {
9106 } else {
9107 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9108 }
9109 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
9110 /* syntax/typing.nit:1513 */
9111 REGB4 = TAG_Int(1);
9112 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
9113 if (UNTAG_Bool(REGB5)) {
9114 } else {
9115 /* ../lib/standard/kernel.nit:230 */
9116 REGB4 = TAG_Bool((REGB3)==(REGB4));
9117 /* syntax/typing.nit:1513 */
9118 REGB5 = REGB4;
9119 }
9120 if (UNTAG_Bool(REGB5)) {
9121 /* syntax/typing.nit:1514 */
9122 fra.me.REG[11] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9123 REGB5 = TAG_Int(7);
9124 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9125 if (!once_value_11) {
9126 fra.me.REG[13] = BOX_NativeString("Error: no closure named '!");
9127 REGB5 = TAG_Int(26);
9128 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9129 once_value_11 = fra.me.REG[13];
9130 register_static_object(&once_value_11);
9131 } else fra.me.REG[13] = once_value_11;
9132 fra.me.REG[13] = fra.me.REG[13];
9133 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9134 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9135 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9136 if (!once_value_12) {
9137 fra.me.REG[13] = BOX_NativeString("' in ");
9138 REGB5 = TAG_Int(5);
9139 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9140 once_value_12 = fra.me.REG[13];
9141 register_static_object(&once_value_12);
9142 } else fra.me.REG[13] = once_value_12;
9143 fra.me.REG[13] = fra.me.REG[13];
9144 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9145 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9146 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9147 if (!once_value_13) {
9148 fra.me.REG[13] = BOX_NativeString("; only closure is !");
9149 REGB5 = TAG_Int(19);
9150 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9151 once_value_13 = fra.me.REG[13];
9152 register_static_object(&once_value_13);
9153 } else fra.me.REG[13] = once_value_13;
9154 fra.me.REG[13] = fra.me.REG[13];
9155 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9156 fra.me.REG[13] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
9157 REGB5 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9158 if (UNTAG_Bool(REGB5)) {
9159 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1514);
9160 }
9161 fra.me.REG[13] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[13])(fra.me.REG[13]);
9162 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9163 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9164 if (!once_value_14) {
9165 fra.me.REG[13] = BOX_NativeString(".");
9166 REGB5 = TAG_Int(1);
9167 fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB5);
9168 once_value_14 = fra.me.REG[13];
9169 register_static_object(&once_value_14);
9170 } else fra.me.REG[13] = once_value_14;
9171 fra.me.REG[13] = fra.me.REG[13];
9172 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
9173 fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
9174 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
9175 } else {
9176 /* syntax/typing.nit:1516 */
9177 fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
9178 /* ../lib/standard/collection/array.nit:266 */
9179 fra.me.REG[11] = fra.me.REG[6];
9180 /* ../lib/standard/collection/array.nit:269 */
9181 REGB5 = TAG_Int(0);
9182 /* ../lib/standard/collection/array.nit:270 */
9183 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9184 if (UNTAG_Bool(REGB4)) {
9185 } else {
9186 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
9187 }
9188 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9189 /* ../lib/standard/collection/array.nit:271 */
9190 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[11]);
9191 /* ../lib/standard/collection/array.nit:272 */
9192 while(1) {
9193 /* ../lib/standard/collection/array.nit:24 */
9194 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11])!=NIT_NULL);
9195 if (UNTAG_Bool(REGB4)) {
9196 } else {
9197 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9198 }
9199 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
9200 REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
9201 if (UNTAG_Bool(REGB3)) {
9202 } else {
9203 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9204 }
9205 /* ../lib/standard/kernel.nit:235 */
9206 REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
9207 /* ../lib/standard/collection/array.nit:272 */
9208 if (UNTAG_Bool(REGB4)) {
9209 /* ../lib/standard/collection/array.nit:273 */
9210 REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
9211 if (UNTAG_Bool(REGB4)) {
9212 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
9213 }
9214 /* ../lib/standard/collection/array.nit:724 */
9215 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
9216 /* syntax/typing.nit:1518 */
9217 REGB4 = TAG_Int(3);
9218 fra.me.REG[15] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
9219 if (!once_value_15) {
9220 fra.me.REG[16] = BOX_NativeString("!");
9221 REGB4 = TAG_Int(1);
9222 fra.me.REG[16] = NEW_String_standard___string___String___with_native(fra.me.REG[16], REGB4);
9223 once_value_15 = fra.me.REG[16];
9224 register_static_object(&once_value_15);
9225 } else fra.me.REG[16] = once_value_15;
9226 fra.me.REG[16] = fra.me.REG[16];
9227 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[16]);
9228 fra.me.REG[14] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[14])(fra.me.REG[14]);
9229 fra.me.REG[14] = CALL_standard___string___Object___to_s(fra.me.REG[14])(fra.me.REG[14]);
9230 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9231 if (!once_value_16) {
9232 fra.me.REG[14] = BOX_NativeString("");
9233 REGB4 = TAG_Int(0);
9234 fra.me.REG[14] = NEW_String_standard___string___String___with_native(fra.me.REG[14], REGB4);
9235 once_value_16 = fra.me.REG[14];
9236 register_static_object(&once_value_16);
9237 } else fra.me.REG[14] = once_value_16;
9238 fra.me.REG[14] = fra.me.REG[14];
9239 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[14]);
9240 fra.me.REG[15] = CALL_standard___string___Object___to_s(fra.me.REG[15])(fra.me.REG[15]);
9241 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[15]);
9242 /* ../lib/standard/collection/array.nit:274 */
9243 REGB4 = TAG_Int(1);
9244 /* ../lib/standard/kernel.nit:238 */
9245 REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
9246 /* ../lib/standard/collection/array.nit:274 */
9247 REGB5 = REGB4;
9248 } else {
9249 /* ../lib/standard/collection/array.nit:272 */
9250 goto label17;
9251 }
9252 }
9253 label17: while(0);
9254 /* syntax/typing.nit:1520 */
9255 fra.me.REG[9] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[9])(fra.me.REG[9]);
9256 REGB5 = TAG_Int(7);
9257 fra.me.REG[13] = NEW_Array_standard___collection___array___Array___with_capacity(REGB5);
9258 if (!once_value_18) {
9259 fra.me.REG[11] = BOX_NativeString("Error: no closure named '!");
9260 REGB5 = TAG_Int(26);
9261 fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
9262 once_value_18 = fra.me.REG[11];
9263 register_static_object(&once_value_18);
9264 } else fra.me.REG[11] = once_value_18;
9265 fra.me.REG[11] = fra.me.REG[11];
9266 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[11]);
9267 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
9268 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9269 if (!once_value_19) {
9270 fra.me.REG[10] = BOX_NativeString("' in ");
9271 REGB5 = TAG_Int(5);
9272 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9273 once_value_19 = fra.me.REG[10];
9274 register_static_object(&once_value_19);
9275 } else fra.me.REG[10] = once_value_19;
9276 fra.me.REG[10] = fra.me.REG[10];
9277 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9278 fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9279 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9280 if (!once_value_20) {
9281 fra.me.REG[10] = BOX_NativeString("; only closures are ");
9282 REGB5 = TAG_Int(20);
9283 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9284 once_value_20 = fra.me.REG[10];
9285 register_static_object(&once_value_20);
9286 } else fra.me.REG[10] = once_value_20;
9287 fra.me.REG[10] = fra.me.REG[10];
9288 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9289 if (!once_value_21) {
9290 fra.me.REG[10] = BOX_NativeString(",");
9291 REGB5 = TAG_Int(1);
9292 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9293 once_value_21 = fra.me.REG[10];
9294 register_static_object(&once_value_21);
9295 } else fra.me.REG[10] = once_value_21;
9296 fra.me.REG[10] = fra.me.REG[10];
9297 fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[10]);
9298 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9299 if (!once_value_22) {
9300 fra.me.REG[10] = BOX_NativeString(".");
9301 REGB5 = TAG_Int(1);
9302 fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB5);
9303 once_value_22 = fra.me.REG[10];
9304 register_static_object(&once_value_22);
9305 } else fra.me.REG[10] = once_value_22;
9306 fra.me.REG[10] = fra.me.REG[10];
9307 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[10]);
9308 fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
9309 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9], fra.me.REG[13]);
9310 }
9311 }
9312 /* ../lib/standard/kernel.nit:357 */
9313 REGB5 = TAG_Int(1);
9314 /* ../lib/standard/kernel.nit:238 */
9315 REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
9316 /* ../lib/standard/kernel.nit:357 */
9317 REGB2 = REGB5;
9318 } else {
9319 /* ../lib/standard/kernel.nit:355 */
9320 goto label23;
9321 }
9322 }
9323 label23: while(0);
9324 /* syntax/typing.nit:1525 */
9325 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9326 if (UNTAG_Bool(REGB2)) {
9327 } else {
9328 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
9329 if (UNTAG_Bool(REGB0)) {
9330 REGB0 = TAG_Bool(0);
9331 REGB2 = REGB0;
9332 } else {
9333 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
9334 REGB2 = REGB0;
9335 }
9336 }
9337 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
9338 if (UNTAG_Bool(REGB2)) {
9339 /* syntax/typing.nit:1526 */
9340 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]);
9341 fra.me.REG[5] = fra.me.REG[8];
9342 }
9343 }
9344 }
9345 } else {
9346 /* syntax/typing.nit:1529 */
9347 REGB2 = TAG_Int(0);
9348 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
9349 if (UNTAG_Bool(REGB0)) {
9350 } else {
9351 /* ../lib/standard/kernel.nit:230 */
9352 REGB2 = TAG_Bool((REGB1)==(REGB2));
9353 /* syntax/typing.nit:1529 */
9354 REGB0 = REGB2;
9355 }
9356 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9357 if (UNTAG_Bool(REGB0)) {
9358 /* syntax/typing.nit:1530 */
9359 REGB0 = TAG_Int(3);
9360 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9361 if (!once_value_24) {
9362 fra.me.REG[6] = BOX_NativeString("Error: ");
9363 REGB0 = TAG_Int(7);
9364 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
9365 once_value_24 = fra.me.REG[6];
9366 register_static_object(&once_value_24);
9367 } else fra.me.REG[6] = once_value_24;
9368 fra.me.REG[6] = fra.me.REG[6];
9369 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
9370 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9371 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9372 if (!once_value_25) {
9373 fra.me.REG[3] = BOX_NativeString(" does not require blocks.");
9374 REGB0 = TAG_Int(25);
9375 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9376 once_value_25 = fra.me.REG[3];
9377 register_static_object(&once_value_25);
9378 } else fra.me.REG[3] = once_value_25;
9379 fra.me.REG[3] = fra.me.REG[3];
9380 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
9381 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9382 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9383 }
9384 }
9385 /* syntax/typing.nit:1532 */
9386 goto label26;
9387 label26: while(0);
9388 stack_frame_head = fra.me.prev;
9389 return fra.me.REG[5];
9390 }
9391 static const char LOCATE_syntax___typing___AAbsSendExpr___do_typing[] = "typing::AAbsSendExpr::do_typing";
9392 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){
9393 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
9394 val_t REGB0;
9395 val_t REGB1;
9396 val_t REGB2;
9397 val_t tmp;
9398 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9399 fra.me.file = LOCATE_syntax___typing;
9400 fra.me.line = 1537;
9401 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___do_typing;
9402 fra.me.has_broke = 0;
9403 fra.me.REG_size = 7;
9404 fra.me.nitni_local_ref_head = NULL;
9405 fra.me.REG[0] = NIT_NULL;
9406 fra.me.REG[1] = NIT_NULL;
9407 fra.me.REG[2] = NIT_NULL;
9408 fra.me.REG[3] = NIT_NULL;
9409 fra.me.REG[4] = NIT_NULL;
9410 fra.me.REG[5] = NIT_NULL;
9411 fra.me.REG[6] = NIT_NULL;
9412 fra.me.REG[0] = p0;
9413 fra.me.REG[1] = p1;
9414 fra.me.REG[2] = p2;
9415 REGB0 = p3;
9416 REGB1 = p4;
9417 fra.me.REG[3] = p5;
9418 fra.me.REG[4] = p6;
9419 fra.me.REG[5] = p7;
9420 /* syntax/typing.nit:1540 */
9421 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]);
9422 /* syntax/typing.nit:1541 */
9423 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9424 if (UNTAG_Bool(REGB0)) {
9425 } else {
9426 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9427 if (UNTAG_Bool(REGB2)) {
9428 REGB2 = TAG_Bool(0);
9429 REGB0 = REGB2;
9430 } else {
9431 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
9432 REGB0 = REGB2;
9433 }
9434 }
9435 if (UNTAG_Bool(REGB0)) {
9436 goto label1;
9437 }
9438 /* syntax/typing.nit:1542 */
9439 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);
9440 /* syntax/typing.nit:1543 */
9441 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9442 if (UNTAG_Bool(REGB1)) {
9443 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1543);
9444 }
9445 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9446 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]);
9447 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9448 if (UNTAG_Bool(REGB1)) {
9449 goto label1;
9450 }
9451 /* syntax/typing.nit:1544 */
9452 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
9453 if (UNTAG_Bool(REGB1)) {
9454 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1544);
9455 }
9456 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
9457 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]);
9458 /* syntax/typing.nit:1545 */
9459 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
9460 if (UNTAG_Bool(REGB1)) {
9461 } else {
9462 REGB0 = TAG_Bool(fra.me.REG[5]==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[5])(fra.me.REG[5], NIT_NULL);
9468 REGB1 = REGB0;
9469 }
9470 }
9471 if (UNTAG_Bool(REGB1)) {
9472 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
9473 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9474 if (UNTAG_Bool(REGB1)) {
9475 } else {
9476 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9477 if (UNTAG_Bool(REGB0)) {
9478 REGB0 = TAG_Bool(0);
9479 REGB1 = REGB0;
9480 } else {
9481 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
9482 REGB1 = REGB0;
9483 }
9484 }
9485 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
9486 } else {
9487 REGB0 = TAG_Bool(0);
9488 REGB1 = REGB0;
9489 }
9490 if (UNTAG_Bool(REGB1)) {
9491 goto label1;
9492 }
9493 /* syntax/typing.nit:1546 */
9494 ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[3];
9495 /* syntax/typing.nit:1547 */
9496 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
9497 /* syntax/typing.nit:1548 */
9498 ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]) = fra.me.REG[5];
9499 label1: while(0);
9500 stack_frame_head = fra.me.prev;
9501 return;
9502 }
9503 static const char LOCATE_syntax___typing___AAbsSendExpr___get_property[] = "typing::AAbsSendExpr::get_property";
9504 val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9505 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
9506 val_t REGB0;
9507 val_t REGB1;
9508 val_t REGB2;
9509 val_t REGB3;
9510 val_t tmp;
9511 static val_t once_value_1; /* Once value */
9512 static val_t once_value_2; /* Once value */
9513 static val_t once_value_3; /* Once value */
9514 static val_t once_value_4; /* Once value */
9515 static val_t once_value_5; /* Once value */
9516 static val_t once_value_6; /* Once value */
9517 static val_t once_value_8; /* Once value */
9518 static val_t once_value_9; /* Once value */
9519 static val_t once_value_10; /* Once value */
9520 static val_t once_value_11; /* Once value */
9521 static val_t once_value_12; /* Once value */
9522 static val_t once_value_13; /* Once value */
9523 static val_t once_value_14; /* Once value */
9524 static val_t once_value_15; /* Once value */
9525 static val_t once_value_16; /* Once value */
9526 static val_t once_value_17; /* Once value */
9527 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9528 fra.me.file = LOCATE_syntax___typing;
9529 fra.me.line = 1551;
9530 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_property;
9531 fra.me.has_broke = 0;
9532 fra.me.REG_size = 10;
9533 fra.me.nitni_local_ref_head = NULL;
9534 fra.me.REG[0] = NIT_NULL;
9535 fra.me.REG[1] = NIT_NULL;
9536 fra.me.REG[2] = NIT_NULL;
9537 fra.me.REG[3] = NIT_NULL;
9538 fra.me.REG[4] = NIT_NULL;
9539 fra.me.REG[5] = NIT_NULL;
9540 fra.me.REG[6] = NIT_NULL;
9541 fra.me.REG[7] = NIT_NULL;
9542 fra.me.REG[8] = NIT_NULL;
9543 fra.me.REG[9] = NIT_NULL;
9544 fra.me.REG[0] = p0;
9545 fra.me.REG[1] = p1;
9546 fra.me.REG[2] = p2;
9547 REGB0 = p3;
9548 fra.me.REG[3] = p4;
9549 /* syntax/typing.nit:1553 */
9550 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
9551 if (UNTAG_Bool(REGB1)) {
9552 /* syntax/typing.nit:1554 */
9553 if (!once_value_1) {
9554 if (!once_value_2) {
9555 fra.me.REG[4] = BOX_NativeString("==");
9556 REGB1 = TAG_Int(2);
9557 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
9558 once_value_2 = fra.me.REG[4];
9559 register_static_object(&once_value_2);
9560 } else fra.me.REG[4] = once_value_2;
9561 fra.me.REG[4] = fra.me.REG[4];
9562 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9563 once_value_1 = fra.me.REG[4];
9564 register_static_object(&once_value_1);
9565 } else fra.me.REG[4] = once_value_1;
9566 fra.me.REG[4] = fra.me.REG[4];
9567 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9568 if (UNTAG_Bool(REGB1)) {
9569 } else {
9570 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9571 REGB1 = REGB2;
9572 }
9573 if (UNTAG_Bool(REGB1)) {
9574 REGB1 = TAG_Bool(1);
9575 } else {
9576 if (!once_value_3) {
9577 if (!once_value_4) {
9578 fra.me.REG[4] = BOX_NativeString("!=");
9579 REGB2 = TAG_Int(2);
9580 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
9581 once_value_4 = fra.me.REG[4];
9582 register_static_object(&once_value_4);
9583 } else fra.me.REG[4] = once_value_4;
9584 fra.me.REG[4] = fra.me.REG[4];
9585 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
9586 once_value_3 = fra.me.REG[4];
9587 register_static_object(&once_value_3);
9588 } else fra.me.REG[4] = once_value_3;
9589 fra.me.REG[4] = fra.me.REG[4];
9590 REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
9591 if (UNTAG_Bool(REGB2)) {
9592 } else {
9593 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
9594 REGB2 = REGB3;
9595 }
9596 REGB1 = REGB2;
9597 }
9598 if (UNTAG_Bool(REGB1)) {
9599 /* syntax/typing.nit:1556 */
9600 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[1])(fra.me.REG[1]);
9601 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
9602 fra.me.REG[2] = fra.me.REG[4];
9603 } else {
9604 /* syntax/typing.nit:1558 */
9605 REGB1 = TAG_Int(3);
9606 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
9607 if (!once_value_5) {
9608 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9609 REGB1 = TAG_Int(15);
9610 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9611 once_value_5 = fra.me.REG[5];
9612 register_static_object(&once_value_5);
9613 } else fra.me.REG[5] = once_value_5;
9614 fra.me.REG[5] = fra.me.REG[5];
9615 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9616 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9617 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9618 if (!once_value_6) {
9619 fra.me.REG[5] = BOX_NativeString("' call on 'null'.");
9620 REGB1 = TAG_Int(17);
9621 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
9622 once_value_6 = fra.me.REG[5];
9623 register_static_object(&once_value_6);
9624 } else fra.me.REG[5] = once_value_6;
9625 fra.me.REG[5] = fra.me.REG[5];
9626 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
9627 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
9628 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
9629 /* syntax/typing.nit:1559 */
9630 fra.me.REG[4] = NIT_NULL;
9631 goto label7;
9632 }
9633 }
9634 /* syntax/typing.nit:1562 */
9635 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
9636 /* syntax/typing.nit:1563 */
9637 fra.me.REG[6] = NIT_NULL;
9638 /* syntax/typing.nit:1564 */
9639 REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9640 if (UNTAG_Bool(REGB1)) {
9641 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9642 fra.me.REG[6] = fra.me.REG[7];
9643 }
9644 /* syntax/typing.nit:1565 */
9645 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9646 if (UNTAG_Bool(REGB1)) {
9647 } else {
9648 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9649 if (UNTAG_Bool(REGB2)) {
9650 REGB2 = TAG_Bool(0);
9651 REGB1 = REGB2;
9652 } else {
9653 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9654 REGB1 = REGB2;
9655 }
9656 }
9657 if (UNTAG_Bool(REGB1)) {
9658 /* syntax/typing.nit:1566 */
9659 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
9660 /* ../lib/standard/collection/array.nit:24 */
9661 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9662 if (UNTAG_Bool(REGB1)) {
9663 } else {
9664 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9665 }
9666 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9667 /* syntax/typing.nit:1567 */
9668 REGB2 = TAG_Int(1);
9669 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
9670 if (UNTAG_Bool(REGB3)) {
9671 } else {
9672 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
9673 }
9674 /* ../lib/standard/kernel.nit:237 */
9675 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
9676 /* syntax/typing.nit:1567 */
9677 if (UNTAG_Bool(REGB2)) {
9678 /* syntax/typing.nit:1568 */
9679 REGB2 = TAG_Int(5);
9680 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
9681 if (!once_value_8) {
9682 fra.me.REG[9] = BOX_NativeString("Error: Ambigous method name '");
9683 REGB2 = TAG_Int(29);
9684 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9685 once_value_8 = fra.me.REG[9];
9686 register_static_object(&once_value_8);
9687 } else fra.me.REG[9] = once_value_8;
9688 fra.me.REG[9] = fra.me.REG[9];
9689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9690 fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9691 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9692 if (!once_value_9) {
9693 fra.me.REG[9] = BOX_NativeString("' for ");
9694 REGB2 = TAG_Int(6);
9695 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9696 once_value_9 = fra.me.REG[9];
9697 register_static_object(&once_value_9);
9698 } else fra.me.REG[9] = once_value_9;
9699 fra.me.REG[9] = fra.me.REG[9];
9700 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9701 if (!once_value_10) {
9702 fra.me.REG[9] = BOX_NativeString(", ");
9703 REGB2 = TAG_Int(2);
9704 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9705 once_value_10 = fra.me.REG[9];
9706 register_static_object(&once_value_10);
9707 } else fra.me.REG[9] = once_value_10;
9708 fra.me.REG[9] = fra.me.REG[9];
9709 fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
9710 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9711 if (!once_value_11) {
9712 fra.me.REG[9] = BOX_NativeString(". Use explicit designation.");
9713 REGB2 = TAG_Int(27);
9714 fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
9715 once_value_11 = fra.me.REG[9];
9716 register_static_object(&once_value_11);
9717 } else fra.me.REG[9] = once_value_11;
9718 fra.me.REG[9] = fra.me.REG[9];
9719 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
9720 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
9721 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
9722 /* syntax/typing.nit:1569 */
9723 fra.me.REG[4] = NIT_NULL;
9724 goto label7;
9725 } else {
9726 /* ../lib/standard/collection/array.nit:24 */
9727 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
9728 if (UNTAG_Bool(REGB2)) {
9729 } else {
9730 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
9731 }
9732 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
9733 /* syntax/typing.nit:1570 */
9734 REGB1 = TAG_Int(1);
9735 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
9736 if (UNTAG_Bool(REGB3)) {
9737 } else {
9738 /* ../lib/standard/kernel.nit:230 */
9739 REGB1 = TAG_Bool((REGB2)==(REGB1));
9740 /* syntax/typing.nit:1570 */
9741 REGB3 = REGB1;
9742 }
9743 if (UNTAG_Bool(REGB3)) {
9744 /* syntax/typing.nit:1571 */
9745 fra.me.REG[7] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[7])(fra.me.REG[7]);
9746 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
9747 if (UNTAG_Bool(REGB3)) {
9748 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1571);
9749 }
9750 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
9751 fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
9752 /* syntax/typing.nit:1572 */
9753 REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
9754 if (UNTAG_Bool(REGB3)) {
9755 } else {
9756 nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1572);
9757 }
9758 /* syntax/typing.nit:1573 */
9759 fra.me.REG[6] = fra.me.REG[7];
9760 }
9761 }
9762 }
9763 /* syntax/typing.nit:1577 */
9764 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9765 if (UNTAG_Bool(REGB3)) {
9766 } else {
9767 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
9768 if (UNTAG_Bool(REGB1)) {
9769 REGB1 = TAG_Bool(0);
9770 REGB3 = REGB1;
9771 } else {
9772 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
9773 REGB3 = REGB1;
9774 }
9775 }
9776 if (UNTAG_Bool(REGB3)) {
9777 /* syntax/typing.nit:1578 */
9778 if (UNTAG_Bool(REGB0)) {
9779 /* syntax/typing.nit:1579 */
9780 REGB0 = TAG_Int(5);
9781 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9782 if (!once_value_12) {
9783 fra.me.REG[5] = BOX_NativeString("Error: Method or variable '");
9784 REGB0 = TAG_Int(27);
9785 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9786 once_value_12 = fra.me.REG[5];
9787 register_static_object(&once_value_12);
9788 } else fra.me.REG[5] = once_value_12;
9789 fra.me.REG[5] = fra.me.REG[5];
9790 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9791 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9792 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9793 if (!once_value_13) {
9794 fra.me.REG[5] = BOX_NativeString("' unknown in ");
9795 REGB0 = TAG_Int(13);
9796 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9797 once_value_13 = fra.me.REG[5];
9798 register_static_object(&once_value_13);
9799 } else fra.me.REG[5] = once_value_13;
9800 fra.me.REG[5] = fra.me.REG[5];
9801 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9802 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9803 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9804 if (!once_value_14) {
9805 fra.me.REG[5] = BOX_NativeString(".");
9806 REGB0 = TAG_Int(1);
9807 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9808 once_value_14 = fra.me.REG[5];
9809 register_static_object(&once_value_14);
9810 } else fra.me.REG[5] = once_value_14;
9811 fra.me.REG[5] = fra.me.REG[5];
9812 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9813 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9814 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9815 } else {
9816 /* syntax/typing.nit:1581 */
9817 REGB0 = TAG_Int(5);
9818 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
9819 if (!once_value_15) {
9820 fra.me.REG[5] = BOX_NativeString("Error: Method '");
9821 REGB0 = TAG_Int(15);
9822 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
9823 once_value_15 = fra.me.REG[5];
9824 register_static_object(&once_value_15);
9825 } else fra.me.REG[5] = once_value_15;
9826 fra.me.REG[5] = fra.me.REG[5];
9827 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
9828 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
9829 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9830 if (!once_value_16) {
9831 fra.me.REG[3] = BOX_NativeString("' doesn't exists in ");
9832 REGB0 = TAG_Int(20);
9833 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
9834 once_value_16 = fra.me.REG[3];
9835 register_static_object(&once_value_16);
9836 } else fra.me.REG[3] = once_value_16;
9837 fra.me.REG[3] = fra.me.REG[3];
9838 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
9839 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
9840 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9841 if (!once_value_17) {
9842 fra.me.REG[2] = BOX_NativeString(".");
9843 REGB0 = TAG_Int(1);
9844 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
9845 once_value_17 = fra.me.REG[2];
9846 register_static_object(&once_value_17);
9847 } else fra.me.REG[2] = once_value_17;
9848 fra.me.REG[2] = fra.me.REG[2];
9849 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
9850 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
9851 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
9852 }
9853 /* syntax/typing.nit:1583 */
9854 fra.me.REG[4] = NIT_NULL;
9855 goto label7;
9856 }
9857 /* syntax/typing.nit:1585 */
9858 fra.me.REG[4] = fra.me.REG[6];
9859 goto label7;
9860 label7: while(0);
9861 stack_frame_head = fra.me.prev;
9862 return fra.me.REG[4];
9863 }
9864 static const char LOCATE_syntax___typing___AAbsSendExpr___get_signature[] = "typing::AAbsSendExpr::get_signature";
9865 val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
9866 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
9867 val_t REGB0;
9868 val_t tmp;
9869 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9870 fra.me.file = LOCATE_syntax___typing;
9871 fra.me.line = 1588;
9872 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___get_signature;
9873 fra.me.has_broke = 0;
9874 fra.me.REG_size = 6;
9875 fra.me.nitni_local_ref_head = NULL;
9876 fra.me.REG[0] = NIT_NULL;
9877 fra.me.REG[1] = NIT_NULL;
9878 fra.me.REG[2] = NIT_NULL;
9879 fra.me.REG[3] = NIT_NULL;
9880 fra.me.REG[4] = NIT_NULL;
9881 fra.me.REG[5] = NIT_NULL;
9882 fra.me.REG[0] = p0;
9883 fra.me.REG[1] = p1;
9884 fra.me.REG[2] = p2;
9885 fra.me.REG[3] = p3;
9886 REGB0 = p4;
9887 /* syntax/typing.nit:1591 */
9888 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
9889 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
9890 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);
9891 /* syntax/typing.nit:1592 */
9892 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
9893 /* syntax/typing.nit:1593 */
9894 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
9895 if (UNTAG_Bool(REGB0)) {
9896 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[2])(fra.me.REG[2]);
9897 fra.me.REG[2] = fra.me.REG[3];
9898 }
9899 /* syntax/typing.nit:1594 */
9900 goto label1;
9901 label1: while(0);
9902 stack_frame_head = fra.me.prev;
9903 return fra.me.REG[2];
9904 }
9905 static const char LOCATE_syntax___typing___AAbsSendExpr___prop[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::prop)";
9906 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
9907 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
9908 val_t REGB0;
9909 val_t tmp;
9910 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9911 fra.me.file = LOCATE_syntax___typing;
9912 fra.me.line = 1597;
9913 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
9914 fra.me.has_broke = 0;
9915 fra.me.REG_size = 2;
9916 fra.me.nitni_local_ref_head = NULL;
9917 fra.me.REG[0] = NIT_NULL;
9918 fra.me.REG[1] = NIT_NULL;
9919 fra.me.REG[0] = p0;
9920 /* syntax/typing.nit:1597 */
9921 fra.me.REG[1] = fra.me.REG[0];
9922 /* syntax/typing.nit:1598 */
9923 fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
9924 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
9925 if (UNTAG_Bool(REGB0)) {
9926 } else {
9927 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1598);
9928 }
9929 goto label1;
9930 label1: while(0);
9931 stack_frame_head = fra.me.prev;
9932 return fra.me.REG[1];
9933 }
9934 static const char LOCATE_syntax___typing___AAbsSendExpr___return_type[] = "typing::AAbsSendExpr::(syntax_base::AAbsSendExpr::return_type)";
9935 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
9936 struct {struct stack_frame_t me;} fra;
9937 val_t tmp;
9938 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9939 fra.me.file = LOCATE_syntax___typing;
9940 fra.me.line = 1601;
9941 fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___return_type;
9942 fra.me.has_broke = 0;
9943 fra.me.REG_size = 1;
9944 fra.me.nitni_local_ref_head = NULL;
9945 fra.me.REG[0] = NIT_NULL;
9946 fra.me.REG[0] = p0;
9947 /* syntax/typing.nit:1601 */
9948 fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____return_type(fra.me.REG[0]);
9949 stack_frame_head = fra.me.prev;
9950 return fra.me.REG[0];
9951 }
9952 static const char LOCATE_syntax___typing___ASuperInitCall___register_super_init_call[] = "typing::ASuperInitCall::register_super_init_call";
9953 void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t p1, val_t p2){
9954 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
9955 val_t REGB0;
9956 val_t REGB1;
9957 val_t REGB2;
9958 val_t tmp;
9959 static val_t once_value_1; /* Once value */
9960 static val_t once_value_2; /* Once value */
9961 static val_t once_value_3; /* Once value */
9962 static val_t once_value_4; /* Once value */
9963 static val_t once_value_5; /* Once value */
9964 static val_t once_value_6; /* Once value */
9965 static val_t once_value_7; /* Once value */
9966 static val_t once_value_8; /* Once value */
9967 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9968 fra.me.file = LOCATE_syntax___typing;
9969 fra.me.line = 1608;
9970 fra.me.meth = LOCATE_syntax___typing___ASuperInitCall___register_super_init_call;
9971 fra.me.has_broke = 0;
9972 fra.me.REG_size = 9;
9973 fra.me.nitni_local_ref_head = NULL;
9974 fra.me.REG[0] = NIT_NULL;
9975 fra.me.REG[1] = NIT_NULL;
9976 fra.me.REG[2] = NIT_NULL;
9977 fra.me.REG[3] = NIT_NULL;
9978 fra.me.REG[4] = NIT_NULL;
9979 fra.me.REG[5] = NIT_NULL;
9980 fra.me.REG[6] = NIT_NULL;
9981 fra.me.REG[7] = NIT_NULL;
9982 fra.me.REG[8] = NIT_NULL;
9983 fra.me.REG[0] = p0;
9984 fra.me.REG[1] = p1;
9985 fra.me.REG[2] = p2;
9986 /* syntax/typing.nit:1608 */
9987 fra.me.REG[3] = fra.me.REG[0];
9988 /* syntax/typing.nit:1610 */
9989 fra.me.REG[4] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[3])(fra.me.REG[3]);
9990 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
9991 REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[5]));
9992 if (UNTAG_Bool(REGB0)) {
9993 } else {
9994 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
9995 if (UNTAG_Bool(REGB1)) {
9996 REGB1 = TAG_Bool(0);
9997 REGB0 = REGB1;
9998 } else {
9999 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10000 REGB0 = REGB1;
10001 }
10002 }
10003 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10004 if (UNTAG_Bool(REGB0)) {
10005 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
10006 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
10007 if (UNTAG_Bool(REGB0)) {
10008 } else {
10009 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10010 REGB0 = REGB1;
10011 }
10012 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10013 } else {
10014 REGB1 = TAG_Bool(0);
10015 REGB0 = REGB1;
10016 }
10017 if (UNTAG_Bool(REGB0)) {
10018 /* syntax/typing.nit:1611 */
10019 REGB0 = TAG_Int(3);
10020 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10021 if (!once_value_1) {
10022 fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
10023 REGB0 = TAG_Int(30);
10024 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10025 once_value_1 = fra.me.REG[4];
10026 register_static_object(&once_value_1);
10027 } else fra.me.REG[4] = once_value_1;
10028 fra.me.REG[4] = fra.me.REG[4];
10029 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10030 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10031 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10032 if (!once_value_2) {
10033 fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
10034 REGB0 = TAG_Int(29);
10035 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10036 once_value_2 = fra.me.REG[4];
10037 register_static_object(&once_value_2);
10038 } else fra.me.REG[4] = once_value_2;
10039 fra.me.REG[4] = fra.me.REG[4];
10040 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10041 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10042 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
10043 }
10044 /* syntax/typing.nit:1613 */
10045 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
10046 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
10047 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
10048 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
10049 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
10050 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10051 /* syntax/typing.nit:1614 */
10052 fra.me.REG[5] = NIT_NULL;
10053 /* syntax/typing.nit:1615 */
10054 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
10055 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10056 if (UNTAG_Bool(REGB0)) {
10057 } else {
10058 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1615);
10059 }
10060 /* syntax/typing.nit:1616 */
10061 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
10062 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10063 if (UNTAG_Bool(REGB0)) {
10064 /* syntax/typing.nit:1617 */
10065 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
10066 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
10067 if (UNTAG_Bool(REGB0)) {
10068 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1617);
10069 }
10070 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10071 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
10072 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
10073 fra.me.REG[5] = fra.me.REG[0];
10074 }
10075 /* syntax/typing.nit:1619 */
10076 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10077 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
10078 fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
10079 /* syntax/typing.nit:1620 */
10080 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
10081 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
10082 if (UNTAG_Bool(REGB0)) {
10083 } else {
10084 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
10085 REGB0 = REGB1;
10086 }
10087 if (UNTAG_Bool(REGB0)) {
10088 /* syntax/typing.nit:1621 */
10089 REGB0 = TAG_Bool(1);
10090 CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
10091 } else {
10092 /* syntax/typing.nit:1622 */
10093 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
10094 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10095 if (UNTAG_Bool(REGB0)) {
10096 /* syntax/typing.nit:1623 */
10097 REGB0 = TAG_Int(5);
10098 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10099 if (!once_value_3) {
10100 fra.me.REG[8] = BOX_NativeString("Error: Constructor of class ");
10101 REGB0 = TAG_Int(28);
10102 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10103 once_value_3 = fra.me.REG[8];
10104 register_static_object(&once_value_3);
10105 } else fra.me.REG[8] = once_value_3;
10106 fra.me.REG[8] = fra.me.REG[8];
10107 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10108 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10109 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10110 if (!once_value_4) {
10111 fra.me.REG[8] = BOX_NativeString(" must be one in ");
10112 REGB0 = TAG_Int(16);
10113 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10114 once_value_4 = fra.me.REG[8];
10115 register_static_object(&once_value_4);
10116 } else fra.me.REG[8] = once_value_4;
10117 fra.me.REG[8] = fra.me.REG[8];
10118 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10119 if (!once_value_5) {
10120 fra.me.REG[8] = BOX_NativeString(", ");
10121 REGB0 = TAG_Int(2);
10122 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10123 once_value_5 = fra.me.REG[8];
10124 register_static_object(&once_value_5);
10125 } else fra.me.REG[8] = once_value_5;
10126 fra.me.REG[8] = fra.me.REG[8];
10127 fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
10128 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10129 if (!once_value_6) {
10130 fra.me.REG[8] = BOX_NativeString(".");
10131 REGB0 = TAG_Int(1);
10132 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10133 once_value_6 = fra.me.REG[8];
10134 register_static_object(&once_value_6);
10135 } else fra.me.REG[8] = once_value_6;
10136 fra.me.REG[8] = fra.me.REG[8];
10137 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10138 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10139 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10140 } else {
10141 /* syntax/typing.nit:1624 */
10142 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
10143 if (UNTAG_Bool(REGB0)) {
10144 } else {
10145 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
10146 REGB0 = REGB1;
10147 }
10148 if (UNTAG_Bool(REGB0)) {
10149 /* syntax/typing.nit:1625 */
10150 REGB0 = TAG_Int(3);
10151 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10152 if (!once_value_7) {
10153 fra.me.REG[8] = BOX_NativeString("Error: Only one super constructor invocation of class ");
10154 REGB0 = TAG_Int(54);
10155 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10156 once_value_7 = fra.me.REG[8];
10157 register_static_object(&once_value_7);
10158 } else fra.me.REG[8] = once_value_7;
10159 fra.me.REG[8] = fra.me.REG[8];
10160 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10161 fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10162 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10163 if (!once_value_8) {
10164 fra.me.REG[8] = BOX_NativeString(" is allowed.");
10165 REGB0 = TAG_Int(12);
10166 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
10167 once_value_8 = fra.me.REG[8];
10168 register_static_object(&once_value_8);
10169 } else fra.me.REG[8] = once_value_8;
10170 fra.me.REG[8] = fra.me.REG[8];
10171 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
10172 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
10173 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[7]);
10174 } else {
10175 /* ../lib/standard/collection/array.nit:269 */
10176 REGB0 = TAG_Int(0);
10177 /* ../lib/standard/collection/array.nit:270 */
10178 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10179 if (UNTAG_Bool(REGB1)) {
10180 } else {
10181 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
10182 }
10183 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10184 /* ../lib/standard/collection/array.nit:271 */
10185 fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
10186 /* ../lib/standard/collection/array.nit:272 */
10187 while(1) {
10188 /* ../lib/standard/collection/array.nit:24 */
10189 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
10190 if (UNTAG_Bool(REGB1)) {
10191 } else {
10192 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
10193 }
10194 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
10195 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
10196 if (UNTAG_Bool(REGB2)) {
10197 } else {
10198 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
10199 }
10200 /* ../lib/standard/kernel.nit:235 */
10201 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
10202 /* ../lib/standard/collection/array.nit:272 */
10203 if (UNTAG_Bool(REGB1)) {
10204 /* ../lib/standard/collection/array.nit:273 */
10205 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
10206 if (UNTAG_Bool(REGB1)) {
10207 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
10208 }
10209 /* ../lib/standard/collection/array.nit:724 */
10210 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
10211 /* syntax/typing.nit:1628 */
10212 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
10213 if (UNTAG_Bool(REGB1)) {
10214 } else {
10215 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
10216 REGB1 = REGB2;
10217 }
10218 if (UNTAG_Bool(REGB1)) {
10219 /* syntax/typing.nit:1629 */
10220 fra.me.REG[5] = NIT_NULL;
10221 } else {
10222 /* syntax/typing.nit:1630 */
10223 REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
10224 if (UNTAG_Bool(REGB1)) {
10225 } else {
10226 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10227 REGB1 = REGB2;
10228 }
10229 if (UNTAG_Bool(REGB1)) {
10230 /* syntax/typing.nit:1631 */
10231 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
10232 /* syntax/typing.nit:1632 */
10233 goto label9;
10234 }
10235 }
10236 /* ../lib/standard/collection/array.nit:274 */
10237 REGB1 = TAG_Int(1);
10238 /* ../lib/standard/kernel.nit:238 */
10239 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
10240 /* ../lib/standard/collection/array.nit:274 */
10241 REGB0 = REGB1;
10242 } else {
10243 /* ../lib/standard/collection/array.nit:272 */
10244 goto label10;
10245 }
10246 }
10247 label10: while(0);
10248 label9: while(0);
10249 }
10250 }
10251 }
10252 stack_frame_head = fra.me.prev;
10253 return;
10254 }
10255 static const char LOCATE_syntax___typing___ANewExpr___compute_raw_arguments[] = "typing::ANewExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
10256 val_t syntax___typing___ANewExpr___compute_raw_arguments(val_t p0){
10257 struct {struct stack_frame_t me;} fra;
10258 val_t tmp;
10259 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10260 fra.me.file = LOCATE_syntax___typing;
10261 fra.me.line = 1641;
10262 fra.me.meth = LOCATE_syntax___typing___ANewExpr___compute_raw_arguments;
10263 fra.me.has_broke = 0;
10264 fra.me.REG_size = 1;
10265 fra.me.nitni_local_ref_head = NULL;
10266 fra.me.REG[0] = NIT_NULL;
10267 fra.me.REG[0] = p0;
10268 /* syntax/typing.nit:1641 */
10269 fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
10270 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
10271 goto label1;
10272 label1: while(0);
10273 stack_frame_head = fra.me.prev;
10274 return fra.me.REG[0];
10275 }
10276 static const char LOCATE_syntax___typing___ANewExpr___after_typing[] = "typing::ANewExpr::(typing::ANode::after_typing)";
10277 void syntax___typing___ANewExpr___after_typing(val_t p0, val_t p1){
10278 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
10279 val_t REGB0;
10280 val_t REGB1;
10281 val_t tmp;
10282 static val_t once_value_2; /* Once value */
10283 static val_t once_value_3; /* Once value */
10284 static val_t once_value_4; /* Once value */
10285 static val_t once_value_5; /* Once value */
10286 static val_t once_value_6; /* Once value */
10287 static val_t once_value_7; /* Once value */
10288 static val_t once_value_8; /* Once value */
10289 static val_t once_value_9; /* Once value */
10290 static val_t once_value_10; /* Once value */
10291 static val_t once_value_11; /* Once value */
10292 static val_t once_value_12; /* Once value */
10293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10294 fra.me.file = LOCATE_syntax___typing;
10295 fra.me.line = 1642;
10296 fra.me.meth = LOCATE_syntax___typing___ANewExpr___after_typing;
10297 fra.me.has_broke = 0;
10298 fra.me.REG_size = 5;
10299 fra.me.nitni_local_ref_head = NULL;
10300 fra.me.REG[0] = NIT_NULL;
10301 fra.me.REG[1] = NIT_NULL;
10302 fra.me.REG[2] = NIT_NULL;
10303 fra.me.REG[3] = NIT_NULL;
10304 fra.me.REG[4] = NIT_NULL;
10305 fra.me.REG[0] = p0;
10306 fra.me.REG[1] = p1;
10307 /* syntax/typing.nit:1644 */
10308 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10309 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
10310 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10311 if (UNTAG_Bool(REGB0)) {
10312 goto label1;
10313 }
10314 /* syntax/typing.nit:1645 */
10315 fra.me.REG[2] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
10316 fra.me.REG[2] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[2])(fra.me.REG[2]);
10317 /* syntax/typing.nit:1646 */
10318 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10319 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
10320 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
10321 if (UNTAG_Bool(REGB0)) {
10322 /* syntax/typing.nit:1647 */
10323 REGB0 = TAG_Int(3);
10324 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10325 if (!once_value_2) {
10326 fra.me.REG[4] = BOX_NativeString("Error: try to instantiate abstract class ");
10327 REGB0 = TAG_Int(41);
10328 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10329 once_value_2 = fra.me.REG[4];
10330 register_static_object(&once_value_2);
10331 } else fra.me.REG[4] = once_value_2;
10332 fra.me.REG[4] = fra.me.REG[4];
10333 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10334 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10335 fra.me.REG[4] = CALL_standard___string___Object___to_s(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 if (!once_value_3) {
10338 fra.me.REG[4] = BOX_NativeString(".");
10339 REGB0 = TAG_Int(1);
10340 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10341 once_value_3 = fra.me.REG[4];
10342 register_static_object(&once_value_3);
10343 } else fra.me.REG[4] = once_value_3;
10344 fra.me.REG[4] = fra.me.REG[4];
10345 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10346 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10347 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10348 /* syntax/typing.nit:1648 */
10349 goto label1;
10350 }
10351 /* syntax/typing.nit:1650 */
10352 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
10353 if (UNTAG_Bool(REGB0)) {
10354 /* syntax/typing.nit:1651 */
10355 REGB0 = TAG_Int(3);
10356 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
10357 if (!once_value_4) {
10358 fra.me.REG[4] = BOX_NativeString("Type error: cannot instantiate the nullable type ");
10359 REGB0 = TAG_Int(49);
10360 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10361 once_value_4 = fra.me.REG[4];
10362 register_static_object(&once_value_4);
10363 } else fra.me.REG[4] = once_value_4;
10364 fra.me.REG[4] = fra.me.REG[4];
10365 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10366 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
10367 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10368 if (!once_value_5) {
10369 fra.me.REG[4] = BOX_NativeString(".");
10370 REGB0 = TAG_Int(1);
10371 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
10372 once_value_5 = fra.me.REG[4];
10373 register_static_object(&once_value_5);
10374 } else fra.me.REG[4] = once_value_5;
10375 fra.me.REG[4] = fra.me.REG[4];
10376 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10377 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10378 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10379 }
10380 /* syntax/typing.nit:1654 */
10381 fra.me.REG[3] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10382 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10383 if (UNTAG_Bool(REGB0)) {
10384 } else {
10385 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
10386 if (UNTAG_Bool(REGB1)) {
10387 REGB1 = TAG_Bool(0);
10388 REGB0 = REGB1;
10389 } else {
10390 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
10391 REGB0 = REGB1;
10392 }
10393 }
10394 if (UNTAG_Bool(REGB0)) {
10395 /* syntax/typing.nit:1655 */
10396 if (!once_value_6) {
10397 if (!once_value_7) {
10398 fra.me.REG[3] = BOX_NativeString("init");
10399 REGB0 = TAG_Int(4);
10400 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
10401 once_value_7 = fra.me.REG[3];
10402 register_static_object(&once_value_7);
10403 } else fra.me.REG[3] = once_value_7;
10404 fra.me.REG[3] = fra.me.REG[3];
10405 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
10406 once_value_6 = fra.me.REG[3];
10407 register_static_object(&once_value_6);
10408 } else fra.me.REG[3] = once_value_6;
10409 fra.me.REG[3] = fra.me.REG[3];
10410 } else {
10411 /* syntax/typing.nit:1657 */
10412 fra.me.REG[4] = CALL_parser___parser_nodes___ANewExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
10413 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10414 if (UNTAG_Bool(REGB0)) {
10415 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1657);
10416 }
10417 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10418 fra.me.REG[3] = fra.me.REG[4];
10419 }
10420 /* syntax/typing.nit:1660 */
10421 REGB0 = TAG_Bool(0);
10422 REGB1 = TAG_Bool(0);
10423 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
10424 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);
10425 /* syntax/typing.nit:1661 */
10426 fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
10427 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10428 if (UNTAG_Bool(REGB1)) {
10429 } else {
10430 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10431 if (UNTAG_Bool(REGB0)) {
10432 REGB0 = TAG_Bool(0);
10433 REGB1 = REGB0;
10434 } else {
10435 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10436 REGB1 = REGB0;
10437 }
10438 }
10439 if (UNTAG_Bool(REGB1)) {
10440 goto label1;
10441 }
10442 /* syntax/typing.nit:1663 */
10443 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10444 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10445 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10446 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10447 if (UNTAG_Bool(REGB1)) {
10448 /* syntax/typing.nit:1664 */
10449 REGB1 = TAG_Int(3);
10450 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10451 if (!once_value_8) {
10452 fra.me.REG[3] = BOX_NativeString("Error: ");
10453 REGB1 = TAG_Int(7);
10454 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10455 once_value_8 = fra.me.REG[3];
10456 register_static_object(&once_value_8);
10457 } else fra.me.REG[3] = once_value_8;
10458 fra.me.REG[3] = fra.me.REG[3];
10459 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10460 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10461 fra.me.REG[3] = CALL_standard___string___Object___to_s(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 if (!once_value_9) {
10464 fra.me.REG[3] = BOX_NativeString(" is not a constructor.");
10465 REGB1 = TAG_Int(22);
10466 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
10467 once_value_9 = fra.me.REG[3];
10468 register_static_object(&once_value_9);
10469 } else fra.me.REG[3] = once_value_9;
10470 fra.me.REG[3] = fra.me.REG[3];
10471 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10472 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10473 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
10474 /* syntax/typing.nit:1665 */
10475 goto label1;
10476 }
10477 /* syntax/typing.nit:1667 */
10478 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10479 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10480 fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10481 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
10482 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10483 if (UNTAG_Bool(REGB1)) {
10484 /* syntax/typing.nit:1668 */
10485 REGB1 = TAG_Int(5);
10486 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10487 if (!once_value_10) {
10488 fra.me.REG[4] = BOX_NativeString("Error: ");
10489 REGB1 = TAG_Int(7);
10490 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
10491 once_value_10 = fra.me.REG[4];
10492 register_static_object(&once_value_10);
10493 } else fra.me.REG[4] = once_value_10;
10494 fra.me.REG[4] = fra.me.REG[4];
10495 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10496 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
10497 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10498 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10499 if (!once_value_11) {
10500 fra.me.REG[4] = BOX_NativeString(" is not a constructor in ");
10501 REGB1 = TAG_Int(25);
10502 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
10503 once_value_11 = fra.me.REG[4];
10504 register_static_object(&once_value_11);
10505 } else fra.me.REG[4] = once_value_11;
10506 fra.me.REG[4] = fra.me.REG[4];
10507 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10508 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
10509 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10510 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10511 if (!once_value_12) {
10512 fra.me.REG[4] = BOX_NativeString(".");
10513 REGB1 = TAG_Int(1);
10514 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
10515 once_value_12 = fra.me.REG[4];
10516 register_static_object(&once_value_12);
10517 } else fra.me.REG[4] = once_value_12;
10518 fra.me.REG[4] = fra.me.REG[4];
10519 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
10520 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
10521 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
10522 /* syntax/typing.nit:1669 */
10523 goto label1;
10524 }
10525 /* syntax/typing.nit:1671 */
10526 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
10527 /* syntax/typing.nit:1672 */
10528 REGB1 = TAG_Bool(1);
10529 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
10530 label1: while(0);
10531 stack_frame_head = fra.me.prev;
10532 return;
10533 }
10534 static const char LOCATE_syntax___typing___ASendExpr___name[] = "typing::ASendExpr::name";
10535 val_t syntax___typing___ASendExpr___name(val_t p0){
10536 struct {struct stack_frame_t me;} fra;
10537 val_t tmp;
10538 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10539 fra.me.file = LOCATE_syntax___typing;
10540 fra.me.line = 1678;
10541 fra.me.meth = LOCATE_syntax___typing___ASendExpr___name;
10542 fra.me.has_broke = 0;
10543 fra.me.REG_size = 0;
10544 fra.me.nitni_local_ref_head = NULL;
10545 /* syntax/typing.nit:1678 */
10546 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1678);
10547 stack_frame_head = fra.me.prev;
10548 return NIT_NULL;
10549 }
10550 static const char LOCATE_syntax___typing___ASendExpr___closure_defs[] = "typing::ASendExpr::(syntax_base::ASendExpr::closure_defs)";
10551 val_t syntax___typing___ASendExpr___closure_defs(val_t p0){
10552 struct {struct stack_frame_t me;} fra;
10553 val_t tmp;
10554 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10555 fra.me.file = LOCATE_syntax___typing;
10556 fra.me.line = 1681;
10557 fra.me.meth = LOCATE_syntax___typing___ASendExpr___closure_defs;
10558 fra.me.has_broke = 0;
10559 fra.me.REG_size = 1;
10560 fra.me.nitni_local_ref_head = NULL;
10561 fra.me.REG[0] = NIT_NULL;
10562 fra.me.REG[0] = p0;
10563 /* syntax/typing.nit:1682 */
10564 fra.me.REG[0] = NIT_NULL;
10565 goto label1;
10566 label1: while(0);
10567 stack_frame_head = fra.me.prev;
10568 return fra.me.REG[0];
10569 }
10570 static const char LOCATE_syntax___typing___ASendExpr___after_typing[] = "typing::ASendExpr::(typing::ANode::after_typing)";
10571 void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
10572 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10573 val_t tmp;
10574 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10575 fra.me.file = LOCATE_syntax___typing;
10576 fra.me.line = 1684;
10577 fra.me.meth = LOCATE_syntax___typing___ASendExpr___after_typing;
10578 fra.me.has_broke = 0;
10579 fra.me.REG_size = 2;
10580 fra.me.nitni_local_ref_head = NULL;
10581 fra.me.REG[0] = NIT_NULL;
10582 fra.me.REG[1] = NIT_NULL;
10583 fra.me.REG[0] = p0;
10584 fra.me.REG[1] = p1;
10585 /* syntax/typing.nit:1686 */
10586 CALL_syntax___typing___ASendExpr___do_all_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
10587 stack_frame_head = fra.me.prev;
10588 return;
10589 }
10590 static const char LOCATE_syntax___typing___ASendExpr___do_all_typing[] = "typing::ASendExpr::do_all_typing";
10591 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
10592 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10593 val_t REGB0;
10594 val_t REGB1;
10595 val_t tmp;
10596 static val_t once_value_2; /* Once value */
10597 static val_t once_value_3; /* Once value */
10598 static val_t once_value_4; /* Once value */
10599 static val_t once_value_5; /* Once value */
10600 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10601 fra.me.file = LOCATE_syntax___typing;
10602 fra.me.line = 1689;
10603 fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
10604 fra.me.has_broke = 0;
10605 fra.me.REG_size = 7;
10606 fra.me.nitni_local_ref_head = NULL;
10607 fra.me.REG[0] = NIT_NULL;
10608 fra.me.REG[1] = NIT_NULL;
10609 fra.me.REG[2] = NIT_NULL;
10610 fra.me.REG[3] = NIT_NULL;
10611 fra.me.REG[4] = NIT_NULL;
10612 fra.me.REG[5] = NIT_NULL;
10613 fra.me.REG[6] = NIT_NULL;
10614 fra.me.REG[0] = p0;
10615 fra.me.REG[1] = p1;
10616 /* syntax/typing.nit:1689 */
10617 fra.me.REG[2] = fra.me.REG[0];
10618 /* syntax/typing.nit:1691 */
10619 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10620 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10621 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10622 if (UNTAG_Bool(REGB0)) {
10623 goto label1;
10624 }
10625 /* syntax/typing.nit:1692 */
10626 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10627 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
10628 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10629 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10630 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10631 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10632 fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10633 fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10634 fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
10635 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]);
10636 /* syntax/typing.nit:1693 */
10637 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10638 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10639 if (UNTAG_Bool(REGB1)) {
10640 } else {
10641 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
10642 if (UNTAG_Bool(REGB0)) {
10643 REGB0 = TAG_Bool(0);
10644 REGB1 = REGB0;
10645 } else {
10646 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
10647 REGB1 = REGB0;
10648 }
10649 }
10650 if (UNTAG_Bool(REGB1)) {
10651 goto label1;
10652 }
10653 /* syntax/typing.nit:1694 */
10654 fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10655 REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
10656 if (UNTAG_Bool(REGB1)) {
10657 } else {
10658 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1694);
10659 }
10660 /* syntax/typing.nit:1696 */
10661 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
10662 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10663 if (UNTAG_Bool(REGB1)) {
10664 /* syntax/typing.nit:1697 */
10665 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10666 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
10667 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
10668 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10669 if (UNTAG_Bool(REGB1)) {
10670 /* syntax/typing.nit:1698 */
10671 REGB1 = TAG_Int(3);
10672 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10673 if (!once_value_2) {
10674 fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
10675 REGB1 = TAG_Int(33);
10676 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10677 once_value_2 = fra.me.REG[5];
10678 register_static_object(&once_value_2);
10679 } else fra.me.REG[5] = once_value_2;
10680 fra.me.REG[5] = fra.me.REG[5];
10681 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10682 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10683 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10684 if (!once_value_3) {
10685 fra.me.REG[5] = BOX_NativeString(" in a method.");
10686 REGB1 = TAG_Int(13);
10687 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10688 once_value_3 = fra.me.REG[5];
10689 register_static_object(&once_value_3);
10690 } else fra.me.REG[5] = once_value_3;
10691 fra.me.REG[5] = fra.me.REG[5];
10692 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10693 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10694 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10695 } else {
10696 /* syntax/typing.nit:1699 */
10697 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10698 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10699 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10700 if (UNTAG_Bool(REGB1)) {
10701 /* syntax/typing.nit:1700 */
10702 REGB1 = TAG_Int(3);
10703 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10704 if (!once_value_4) {
10705 fra.me.REG[5] = BOX_NativeString("Error: constructor ");
10706 REGB1 = TAG_Int(19);
10707 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10708 once_value_4 = fra.me.REG[5];
10709 register_static_object(&once_value_4);
10710 } else fra.me.REG[5] = once_value_4;
10711 fra.me.REG[5] = fra.me.REG[5];
10712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10713 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10714 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10715 if (!once_value_5) {
10716 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
10717 REGB1 = TAG_Int(26);
10718 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
10719 once_value_5 = fra.me.REG[5];
10720 register_static_object(&once_value_5);
10721 } else fra.me.REG[5] = once_value_5;
10722 fra.me.REG[5] = fra.me.REG[5];
10723 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
10724 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
10725 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
10726 } else {
10727 /* syntax/typing.nit:1702 */
10728 CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
10729 }
10730 }
10731 }
10732 /* syntax/typing.nit:1706 */
10733 fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
10734 ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
10735 /* syntax/typing.nit:1707 */
10736 REGB1 = TAG_Bool(1);
10737 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
10738 label1: while(0);
10739 stack_frame_head = fra.me.prev;
10740 return;
10741 }
10742 static const char LOCATE_syntax___typing___ASendReassignExpr___read_prop[] = "typing::ASendReassignExpr::(syntax_base::ASendReassignExpr::read_prop)";
10743 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
10744 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
10745 val_t REGB0;
10746 val_t tmp;
10747 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10748 fra.me.file = LOCATE_syntax___typing;
10749 fra.me.line = 1712;
10750 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
10751 fra.me.has_broke = 0;
10752 fra.me.REG_size = 2;
10753 fra.me.nitni_local_ref_head = NULL;
10754 fra.me.REG[0] = NIT_NULL;
10755 fra.me.REG[1] = NIT_NULL;
10756 fra.me.REG[0] = p0;
10757 /* syntax/typing.nit:1712 */
10758 fra.me.REG[1] = fra.me.REG[0];
10759 fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
10760 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
10761 if (UNTAG_Bool(REGB0)) {
10762 } else {
10763 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1712);
10764 }
10765 goto label1;
10766 label1: while(0);
10767 stack_frame_head = fra.me.prev;
10768 return fra.me.REG[1];
10769 }
10770 static const char LOCATE_syntax___typing___ASendReassignExpr___do_all_typing[] = "typing::ASendReassignExpr::(typing::ASendExpr::do_all_typing)";
10771 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
10772 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
10773 val_t REGB0;
10774 val_t REGB1;
10775 val_t REGB2;
10776 val_t tmp;
10777 static val_t once_value_2; /* Once value */
10778 static val_t once_value_3; /* Once value */
10779 static val_t once_value_4; /* Once value */
10780 static val_t once_value_5; /* Once value */
10781 static val_t once_value_6; /* Once value */
10782 static val_t once_value_7; /* Once value */
10783 static val_t once_value_8; /* Once value */
10784 static val_t once_value_9; /* Once value */
10785 static val_t once_value_10; /* Once value */
10786 static val_t once_value_11; /* Once value */
10787 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10788 fra.me.file = LOCATE_syntax___typing;
10789 fra.me.line = 1714;
10790 fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___do_all_typing;
10791 fra.me.has_broke = 0;
10792 fra.me.REG_size = 7;
10793 fra.me.nitni_local_ref_head = NULL;
10794 fra.me.REG[0] = NIT_NULL;
10795 fra.me.REG[1] = NIT_NULL;
10796 fra.me.REG[2] = NIT_NULL;
10797 fra.me.REG[3] = NIT_NULL;
10798 fra.me.REG[4] = NIT_NULL;
10799 fra.me.REG[5] = NIT_NULL;
10800 fra.me.REG[6] = NIT_NULL;
10801 fra.me.REG[0] = p0;
10802 fra.me.REG[1] = p1;
10803 /* syntax/typing.nit:1714 */
10804 fra.me.REG[2] = fra.me.REG[0];
10805 /* syntax/typing.nit:1716 */
10806 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10807 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
10808 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
10809 if (UNTAG_Bool(REGB0)) {
10810 goto label1;
10811 }
10812 /* syntax/typing.nit:1717 */
10813 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
10814 /* syntax/typing.nit:1718 */
10815 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10816 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10817 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10818 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
10819 fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10820 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
10821 fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10822 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);
10823 /* syntax/typing.nit:1719 */
10824 fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
10825 /* syntax/typing.nit:1720 */
10826 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10827 if (UNTAG_Bool(REGB1)) {
10828 } else {
10829 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10830 if (UNTAG_Bool(REGB0)) {
10831 REGB0 = TAG_Bool(0);
10832 REGB1 = REGB0;
10833 } else {
10834 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
10835 REGB1 = REGB0;
10836 }
10837 }
10838 if (UNTAG_Bool(REGB1)) {
10839 goto label1;
10840 }
10841 /* syntax/typing.nit:1721 */
10842 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10843 if (UNTAG_Bool(REGB1)) {
10844 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1721);
10845 }
10846 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
10847 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10848 if (UNTAG_Bool(REGB1)) {
10849 /* syntax/typing.nit:1722 */
10850 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
10851 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
10852 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
10853 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10854 if (UNTAG_Bool(REGB1)) {
10855 /* syntax/typing.nit:1723 */
10856 REGB1 = TAG_Int(3);
10857 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10858 if (!once_value_2) {
10859 fra.me.REG[6] = BOX_NativeString("Error: try to invoke constructor ");
10860 REGB1 = TAG_Int(33);
10861 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10862 once_value_2 = fra.me.REG[6];
10863 register_static_object(&once_value_2);
10864 } else fra.me.REG[6] = once_value_2;
10865 fra.me.REG[6] = fra.me.REG[6];
10866 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10867 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10868 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10869 if (!once_value_3) {
10870 fra.me.REG[6] = BOX_NativeString(" in a method.");
10871 REGB1 = TAG_Int(13);
10872 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10873 once_value_3 = fra.me.REG[6];
10874 register_static_object(&once_value_3);
10875 } else fra.me.REG[6] = once_value_3;
10876 fra.me.REG[6] = fra.me.REG[6];
10877 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10878 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10879 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10880 } else {
10881 /* syntax/typing.nit:1724 */
10882 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10883 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10884 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10885 if (UNTAG_Bool(REGB1)) {
10886 /* syntax/typing.nit:1725 */
10887 REGB1 = TAG_Int(3);
10888 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
10889 if (!once_value_4) {
10890 fra.me.REG[6] = BOX_NativeString("Error: constructor ");
10891 REGB1 = TAG_Int(19);
10892 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10893 once_value_4 = fra.me.REG[6];
10894 register_static_object(&once_value_4);
10895 } else fra.me.REG[6] = once_value_4;
10896 fra.me.REG[6] = fra.me.REG[6];
10897 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10898 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
10899 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10900 if (!once_value_5) {
10901 fra.me.REG[6] = BOX_NativeString(" is not invoken on 'self'.");
10902 REGB1 = TAG_Int(26);
10903 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
10904 once_value_5 = fra.me.REG[6];
10905 register_static_object(&once_value_5);
10906 } else fra.me.REG[6] = once_value_5;
10907 fra.me.REG[6] = fra.me.REG[6];
10908 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10909 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10910 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
10911 }
10912 }
10913 }
10914 /* syntax/typing.nit:1728 */
10915 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10916 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
10917 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
10918 if (UNTAG_Bool(REGB1)) {
10919 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1728);
10920 }
10921 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
10922 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
10923 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*/;
10924 if (UNTAG_Bool(REGB1)) {
10925 } else {
10926 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1728);
10927 }
10928 /* syntax/typing.nit:1729 */
10929 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10930 REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
10931 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
10932 if (UNTAG_Bool(REGB1)) {
10933 fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
10934 fra.me.REG[4] = fra.me.REG[0];
10935 }
10936 /* syntax/typing.nit:1731 */
10937 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]);
10938 /* syntax/typing.nit:1732 */
10939 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10940 if (UNTAG_Bool(REGB1)) {
10941 } else {
10942 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
10943 if (UNTAG_Bool(REGB0)) {
10944 REGB0 = TAG_Bool(0);
10945 REGB1 = REGB0;
10946 } else {
10947 REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
10948 REGB1 = REGB0;
10949 }
10950 }
10951 if (UNTAG_Bool(REGB1)) {
10952 goto label1;
10953 }
10954 /* syntax/typing.nit:1733 */
10955 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10956 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10957 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]);
10958 /* syntax/typing.nit:1735 */
10959 ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
10960 /* syntax/typing.nit:1736 */
10961 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
10962 fra.me.REG[3] = fra.me.REG[0];
10963 /* syntax/typing.nit:1737 */
10964 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
10965 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
10966 /* syntax/typing.nit:1739 */
10967 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10968 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
10969 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10970 REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
10971 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
10972 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
10973 REGB2 = TAG_Int(3);
10974 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
10975 if (!once_value_6) {
10976 fra.me.REG[6] = BOX_NativeString("");
10977 REGB2 = TAG_Int(0);
10978 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10979 once_value_6 = fra.me.REG[6];
10980 register_static_object(&once_value_6);
10981 } else fra.me.REG[6] = once_value_6;
10982 fra.me.REG[6] = fra.me.REG[6];
10983 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10984 fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
10985 fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
10986 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10987 if (!once_value_7) {
10988 fra.me.REG[6] = BOX_NativeString("=");
10989 REGB2 = TAG_Int(1);
10990 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
10991 once_value_7 = fra.me.REG[6];
10992 register_static_object(&once_value_7);
10993 } else fra.me.REG[6] = once_value_7;
10994 fra.me.REG[6] = fra.me.REG[6];
10995 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
10996 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
10997 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
10998 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);
10999 /* syntax/typing.nit:1740 */
11000 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
11001 if (UNTAG_Bool(REGB0)) {
11002 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1740);
11003 }
11004 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
11005 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
11006 if (UNTAG_Bool(REGB0)) {
11007 /* syntax/typing.nit:1741 */
11008 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
11009 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
11010 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
11011 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11012 if (UNTAG_Bool(REGB0)) {
11013 /* syntax/typing.nit:1742 */
11014 REGB0 = TAG_Int(3);
11015 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11016 if (!once_value_8) {
11017 fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
11018 REGB0 = TAG_Int(33);
11019 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11020 once_value_8 = fra.me.REG[4];
11021 register_static_object(&once_value_8);
11022 } else fra.me.REG[4] = once_value_8;
11023 fra.me.REG[4] = fra.me.REG[4];
11024 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11025 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
11026 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11027 if (!once_value_9) {
11028 fra.me.REG[4] = BOX_NativeString(" in a method.");
11029 REGB0 = TAG_Int(13);
11030 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11031 once_value_9 = fra.me.REG[4];
11032 register_static_object(&once_value_9);
11033 } else fra.me.REG[4] = once_value_9;
11034 fra.me.REG[4] = fra.me.REG[4];
11035 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11036 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11037 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
11038 } else {
11039 /* syntax/typing.nit:1743 */
11040 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11041 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
11042 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11043 if (UNTAG_Bool(REGB0)) {
11044 /* syntax/typing.nit:1744 */
11045 REGB0 = TAG_Int(3);
11046 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11047 if (!once_value_10) {
11048 fra.me.REG[4] = BOX_NativeString("Error: constructor ");
11049 REGB0 = TAG_Int(19);
11050 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
11051 once_value_10 = fra.me.REG[4];
11052 register_static_object(&once_value_10);
11053 } else fra.me.REG[4] = once_value_10;
11054 fra.me.REG[4] = fra.me.REG[4];
11055 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
11056 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
11057 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11058 if (!once_value_11) {
11059 fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
11060 REGB0 = TAG_Int(26);
11061 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
11062 once_value_11 = fra.me.REG[5];
11063 register_static_object(&once_value_11);
11064 } else fra.me.REG[5] = once_value_11;
11065 fra.me.REG[5] = fra.me.REG[5];
11066 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
11067 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
11068 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
11069 }
11070 }
11071 }
11072 /* syntax/typing.nit:1748 */
11073 REGB0 = TAG_Bool(1);
11074 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
11075 label1: while(0);
11076 stack_frame_head = fra.me.prev;
11077 return;
11078 }
11079 static const char LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments[] = "typing::ABinopExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
11080 val_t syntax___typing___ABinopExpr___compute_raw_arguments(val_t p0){
11081 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
11082 val_t REGB0;
11083 val_t tmp;
11084 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11085 fra.me.file = LOCATE_syntax___typing;
11086 fra.me.line = 1753;
11087 fra.me.meth = LOCATE_syntax___typing___ABinopExpr___compute_raw_arguments;
11088 fra.me.has_broke = 0;
11089 fra.me.REG_size = 2;
11090 fra.me.nitni_local_ref_head = NULL;
11091 fra.me.REG[0] = NIT_NULL;
11092 fra.me.REG[1] = NIT_NULL;
11093 fra.me.REG[0] = p0;
11094 /* syntax/typing.nit:1753 */
11095 REGB0 = TAG_Int(1);
11096 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
11097 fra.me.REG[0] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
11098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
11099 goto label1;
11100 label1: while(0);
11101 stack_frame_head = fra.me.prev;
11102 return fra.me.REG[1];
11103 }
11104 static const char LOCATE_syntax___typing___AEqExpr___name[] = "typing::AEqExpr::(typing::ASendExpr::name)";
11105 val_t syntax___typing___AEqExpr___name(val_t p0){
11106 struct {struct stack_frame_t me;} fra;
11107 val_t REGB0;
11108 val_t tmp;
11109 static val_t once_value_1; /* Once value */
11110 static val_t once_value_2; /* Once value */
11111 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11112 fra.me.file = LOCATE_syntax___typing;
11113 fra.me.line = 1756;
11114 fra.me.meth = LOCATE_syntax___typing___AEqExpr___name;
11115 fra.me.has_broke = 0;
11116 fra.me.REG_size = 1;
11117 fra.me.nitni_local_ref_head = NULL;
11118 fra.me.REG[0] = NIT_NULL;
11119 fra.me.REG[0] = p0;
11120 /* syntax/typing.nit:1756 */
11121 if (!once_value_1) {
11122 if (!once_value_2) {
11123 fra.me.REG[0] = BOX_NativeString("==");
11124 REGB0 = TAG_Int(2);
11125 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11126 once_value_2 = fra.me.REG[0];
11127 register_static_object(&once_value_2);
11128 } else fra.me.REG[0] = once_value_2;
11129 fra.me.REG[0] = fra.me.REG[0];
11130 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11131 once_value_1 = fra.me.REG[0];
11132 register_static_object(&once_value_1);
11133 } else fra.me.REG[0] = once_value_1;
11134 fra.me.REG[0] = fra.me.REG[0];
11135 goto label3;
11136 label3: while(0);
11137 stack_frame_head = fra.me.prev;
11138 return fra.me.REG[0];
11139 }
11140 static const char LOCATE_syntax___typing___AEqExpr___after_typing[] = "typing::AEqExpr::(typing::ANode::after_typing)";
11141 void syntax___typing___AEqExpr___after_typing(val_t p0, val_t p1){
11142 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11143 val_t REGB0;
11144 val_t REGB1;
11145 val_t tmp;
11146 static val_t once_value_2; /* Once value */
11147 static val_t once_value_3; /* Once value */
11148 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11149 fra.me.file = LOCATE_syntax___typing;
11150 fra.me.line = 1757;
11151 fra.me.meth = LOCATE_syntax___typing___AEqExpr___after_typing;
11152 fra.me.has_broke = 0;
11153 fra.me.REG_size = 4;
11154 fra.me.nitni_local_ref_head = NULL;
11155 fra.me.REG[0] = NIT_NULL;
11156 fra.me.REG[1] = NIT_NULL;
11157 fra.me.REG[2] = NIT_NULL;
11158 fra.me.REG[3] = NIT_NULL;
11159 fra.me.REG[0] = p0;
11160 fra.me.REG[1] = p1;
11161 /* syntax/typing.nit:1757 */
11162 fra.me.REG[2] = fra.me.REG[0];
11163 fra.me.REG[3] = fra.me.REG[1];
11164 /* syntax/typing.nit:1759 */
11165 CALL_SUPER_syntax___typing___AEqExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11166 /* syntax/typing.nit:1760 */
11167 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11168 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11169 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11170 if (UNTAG_Bool(REGB0)) {
11171 REGB0 = TAG_Bool(1);
11172 } else {
11173 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11174 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11175 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11176 REGB0 = REGB1;
11177 }
11178 if (UNTAG_Bool(REGB0)) {
11179 goto label1;
11180 }
11181 /* syntax/typing.nit:1761 */
11182 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11183 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11184 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11185 if (UNTAG_Bool(REGB0)) {
11186 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11187 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11188 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11189 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11190 } else {
11191 REGB1 = TAG_Bool(0);
11192 REGB0 = REGB1;
11193 }
11194 if (UNTAG_Bool(REGB0)) {
11195 REGB0 = TAG_Bool(1);
11196 } else {
11197 /* syntax/typing.nit:1762 */
11198 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11199 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11200 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11201 /* syntax/typing.nit:1761 */
11202 REGB0 = REGB1;
11203 }
11204 if (UNTAG_Bool(REGB0)) {
11205 /* syntax/typing.nit:1762 */
11206 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11207 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11208 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11209 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11210 } else {
11211 /* syntax/typing.nit:1761 */
11212 REGB1 = TAG_Bool(0);
11213 REGB0 = REGB1;
11214 }
11215 if (UNTAG_Bool(REGB0)) {
11216 /* syntax/typing.nit:1763 */
11217 if (!once_value_2) {
11218 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11219 REGB0 = TAG_Int(59);
11220 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11221 once_value_2 = fra.me.REG[1];
11222 register_static_object(&once_value_2);
11223 } else fra.me.REG[1] = once_value_2;
11224 fra.me.REG[1] = fra.me.REG[1];
11225 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11226 }
11227 /* syntax/typing.nit:1766 */
11228 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11229 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11230 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11231 if (UNTAG_Bool(REGB0)) {
11232 /* syntax/typing.nit:1767 */
11233 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11234 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11235 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11236 if (UNTAG_Bool(REGB0)) {
11237 /* syntax/typing.nit:1768 */
11238 if (!once_value_3) {
11239 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11240 REGB0 = TAG_Int(45);
11241 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11242 once_value_3 = fra.me.REG[1];
11243 register_static_object(&once_value_3);
11244 } else fra.me.REG[1] = once_value_3;
11245 fra.me.REG[1] = fra.me.REG[1];
11246 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11247 } else {
11248 /* syntax/typing.nit:1770 */
11249 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11250 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11251 }
11252 } else {
11253 /* syntax/typing.nit:1772 */
11254 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11255 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11256 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11257 if (UNTAG_Bool(REGB0)) {
11258 /* syntax/typing.nit:1773 */
11259 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11260 CALL_syntax___typing___AEqExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11261 }
11262 }
11263 label1: while(0);
11264 stack_frame_head = fra.me.prev;
11265 return;
11266 }
11267 static const char LOCATE_syntax___typing___AEqExpr___try_to_isa[] = "typing::AEqExpr::try_to_isa";
11268 void syntax___typing___AEqExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11269 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11270 val_t REGB0;
11271 val_t REGB1;
11272 val_t tmp;
11273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11274 fra.me.file = LOCATE_syntax___typing;
11275 fra.me.line = 1777;
11276 fra.me.meth = LOCATE_syntax___typing___AEqExpr___try_to_isa;
11277 fra.me.has_broke = 0;
11278 fra.me.REG_size = 5;
11279 fra.me.nitni_local_ref_head = NULL;
11280 fra.me.REG[0] = NIT_NULL;
11281 fra.me.REG[1] = NIT_NULL;
11282 fra.me.REG[2] = NIT_NULL;
11283 fra.me.REG[3] = NIT_NULL;
11284 fra.me.REG[4] = NIT_NULL;
11285 fra.me.REG[0] = p0;
11286 fra.me.REG[1] = p1;
11287 fra.me.REG[2] = p2;
11288 /* syntax/typing.nit:1779 */
11289 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11290 /* syntax/typing.nit:1780 */
11291 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11292 if (UNTAG_Bool(REGB0)) {
11293 } else {
11294 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11295 if (UNTAG_Bool(REGB1)) {
11296 REGB1 = TAG_Bool(0);
11297 REGB0 = REGB1;
11298 } else {
11299 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11300 REGB0 = REGB1;
11301 }
11302 }
11303 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11304 if (UNTAG_Bool(REGB0)) {
11305 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11306 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11307 } else {
11308 REGB1 = TAG_Bool(0);
11309 REGB0 = REGB1;
11310 }
11311 if (UNTAG_Bool(REGB0)) {
11312 /* syntax/typing.nit:1781 */
11313 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11314 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11315 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11316 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]);
11317 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11318 /* syntax/typing.nit:1782 */
11319 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11320 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11321 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]);
11322 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11323 }
11324 stack_frame_head = fra.me.prev;
11325 return;
11326 }
11327 static const char LOCATE_syntax___typing___ANeExpr___name[] = "typing::ANeExpr::(typing::ASendExpr::name)";
11328 val_t syntax___typing___ANeExpr___name(val_t p0){
11329 struct {struct stack_frame_t me;} fra;
11330 val_t REGB0;
11331 val_t tmp;
11332 static val_t once_value_1; /* Once value */
11333 static val_t once_value_2; /* Once value */
11334 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11335 fra.me.file = LOCATE_syntax___typing;
11336 fra.me.line = 1787;
11337 fra.me.meth = LOCATE_syntax___typing___ANeExpr___name;
11338 fra.me.has_broke = 0;
11339 fra.me.REG_size = 1;
11340 fra.me.nitni_local_ref_head = NULL;
11341 fra.me.REG[0] = NIT_NULL;
11342 fra.me.REG[0] = p0;
11343 /* syntax/typing.nit:1787 */
11344 if (!once_value_1) {
11345 if (!once_value_2) {
11346 fra.me.REG[0] = BOX_NativeString("!=");
11347 REGB0 = TAG_Int(2);
11348 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11349 once_value_2 = fra.me.REG[0];
11350 register_static_object(&once_value_2);
11351 } else fra.me.REG[0] = once_value_2;
11352 fra.me.REG[0] = fra.me.REG[0];
11353 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11354 once_value_1 = fra.me.REG[0];
11355 register_static_object(&once_value_1);
11356 } else fra.me.REG[0] = once_value_1;
11357 fra.me.REG[0] = fra.me.REG[0];
11358 goto label3;
11359 label3: while(0);
11360 stack_frame_head = fra.me.prev;
11361 return fra.me.REG[0];
11362 }
11363 static const char LOCATE_syntax___typing___ANeExpr___after_typing[] = "typing::ANeExpr::(typing::ANode::after_typing)";
11364 void syntax___typing___ANeExpr___after_typing(val_t p0, val_t p1){
11365 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
11366 val_t REGB0;
11367 val_t REGB1;
11368 val_t tmp;
11369 static val_t once_value_2; /* Once value */
11370 static val_t once_value_3; /* Once value */
11371 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11372 fra.me.file = LOCATE_syntax___typing;
11373 fra.me.line = 1788;
11374 fra.me.meth = LOCATE_syntax___typing___ANeExpr___after_typing;
11375 fra.me.has_broke = 0;
11376 fra.me.REG_size = 4;
11377 fra.me.nitni_local_ref_head = NULL;
11378 fra.me.REG[0] = NIT_NULL;
11379 fra.me.REG[1] = NIT_NULL;
11380 fra.me.REG[2] = NIT_NULL;
11381 fra.me.REG[3] = NIT_NULL;
11382 fra.me.REG[0] = p0;
11383 fra.me.REG[1] = p1;
11384 /* syntax/typing.nit:1788 */
11385 fra.me.REG[2] = fra.me.REG[0];
11386 fra.me.REG[3] = fra.me.REG[1];
11387 /* syntax/typing.nit:1790 */
11388 CALL_SUPER_syntax___typing___ANeExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
11389 /* syntax/typing.nit:1791 */
11390 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11391 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11392 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11393 if (UNTAG_Bool(REGB0)) {
11394 REGB0 = TAG_Bool(1);
11395 } else {
11396 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11397 REGB1 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
11398 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
11399 REGB0 = REGB1;
11400 }
11401 if (UNTAG_Bool(REGB0)) {
11402 goto label1;
11403 }
11404 /* syntax/typing.nit:1792 */
11405 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11406 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11407 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11408 if (UNTAG_Bool(REGB0)) {
11409 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11410 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11411 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11412 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11413 } else {
11414 REGB1 = TAG_Bool(0);
11415 REGB0 = REGB1;
11416 }
11417 if (UNTAG_Bool(REGB0)) {
11418 REGB0 = TAG_Bool(1);
11419 } else {
11420 /* syntax/typing.nit:1793 */
11421 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11422 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11423 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11424 /* syntax/typing.nit:1792 */
11425 REGB0 = REGB1;
11426 }
11427 if (UNTAG_Bool(REGB0)) {
11428 /* syntax/typing.nit:1793 */
11429 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11430 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11431 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
11432 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11433 } else {
11434 /* syntax/typing.nit:1792 */
11435 REGB1 = TAG_Bool(0);
11436 REGB0 = REGB1;
11437 }
11438 if (UNTAG_Bool(REGB0)) {
11439 /* syntax/typing.nit:1794 */
11440 if (!once_value_2) {
11441 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between null and a non nullable value.");
11442 REGB0 = TAG_Int(59);
11443 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11444 once_value_2 = fra.me.REG[1];
11445 register_static_object(&once_value_2);
11446 } else fra.me.REG[1] = once_value_2;
11447 fra.me.REG[1] = fra.me.REG[1];
11448 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11449 }
11450 /* syntax/typing.nit:1797 */
11451 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11452 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11453 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11454 if (UNTAG_Bool(REGB0)) {
11455 /* syntax/typing.nit:1798 */
11456 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11457 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11458 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11459 if (UNTAG_Bool(REGB0)) {
11460 /* syntax/typing.nit:1799 */
11461 if (!once_value_3) {
11462 fra.me.REG[1] = BOX_NativeString("Warning: comparaison between two null values.");
11463 REGB0 = TAG_Int(45);
11464 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
11465 once_value_3 = fra.me.REG[1];
11466 register_static_object(&once_value_3);
11467 } else fra.me.REG[1] = once_value_3;
11468 fra.me.REG[1] = fra.me.REG[1];
11469 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
11470 } else {
11471 /* syntax/typing.nit:1801 */
11472 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11473 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11474 }
11475 } else {
11476 /* syntax/typing.nit:1803 */
11477 fra.me.REG[1] = CALL_parser___parser_nodes___ABinopExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
11478 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
11479 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
11480 if (UNTAG_Bool(REGB0)) {
11481 /* syntax/typing.nit:1804 */
11482 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
11483 CALL_syntax___typing___ANeExpr___try_to_isa(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
11484 }
11485 }
11486 label1: while(0);
11487 stack_frame_head = fra.me.prev;
11488 return;
11489 }
11490 static const char LOCATE_syntax___typing___ANeExpr___try_to_isa[] = "typing::ANeExpr::try_to_isa";
11491 void syntax___typing___ANeExpr___try_to_isa(val_t p0, val_t p1, val_t p2){
11492 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
11493 val_t REGB0;
11494 val_t REGB1;
11495 val_t tmp;
11496 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11497 fra.me.file = LOCATE_syntax___typing;
11498 fra.me.line = 1808;
11499 fra.me.meth = LOCATE_syntax___typing___ANeExpr___try_to_isa;
11500 fra.me.has_broke = 0;
11501 fra.me.REG_size = 5;
11502 fra.me.nitni_local_ref_head = NULL;
11503 fra.me.REG[0] = NIT_NULL;
11504 fra.me.REG[1] = NIT_NULL;
11505 fra.me.REG[2] = NIT_NULL;
11506 fra.me.REG[3] = NIT_NULL;
11507 fra.me.REG[4] = NIT_NULL;
11508 fra.me.REG[0] = p0;
11509 fra.me.REG[1] = p1;
11510 fra.me.REG[2] = p2;
11511 /* syntax/typing.nit:1810 */
11512 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[2])(fra.me.REG[2]);
11513 /* syntax/typing.nit:1811 */
11514 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11515 if (UNTAG_Bool(REGB0)) {
11516 } else {
11517 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
11518 if (UNTAG_Bool(REGB1)) {
11519 REGB1 = TAG_Bool(0);
11520 REGB0 = REGB1;
11521 } else {
11522 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
11523 REGB0 = REGB1;
11524 }
11525 }
11526 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
11527 if (UNTAG_Bool(REGB0)) {
11528 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11529 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
11530 } else {
11531 REGB1 = TAG_Bool(0);
11532 REGB0 = REGB1;
11533 }
11534 if (UNTAG_Bool(REGB0)) {
11535 /* syntax/typing.nit:1812 */
11536 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11537 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
11538 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
11539 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]);
11540 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[2];
11541 /* syntax/typing.nit:1813 */
11542 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
11543 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_none(fra.me.REG[1])(fra.me.REG[1]);
11544 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]);
11545 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
11546 }
11547 stack_frame_head = fra.me.prev;
11548 return;
11549 }
11550 static const char LOCATE_syntax___typing___ALtExpr___name[] = "typing::ALtExpr::(typing::ASendExpr::name)";
11551 val_t syntax___typing___ALtExpr___name(val_t p0){
11552 struct {struct stack_frame_t me;} fra;
11553 val_t REGB0;
11554 val_t tmp;
11555 static val_t once_value_1; /* Once value */
11556 static val_t once_value_2; /* Once value */
11557 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11558 fra.me.file = LOCATE_syntax___typing;
11559 fra.me.line = 1818;
11560 fra.me.meth = LOCATE_syntax___typing___ALtExpr___name;
11561 fra.me.has_broke = 0;
11562 fra.me.REG_size = 1;
11563 fra.me.nitni_local_ref_head = NULL;
11564 fra.me.REG[0] = NIT_NULL;
11565 fra.me.REG[0] = p0;
11566 /* syntax/typing.nit:1818 */
11567 if (!once_value_1) {
11568 if (!once_value_2) {
11569 fra.me.REG[0] = BOX_NativeString("<");
11570 REGB0 = TAG_Int(1);
11571 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11572 once_value_2 = fra.me.REG[0];
11573 register_static_object(&once_value_2);
11574 } else fra.me.REG[0] = once_value_2;
11575 fra.me.REG[0] = fra.me.REG[0];
11576 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11577 once_value_1 = fra.me.REG[0];
11578 register_static_object(&once_value_1);
11579 } else fra.me.REG[0] = once_value_1;
11580 fra.me.REG[0] = fra.me.REG[0];
11581 goto label3;
11582 label3: while(0);
11583 stack_frame_head = fra.me.prev;
11584 return fra.me.REG[0];
11585 }
11586 static const char LOCATE_syntax___typing___ALeExpr___name[] = "typing::ALeExpr::(typing::ASendExpr::name)";
11587 val_t syntax___typing___ALeExpr___name(val_t p0){
11588 struct {struct stack_frame_t me;} fra;
11589 val_t REGB0;
11590 val_t tmp;
11591 static val_t once_value_1; /* Once value */
11592 static val_t once_value_2; /* Once value */
11593 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11594 fra.me.file = LOCATE_syntax___typing;
11595 fra.me.line = 1821;
11596 fra.me.meth = LOCATE_syntax___typing___ALeExpr___name;
11597 fra.me.has_broke = 0;
11598 fra.me.REG_size = 1;
11599 fra.me.nitni_local_ref_head = NULL;
11600 fra.me.REG[0] = NIT_NULL;
11601 fra.me.REG[0] = p0;
11602 /* syntax/typing.nit:1821 */
11603 if (!once_value_1) {
11604 if (!once_value_2) {
11605 fra.me.REG[0] = BOX_NativeString("<=");
11606 REGB0 = TAG_Int(2);
11607 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11608 once_value_2 = fra.me.REG[0];
11609 register_static_object(&once_value_2);
11610 } else fra.me.REG[0] = once_value_2;
11611 fra.me.REG[0] = fra.me.REG[0];
11612 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11613 once_value_1 = fra.me.REG[0];
11614 register_static_object(&once_value_1);
11615 } else fra.me.REG[0] = once_value_1;
11616 fra.me.REG[0] = fra.me.REG[0];
11617 goto label3;
11618 label3: while(0);
11619 stack_frame_head = fra.me.prev;
11620 return fra.me.REG[0];
11621 }
11622 static const char LOCATE_syntax___typing___ALlExpr___name[] = "typing::ALlExpr::(typing::ASendExpr::name)";
11623 val_t syntax___typing___ALlExpr___name(val_t p0){
11624 struct {struct stack_frame_t me;} fra;
11625 val_t REGB0;
11626 val_t tmp;
11627 static val_t once_value_1; /* Once value */
11628 static val_t once_value_2; /* Once value */
11629 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11630 fra.me.file = LOCATE_syntax___typing;
11631 fra.me.line = 1824;
11632 fra.me.meth = LOCATE_syntax___typing___ALlExpr___name;
11633 fra.me.has_broke = 0;
11634 fra.me.REG_size = 1;
11635 fra.me.nitni_local_ref_head = NULL;
11636 fra.me.REG[0] = NIT_NULL;
11637 fra.me.REG[0] = p0;
11638 /* syntax/typing.nit:1824 */
11639 if (!once_value_1) {
11640 if (!once_value_2) {
11641 fra.me.REG[0] = BOX_NativeString("<<");
11642 REGB0 = TAG_Int(2);
11643 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11644 once_value_2 = fra.me.REG[0];
11645 register_static_object(&once_value_2);
11646 } else fra.me.REG[0] = once_value_2;
11647 fra.me.REG[0] = fra.me.REG[0];
11648 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11649 once_value_1 = fra.me.REG[0];
11650 register_static_object(&once_value_1);
11651 } else fra.me.REG[0] = once_value_1;
11652 fra.me.REG[0] = fra.me.REG[0];
11653 goto label3;
11654 label3: while(0);
11655 stack_frame_head = fra.me.prev;
11656 return fra.me.REG[0];
11657 }
11658 static const char LOCATE_syntax___typing___AGtExpr___name[] = "typing::AGtExpr::(typing::ASendExpr::name)";
11659 val_t syntax___typing___AGtExpr___name(val_t p0){
11660 struct {struct stack_frame_t me;} fra;
11661 val_t REGB0;
11662 val_t tmp;
11663 static val_t once_value_1; /* Once value */
11664 static val_t once_value_2; /* Once value */
11665 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11666 fra.me.file = LOCATE_syntax___typing;
11667 fra.me.line = 1827;
11668 fra.me.meth = LOCATE_syntax___typing___AGtExpr___name;
11669 fra.me.has_broke = 0;
11670 fra.me.REG_size = 1;
11671 fra.me.nitni_local_ref_head = NULL;
11672 fra.me.REG[0] = NIT_NULL;
11673 fra.me.REG[0] = p0;
11674 /* syntax/typing.nit:1827 */
11675 if (!once_value_1) {
11676 if (!once_value_2) {
11677 fra.me.REG[0] = BOX_NativeString(">");
11678 REGB0 = TAG_Int(1);
11679 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11680 once_value_2 = fra.me.REG[0];
11681 register_static_object(&once_value_2);
11682 } else fra.me.REG[0] = once_value_2;
11683 fra.me.REG[0] = fra.me.REG[0];
11684 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11685 once_value_1 = fra.me.REG[0];
11686 register_static_object(&once_value_1);
11687 } else fra.me.REG[0] = once_value_1;
11688 fra.me.REG[0] = fra.me.REG[0];
11689 goto label3;
11690 label3: while(0);
11691 stack_frame_head = fra.me.prev;
11692 return fra.me.REG[0];
11693 }
11694 static const char LOCATE_syntax___typing___AGeExpr___name[] = "typing::AGeExpr::(typing::ASendExpr::name)";
11695 val_t syntax___typing___AGeExpr___name(val_t p0){
11696 struct {struct stack_frame_t me;} fra;
11697 val_t REGB0;
11698 val_t tmp;
11699 static val_t once_value_1; /* Once value */
11700 static val_t once_value_2; /* Once value */
11701 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11702 fra.me.file = LOCATE_syntax___typing;
11703 fra.me.line = 1830;
11704 fra.me.meth = LOCATE_syntax___typing___AGeExpr___name;
11705 fra.me.has_broke = 0;
11706 fra.me.REG_size = 1;
11707 fra.me.nitni_local_ref_head = NULL;
11708 fra.me.REG[0] = NIT_NULL;
11709 fra.me.REG[0] = p0;
11710 /* syntax/typing.nit:1830 */
11711 if (!once_value_1) {
11712 if (!once_value_2) {
11713 fra.me.REG[0] = BOX_NativeString(">=");
11714 REGB0 = TAG_Int(2);
11715 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11716 once_value_2 = fra.me.REG[0];
11717 register_static_object(&once_value_2);
11718 } else fra.me.REG[0] = once_value_2;
11719 fra.me.REG[0] = fra.me.REG[0];
11720 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11721 once_value_1 = fra.me.REG[0];
11722 register_static_object(&once_value_1);
11723 } else fra.me.REG[0] = once_value_1;
11724 fra.me.REG[0] = fra.me.REG[0];
11725 goto label3;
11726 label3: while(0);
11727 stack_frame_head = fra.me.prev;
11728 return fra.me.REG[0];
11729 }
11730 static const char LOCATE_syntax___typing___AGgExpr___name[] = "typing::AGgExpr::(typing::ASendExpr::name)";
11731 val_t syntax___typing___AGgExpr___name(val_t p0){
11732 struct {struct stack_frame_t me;} fra;
11733 val_t REGB0;
11734 val_t tmp;
11735 static val_t once_value_1; /* Once value */
11736 static val_t once_value_2; /* Once value */
11737 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11738 fra.me.file = LOCATE_syntax___typing;
11739 fra.me.line = 1833;
11740 fra.me.meth = LOCATE_syntax___typing___AGgExpr___name;
11741 fra.me.has_broke = 0;
11742 fra.me.REG_size = 1;
11743 fra.me.nitni_local_ref_head = NULL;
11744 fra.me.REG[0] = NIT_NULL;
11745 fra.me.REG[0] = p0;
11746 /* syntax/typing.nit:1833 */
11747 if (!once_value_1) {
11748 if (!once_value_2) {
11749 fra.me.REG[0] = BOX_NativeString(">>");
11750 REGB0 = TAG_Int(2);
11751 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11752 once_value_2 = fra.me.REG[0];
11753 register_static_object(&once_value_2);
11754 } else fra.me.REG[0] = once_value_2;
11755 fra.me.REG[0] = fra.me.REG[0];
11756 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11757 once_value_1 = fra.me.REG[0];
11758 register_static_object(&once_value_1);
11759 } else fra.me.REG[0] = once_value_1;
11760 fra.me.REG[0] = fra.me.REG[0];
11761 goto label3;
11762 label3: while(0);
11763 stack_frame_head = fra.me.prev;
11764 return fra.me.REG[0];
11765 }
11766 static const char LOCATE_syntax___typing___APlusExpr___name[] = "typing::APlusExpr::(typing::ASendExpr::name)";
11767 val_t syntax___typing___APlusExpr___name(val_t p0){
11768 struct {struct stack_frame_t me;} fra;
11769 val_t REGB0;
11770 val_t tmp;
11771 static val_t once_value_1; /* Once value */
11772 static val_t once_value_2; /* Once value */
11773 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11774 fra.me.file = LOCATE_syntax___typing;
11775 fra.me.line = 1836;
11776 fra.me.meth = LOCATE_syntax___typing___APlusExpr___name;
11777 fra.me.has_broke = 0;
11778 fra.me.REG_size = 1;
11779 fra.me.nitni_local_ref_head = NULL;
11780 fra.me.REG[0] = NIT_NULL;
11781 fra.me.REG[0] = p0;
11782 /* syntax/typing.nit:1836 */
11783 if (!once_value_1) {
11784 if (!once_value_2) {
11785 fra.me.REG[0] = BOX_NativeString("+");
11786 REGB0 = TAG_Int(1);
11787 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11788 once_value_2 = fra.me.REG[0];
11789 register_static_object(&once_value_2);
11790 } else fra.me.REG[0] = once_value_2;
11791 fra.me.REG[0] = fra.me.REG[0];
11792 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11793 once_value_1 = fra.me.REG[0];
11794 register_static_object(&once_value_1);
11795 } else fra.me.REG[0] = once_value_1;
11796 fra.me.REG[0] = fra.me.REG[0];
11797 goto label3;
11798 label3: while(0);
11799 stack_frame_head = fra.me.prev;
11800 return fra.me.REG[0];
11801 }
11802 static const char LOCATE_syntax___typing___AMinusExpr___name[] = "typing::AMinusExpr::(typing::ASendExpr::name)";
11803 val_t syntax___typing___AMinusExpr___name(val_t p0){
11804 struct {struct stack_frame_t me;} fra;
11805 val_t REGB0;
11806 val_t tmp;
11807 static val_t once_value_1; /* Once value */
11808 static val_t once_value_2; /* Once value */
11809 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11810 fra.me.file = LOCATE_syntax___typing;
11811 fra.me.line = 1839;
11812 fra.me.meth = LOCATE_syntax___typing___AMinusExpr___name;
11813 fra.me.has_broke = 0;
11814 fra.me.REG_size = 1;
11815 fra.me.nitni_local_ref_head = NULL;
11816 fra.me.REG[0] = NIT_NULL;
11817 fra.me.REG[0] = p0;
11818 /* syntax/typing.nit:1839 */
11819 if (!once_value_1) {
11820 if (!once_value_2) {
11821 fra.me.REG[0] = BOX_NativeString("-");
11822 REGB0 = TAG_Int(1);
11823 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11824 once_value_2 = fra.me.REG[0];
11825 register_static_object(&once_value_2);
11826 } else fra.me.REG[0] = once_value_2;
11827 fra.me.REG[0] = fra.me.REG[0];
11828 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11829 once_value_1 = fra.me.REG[0];
11830 register_static_object(&once_value_1);
11831 } else fra.me.REG[0] = once_value_1;
11832 fra.me.REG[0] = fra.me.REG[0];
11833 goto label3;
11834 label3: while(0);
11835 stack_frame_head = fra.me.prev;
11836 return fra.me.REG[0];
11837 }
11838 static const char LOCATE_syntax___typing___AStarshipExpr___name[] = "typing::AStarshipExpr::(typing::ASendExpr::name)";
11839 val_t syntax___typing___AStarshipExpr___name(val_t p0){
11840 struct {struct stack_frame_t me;} fra;
11841 val_t REGB0;
11842 val_t tmp;
11843 static val_t once_value_1; /* Once value */
11844 static val_t once_value_2; /* Once value */
11845 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11846 fra.me.file = LOCATE_syntax___typing;
11847 fra.me.line = 1842;
11848 fra.me.meth = LOCATE_syntax___typing___AStarshipExpr___name;
11849 fra.me.has_broke = 0;
11850 fra.me.REG_size = 1;
11851 fra.me.nitni_local_ref_head = NULL;
11852 fra.me.REG[0] = NIT_NULL;
11853 fra.me.REG[0] = p0;
11854 /* syntax/typing.nit:1842 */
11855 if (!once_value_1) {
11856 if (!once_value_2) {
11857 fra.me.REG[0] = BOX_NativeString("<=>");
11858 REGB0 = TAG_Int(3);
11859 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11860 once_value_2 = fra.me.REG[0];
11861 register_static_object(&once_value_2);
11862 } else fra.me.REG[0] = once_value_2;
11863 fra.me.REG[0] = fra.me.REG[0];
11864 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11865 once_value_1 = fra.me.REG[0];
11866 register_static_object(&once_value_1);
11867 } else fra.me.REG[0] = once_value_1;
11868 fra.me.REG[0] = fra.me.REG[0];
11869 goto label3;
11870 label3: while(0);
11871 stack_frame_head = fra.me.prev;
11872 return fra.me.REG[0];
11873 }
11874 static const char LOCATE_syntax___typing___AStarExpr___name[] = "typing::AStarExpr::(typing::ASendExpr::name)";
11875 val_t syntax___typing___AStarExpr___name(val_t p0){
11876 struct {struct stack_frame_t me;} fra;
11877 val_t REGB0;
11878 val_t tmp;
11879 static val_t once_value_1; /* Once value */
11880 static val_t once_value_2; /* Once value */
11881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11882 fra.me.file = LOCATE_syntax___typing;
11883 fra.me.line = 1845;
11884 fra.me.meth = LOCATE_syntax___typing___AStarExpr___name;
11885 fra.me.has_broke = 0;
11886 fra.me.REG_size = 1;
11887 fra.me.nitni_local_ref_head = NULL;
11888 fra.me.REG[0] = NIT_NULL;
11889 fra.me.REG[0] = p0;
11890 /* syntax/typing.nit:1845 */
11891 if (!once_value_1) {
11892 if (!once_value_2) {
11893 fra.me.REG[0] = BOX_NativeString("*");
11894 REGB0 = TAG_Int(1);
11895 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11896 once_value_2 = fra.me.REG[0];
11897 register_static_object(&once_value_2);
11898 } else fra.me.REG[0] = once_value_2;
11899 fra.me.REG[0] = fra.me.REG[0];
11900 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11901 once_value_1 = fra.me.REG[0];
11902 register_static_object(&once_value_1);
11903 } else fra.me.REG[0] = once_value_1;
11904 fra.me.REG[0] = fra.me.REG[0];
11905 goto label3;
11906 label3: while(0);
11907 stack_frame_head = fra.me.prev;
11908 return fra.me.REG[0];
11909 }
11910 static const char LOCATE_syntax___typing___ASlashExpr___name[] = "typing::ASlashExpr::(typing::ASendExpr::name)";
11911 val_t syntax___typing___ASlashExpr___name(val_t p0){
11912 struct {struct stack_frame_t me;} fra;
11913 val_t REGB0;
11914 val_t tmp;
11915 static val_t once_value_1; /* Once value */
11916 static val_t once_value_2; /* Once value */
11917 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11918 fra.me.file = LOCATE_syntax___typing;
11919 fra.me.line = 1848;
11920 fra.me.meth = LOCATE_syntax___typing___ASlashExpr___name;
11921 fra.me.has_broke = 0;
11922 fra.me.REG_size = 1;
11923 fra.me.nitni_local_ref_head = NULL;
11924 fra.me.REG[0] = NIT_NULL;
11925 fra.me.REG[0] = p0;
11926 /* syntax/typing.nit:1848 */
11927 if (!once_value_1) {
11928 if (!once_value_2) {
11929 fra.me.REG[0] = BOX_NativeString("/");
11930 REGB0 = TAG_Int(1);
11931 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11932 once_value_2 = fra.me.REG[0];
11933 register_static_object(&once_value_2);
11934 } else fra.me.REG[0] = once_value_2;
11935 fra.me.REG[0] = fra.me.REG[0];
11936 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11937 once_value_1 = fra.me.REG[0];
11938 register_static_object(&once_value_1);
11939 } else fra.me.REG[0] = once_value_1;
11940 fra.me.REG[0] = fra.me.REG[0];
11941 goto label3;
11942 label3: while(0);
11943 stack_frame_head = fra.me.prev;
11944 return fra.me.REG[0];
11945 }
11946 static const char LOCATE_syntax___typing___APercentExpr___name[] = "typing::APercentExpr::(typing::ASendExpr::name)";
11947 val_t syntax___typing___APercentExpr___name(val_t p0){
11948 struct {struct stack_frame_t me;} fra;
11949 val_t REGB0;
11950 val_t tmp;
11951 static val_t once_value_1; /* Once value */
11952 static val_t once_value_2; /* Once value */
11953 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
11954 fra.me.file = LOCATE_syntax___typing;
11955 fra.me.line = 1851;
11956 fra.me.meth = LOCATE_syntax___typing___APercentExpr___name;
11957 fra.me.has_broke = 0;
11958 fra.me.REG_size = 1;
11959 fra.me.nitni_local_ref_head = NULL;
11960 fra.me.REG[0] = NIT_NULL;
11961 fra.me.REG[0] = p0;
11962 /* syntax/typing.nit:1851 */
11963 if (!once_value_1) {
11964 if (!once_value_2) {
11965 fra.me.REG[0] = BOX_NativeString("%");
11966 REGB0 = TAG_Int(1);
11967 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
11968 once_value_2 = fra.me.REG[0];
11969 register_static_object(&once_value_2);
11970 } else fra.me.REG[0] = once_value_2;
11971 fra.me.REG[0] = fra.me.REG[0];
11972 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
11973 once_value_1 = fra.me.REG[0];
11974 register_static_object(&once_value_1);
11975 } else fra.me.REG[0] = once_value_1;
11976 fra.me.REG[0] = fra.me.REG[0];
11977 goto label3;
11978 label3: while(0);
11979 stack_frame_head = fra.me.prev;
11980 return fra.me.REG[0];
11981 }
11982 static const char LOCATE_syntax___typing___AUminusExpr___name[] = "typing::AUminusExpr::(typing::ASendExpr::name)";
11983 val_t syntax___typing___AUminusExpr___name(val_t p0){
11984 struct {struct stack_frame_t me;} fra;
11985 val_t REGB0;
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 = 1855;
11992 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___name;
11993 fra.me.has_broke = 0;
11994 fra.me.REG_size = 1;
11995 fra.me.nitni_local_ref_head = NULL;
11996 fra.me.REG[0] = NIT_NULL;
11997 fra.me.REG[0] = p0;
11998 /* syntax/typing.nit:1855 */
11999 if (!once_value_1) {
12000 if (!once_value_2) {
12001 fra.me.REG[0] = BOX_NativeString("unary -");
12002 REGB0 = TAG_Int(7);
12003 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12004 once_value_2 = fra.me.REG[0];
12005 register_static_object(&once_value_2);
12006 } else fra.me.REG[0] = once_value_2;
12007 fra.me.REG[0] = fra.me.REG[0];
12008 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12009 once_value_1 = fra.me.REG[0];
12010 register_static_object(&once_value_1);
12011 } else fra.me.REG[0] = once_value_1;
12012 fra.me.REG[0] = fra.me.REG[0];
12013 goto label3;
12014 label3: while(0);
12015 stack_frame_head = fra.me.prev;
12016 return fra.me.REG[0];
12017 }
12018 static const char LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments[] = "typing::AUminusExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12019 val_t syntax___typing___AUminusExpr___compute_raw_arguments(val_t p0){
12020 struct {struct stack_frame_t me;} fra;
12021 val_t tmp;
12022 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12023 fra.me.file = LOCATE_syntax___typing;
12024 fra.me.line = 1856;
12025 fra.me.meth = LOCATE_syntax___typing___AUminusExpr___compute_raw_arguments;
12026 fra.me.has_broke = 0;
12027 fra.me.REG_size = 1;
12028 fra.me.nitni_local_ref_head = NULL;
12029 fra.me.REG[0] = NIT_NULL;
12030 fra.me.REG[0] = p0;
12031 /* syntax/typing.nit:1856 */
12032 fra.me.REG[0] = NIT_NULL;
12033 goto label1;
12034 label1: while(0);
12035 stack_frame_head = fra.me.prev;
12036 return fra.me.REG[0];
12037 }
12038 static const char LOCATE_syntax___typing___ACallFormExpr___after_typing[] = "typing::ACallFormExpr::(typing::ANode::after_typing)";
12039 void syntax___typing___ACallFormExpr___after_typing(val_t p0, val_t p1){
12040 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
12041 val_t REGB0;
12042 val_t REGB1;
12043 val_t tmp;
12044 static val_t once_value_1; /* Once value */
12045 static val_t once_value_2; /* Once value */
12046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12047 fra.me.file = LOCATE_syntax___typing;
12048 fra.me.line = 1860;
12049 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___after_typing;
12050 fra.me.has_broke = 0;
12051 fra.me.REG_size = 9;
12052 fra.me.nitni_local_ref_head = NULL;
12053 fra.me.REG[0] = NIT_NULL;
12054 fra.me.REG[1] = NIT_NULL;
12055 fra.me.REG[2] = NIT_NULL;
12056 fra.me.REG[3] = NIT_NULL;
12057 fra.me.REG[4] = NIT_NULL;
12058 fra.me.REG[5] = NIT_NULL;
12059 fra.me.REG[6] = NIT_NULL;
12060 fra.me.REG[7] = NIT_NULL;
12061 fra.me.REG[8] = NIT_NULL;
12062 fra.me.REG[0] = p0;
12063 fra.me.REG[1] = p1;
12064 /* syntax/typing.nit:1860 */
12065 fra.me.REG[2] = fra.me.REG[0];
12066 fra.me.REG[3] = fra.me.REG[1];
12067 /* syntax/typing.nit:1862 */
12068 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
12069 REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
12070 if (UNTAG_Bool(REGB0)) {
12071 /* syntax/typing.nit:1863 */
12072 fra.me.REG[4] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12073 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12074 /* syntax/typing.nit:1864 */
12075 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[3])(fra.me.REG[3]);
12076 fra.me.REG[5] = CALL_syntax___scope___ScopeContext_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
12077 /* syntax/typing.nit:1865 */
12078 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12079 if (UNTAG_Bool(REGB0)) {
12080 } else {
12081 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
12082 if (UNTAG_Bool(REGB1)) {
12083 REGB1 = TAG_Bool(0);
12084 REGB0 = REGB1;
12085 } else {
12086 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
12087 REGB0 = REGB1;
12088 }
12089 }
12090 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12091 if (UNTAG_Bool(REGB0)) {
12092 /* syntax/typing.nit:1867 */
12093 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*/;
12094 if (UNTAG_Bool(REGB0)) {
12095 /* syntax/typing.nit:1868 */
12096 fra.me.REG[6] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[2])(fra.me.REG[2]);
12097 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12098 fra.me.REG[8] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[2])(fra.me.REG[2]);
12099 fra.me.REG[8] = NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
12100 /* syntax/typing.nit:1869 */
12101 ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12102 } else {
12103 /* syntax/typing.nit:1871 */
12104 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12105 fra.me.REG[7] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[7])(fra.me.REG[7]);
12106 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
12107 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12108 if (UNTAG_Bool(REGB0)) {
12109 REGB0 = TAG_Bool(1);
12110 } else {
12111 fra.me.REG[7] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
12112 REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AParExprs, ID_parser___parser_nodes___AParExprs)) /*cast AParExprs*/;
12113 REGB0 = REGB1;
12114 }
12115 if (UNTAG_Bool(REGB0)) {
12116 /* syntax/typing.nit:1872 */
12117 REGB0 = TAG_Int(3);
12118 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
12119 if (!once_value_1) {
12120 fra.me.REG[6] = BOX_NativeString("Error: ");
12121 REGB0 = TAG_Int(7);
12122 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
12123 once_value_1 = fra.me.REG[6];
12124 register_static_object(&once_value_1);
12125 } else fra.me.REG[6] = once_value_1;
12126 fra.me.REG[6] = fra.me.REG[6];
12127 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
12128 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
12129 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12130 if (!once_value_2) {
12131 fra.me.REG[4] = BOX_NativeString(" is variable, not a function.");
12132 REGB0 = TAG_Int(29);
12133 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
12134 once_value_2 = fra.me.REG[4];
12135 register_static_object(&once_value_2);
12136 } else fra.me.REG[4] = once_value_2;
12137 fra.me.REG[4] = fra.me.REG[4];
12138 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
12139 fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
12140 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
12141 /* syntax/typing.nit:1873 */
12142 goto label3;
12143 }
12144 /* syntax/typing.nit:1875 */
12145 fra.me.REG[7] = CALL_syntax___typing___ACallFormExpr___variable_create(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
12146 fra.me.REG[8] = fra.me.REG[7];
12147 /* syntax/typing.nit:1876 */
12148 ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[8]) = fra.me.REG[5];
12149 }
12150 /* syntax/typing.nit:1878 */
12151 CALL_parser___parser_prod___ANode___replace_with(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
12152 /* syntax/typing.nit:1879 */
12153 CALL_syntax___typing___ANode___after_typing(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
12154 /* syntax/typing.nit:1880 */
12155 goto label3;
12156 }
12157 }
12158 /* syntax/typing.nit:1884 */
12159 CALL_SUPER_syntax___typing___ACallFormExpr___after_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12160 label3: while(0);
12161 stack_frame_head = fra.me.prev;
12162 return;
12163 }
12164 static const char LOCATE_syntax___typing___ACallFormExpr___closure_defs[] = "typing::ACallFormExpr::(syntax_base::ASendExpr::closure_defs)";
12165 val_t syntax___typing___ACallFormExpr___closure_defs(val_t p0){
12166 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12167 val_t REGB0;
12168 val_t tmp;
12169 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12170 fra.me.file = LOCATE_syntax___typing;
12171 fra.me.line = 1887;
12172 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___closure_defs;
12173 fra.me.has_broke = 0;
12174 fra.me.REG_size = 2;
12175 fra.me.nitni_local_ref_head = NULL;
12176 fra.me.REG[0] = NIT_NULL;
12177 fra.me.REG[1] = NIT_NULL;
12178 fra.me.REG[0] = p0;
12179 /* syntax/typing.nit:1889 */
12180 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12181 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12182 if (UNTAG_Bool(REGB0)) {
12183 /* syntax/typing.nit:1890 */
12184 fra.me.REG[1] = NIT_NULL;
12185 goto label1;
12186 } else {
12187 /* syntax/typing.nit:1892 */
12188 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12189 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12190 fra.me.REG[1] = fra.me.REG[0];
12191 goto label1;
12192 }
12193 label1: while(0);
12194 stack_frame_head = fra.me.prev;
12195 return fra.me.REG[1];
12196 }
12197 static const char LOCATE_syntax___typing___ACallFormExpr___variable_create[] = "typing::ACallFormExpr::variable_create";
12198 val_t syntax___typing___ACallFormExpr___variable_create(val_t p0, val_t p1){
12199 struct {struct stack_frame_t me;} fra;
12200 val_t tmp;
12201 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12202 fra.me.file = LOCATE_syntax___typing;
12203 fra.me.line = 1896;
12204 fra.me.meth = LOCATE_syntax___typing___ACallFormExpr___variable_create;
12205 fra.me.has_broke = 0;
12206 fra.me.REG_size = 0;
12207 fra.me.nitni_local_ref_head = NULL;
12208 /* syntax/typing.nit:1896 */
12209 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1896);
12210 stack_frame_head = fra.me.prev;
12211 return NIT_NULL;
12212 }
12213 static const char LOCATE_syntax___typing___ACallExpr___variable_create[] = "typing::ACallExpr::(typing::ACallFormExpr::variable_create)";
12214 val_t syntax___typing___ACallExpr___variable_create(val_t p0, val_t p1){
12215 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12216 val_t tmp;
12217 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12218 fra.me.file = LOCATE_syntax___typing;
12219 fra.me.line = 1901;
12220 fra.me.meth = LOCATE_syntax___typing___ACallExpr___variable_create;
12221 fra.me.has_broke = 0;
12222 fra.me.REG_size = 2;
12223 fra.me.nitni_local_ref_head = NULL;
12224 fra.me.REG[0] = NIT_NULL;
12225 fra.me.REG[1] = NIT_NULL;
12226 fra.me.REG[0] = p0;
12227 fra.me.REG[1] = p1;
12228 /* syntax/typing.nit:1903 */
12229 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12230 fra.me.REG[0] = NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[0]);
12231 goto label1;
12232 label1: while(0);
12233 stack_frame_head = fra.me.prev;
12234 return fra.me.REG[0];
12235 }
12236 static const char LOCATE_syntax___typing___ACallExpr___name[] = "typing::ACallExpr::(typing::ASendExpr::name)";
12237 val_t syntax___typing___ACallExpr___name(val_t p0){
12238 struct {struct stack_frame_t me;} fra;
12239 val_t tmp;
12240 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12241 fra.me.file = LOCATE_syntax___typing;
12242 fra.me.line = 1906;
12243 fra.me.meth = LOCATE_syntax___typing___ACallExpr___name;
12244 fra.me.has_broke = 0;
12245 fra.me.REG_size = 1;
12246 fra.me.nitni_local_ref_head = NULL;
12247 fra.me.REG[0] = NIT_NULL;
12248 fra.me.REG[0] = p0;
12249 /* syntax/typing.nit:1906 */
12250 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12251 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12252 goto label1;
12253 label1: while(0);
12254 stack_frame_head = fra.me.prev;
12255 return fra.me.REG[0];
12256 }
12257 static const char LOCATE_syntax___typing___ACallExpr___compute_raw_arguments[] = "typing::ACallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12258 val_t syntax___typing___ACallExpr___compute_raw_arguments(val_t p0){
12259 struct {struct stack_frame_t me;} fra;
12260 val_t tmp;
12261 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12262 fra.me.file = LOCATE_syntax___typing;
12263 fra.me.line = 1907;
12264 fra.me.meth = LOCATE_syntax___typing___ACallExpr___compute_raw_arguments;
12265 fra.me.has_broke = 0;
12266 fra.me.REG_size = 1;
12267 fra.me.nitni_local_ref_head = NULL;
12268 fra.me.REG[0] = NIT_NULL;
12269 fra.me.REG[0] = p0;
12270 /* syntax/typing.nit:1907 */
12271 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12272 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12273 goto label1;
12274 label1: while(0);
12275 stack_frame_head = fra.me.prev;
12276 return fra.me.REG[0];
12277 }
12278 static const char LOCATE_syntax___typing___ACallAssignExpr___variable_create[] = "typing::ACallAssignExpr::(typing::ACallFormExpr::variable_create)";
12279 val_t syntax___typing___ACallAssignExpr___variable_create(val_t p0, val_t p1){
12280 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12281 val_t tmp;
12282 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12283 fra.me.file = LOCATE_syntax___typing;
12284 fra.me.line = 1911;
12285 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___variable_create;
12286 fra.me.has_broke = 0;
12287 fra.me.REG_size = 3;
12288 fra.me.nitni_local_ref_head = NULL;
12289 fra.me.REG[0] = NIT_NULL;
12290 fra.me.REG[1] = NIT_NULL;
12291 fra.me.REG[2] = NIT_NULL;
12292 fra.me.REG[0] = p0;
12293 fra.me.REG[1] = p1;
12294 /* syntax/typing.nit:1913 */
12295 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12296 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_assign(fra.me.REG[0])(fra.me.REG[0]);
12297 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12298 fra.me.REG[0] = NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12299 goto label1;
12300 label1: while(0);
12301 stack_frame_head = fra.me.prev;
12302 return fra.me.REG[0];
12303 }
12304 static const char LOCATE_syntax___typing___ACallAssignExpr___name[] = "typing::ACallAssignExpr::(typing::ASendExpr::name)";
12305 val_t syntax___typing___ACallAssignExpr___name(val_t p0){
12306 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12307 val_t REGB0;
12308 val_t tmp;
12309 static val_t once_value_1; /* Once value */
12310 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12311 fra.me.file = LOCATE_syntax___typing;
12312 fra.me.line = 1916;
12313 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___name;
12314 fra.me.has_broke = 0;
12315 fra.me.REG_size = 2;
12316 fra.me.nitni_local_ref_head = NULL;
12317 fra.me.REG[0] = NIT_NULL;
12318 fra.me.REG[1] = NIT_NULL;
12319 fra.me.REG[0] = p0;
12320 /* syntax/typing.nit:1916 */
12321 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12322 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
12323 if (!once_value_1) {
12324 fra.me.REG[1] = BOX_NativeString("=");
12325 REGB0 = TAG_Int(1);
12326 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
12327 once_value_1 = fra.me.REG[1];
12328 register_static_object(&once_value_1);
12329 } else fra.me.REG[1] = once_value_1;
12330 fra.me.REG[1] = fra.me.REG[1];
12331 fra.me.REG[1] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12332 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
12333 goto label2;
12334 label2: while(0);
12335 stack_frame_head = fra.me.prev;
12336 return fra.me.REG[1];
12337 }
12338 static const char LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments[] = "typing::ACallAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12339 val_t syntax___typing___ACallAssignExpr___compute_raw_arguments(val_t p0){
12340 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12341 val_t tmp;
12342 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12343 fra.me.file = LOCATE_syntax___typing;
12344 fra.me.line = 1917;
12345 fra.me.meth = LOCATE_syntax___typing___ACallAssignExpr___compute_raw_arguments;
12346 fra.me.has_broke = 0;
12347 fra.me.REG_size = 2;
12348 fra.me.nitni_local_ref_head = NULL;
12349 fra.me.REG[0] = NIT_NULL;
12350 fra.me.REG[1] = NIT_NULL;
12351 fra.me.REG[0] = p0;
12352 /* syntax/typing.nit:1918 */
12353 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12354 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12355 /* syntax/typing.nit:1919 */
12356 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12357 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12358 /* syntax/typing.nit:1920 */
12359 goto label1;
12360 label1: while(0);
12361 stack_frame_head = fra.me.prev;
12362 return fra.me.REG[1];
12363 }
12364 static const char LOCATE_syntax___typing___ACallReassignExpr___variable_create[] = "typing::ACallReassignExpr::(typing::ACallFormExpr::variable_create)";
12365 val_t syntax___typing___ACallReassignExpr___variable_create(val_t p0, val_t p1){
12366 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12367 val_t tmp;
12368 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12369 fra.me.file = LOCATE_syntax___typing;
12370 fra.me.line = 1925;
12371 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___variable_create;
12372 fra.me.has_broke = 0;
12373 fra.me.REG_size = 3;
12374 fra.me.nitni_local_ref_head = NULL;
12375 fra.me.REG[0] = NIT_NULL;
12376 fra.me.REG[1] = NIT_NULL;
12377 fra.me.REG[2] = NIT_NULL;
12378 fra.me.REG[0] = p0;
12379 fra.me.REG[1] = p1;
12380 /* syntax/typing.nit:1927 */
12381 fra.me.REG[1] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12382 fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_assign_op(fra.me.REG[0])(fra.me.REG[0]);
12383 fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12384 fra.me.REG[0] = NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
12385 goto label1;
12386 label1: while(0);
12387 stack_frame_head = fra.me.prev;
12388 return fra.me.REG[0];
12389 }
12390 static const char LOCATE_syntax___typing___ACallReassignExpr___name[] = "typing::ACallReassignExpr::(typing::ASendExpr::name)";
12391 val_t syntax___typing___ACallReassignExpr___name(val_t p0){
12392 struct {struct stack_frame_t me;} fra;
12393 val_t tmp;
12394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12395 fra.me.file = LOCATE_syntax___typing;
12396 fra.me.line = 1930;
12397 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___name;
12398 fra.me.has_broke = 0;
12399 fra.me.REG_size = 1;
12400 fra.me.nitni_local_ref_head = NULL;
12401 fra.me.REG[0] = NIT_NULL;
12402 fra.me.REG[0] = p0;
12403 /* syntax/typing.nit:1930 */
12404 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12405 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12406 goto label1;
12407 label1: while(0);
12408 stack_frame_head = fra.me.prev;
12409 return fra.me.REG[0];
12410 }
12411 static const char LOCATE_syntax___typing___ACallReassignExpr___compute_raw_arguments[] = "typing::ACallReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12412 val_t syntax___typing___ACallReassignExpr___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 = 1931;
12418 fra.me.meth = LOCATE_syntax___typing___ACallReassignExpr___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:1931 */
12425 fra.me.REG[0] = CALL_parser___parser_nodes___ACallFormExpr___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___name[] = "typing::ABraExpr::(typing::ASendExpr::name)";
12433 val_t syntax___typing___ABraExpr___name(val_t p0){
12434 struct {struct stack_frame_t me;} fra;
12435 val_t REGB0;
12436 val_t tmp;
12437 static val_t once_value_1; /* Once value */
12438 static val_t once_value_2; /* Once value */
12439 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12440 fra.me.file = LOCATE_syntax___typing;
12441 fra.me.line = 1935;
12442 fra.me.meth = LOCATE_syntax___typing___ABraExpr___name;
12443 fra.me.has_broke = 0;
12444 fra.me.REG_size = 1;
12445 fra.me.nitni_local_ref_head = NULL;
12446 fra.me.REG[0] = NIT_NULL;
12447 fra.me.REG[0] = p0;
12448 /* syntax/typing.nit:1935 */
12449 if (!once_value_1) {
12450 if (!once_value_2) {
12451 fra.me.REG[0] = BOX_NativeString("[]");
12452 REGB0 = TAG_Int(2);
12453 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12454 once_value_2 = fra.me.REG[0];
12455 register_static_object(&once_value_2);
12456 } else fra.me.REG[0] = once_value_2;
12457 fra.me.REG[0] = fra.me.REG[0];
12458 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12459 once_value_1 = fra.me.REG[0];
12460 register_static_object(&once_value_1);
12461 } else fra.me.REG[0] = once_value_1;
12462 fra.me.REG[0] = fra.me.REG[0];
12463 goto label3;
12464 label3: while(0);
12465 stack_frame_head = fra.me.prev;
12466 return fra.me.REG[0];
12467 }
12468 static const char LOCATE_syntax___typing___ABraExpr___compute_raw_arguments[] = "typing::ABraExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12469 val_t syntax___typing___ABraExpr___compute_raw_arguments(val_t p0){
12470 struct {struct stack_frame_t me;} fra;
12471 val_t tmp;
12472 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12473 fra.me.file = LOCATE_syntax___typing;
12474 fra.me.line = 1936;
12475 fra.me.meth = LOCATE_syntax___typing___ABraExpr___compute_raw_arguments;
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:1936 */
12482 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12483 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12484 goto label1;
12485 label1: while(0);
12486 stack_frame_head = fra.me.prev;
12487 return fra.me.REG[0];
12488 }
12489 static const char LOCATE_syntax___typing___ABraExpr___closure_defs[] = "typing::ABraExpr::(syntax_base::ASendExpr::closure_defs)";
12490 val_t syntax___typing___ABraExpr___closure_defs(val_t p0){
12491 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12492 val_t REGB0;
12493 val_t tmp;
12494 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12495 fra.me.file = LOCATE_syntax___typing;
12496 fra.me.line = 1937;
12497 fra.me.meth = LOCATE_syntax___typing___ABraExpr___closure_defs;
12498 fra.me.has_broke = 0;
12499 fra.me.REG_size = 2;
12500 fra.me.nitni_local_ref_head = NULL;
12501 fra.me.REG[0] = NIT_NULL;
12502 fra.me.REG[1] = NIT_NULL;
12503 fra.me.REG[0] = p0;
12504 /* syntax/typing.nit:1939 */
12505 fra.me.REG[1] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12506 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
12507 if (UNTAG_Bool(REGB0)) {
12508 /* syntax/typing.nit:1940 */
12509 fra.me.REG[1] = NIT_NULL;
12510 goto label1;
12511 } else {
12512 /* syntax/typing.nit:1942 */
12513 fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12514 fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[0])(fra.me.REG[0]);
12515 fra.me.REG[1] = fra.me.REG[0];
12516 goto label1;
12517 }
12518 label1: while(0);
12519 stack_frame_head = fra.me.prev;
12520 return fra.me.REG[1];
12521 }
12522 static const char LOCATE_syntax___typing___ABraAssignExpr___name[] = "typing::ABraAssignExpr::(typing::ASendExpr::name)";
12523 val_t syntax___typing___ABraAssignExpr___name(val_t p0){
12524 struct {struct stack_frame_t me;} fra;
12525 val_t REGB0;
12526 val_t tmp;
12527 static val_t once_value_1; /* Once value */
12528 static val_t once_value_2; /* Once value */
12529 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12530 fra.me.file = LOCATE_syntax___typing;
12531 fra.me.line = 1948;
12532 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___name;
12533 fra.me.has_broke = 0;
12534 fra.me.REG_size = 1;
12535 fra.me.nitni_local_ref_head = NULL;
12536 fra.me.REG[0] = NIT_NULL;
12537 fra.me.REG[0] = p0;
12538 /* syntax/typing.nit:1948 */
12539 if (!once_value_1) {
12540 if (!once_value_2) {
12541 fra.me.REG[0] = BOX_NativeString("[]=");
12542 REGB0 = TAG_Int(3);
12543 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12544 once_value_2 = fra.me.REG[0];
12545 register_static_object(&once_value_2);
12546 } else fra.me.REG[0] = once_value_2;
12547 fra.me.REG[0] = fra.me.REG[0];
12548 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12549 once_value_1 = fra.me.REG[0];
12550 register_static_object(&once_value_1);
12551 } else fra.me.REG[0] = once_value_1;
12552 fra.me.REG[0] = fra.me.REG[0];
12553 goto label3;
12554 label3: while(0);
12555 stack_frame_head = fra.me.prev;
12556 return fra.me.REG[0];
12557 }
12558 static const char LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments[] = "typing::ABraAssignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12559 val_t syntax___typing___ABraAssignExpr___compute_raw_arguments(val_t p0){
12560 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12561 val_t tmp;
12562 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12563 fra.me.file = LOCATE_syntax___typing;
12564 fra.me.line = 1949;
12565 fra.me.meth = LOCATE_syntax___typing___ABraAssignExpr___compute_raw_arguments;
12566 fra.me.has_broke = 0;
12567 fra.me.REG_size = 2;
12568 fra.me.nitni_local_ref_head = NULL;
12569 fra.me.REG[0] = NIT_NULL;
12570 fra.me.REG[1] = NIT_NULL;
12571 fra.me.REG[0] = p0;
12572 /* syntax/typing.nit:1950 */
12573 fra.me.REG[1] = CALL_parser___parser_nodes___ABraFormExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12574 fra.me.REG[1] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[1])(fra.me.REG[1]);
12575 /* syntax/typing.nit:1951 */
12576 fra.me.REG[0] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
12577 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12578 /* syntax/typing.nit:1952 */
12579 goto label1;
12580 label1: while(0);
12581 stack_frame_head = fra.me.prev;
12582 return fra.me.REG[1];
12583 }
12584 static const char LOCATE_syntax___typing___ABraReassignExpr___name[] = "typing::ABraReassignExpr::(typing::ASendExpr::name)";
12585 val_t syntax___typing___ABraReassignExpr___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 = 1957;
12594 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___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:1957 */
12601 if (!once_value_1) {
12602 if (!once_value_2) {
12603 fra.me.REG[0] = BOX_NativeString("[]");
12604 REGB0 = TAG_Int(2);
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___ABraReassignExpr___compute_raw_arguments[] = "typing::ABraReassignExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12621 val_t syntax___typing___ABraReassignExpr___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 = 1958;
12627 fra.me.meth = LOCATE_syntax___typing___ABraReassignExpr___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:1958 */
12634 fra.me.REG[0] = CALL_parser___parser_nodes___ABraFormExpr___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___AInitExpr___name[] = "typing::AInitExpr::(typing::ASendExpr::name)";
12642 val_t syntax___typing___AInitExpr___name(val_t p0){
12643 struct {struct stack_frame_t me;} fra;
12644 val_t REGB0;
12645 val_t tmp;
12646 static val_t once_value_1; /* Once value */
12647 static val_t once_value_2; /* Once value */
12648 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12649 fra.me.file = LOCATE_syntax___typing;
12650 fra.me.line = 1962;
12651 fra.me.meth = LOCATE_syntax___typing___AInitExpr___name;
12652 fra.me.has_broke = 0;
12653 fra.me.REG_size = 1;
12654 fra.me.nitni_local_ref_head = NULL;
12655 fra.me.REG[0] = NIT_NULL;
12656 fra.me.REG[0] = p0;
12657 /* syntax/typing.nit:1962 */
12658 if (!once_value_1) {
12659 if (!once_value_2) {
12660 fra.me.REG[0] = BOX_NativeString("init");
12661 REGB0 = TAG_Int(4);
12662 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
12663 once_value_2 = fra.me.REG[0];
12664 register_static_object(&once_value_2);
12665 } else fra.me.REG[0] = once_value_2;
12666 fra.me.REG[0] = fra.me.REG[0];
12667 fra.me.REG[0] = CALL_symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12668 once_value_1 = fra.me.REG[0];
12669 register_static_object(&once_value_1);
12670 } else fra.me.REG[0] = once_value_1;
12671 fra.me.REG[0] = fra.me.REG[0];
12672 goto label3;
12673 label3: while(0);
12674 stack_frame_head = fra.me.prev;
12675 return fra.me.REG[0];
12676 }
12677 static const char LOCATE_syntax___typing___AInitExpr___compute_raw_arguments[] = "typing::AInitExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12678 val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
12679 struct {struct stack_frame_t me;} fra;
12680 val_t tmp;
12681 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12682 fra.me.file = LOCATE_syntax___typing;
12683 fra.me.line = 1963;
12684 fra.me.meth = LOCATE_syntax___typing___AInitExpr___compute_raw_arguments;
12685 fra.me.has_broke = 0;
12686 fra.me.REG_size = 1;
12687 fra.me.nitni_local_ref_head = NULL;
12688 fra.me.REG[0] = NIT_NULL;
12689 fra.me.REG[0] = p0;
12690 /* syntax/typing.nit:1963 */
12691 fra.me.REG[0] = CALL_parser___parser_nodes___AInitExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12692 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12693 goto label1;
12694 label1: while(0);
12695 stack_frame_head = fra.me.prev;
12696 return fra.me.REG[0];
12697 }
12698 static const char LOCATE_syntax___typing___AClosureCallExpr___variable[] = "typing::AClosureCallExpr::(syntax_base::AClosureCallExpr::variable)";
12699 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
12700 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12701 val_t REGB0;
12702 val_t tmp;
12703 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12704 fra.me.file = LOCATE_syntax___typing;
12705 fra.me.line = 1968;
12706 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
12707 fra.me.has_broke = 0;
12708 fra.me.REG_size = 2;
12709 fra.me.nitni_local_ref_head = NULL;
12710 fra.me.REG[0] = NIT_NULL;
12711 fra.me.REG[1] = NIT_NULL;
12712 fra.me.REG[0] = p0;
12713 /* syntax/typing.nit:1968 */
12714 fra.me.REG[1] = fra.me.REG[0];
12715 fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
12716 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12717 if (UNTAG_Bool(REGB0)) {
12718 } else {
12719 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1968);
12720 }
12721 goto label1;
12722 label1: while(0);
12723 stack_frame_head = fra.me.prev;
12724 return fra.me.REG[1];
12725 }
12726 static const char LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments[] = "typing::AClosureCallExpr::(typing::AAbsAbsSendExpr::compute_raw_arguments)";
12727 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
12728 struct {struct stack_frame_t me;} fra;
12729 val_t tmp;
12730 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12731 fra.me.file = LOCATE_syntax___typing;
12732 fra.me.line = 1969;
12733 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___compute_raw_arguments;
12734 fra.me.has_broke = 0;
12735 fra.me.REG_size = 1;
12736 fra.me.nitni_local_ref_head = NULL;
12737 fra.me.REG[0] = NIT_NULL;
12738 fra.me.REG[0] = p0;
12739 /* syntax/typing.nit:1969 */
12740 fra.me.REG[0] = CALL_parser___parser_nodes___AClosureCallExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
12741 fra.me.REG[0] = CALL_syntax___syntax_base___AExprs___to_a(fra.me.REG[0])(fra.me.REG[0]);
12742 goto label1;
12743 label1: while(0);
12744 stack_frame_head = fra.me.prev;
12745 return fra.me.REG[0];
12746 }
12747 static const char LOCATE_syntax___typing___AClosureCallExpr___after_typing[] = "typing::AClosureCallExpr::(typing::ANode::after_typing)";
12748 void syntax___typing___AClosureCallExpr___after_typing(val_t p0, val_t p1){
12749 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
12750 val_t REGB0;
12751 val_t REGB1;
12752 val_t tmp;
12753 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12754 fra.me.file = LOCATE_syntax___typing;
12755 fra.me.line = 1971;
12756 fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___after_typing;
12757 fra.me.has_broke = 0;
12758 fra.me.REG_size = 5;
12759 fra.me.nitni_local_ref_head = NULL;
12760 fra.me.REG[0] = NIT_NULL;
12761 fra.me.REG[1] = NIT_NULL;
12762 fra.me.REG[2] = NIT_NULL;
12763 fra.me.REG[3] = NIT_NULL;
12764 fra.me.REG[4] = NIT_NULL;
12765 fra.me.REG[0] = p0;
12766 fra.me.REG[1] = p1;
12767 /* syntax/typing.nit:1973 */
12768 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
12769 /* syntax/typing.nit:1974 */
12770 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12771 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
12772 if (UNTAG_Bool(REGB0)) {
12773 CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
12774 }
12775 /* syntax/typing.nit:1975 */
12776 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
12777 fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
12778 /* syntax/typing.nit:1976 */
12779 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12780 fra.me.REG[3] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
12781 fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
12782 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]);
12783 /* syntax/typing.nit:1977 */
12784 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12785 REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
12786 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
12787 if (UNTAG_Bool(REGB1)) {
12788 /* syntax/typing.nit:1978 */
12789 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureCallExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
12790 fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
12791 fra.me.REG[3] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
12792 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
12793 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]);
12794 }
12795 /* syntax/typing.nit:1980 */
12796 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
12797 if (UNTAG_Bool(REGB0)) {
12798 goto label1;
12799 }
12800 /* syntax/typing.nit:1981 */
12801 ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]) = fra.me.REG[2];
12802 /* syntax/typing.nit:1982 */
12803 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
12804 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[2];
12805 /* syntax/typing.nit:1983 */
12806 REGB0 = TAG_Bool(1);
12807 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
12808 label1: while(0);
12809 stack_frame_head = fra.me.prev;
12810 return;
12811 }
12812 static const char LOCATE_syntax___typing___AClosureId___to_symbol[] = "typing::AClosureId::to_symbol";
12813 val_t syntax___typing___AClosureId___to_symbol(val_t p0){
12814 struct {struct stack_frame_t me;} fra;
12815 val_t tmp;
12816 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12817 fra.me.file = LOCATE_syntax___typing;
12818 fra.me.line = 1988;
12819 fra.me.meth = LOCATE_syntax___typing___AClosureId___to_symbol;
12820 fra.me.has_broke = 0;
12821 fra.me.REG_size = 0;
12822 fra.me.nitni_local_ref_head = NULL;
12823 /* syntax/typing.nit:1988 */
12824 nit_abort("Deferred method called", NULL, LOCATE_syntax___typing, 1988);
12825 stack_frame_head = fra.me.prev;
12826 return NIT_NULL;
12827 }
12828 static const char LOCATE_syntax___typing___ASimpleClosureId___to_symbol[] = "typing::ASimpleClosureId::(typing::AClosureId::to_symbol)";
12829 val_t syntax___typing___ASimpleClosureId___to_symbol(val_t p0){
12830 struct {struct stack_frame_t me;} fra;
12831 val_t tmp;
12832 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12833 fra.me.file = LOCATE_syntax___typing;
12834 fra.me.line = 1991;
12835 fra.me.meth = LOCATE_syntax___typing___ASimpleClosureId___to_symbol;
12836 fra.me.has_broke = 0;
12837 fra.me.REG_size = 1;
12838 fra.me.nitni_local_ref_head = NULL;
12839 fra.me.REG[0] = NIT_NULL;
12840 fra.me.REG[0] = p0;
12841 /* syntax/typing.nit:1991 */
12842 fra.me.REG[0] = CALL_parser___parser_nodes___ASimpleClosureId___n_id(fra.me.REG[0])(fra.me.REG[0]);
12843 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12844 goto label1;
12845 label1: while(0);
12846 stack_frame_head = fra.me.prev;
12847 return fra.me.REG[0];
12848 }
12849 static const char LOCATE_syntax___typing___ABreakClosureId___to_symbol[] = "typing::ABreakClosureId::(typing::AClosureId::to_symbol)";
12850 val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
12851 struct {struct stack_frame_t me;} fra;
12852 val_t tmp;
12853 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12854 fra.me.file = LOCATE_syntax___typing;
12855 fra.me.line = 1994;
12856 fra.me.meth = LOCATE_syntax___typing___ABreakClosureId___to_symbol;
12857 fra.me.has_broke = 0;
12858 fra.me.REG_size = 1;
12859 fra.me.nitni_local_ref_head = NULL;
12860 fra.me.REG[0] = NIT_NULL;
12861 fra.me.REG[0] = p0;
12862 /* syntax/typing.nit:1994 */
12863 fra.me.REG[0] = CALL_parser___parser_nodes___ABreakClosureId___n_kwbreak(fra.me.REG[0])(fra.me.REG[0]);
12864 fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
12865 goto label1;
12866 label1: while(0);
12867 stack_frame_head = fra.me.prev;
12868 return fra.me.REG[0];
12869 }
12870 static const char LOCATE_syntax___typing___AClosureDef___closure[] = "typing::AClosureDef::(syntax_base::AClosureDef::closure)";
12871 val_t syntax___typing___AClosureDef___closure(val_t p0){
12872 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
12873 val_t REGB0;
12874 val_t tmp;
12875 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12876 fra.me.file = LOCATE_syntax___typing;
12877 fra.me.line = 1999;
12878 fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
12879 fra.me.has_broke = 0;
12880 fra.me.REG_size = 2;
12881 fra.me.nitni_local_ref_head = NULL;
12882 fra.me.REG[0] = NIT_NULL;
12883 fra.me.REG[1] = NIT_NULL;
12884 fra.me.REG[0] = p0;
12885 /* syntax/typing.nit:1999 */
12886 fra.me.REG[1] = fra.me.REG[0];
12887 fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
12888 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
12889 if (UNTAG_Bool(REGB0)) {
12890 } else {
12891 nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1999);
12892 }
12893 goto label1;
12894 label1: while(0);
12895 stack_frame_head = fra.me.prev;
12896 return fra.me.REG[1];
12897 }
12898 static const char LOCATE_syntax___typing___AClosureDef___escapable[] = "typing::AClosureDef::escapable";
12899 val_t syntax___typing___AClosureDef___escapable(val_t p0){
12900 struct {struct stack_frame_t me;} fra;
12901 val_t tmp;
12902 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12903 fra.me.file = LOCATE_syntax___typing;
12904 fra.me.line = 2001;
12905 fra.me.meth = LOCATE_syntax___typing___AClosureDef___escapable;
12906 fra.me.has_broke = 0;
12907 fra.me.REG_size = 1;
12908 fra.me.nitni_local_ref_head = NULL;
12909 fra.me.REG[0] = NIT_NULL;
12910 fra.me.REG[0] = p0;
12911 /* syntax/typing.nit:2001 */
12912 fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]);
12913 stack_frame_head = fra.me.prev;
12914 return fra.me.REG[0];
12915 }
12916 static const char LOCATE_syntax___typing___AClosureDef___accept_typing[] = "typing::AClosureDef::(typing::ANode::accept_typing)";
12917 void syntax___typing___AClosureDef___accept_typing(val_t p0, val_t p1){
12918 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
12919 val_t REGB0;
12920 val_t tmp;
12921 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12922 fra.me.file = LOCATE_syntax___typing;
12923 fra.me.line = 2005;
12924 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing;
12925 fra.me.has_broke = 0;
12926 fra.me.REG_size = 3;
12927 fra.me.nitni_local_ref_head = NULL;
12928 fra.me.REG[0] = NIT_NULL;
12929 fra.me.REG[1] = NIT_NULL;
12930 fra.me.REG[2] = NIT_NULL;
12931 fra.me.REG[0] = p0;
12932 fra.me.REG[1] = p1;
12933 /* syntax/typing.nit:2005 */
12934 fra.me.REG[2] = fra.me.REG[0];
12935 /* syntax/typing.nit:2008 */
12936 REGB0 = TAG_Bool(ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2])!=NIT_NULL);
12937 if (UNTAG_Bool(REGB0)) {
12938 } else {
12939 nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_syntax___typing, 2008);
12940 }
12941 REGB0 = ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[2]);
12942 if (UNTAG_Bool(REGB0)) {
12943 CALL_SUPER_syntax___typing___AClosureDef___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
12944 }
12945 stack_frame_head = fra.me.prev;
12946 return;
12947 }
12948 static const char LOCATE_syntax___typing___AClosureDef___accept_typing2[] = "typing::AClosureDef::accept_typing2";
12949 void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2){
12950 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
12951 val_t REGB0;
12952 val_t REGB1;
12953 val_t REGB2;
12954 val_t REGB3;
12955 val_t tmp;
12956 static val_t once_value_1; /* Once value */
12957 static val_t once_value_2; /* Once value */
12958 static val_t once_value_3; /* Once value */
12959 static val_t once_value_6; /* Once value */
12960 static val_t once_value_7; /* Once value */
12961 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
12962 fra.me.file = LOCATE_syntax___typing;
12963 fra.me.line = 2011;
12964 fra.me.meth = LOCATE_syntax___typing___AClosureDef___accept_typing2;
12965 fra.me.has_broke = 0;
12966 fra.me.REG_size = 8;
12967 fra.me.nitni_local_ref_head = NULL;
12968 fra.me.REG[0] = NIT_NULL;
12969 fra.me.REG[1] = NIT_NULL;
12970 fra.me.REG[2] = NIT_NULL;
12971 fra.me.REG[3] = NIT_NULL;
12972 fra.me.REG[4] = NIT_NULL;
12973 fra.me.REG[5] = NIT_NULL;
12974 fra.me.REG[6] = NIT_NULL;
12975 fra.me.REG[7] = NIT_NULL;
12976 fra.me.REG[0] = p0;
12977 fra.me.REG[1] = p1;
12978 fra.me.REG[2] = p2;
12979 /* syntax/typing.nit:2013 */
12980 ATTR_syntax___typing___AClosureDef____escapable(fra.me.REG[0]) = fra.me.REG[2];
12981 /* syntax/typing.nit:2015 */
12982 fra.me.REG[3] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
12983 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
12984 /* syntax/typing.nit:2016 */
12985 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
12986 fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
12987 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
12988 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
12989 if (UNTAG_Bool(REGB2)) {
12990 } else {
12991 /* ../lib/standard/kernel.nit:230 */
12992 REGB1 = TAG_Bool((REGB0)==(REGB1));
12993 /* syntax/typing.nit:2016 */
12994 REGB2 = REGB1;
12995 }
12996 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
12997 if (UNTAG_Bool(REGB2)) {
12998 /* syntax/typing.nit:2017 */
12999 REGB2 = TAG_Int(5);
13000 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
13001 if (!once_value_1) {
13002 fra.me.REG[5] = BOX_NativeString("Error: ");
13003 REGB2 = TAG_Int(7);
13004 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
13005 once_value_1 = fra.me.REG[5];
13006 register_static_object(&once_value_1);
13007 } else fra.me.REG[5] = once_value_1;
13008 fra.me.REG[5] = fra.me.REG[5];
13009 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13010 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
13011 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
13012 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13013 if (!once_value_2) {
13014 fra.me.REG[5] = BOX_NativeString(" automatic variable names expected, ");
13015 REGB2 = TAG_Int(36);
13016 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
13017 once_value_2 = fra.me.REG[5];
13018 register_static_object(&once_value_2);
13019 } else fra.me.REG[5] = once_value_2;
13020 fra.me.REG[5] = fra.me.REG[5];
13021 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13022 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13023 REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
13024 fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
13025 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13026 if (!once_value_3) {
13027 fra.me.REG[5] = BOX_NativeString(" found.");
13028 REGB2 = TAG_Int(7);
13029 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
13030 once_value_3 = fra.me.REG[5];
13031 register_static_object(&once_value_3);
13032 } else fra.me.REG[5] = once_value_3;
13033 fra.me.REG[5] = fra.me.REG[5];
13034 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13035 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13036 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13037 /* syntax/typing.nit:2018 */
13038 goto label4;
13039 }
13040 /* syntax/typing.nit:2021 */
13041 fra.me.REG[4] = CALL_syntax___scope___EscapableClosure___closure(fra.me.REG[2])(fra.me.REG[2]);
13042 ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]) = fra.me.REG[4];
13043 /* syntax/typing.nit:2023 */
13044 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13045 CALL_syntax___scope___ScopeContext___push(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
13046 /* syntax/typing.nit:2024 */
13047 fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13048 /* syntax/typing.nit:2025 */
13049 fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___base_flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13050 /* syntax/typing.nit:2026 */
13051 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13052 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
13053 /* syntax/typing.nit:2027 */
13054 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
13055 CALL_syntax___syntax_base___AClosureDef___variables__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
13056 /* syntax/typing.nit:2028 */
13057 REGB2 = TAG_Int(0);
13058 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13059 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
13060 /* ../lib/standard/kernel.nit:355 */
13061 while(1) {
13062 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
13063 if (UNTAG_Bool(REGB0)) {
13064 } else {
13065 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13066 }
13067 /* ../lib/standard/kernel.nit:235 */
13068 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
13069 /* ../lib/standard/kernel.nit:355 */
13070 if (UNTAG_Bool(REGB0)) {
13071 /* syntax/typing.nit:2028 */
13072 REGB0 = REGB2;
13073 /* syntax/typing.nit:2029 */
13074 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13075 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
13076 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
13077 if (UNTAG_Bool(REGB3)) {
13078 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2029);
13079 }
13080 fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
13081 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDef___n_ids(fra.me.REG[0])(fra.me.REG[0]);
13082 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
13083 fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
13084 /* syntax/typing.nit:2030 */
13085 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
13086 REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
13087 if (UNTAG_Bool(REGB3)) {
13088 nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 2030);
13089 }
13090 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13091 /* syntax/typing.nit:2031 */
13092 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
13093 CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
13094 /* syntax/typing.nit:2032 */
13095 fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13096 CALL_syntax___scope___ScopeContext___add_variable(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
13097 /* ../lib/standard/kernel.nit:357 */
13098 REGB0 = TAG_Int(1);
13099 /* ../lib/standard/kernel.nit:238 */
13100 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
13101 /* ../lib/standard/kernel.nit:357 */
13102 REGB2 = REGB0;
13103 } else {
13104 /* ../lib/standard/kernel.nit:355 */
13105 goto label5;
13106 }
13107 }
13108 label5: while(0);
13109 /* syntax/typing.nit:2035 */
13110 REGB2 = TAG_Bool(1);
13111 ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB2;
13112 /* syntax/typing.nit:2036 */
13113 CALL_syntax___typing___ANode___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13114 /* syntax/typing.nit:2038 */
13115 fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13116 REGB2 = CALL_syntax___flow___FlowContext___unreash(fra.me.REG[3])(fra.me.REG[3]);
13117 REGB1 = TAG_Bool(0);
13118 REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
13119 if (UNTAG_Bool(REGB0)) {
13120 } else {
13121 /* ../lib/standard/kernel.nit:198 */
13122 REGB1 = TAG_Bool((REGB2)==(REGB1));
13123 /* syntax/typing.nit:2038 */
13124 REGB0 = REGB1;
13125 }
13126 if (UNTAG_Bool(REGB0)) {
13127 /* syntax/typing.nit:2039 */
13128 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13129 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
13130 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
13131 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13132 if (UNTAG_Bool(REGB0)) {
13133 } else {
13134 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13135 if (UNTAG_Bool(REGB1)) {
13136 REGB1 = TAG_Bool(0);
13137 REGB0 = REGB1;
13138 } else {
13139 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13140 REGB0 = REGB1;
13141 }
13142 }
13143 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13144 if (UNTAG_Bool(REGB0)) {
13145 /* syntax/typing.nit:2040 */
13146 if (!once_value_6) {
13147 fra.me.REG[3] = BOX_NativeString("Control error: Reached end of block (a 'continue' with a value was expected).");
13148 REGB0 = TAG_Int(77);
13149 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13150 once_value_6 = fra.me.REG[3];
13151 register_static_object(&once_value_6);
13152 } else fra.me.REG[3] = once_value_6;
13153 fra.me.REG[3] = fra.me.REG[3];
13154 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13155 } else {
13156 /* syntax/typing.nit:2041 */
13157 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
13158 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[3])(fra.me.REG[3]);
13159 if (UNTAG_Bool(REGB0)) {
13160 fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[2])(fra.me.REG[2]);
13161 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13162 if (UNTAG_Bool(REGB0)) {
13163 } else {
13164 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
13165 if (UNTAG_Bool(REGB1)) {
13166 REGB1 = TAG_Bool(0);
13167 REGB0 = REGB1;
13168 } else {
13169 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
13170 REGB0 = REGB1;
13171 }
13172 }
13173 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13174 } else {
13175 REGB1 = TAG_Bool(0);
13176 REGB0 = REGB1;
13177 }
13178 if (UNTAG_Bool(REGB0)) {
13179 /* syntax/typing.nit:2042 */
13180 if (!once_value_7) {
13181 fra.me.REG[2] = BOX_NativeString("Control error: Reached end of break block (a 'break' with a value was expected).");
13182 REGB0 = TAG_Int(80);
13183 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
13184 once_value_7 = fra.me.REG[2];
13185 register_static_object(&once_value_7);
13186 } else fra.me.REG[2] = once_value_7;
13187 fra.me.REG[2] = fra.me.REG[2];
13188 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
13189 }
13190 }
13191 }
13192 /* syntax/typing.nit:2045 */
13193 CALL_syntax___typing___TypingVisitor___flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
13194 /* syntax/typing.nit:2046 */
13195 CALL_syntax___typing___TypingVisitor___base_flow_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
13196 /* syntax/typing.nit:2047 */
13197 fra.me.REG[1] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
13198 CALL_syntax___scope___ScopeContext___pop(fra.me.REG[1])(fra.me.REG[1]);
13199 label4: while(0);
13200 stack_frame_head = fra.me.prev;
13201 return;
13202 }
13203 static const char LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast[] = "typing::ATypeCheckExpr::check_expr_cast";
13204 void syntax___typing___ATypeCheckExpr___check_expr_cast(val_t p0, val_t p1, val_t p2, val_t p3){
13205 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13206 val_t REGB0;
13207 val_t REGB1;
13208 val_t tmp;
13209 static val_t once_value_2; /* Once value */
13210 static val_t once_value_3; /* Once value */
13211 static val_t once_value_4; /* Once value */
13212 static val_t once_value_5; /* Once value */
13213 static val_t once_value_6; /* Once value */
13214 static val_t once_value_7; /* Once value */
13215 static val_t once_value_8; /* Once value */
13216 static val_t once_value_9; /* Once value */
13217 static val_t once_value_10; /* Once value */
13218 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13219 fra.me.file = LOCATE_syntax___typing;
13220 fra.me.line = 2053;
13221 fra.me.meth = LOCATE_syntax___typing___ATypeCheckExpr___check_expr_cast;
13222 fra.me.has_broke = 0;
13223 fra.me.REG_size = 6;
13224 fra.me.nitni_local_ref_head = NULL;
13225 fra.me.REG[0] = NIT_NULL;
13226 fra.me.REG[1] = NIT_NULL;
13227 fra.me.REG[2] = NIT_NULL;
13228 fra.me.REG[3] = NIT_NULL;
13229 fra.me.REG[4] = NIT_NULL;
13230 fra.me.REG[5] = NIT_NULL;
13231 fra.me.REG[0] = p0;
13232 fra.me.REG[1] = p1;
13233 fra.me.REG[2] = p2;
13234 fra.me.REG[3] = p3;
13235 /* syntax/typing.nit:2055 */
13236 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13237 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13238 if (UNTAG_Bool(REGB0)) {
13239 goto label1;
13240 }
13241 /* syntax/typing.nit:2056 */
13242 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13243 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13244 if (UNTAG_Bool(REGB0)) {
13245 goto label1;
13246 }
13247 /* syntax/typing.nit:2057 */
13248 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13249 /* syntax/typing.nit:2058 */
13250 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13251 /* syntax/typing.nit:2059 */
13252 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13253 if (UNTAG_Bool(REGB0)) {
13254 } else {
13255 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13256 REGB0 = REGB1;
13257 }
13258 if (UNTAG_Bool(REGB0)) {
13259 /* syntax/typing.nit:2060 */
13260 REGB0 = TAG_Int(3);
13261 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13262 if (!once_value_2) {
13263 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13264 REGB0 = TAG_Int(33);
13265 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13266 once_value_2 = fra.me.REG[5];
13267 register_static_object(&once_value_2);
13268 } else fra.me.REG[5] = once_value_2;
13269 fra.me.REG[5] = fra.me.REG[5];
13270 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13271 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13272 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13273 if (!once_value_3) {
13274 fra.me.REG[5] = BOX_NativeString(".");
13275 REGB0 = TAG_Int(1);
13276 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13277 once_value_3 = fra.me.REG[5];
13278 register_static_object(&once_value_3);
13279 } else fra.me.REG[5] = once_value_3;
13280 fra.me.REG[5] = fra.me.REG[5];
13281 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13282 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13283 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13284 } else {
13285 /* syntax/typing.nit:2061 */
13286 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13287 if (UNTAG_Bool(REGB0)) {
13288 /* syntax/typing.nit:2062 */
13289 REGB0 = CALL_metamodel___type_formal___MMType___has_formal(fra.me.REG[3])(fra.me.REG[3]);
13290 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13291 if (UNTAG_Bool(REGB0)) {
13292 REGB0 = CALL_metamodel___type_formal___MMType___has_formal(fra.me.REG[2])(fra.me.REG[2]);
13293 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13294 } else {
13295 REGB1 = TAG_Bool(0);
13296 REGB0 = REGB1;
13297 }
13298 if (UNTAG_Bool(REGB0)) {
13299 /* syntax/typing.nit:2064 */
13300 REGB0 = TAG_Int(5);
13301 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13302 if (!once_value_4) {
13303 fra.me.REG[5] = BOX_NativeString("Warning: Expression is already a ");
13304 REGB0 = TAG_Int(33);
13305 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13306 once_value_4 = fra.me.REG[5];
13307 register_static_object(&once_value_4);
13308 } else fra.me.REG[5] = once_value_4;
13309 fra.me.REG[5] = fra.me.REG[5];
13310 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13311 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13312 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13313 if (!once_value_5) {
13314 fra.me.REG[5] = BOX_NativeString(" since it is a ");
13315 REGB0 = TAG_Int(15);
13316 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13317 once_value_5 = fra.me.REG[5];
13318 register_static_object(&once_value_5);
13319 } else fra.me.REG[5] = once_value_5;
13320 fra.me.REG[5] = fra.me.REG[5];
13321 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13322 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13323 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13324 if (!once_value_6) {
13325 fra.me.REG[5] = BOX_NativeString(".");
13326 REGB0 = TAG_Int(1);
13327 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13328 once_value_6 = fra.me.REG[5];
13329 register_static_object(&once_value_6);
13330 } else fra.me.REG[5] = once_value_6;
13331 fra.me.REG[5] = fra.me.REG[5];
13332 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13333 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13334 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13335 }
13336 } else {
13337 /* syntax/typing.nit:2066 */
13338 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13339 if (UNTAG_Bool(REGB0)) {
13340 /* syntax/typing.nit:2068 */
13341 REGB0 = TAG_Int(3);
13342 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13343 if (!once_value_7) {
13344 fra.me.REG[5] = BOX_NativeString("Warning: Expression is null therefore cannot be a ");
13345 REGB0 = TAG_Int(50);
13346 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13347 once_value_7 = fra.me.REG[5];
13348 register_static_object(&once_value_7);
13349 } else fra.me.REG[5] = once_value_7;
13350 fra.me.REG[5] = fra.me.REG[5];
13351 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13352 fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13353 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13354 if (!once_value_8) {
13355 fra.me.REG[5] = BOX_NativeString(".");
13356 REGB0 = TAG_Int(1);
13357 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13358 once_value_8 = fra.me.REG[5];
13359 register_static_object(&once_value_8);
13360 } else fra.me.REG[5] = once_value_8;
13361 fra.me.REG[5] = fra.me.REG[5];
13362 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13363 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13364 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13365 } else {
13366 /* syntax/typing.nit:2069 */
13367 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13368 if (UNTAG_Bool(REGB0)) {
13369 fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[2])(fra.me.REG[2]);
13370 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13371 if (UNTAG_Bool(REGB0)) {
13372 } else {
13373 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13374 REGB0 = REGB1;
13375 }
13376 } else {
13377 REGB1 = TAG_Bool(0);
13378 REGB0 = REGB1;
13379 }
13380 if (UNTAG_Bool(REGB0)) {
13381 /* syntax/typing.nit:2070 */
13382 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___type_formal___MMTypeFormal, ID_metamodel___type_formal___MMTypeFormal)) /*cast MMTypeFormal*/;
13383 if (UNTAG_Bool(REGB0)) {
13384 fra.me.REG[3] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[3])(fra.me.REG[3]);
13385 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
13386 } else {
13387 REGB1 = TAG_Bool(0);
13388 REGB0 = REGB1;
13389 }
13390 if (UNTAG_Bool(REGB0)) {
13391 } else {
13392 /* syntax/typing.nit:2076 */
13393 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AIsaExpr, ID_parser___parser_nodes___AIsaExpr)) /*cast AIsaExpr*/;
13394 if (UNTAG_Bool(REGB0)) {
13395 /* syntax/typing.nit:2077 */
13396 if (!once_value_9) {
13397 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '!= null'.");
13398 REGB0 = TAG_Int(26);
13399 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13400 once_value_9 = fra.me.REG[3];
13401 register_static_object(&once_value_9);
13402 } else fra.me.REG[3] = once_value_9;
13403 fra.me.REG[3] = fra.me.REG[3];
13404 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13405 } else {
13406 /* syntax/typing.nit:2079 */
13407 if (!once_value_10) {
13408 fra.me.REG[3] = BOX_NativeString("Warning: Prefer '.as(not null)'.");
13409 REGB0 = TAG_Int(32);
13410 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13411 once_value_10 = fra.me.REG[3];
13412 register_static_object(&once_value_10);
13413 } else fra.me.REG[3] = once_value_10;
13414 fra.me.REG[3] = fra.me.REG[3];
13415 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
13416 }
13417 }
13418 }
13419 }
13420 }
13421 }
13422 label1: while(0);
13423 stack_frame_head = fra.me.prev;
13424 return;
13425 }
13426 static const char LOCATE_syntax___typing___AIsaExpr___after_typing[] = "typing::AIsaExpr::(typing::ANode::after_typing)";
13427 void syntax___typing___AIsaExpr___after_typing(val_t p0, val_t p1){
13428 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13429 val_t REGB0;
13430 val_t REGB1;
13431 val_t tmp;
13432 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13433 fra.me.file = LOCATE_syntax___typing;
13434 fra.me.line = 2087;
13435 fra.me.meth = LOCATE_syntax___typing___AIsaExpr___after_typing;
13436 fra.me.has_broke = 0;
13437 fra.me.REG_size = 5;
13438 fra.me.nitni_local_ref_head = NULL;
13439 fra.me.REG[0] = NIT_NULL;
13440 fra.me.REG[1] = NIT_NULL;
13441 fra.me.REG[2] = NIT_NULL;
13442 fra.me.REG[3] = NIT_NULL;
13443 fra.me.REG[4] = NIT_NULL;
13444 fra.me.REG[0] = p0;
13445 fra.me.REG[1] = p1;
13446 /* syntax/typing.nit:2089 */
13447 fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13448 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13449 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]);
13450 /* syntax/typing.nit:2090 */
13451 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13452 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13453 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13454 if (UNTAG_Bool(REGB0)) {
13455 goto label1;
13456 }
13457 /* syntax/typing.nit:2091 */
13458 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13459 fra.me.REG[3] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[3])(fra.me.REG[3]);
13460 /* syntax/typing.nit:2092 */
13461 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13462 if (UNTAG_Bool(REGB0)) {
13463 } else {
13464 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13465 if (UNTAG_Bool(REGB1)) {
13466 REGB1 = TAG_Bool(0);
13467 REGB0 = REGB1;
13468 } else {
13469 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13470 REGB0 = REGB1;
13471 }
13472 }
13473 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13474 if (UNTAG_Bool(REGB0)) {
13475 /* syntax/typing.nit:2093 */
13476 fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
13477 fra.me.REG[4] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13478 fra.me.REG[4] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[4])(fra.me.REG[4]);
13479 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]);
13480 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[4];
13481 }
13482 /* syntax/typing.nit:2095 */
13483 fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
13484 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13485 /* syntax/typing.nit:2096 */
13486 REGB0 = TAG_Bool(1);
13487 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13488 label1: while(0);
13489 stack_frame_head = fra.me.prev;
13490 return;
13491 }
13492 static const char LOCATE_syntax___typing___AAsCastExpr___after_typing[] = "typing::AAsCastExpr::(typing::ANode::after_typing)";
13493 void syntax___typing___AAsCastExpr___after_typing(val_t p0, val_t p1){
13494 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
13495 val_t REGB0;
13496 val_t REGB1;
13497 val_t tmp;
13498 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13499 fra.me.file = LOCATE_syntax___typing;
13500 fra.me.line = 2102;
13501 fra.me.meth = LOCATE_syntax___typing___AAsCastExpr___after_typing;
13502 fra.me.has_broke = 0;
13503 fra.me.REG_size = 4;
13504 fra.me.nitni_local_ref_head = NULL;
13505 fra.me.REG[0] = NIT_NULL;
13506 fra.me.REG[1] = NIT_NULL;
13507 fra.me.REG[2] = NIT_NULL;
13508 fra.me.REG[3] = NIT_NULL;
13509 fra.me.REG[0] = p0;
13510 fra.me.REG[1] = p1;
13511 /* syntax/typing.nit:2104 */
13512 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13513 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13514 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]);
13515 /* syntax/typing.nit:2105 */
13516 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13517 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[3])(fra.me.REG[3]);
13518 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13519 if (UNTAG_Bool(REGB0)) {
13520 goto label1;
13521 }
13522 /* syntax/typing.nit:2106 */
13523 fra.me.REG[3] = CALL_parser___parser_nodes___AAsCastExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13524 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13525 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
13526 /* syntax/typing.nit:2107 */
13527 fra.me.REG[3] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
13528 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13529 if (UNTAG_Bool(REGB0)) {
13530 } else {
13531 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
13532 if (UNTAG_Bool(REGB1)) {
13533 REGB1 = TAG_Bool(0);
13534 REGB0 = REGB1;
13535 } else {
13536 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
13537 REGB0 = REGB1;
13538 }
13539 }
13540 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13541 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13542 label1: while(0);
13543 stack_frame_head = fra.me.prev;
13544 return;
13545 }
13546 static const char LOCATE_syntax___typing___AAsNotnullExpr___after_typing[] = "typing::AAsNotnullExpr::(typing::ANode::after_typing)";
13547 void syntax___typing___AAsNotnullExpr___after_typing(val_t p0, val_t p1){
13548 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13549 val_t REGB0;
13550 val_t tmp;
13551 static val_t once_value_2; /* Once value */
13552 static val_t once_value_3; /* Once value */
13553 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13554 fra.me.file = LOCATE_syntax___typing;
13555 fra.me.line = 2112;
13556 fra.me.meth = LOCATE_syntax___typing___AAsNotnullExpr___after_typing;
13557 fra.me.has_broke = 0;
13558 fra.me.REG_size = 5;
13559 fra.me.nitni_local_ref_head = NULL;
13560 fra.me.REG[0] = NIT_NULL;
13561 fra.me.REG[1] = NIT_NULL;
13562 fra.me.REG[2] = NIT_NULL;
13563 fra.me.REG[3] = NIT_NULL;
13564 fra.me.REG[4] = NIT_NULL;
13565 fra.me.REG[0] = p0;
13566 fra.me.REG[1] = p1;
13567 /* syntax/typing.nit:2114 */
13568 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13569 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13570 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13571 if (UNTAG_Bool(REGB0)) {
13572 goto label1;
13573 }
13574 /* syntax/typing.nit:2115 */
13575 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13576 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13577 /* syntax/typing.nit:2116 */
13578 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
13579 if (UNTAG_Bool(REGB0)) {
13580 /* syntax/typing.nit:2117 */
13581 fra.me.REG[3] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13582 if (!once_value_2) {
13583 fra.me.REG[4] = BOX_NativeString("Type error: 'as(not null)' on 'null' value.");
13584 REGB0 = TAG_Int(43);
13585 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13586 once_value_2 = fra.me.REG[4];
13587 register_static_object(&once_value_2);
13588 } else fra.me.REG[4] = once_value_2;
13589 fra.me.REG[4] = fra.me.REG[4];
13590 CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
13591 /* syntax/typing.nit:2118 */
13592 goto label1;
13593 } else {
13594 /* syntax/typing.nit:2119 */
13595 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
13596 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13597 if (UNTAG_Bool(REGB0)) {
13598 /* syntax/typing.nit:2120 */
13599 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13600 if (!once_value_3) {
13601 fra.me.REG[4] = BOX_NativeString("Warning: 'as(not null)' on non nullable type.");
13602 REGB0 = TAG_Int(45);
13603 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
13604 once_value_3 = fra.me.REG[4];
13605 register_static_object(&once_value_3);
13606 } else fra.me.REG[4] = once_value_3;
13607 fra.me.REG[4] = fra.me.REG[4];
13608 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
13609 }
13610 }
13611 /* syntax/typing.nit:2122 */
13612 fra.me.REG[4] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13613 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
13614 fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[4])(fra.me.REG[4]);
13615 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[4];
13616 /* syntax/typing.nit:2123 */
13617 REGB0 = TAG_Bool(1);
13618 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13619 label1: while(0);
13620 stack_frame_head = fra.me.prev;
13621 return;
13622 }
13623 static const char LOCATE_syntax___typing___AProxyExpr___after_typing[] = "typing::AProxyExpr::(typing::ANode::after_typing)";
13624 void syntax___typing___AProxyExpr___after_typing(val_t p0, val_t p1){
13625 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
13626 val_t REGB0;
13627 val_t tmp;
13628 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13629 fra.me.file = LOCATE_syntax___typing;
13630 fra.me.line = 2128;
13631 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___after_typing;
13632 fra.me.has_broke = 0;
13633 fra.me.REG_size = 2;
13634 fra.me.nitni_local_ref_head = NULL;
13635 fra.me.REG[0] = NIT_NULL;
13636 fra.me.REG[1] = NIT_NULL;
13637 fra.me.REG[0] = p0;
13638 fra.me.REG[1] = p1;
13639 /* syntax/typing.nit:2130 */
13640 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13641 REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
13642 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13643 if (UNTAG_Bool(REGB0)) {
13644 goto label1;
13645 }
13646 /* syntax/typing.nit:2131 */
13647 REGB0 = TAG_Bool(1);
13648 ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
13649 /* syntax/typing.nit:2132 */
13650 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13651 REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
13652 if (UNTAG_Bool(REGB0)) {
13653 goto label1;
13654 }
13655 /* syntax/typing.nit:2133 */
13656 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13657 fra.me.REG[1] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
13658 ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[1];
13659 /* syntax/typing.nit:2134 */
13660 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13661 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[1]);
13662 ATTR_syntax___typing___AExpr____if_true_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13663 /* syntax/typing.nit:2135 */
13664 fra.me.REG[1] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13665 fra.me.REG[1] = ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[1]);
13666 ATTR_syntax___typing___AExpr____if_false_flow_ctx(fra.me.REG[0]) = fra.me.REG[1];
13667 label1: while(0);
13668 stack_frame_head = fra.me.prev;
13669 return;
13670 }
13671 static const char LOCATE_syntax___typing___AProxyExpr___is_self[] = "typing::AProxyExpr::(typing::AExpr::is_self)";
13672 val_t syntax___typing___AProxyExpr___is_self(val_t p0){
13673 struct {struct stack_frame_t me;} fra;
13674 val_t REGB0;
13675 val_t tmp;
13676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13677 fra.me.file = LOCATE_syntax___typing;
13678 fra.me.line = 2138;
13679 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___is_self;
13680 fra.me.has_broke = 0;
13681 fra.me.REG_size = 1;
13682 fra.me.nitni_local_ref_head = NULL;
13683 fra.me.REG[0] = NIT_NULL;
13684 fra.me.REG[0] = p0;
13685 /* syntax/typing.nit:2138 */
13686 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13687 REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
13688 goto label1;
13689 label1: while(0);
13690 stack_frame_head = fra.me.prev;
13691 return REGB0;
13692 }
13693 static const char LOCATE_syntax___typing___AProxyExpr___its_variable[] = "typing::AProxyExpr::(typing::AExpr::its_variable)";
13694 val_t syntax___typing___AProxyExpr___its_variable(val_t p0){
13695 struct {struct stack_frame_t me;} fra;
13696 val_t tmp;
13697 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13698 fra.me.file = LOCATE_syntax___typing;
13699 fra.me.line = 2140;
13700 fra.me.meth = LOCATE_syntax___typing___AProxyExpr___its_variable;
13701 fra.me.has_broke = 0;
13702 fra.me.REG_size = 1;
13703 fra.me.nitni_local_ref_head = NULL;
13704 fra.me.REG[0] = NIT_NULL;
13705 fra.me.REG[0] = p0;
13706 /* syntax/typing.nit:2140 */
13707 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13708 fra.me.REG[0] = CALL_syntax___typing___AExpr___its_variable(fra.me.REG[0])(fra.me.REG[0]);
13709 goto label1;
13710 label1: while(0);
13711 stack_frame_head = fra.me.prev;
13712 return fra.me.REG[0];
13713 }
13714 static const char LOCATE_syntax___typing___AOnceExpr___accept_typing[] = "typing::AOnceExpr::(typing::ANode::accept_typing)";
13715 void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
13716 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
13717 val_t REGB0;
13718 val_t REGB1;
13719 val_t REGB2;
13720 val_t tmp;
13721 static val_t once_value_1; /* Once value */
13722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13723 fra.me.file = LOCATE_syntax___typing;
13724 fra.me.line = 2144;
13725 fra.me.meth = LOCATE_syntax___typing___AOnceExpr___accept_typing;
13726 fra.me.has_broke = 0;
13727 fra.me.REG_size = 5;
13728 fra.me.nitni_local_ref_head = NULL;
13729 fra.me.REG[0] = NIT_NULL;
13730 fra.me.REG[1] = NIT_NULL;
13731 fra.me.REG[2] = NIT_NULL;
13732 fra.me.REG[3] = NIT_NULL;
13733 fra.me.REG[4] = NIT_NULL;
13734 fra.me.REG[0] = p0;
13735 fra.me.REG[1] = p1;
13736 /* syntax/typing.nit:2144 */
13737 fra.me.REG[2] = fra.me.REG[0];
13738 fra.me.REG[3] = fra.me.REG[1];
13739 /* syntax/typing.nit:2146 */
13740 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13741 REGB1 = TAG_Int(0);
13742 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
13743 if (UNTAG_Bool(REGB2)) {
13744 } else {
13745 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
13746 }
13747 /* ../lib/standard/kernel.nit:237 */
13748 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
13749 /* syntax/typing.nit:2146 */
13750 if (UNTAG_Bool(REGB1)) {
13751 /* syntax/typing.nit:2147 */
13752 if (!once_value_1) {
13753 fra.me.REG[4] = BOX_NativeString("Useless once in a once expression.");
13754 REGB1 = TAG_Int(34);
13755 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
13756 once_value_1 = fra.me.REG[4];
13757 register_static_object(&once_value_1);
13758 } else fra.me.REG[4] = once_value_1;
13759 fra.me.REG[4] = fra.me.REG[4];
13760 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
13761 }
13762 /* syntax/typing.nit:2149 */
13763 REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13764 REGB0 = TAG_Int(1);
13765 /* ../lib/standard/kernel.nit:238 */
13766 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
13767 /* syntax/typing.nit:2149 */
13768 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
13769 /* syntax/typing.nit:2151 */
13770 CALL_SUPER_syntax___typing___AOnceExpr___accept_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
13771 /* syntax/typing.nit:2153 */
13772 REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
13773 REGB1 = TAG_Int(1);
13774 /* ../lib/standard/kernel.nit:240 */
13775 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
13776 /* syntax/typing.nit:2153 */
13777 CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
13778 stack_frame_head = fra.me.prev;
13779 return;
13780 }
13781 static const char LOCATE_syntax___typing___ADebugTypeExpr___after_typing[] = "typing::ADebugTypeExpr::(typing::ANode::after_typing)";
13782 void syntax___typing___ADebugTypeExpr___after_typing(val_t p0, val_t p1){
13783 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
13784 val_t REGB0;
13785 val_t REGB1;
13786 val_t tmp;
13787 static val_t once_value_2; /* Once value */
13788 static val_t once_value_3; /* Once value */
13789 static val_t once_value_4; /* Once value */
13790 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
13791 fra.me.file = LOCATE_syntax___typing;
13792 fra.me.line = 2158;
13793 fra.me.meth = LOCATE_syntax___typing___ADebugTypeExpr___after_typing;
13794 fra.me.has_broke = 0;
13795 fra.me.REG_size = 6;
13796 fra.me.nitni_local_ref_head = NULL;
13797 fra.me.REG[0] = NIT_NULL;
13798 fra.me.REG[1] = NIT_NULL;
13799 fra.me.REG[2] = NIT_NULL;
13800 fra.me.REG[3] = NIT_NULL;
13801 fra.me.REG[4] = NIT_NULL;
13802 fra.me.REG[5] = NIT_NULL;
13803 fra.me.REG[0] = p0;
13804 fra.me.REG[1] = p1;
13805 /* syntax/typing.nit:2160 */
13806 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13807 REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
13808 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13809 if (UNTAG_Bool(REGB0)) {
13810 goto label1;
13811 }
13812 /* syntax/typing.nit:2161 */
13813 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13814 REGB0 = CALL_syntax___syntax_base___AType___is_typed(fra.me.REG[2])(fra.me.REG[2]);
13815 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13816 if (UNTAG_Bool(REGB0)) {
13817 goto label1;
13818 }
13819 /* syntax/typing.nit:2162 */
13820 fra.me.REG[2] = CALL_parser___parser_nodes___ADebugTypeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
13821 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
13822 /* syntax/typing.nit:2163 */
13823 fra.me.REG[3] = CALL_parser___parser_nodes___ADebugTypeExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
13824 fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
13825 /* syntax/typing.nit:2164 */
13826 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
13827 if (UNTAG_Bool(REGB0)) {
13828 } else {
13829 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
13830 REGB0 = REGB1;
13831 }
13832 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
13833 if (UNTAG_Bool(REGB0)) {
13834 /* syntax/typing.nit:2165 */
13835 REGB0 = TAG_Int(5);
13836 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
13837 if (!once_value_2) {
13838 fra.me.REG[5] = BOX_NativeString("Warning: Expression is a ");
13839 REGB0 = TAG_Int(25);
13840 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
13841 once_value_2 = fra.me.REG[5];
13842 register_static_object(&once_value_2);
13843 } else fra.me.REG[5] = once_value_2;
13844 fra.me.REG[5] = fra.me.REG[5];
13845 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
13846 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
13847 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13848 if (!once_value_3) {
13849 fra.me.REG[2] = BOX_NativeString(", expected ");
13850 REGB0 = TAG_Int(11);
13851 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
13852 once_value_3 = fra.me.REG[2];
13853 register_static_object(&once_value_3);
13854 } else fra.me.REG[2] = once_value_3;
13855 fra.me.REG[2] = fra.me.REG[2];
13856 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
13857 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
13858 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13859 if (!once_value_4) {
13860 fra.me.REG[3] = BOX_NativeString(".");
13861 REGB0 = TAG_Int(1);
13862 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
13863 once_value_4 = fra.me.REG[3];
13864 register_static_object(&once_value_4);
13865 } else fra.me.REG[3] = once_value_4;
13866 fra.me.REG[3] = fra.me.REG[3];
13867 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
13868 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
13869 CALL_syntax___syntax_base___AbsSyntaxVisitor___warning(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
13870 }
13871 label1: while(0);
13872 stack_frame_head = fra.me.prev;
13873 return;
13874 }