1 /* This C file is generated by NIT to compile module escape. */
2 #include "escape._sep.h"
3 void escape___EscapableContext___push(val_t p0
, val_t p1
, val_t p2
){
4 struct {struct stack_frame_t me
; val_t MORE_REG
[8];} fra
;
8 static val_t once_value_1
; /* Once value */
9 static val_t once_value_2
; /* Once value */
10 static val_t once_value_3
; /* Once value */
11 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
12 fra
.me
.file
= LOCATE_escape
;
14 fra
.me
.meth
= LOCATE_escape___EscapableContext___push
;
17 fra
.me
.REG
[0] = NIT_NULL
;
18 fra
.me
.REG
[1] = NIT_NULL
;
19 fra
.me
.REG
[2] = NIT_NULL
;
20 fra
.me
.REG
[3] = NIT_NULL
;
21 fra
.me
.REG
[4] = NIT_NULL
;
22 fra
.me
.REG
[5] = NIT_NULL
;
23 fra
.me
.REG
[6] = NIT_NULL
;
24 fra
.me
.REG
[7] = NIT_NULL
;
25 fra
.me
.REG
[8] = NIT_NULL
;
29 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
30 /* ./syntax//escape.nit:36 */
31 if (UNTAG_Bool(REGB0
)) {
33 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
34 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 36);
37 fra
.me
.REG
[3] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
38 CALL_abstract_collection___Sequence___push(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
39 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
40 /* ./syntax//escape.nit:37 */
41 if (UNTAG_Bool(REGB0
)) {
43 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
44 if (UNTAG_Bool(REGB1
)) {
45 REGB1
= TAG_Bool(false);
48 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
52 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
53 if (UNTAG_Bool(REGB0
)) {
54 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
55 /* ./syntax//escape.nit:38 */
56 if (UNTAG_Bool(REGB0
)) {
57 fprintf(stderr
, "Reciever is null");
58 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 38);
61 fra
.me
.REG
[3] = CALL_parser_nodes___ALabel___n_id(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
62 fra
.me
.REG
[3] = CALL_syntax_base___Token___to_symbol(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
63 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____labels(fra
.me
.REG
[0])!=NIT_NULL
);
64 /* ./syntax//escape.nit:39 */
65 if (UNTAG_Bool(REGB0
)) {
67 fprintf(stderr
, "Uninitialized attribute %s", "_labels");
68 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 39);
71 fra
.me
.REG
[4] = ATTR_escape___EscapableContext____labels(fra
.me
.REG
[0]);
72 fra
.me
.REG
[4] = CALL_abstract_collection___Collection___iterator(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
74 REGB0
= CALL_abstract_collection___Iterator___is_ok(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
75 if (UNTAG_Bool(REGB0
)) {
76 fra
.me
.REG
[5] = CALL_abstract_collection___Iterator___item(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
77 REGB0
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[5],fra
.me
.REG
[2]));
78 /* ./syntax//escape.nit:40 */
79 if (UNTAG_Bool(REGB0
)) {
81 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
82 if (UNTAG_Bool(REGB1
)) {
83 REGB1
= TAG_Bool(false);
86 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
90 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
91 if (UNTAG_Bool(REGB0
)) {
92 fra
.me
.REG
[6] = CALL_parser_nodes___ALabel___n_id(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
93 fra
.me
.REG
[6] = CALL_syntax_base___Token___to_symbol(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
94 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[3],fra
.me
.REG
[6]));
95 if (UNTAG_Bool(REGB0
)) {
97 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[6]);
101 REGB1
= TAG_Bool(false);
104 if (UNTAG_Bool(REGB0
)) {
105 fra
.me
.REG
[6] = CALL_escape___EscapableContext___visitor(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
107 fra
.me
.REG
[7] = NEW_Array_array___Array___with_capacity(REGB0
);
108 /* ./syntax//escape.nit:41 */
110 fra
.me
.REG
[8] = BOX_NativeString("Syntax error: label ");
112 fra
.me
.REG
[8] = NEW_String_string___String___with_native(fra
.me
.REG
[8], REGB0
);
113 once_value_1
= fra
.me
.REG
[8];
114 register_static_object(&once_value_1
);
115 } else fra
.me
.REG
[8] = once_value_1
;
116 array___Array___add(fra
.me
.REG
[7], fra
.me
.REG
[8]);
117 fra
.me
.REG
[8] = CALL_string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
118 array___Array___add(fra
.me
.REG
[7], fra
.me
.REG
[8]);
120 fra
.me
.REG
[8] = BOX_NativeString(" already defined at ");
122 fra
.me
.REG
[8] = NEW_String_string___String___with_native(fra
.me
.REG
[8], REGB0
);
123 once_value_2
= fra
.me
.REG
[8];
124 register_static_object(&once_value_2
);
125 } else fra
.me
.REG
[8] = once_value_2
;
126 array___Array___add(fra
.me
.REG
[7], fra
.me
.REG
[8]);
127 fra
.me
.REG
[5] = CALL_parser_nodes___ANode___location(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
128 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
129 if (UNTAG_Bool(REGB0
)) {
130 fprintf(stderr
, "Reciever is null");
131 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 41);
134 fra
.me
.REG
[8] = CALL_parser_nodes___ANode___location(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
135 fra
.me
.REG
[8] = CALL_location___Location___relative_to(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[8]);
136 array___Array___add(fra
.me
.REG
[7], fra
.me
.REG
[8]);
138 fra
.me
.REG
[8] = BOX_NativeString(".");
140 fra
.me
.REG
[8] = NEW_String_string___String___with_native(fra
.me
.REG
[8], REGB0
);
141 once_value_3
= fra
.me
.REG
[8];
142 register_static_object(&once_value_3
);
143 } else fra
.me
.REG
[8] = once_value_3
;
144 array___Array___add(fra
.me
.REG
[7], fra
.me
.REG
[8]);
145 fra
.me
.REG
[7] = CALL_string___Object___to_s(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
146 CALL_syntax_base___AbsSyntaxVisitor___error(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[2], fra
.me
.REG
[7]);
147 /* ./syntax//escape.nit:42 */
151 /* ./syntax//escape.nit:39 */
154 CALL_abstract_collection___Iterator___next(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
157 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____labels(fra
.me
.REG
[0])!=NIT_NULL
);
158 /* ./syntax//escape.nit:45 */
159 if (UNTAG_Bool(REGB0
)) {
161 fprintf(stderr
, "Uninitialized attribute %s", "_labels");
162 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 45);
165 fra
.me
.REG
[0] = ATTR_escape___EscapableContext____labels(fra
.me
.REG
[0]);
166 array___Array___add(fra
.me
.REG
[0], fra
.me
.REG
[2]);
167 /* ./syntax//escape.nit:46 */
168 ATTR_escape___EscapableBlock____lab(fra
.me
.REG
[1]) = fra
.me
.REG
[3];
171 stack_frame_head
= fra
.me
.prev
;
174 val_t
escape___EscapableContext___head(val_t p0
){
175 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
181 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
182 fra
.me
.file
= LOCATE_escape
;
184 fra
.me
.meth
= LOCATE_escape___EscapableContext___head
;
185 fra
.me
.has_broke
= 0;
187 fra
.me
.REG
[0] = NIT_NULL
;
188 fra
.me
.REG
[1] = NIT_NULL
;
190 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
191 /* ./syntax//escape.nit:53 */
192 if (UNTAG_Bool(REGB0
)) {
194 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
195 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 53);
198 fra
.me
.REG
[1] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
199 REGB0
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
200 /* ./../lib/standard//collection//array.nit:23 */
201 if (UNTAG_Bool(REGB0
)) {
203 fprintf(stderr
, "Uninitialized attribute %s", "_length");
204 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 23);
207 REGB0
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1]);
209 REGB1
= TAG_Int(UNTAG_Int(REGB0
)-UNTAG_Int(REGB1
));
210 /* ./syntax//escape.nit:54 */
213 REGB0
= TAG_Bool(UNTAG_Int(REGB1
)>=UNTAG_Int(REGB0
));
214 /* ./syntax//escape.nit:54 */
215 if (UNTAG_Bool(REGB0
)) {
216 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
217 /* ./syntax//escape.nit:55 */
218 if (UNTAG_Bool(REGB0
)) {
220 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
221 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 55);
224 fra
.me
.REG
[1] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
227 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB2
));
228 /* ./../lib/standard//collection//array.nit:233 */
229 if (UNTAG_Bool(REGB2
)) {
230 REGB2
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
231 if (UNTAG_Bool(REGB2
)) {
233 fprintf(stderr
, "Uninitialized attribute %s", "_length");
234 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 233);
237 REGB2
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1]);
238 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB2
));
239 /* ./../lib/standard//collection//array.nit:233 */
241 REGB3
= TAG_Bool(false);
244 if (UNTAG_Bool(REGB2
)) {
246 fprintf(stderr
, "Assert %s failed", "'index'");
247 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 233);
250 fra
.me
.REG
[1] = ATTR_array___Array____items(fra
.me
.REG
[1]);
251 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
252 /* ./../lib/standard//collection//array.nit:234 */
253 if (UNTAG_Bool(REGB2
)) {
254 fprintf(stderr
, "Reciever is null");
255 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 234);
258 fra
.me
.REG
[1] = ((Nit_NativeArray
)fra
.me
.REG
[1])->val
[UNTAG_Int(REGB0
)];
259 /* ./../lib/standard//collection//array.nit:234 */
262 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_BreakOnlyEscapableBlock
, ID_BreakOnlyEscapableBlock
)) /*cast BreakOnlyEscapableBlock*/;
263 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
264 /* ./syntax//escape.nit:56 */
265 if (UNTAG_Bool(REGB0
)) {
269 REGB0
= TAG_Int(UNTAG_Int(REGB1
)-UNTAG_Int(REGB0
));
271 /* ./syntax//escape.nit:57 */
273 /* ./syntax//escape.nit:54 */
278 fra
.me
.REG
[1] = NIT_NULL
;
279 /* ./syntax//escape.nit:59 */
282 stack_frame_head
= fra
.me
.prev
;
283 return fra
.me
.REG
[1];
285 val_t
escape___EscapableContext___get_by_label(val_t p0
, val_t p1
){
286 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
292 static val_t once_value_4
; /* Once value */
293 static val_t once_value_5
; /* Once value */
294 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
295 fra
.me
.file
= LOCATE_escape
;
297 fra
.me
.meth
= LOCATE_escape___EscapableContext___get_by_label
;
298 fra
.me
.has_broke
= 0;
300 fra
.me
.REG
[0] = NIT_NULL
;
301 fra
.me
.REG
[1] = NIT_NULL
;
302 fra
.me
.REG
[2] = NIT_NULL
;
303 fra
.me
.REG
[3] = NIT_NULL
;
304 fra
.me
.REG
[4] = NIT_NULL
;
305 fra
.me
.REG
[5] = NIT_NULL
;
308 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
309 /* ./syntax//escape.nit:66 */
310 if (UNTAG_Bool(REGB0
)) {
312 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
313 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 66);
316 fra
.me
.REG
[2] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
317 REGB0
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
318 /* ./../lib/standard//collection//array.nit:23 */
319 if (UNTAG_Bool(REGB0
)) {
321 fprintf(stderr
, "Uninitialized attribute %s", "_length");
322 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 23);
325 REGB0
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[2]);
327 REGB1
= TAG_Int(UNTAG_Int(REGB0
)-UNTAG_Int(REGB1
));
328 fra
.me
.REG
[2] = CALL_parser_nodes___ALabel___n_id(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
329 fra
.me
.REG
[2] = CALL_syntax_base___Token___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
330 /* ./syntax//escape.nit:69 */
333 REGB0
= TAG_Bool(UNTAG_Int(REGB1
)>=UNTAG_Int(REGB0
));
334 /* ./syntax//escape.nit:69 */
335 if (UNTAG_Bool(REGB0
)) {
336 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
337 /* ./syntax//escape.nit:70 */
338 if (UNTAG_Bool(REGB0
)) {
340 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
341 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 70);
344 fra
.me
.REG
[3] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
347 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)>=UNTAG_Int(REGB2
));
348 /* ./../lib/standard//collection//array.nit:233 */
349 if (UNTAG_Bool(REGB2
)) {
350 REGB2
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[3])!=NIT_NULL
);
351 if (UNTAG_Bool(REGB2
)) {
353 fprintf(stderr
, "Uninitialized attribute %s", "_length");
354 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 233);
357 REGB2
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[3]);
358 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB2
));
359 /* ./../lib/standard//collection//array.nit:233 */
361 REGB3
= TAG_Bool(false);
364 if (UNTAG_Bool(REGB2
)) {
366 fprintf(stderr
, "Assert %s failed", "'index'");
367 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 233);
370 fra
.me
.REG
[3] = ATTR_array___Array____items(fra
.me
.REG
[3]);
371 REGB2
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
372 /* ./../lib/standard//collection//array.nit:234 */
373 if (UNTAG_Bool(REGB2
)) {
374 fprintf(stderr
, "Reciever is null");
375 fprintf(stderr
, " (%s:%d)\n", LOCATE_array
, 234);
378 fra
.me
.REG
[3] = ((Nit_NativeArray
)fra
.me
.REG
[3])->val
[UNTAG_Int(REGB0
)];
379 /* ./../lib/standard//collection//array.nit:234 */
382 fra
.me
.REG
[4] = CALL_escape___EscapableBlock___lab(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
383 REGB0
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[2],fra
.me
.REG
[4]));
384 /* ./syntax//escape.nit:71 */
385 if (UNTAG_Bool(REGB0
)) {
387 REGB2
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
388 if (UNTAG_Bool(REGB2
)) {
389 REGB2
= TAG_Bool(false);
392 REGB2
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
396 if (UNTAG_Bool(REGB0
)) {
400 REGB0
= TAG_Int(UNTAG_Int(REGB1
)-UNTAG_Int(REGB0
));
402 /* ./syntax//escape.nit:72 */
404 /* ./syntax//escape.nit:69 */
409 fra
.me
.REG
[0] = CALL_escape___EscapableContext___visitor(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
411 fra
.me
.REG
[4] = NEW_Array_array___Array___with_capacity(REGB1
);
412 /* ./syntax//escape.nit:74 */
414 fra
.me
.REG
[5] = BOX_NativeString("Syntax error: invalid label ");
416 fra
.me
.REG
[5] = NEW_String_string___String___with_native(fra
.me
.REG
[5], REGB1
);
417 once_value_4
= fra
.me
.REG
[5];
418 register_static_object(&once_value_4
);
419 } else fra
.me
.REG
[5] = once_value_4
;
420 array___Array___add(fra
.me
.REG
[4], fra
.me
.REG
[5]);
421 fra
.me
.REG
[2] = CALL_string___Object___to_s(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
422 array___Array___add(fra
.me
.REG
[4], fra
.me
.REG
[2]);
424 fra
.me
.REG
[2] = BOX_NativeString(".");
426 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB1
);
427 once_value_5
= fra
.me
.REG
[2];
428 register_static_object(&once_value_5
);
429 } else fra
.me
.REG
[2] = once_value_5
;
430 array___Array___add(fra
.me
.REG
[4], fra
.me
.REG
[2]);
431 fra
.me
.REG
[4] = CALL_string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
432 CALL_syntax_base___AbsSyntaxVisitor___error(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[4]);
433 fra
.me
.REG
[3] = NIT_NULL
;
434 /* ./syntax//escape.nit:75 */
437 stack_frame_head
= fra
.me
.prev
;
438 return fra
.me
.REG
[3];
440 void escape___EscapableContext___pop(val_t p0
){
441 struct {struct stack_frame_t me
;} fra
;
444 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
445 fra
.me
.file
= LOCATE_escape
;
447 fra
.me
.meth
= LOCATE_escape___EscapableContext___pop
;
448 fra
.me
.has_broke
= 0;
450 fra
.me
.REG
[0] = NIT_NULL
;
452 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0])!=NIT_NULL
);
453 /* ./syntax//escape.nit:81 */
454 if (UNTAG_Bool(REGB0
)) {
456 fprintf(stderr
, "Uninitialized attribute %s", "_stack");
457 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 81);
460 fra
.me
.REG
[0] = ATTR_escape___EscapableContext____stack(fra
.me
.REG
[0]);
461 fra
.me
.REG
[0] = CALL_abstract_collection___Sequence___pop(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
462 stack_frame_head
= fra
.me
.prev
;
465 val_t
escape___EscapableContext___visitor(val_t p0
){
466 struct {struct stack_frame_t me
;} fra
;
469 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
470 fra
.me
.file
= LOCATE_escape
;
472 fra
.me
.meth
= LOCATE_escape___EscapableContext___visitor
;
473 fra
.me
.has_broke
= 0;
475 fra
.me
.REG
[0] = NIT_NULL
;
477 REGB0
= TAG_Bool(ATTR_escape___EscapableContext____visitor(fra
.me
.REG
[0])!=NIT_NULL
);
478 /* ./syntax//escape.nit:84 */
479 if (UNTAG_Bool(REGB0
)) {
481 fprintf(stderr
, "Uninitialized attribute %s", "_visitor");
482 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 84);
485 fra
.me
.REG
[0] = ATTR_escape___EscapableContext____visitor(fra
.me
.REG
[0]);
486 stack_frame_head
= fra
.me
.prev
;
487 return fra
.me
.REG
[0];
489 void escape___EscapableContext___init(val_t p0
, val_t p1
, int* init_table
){
490 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_EscapableContext
].i
;
491 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
493 if (init_table
[itpos0
]) return;
494 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
495 fra
.me
.file
= LOCATE_escape
;
497 fra
.me
.meth
= LOCATE_escape___EscapableContext___init
;
498 fra
.me
.has_broke
= 0;
500 fra
.me
.REG
[0] = NIT_NULL
;
501 fra
.me
.REG
[1] = NIT_NULL
;
504 /* ./syntax//escape.nit:87 */
505 ATTR_escape___EscapableContext____visitor(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
506 stack_frame_head
= fra
.me
.prev
;
507 init_table
[itpos0
] = 1;
510 val_t
escape___EscapableBlock___node(val_t p0
){
511 struct {struct stack_frame_t me
;} fra
;
514 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
515 fra
.me
.file
= LOCATE_escape
;
517 fra
.me
.meth
= LOCATE_escape___EscapableBlock___node
;
518 fra
.me
.has_broke
= 0;
520 fra
.me
.REG
[0] = NIT_NULL
;
522 REGB0
= TAG_Bool(ATTR_escape___EscapableBlock____node(fra
.me
.REG
[0])!=NIT_NULL
);
523 /* ./syntax//escape.nit:98 */
524 if (UNTAG_Bool(REGB0
)) {
526 fprintf(stderr
, "Uninitialized attribute %s", "_node");
527 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 98);
530 fra
.me
.REG
[0] = ATTR_escape___EscapableBlock____node(fra
.me
.REG
[0]);
531 stack_frame_head
= fra
.me
.prev
;
532 return fra
.me
.REG
[0];
534 val_t
escape___EscapableBlock___lab(val_t p0
){
535 struct {struct stack_frame_t me
;} fra
;
537 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
538 fra
.me
.file
= LOCATE_escape
;
540 fra
.me
.meth
= LOCATE_escape___EscapableBlock___lab
;
541 fra
.me
.has_broke
= 0;
543 fra
.me
.REG
[0] = NIT_NULL
;
545 fra
.me
.REG
[0] = ATTR_escape___EscapableBlock____lab(fra
.me
.REG
[0]);
546 /* ./syntax//escape.nit:101 */
547 stack_frame_head
= fra
.me
.prev
;
548 return fra
.me
.REG
[0];
550 val_t
escape___EscapableBlock___is_break_block(val_t p0
){
551 struct {struct stack_frame_t me
;} fra
;
554 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
555 fra
.me
.file
= LOCATE_escape
;
557 fra
.me
.meth
= LOCATE_escape___EscapableBlock___is_break_block
;
558 fra
.me
.has_broke
= 0;
560 fra
.me
.REG
[0] = NIT_NULL
;
562 REGB0
= TAG_Bool(false);
563 /* ./syntax//escape.nit:106 */
566 stack_frame_head
= fra
.me
.prev
;
569 val_t
escape___EscapableBlock___break_list(val_t p0
){
570 struct {struct stack_frame_t me
;} fra
;
572 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
573 fra
.me
.file
= LOCATE_escape
;
575 fra
.me
.meth
= LOCATE_escape___EscapableBlock___break_list
;
576 fra
.me
.has_broke
= 0;
578 fra
.me
.REG
[0] = NIT_NULL
;
580 fra
.me
.REG
[0] = NIT_NULL
;
581 /* ./syntax//escape.nit:111 */
584 stack_frame_head
= fra
.me
.prev
;
585 return fra
.me
.REG
[0];
587 val_t
escape___EscapableBlock___continue_stype(val_t p0
){
588 struct {struct stack_frame_t me
;} fra
;
590 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
591 fra
.me
.file
= LOCATE_escape
;
593 fra
.me
.meth
= LOCATE_escape___EscapableBlock___continue_stype
;
594 fra
.me
.has_broke
= 0;
596 fra
.me
.REG
[0] = NIT_NULL
;
598 fra
.me
.REG
[0] = NIT_NULL
;
599 /* ./syntax//escape.nit:114 */
602 stack_frame_head
= fra
.me
.prev
;
603 return fra
.me
.REG
[0];
605 void escape___EscapableBlock___init(val_t p0
, val_t p1
, int* init_table
){
606 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_EscapableBlock
].i
;
607 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
609 if (init_table
[itpos1
]) return;
610 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
611 fra
.me
.file
= LOCATE_escape
;
613 fra
.me
.meth
= LOCATE_escape___EscapableBlock___init
;
614 fra
.me
.has_broke
= 0;
616 fra
.me
.REG
[0] = NIT_NULL
;
617 fra
.me
.REG
[1] = NIT_NULL
;
620 /* ./syntax//escape.nit:118 */
621 ATTR_escape___EscapableBlock____node(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
622 stack_frame_head
= fra
.me
.prev
;
623 init_table
[itpos1
] = 1;
626 val_t
escape___BreakOnlyEscapableBlock___is_break_block(val_t p0
){
627 struct {struct stack_frame_t me
;} fra
;
630 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
631 fra
.me
.file
= LOCATE_escape
;
633 fra
.me
.meth
= LOCATE_escape___BreakOnlyEscapableBlock___is_break_block
;
634 fra
.me
.has_broke
= 0;
636 fra
.me
.REG
[0] = NIT_NULL
;
638 REGB0
= TAG_Bool(true);
639 /* ./syntax//escape.nit:125 */
642 stack_frame_head
= fra
.me
.prev
;
645 void escape___BreakOnlyEscapableBlock___init(val_t p0
, val_t p1
, int* init_table
){
646 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_BreakOnlyEscapableBlock
].i
;
647 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
649 if (init_table
[itpos2
]) return;
650 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
651 fra
.me
.file
= LOCATE_escape
;
653 fra
.me
.meth
= LOCATE_escape___BreakOnlyEscapableBlock___init
;
654 fra
.me
.has_broke
= 0;
656 fra
.me
.REG
[0] = NIT_NULL
;
657 fra
.me
.REG
[1] = NIT_NULL
;
660 /* ./syntax//escape.nit:127 */
661 CALL_escape___EscapableBlock___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], init_table
);
662 stack_frame_head
= fra
.me
.prev
;
663 init_table
[itpos2
] = 1;
666 val_t
escape___EscapableClosure___is_break_block(val_t p0
){
667 struct {struct stack_frame_t me
;} fra
;
670 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
671 fra
.me
.file
= LOCATE_escape
;
673 fra
.me
.meth
= LOCATE_escape___EscapableClosure___is_break_block
;
674 fra
.me
.has_broke
= 0;
676 fra
.me
.REG
[0] = NIT_NULL
;
678 REGB0
= TAG_Bool(ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0])!=NIT_NULL
);
679 /* ./syntax//escape.nit:136 */
680 if (UNTAG_Bool(REGB0
)) {
682 fprintf(stderr
, "Uninitialized attribute %s", "_closure");
683 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 136);
686 fra
.me
.REG
[0] = ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0]);
687 REGB0
= CALL_static_type___MMClosure___is_break(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
690 stack_frame_head
= fra
.me
.prev
;
693 val_t
escape___EscapableClosure___break_list(val_t p0
){
694 struct {struct stack_frame_t me
;} fra
;
696 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
697 fra
.me
.file
= LOCATE_escape
;
699 fra
.me
.meth
= LOCATE_escape___EscapableClosure___break_list
;
700 fra
.me
.has_broke
= 0;
702 fra
.me
.REG
[0] = NIT_NULL
;
704 fra
.me
.REG
[0] = ATTR_escape___EscapableClosure____break_list(fra
.me
.REG
[0]);
705 /* ./syntax//escape.nit:138 */
706 stack_frame_head
= fra
.me
.prev
;
707 return fra
.me
.REG
[0];
709 val_t
escape___EscapableClosure___continue_stype(val_t p0
){
710 struct {struct stack_frame_t me
;} fra
;
713 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
714 fra
.me
.file
= LOCATE_escape
;
716 fra
.me
.meth
= LOCATE_escape___EscapableClosure___continue_stype
;
717 fra
.me
.has_broke
= 0;
719 fra
.me
.REG
[0] = NIT_NULL
;
721 REGB0
= TAG_Bool(ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0])!=NIT_NULL
);
722 /* ./syntax//escape.nit:140 */
723 if (UNTAG_Bool(REGB0
)) {
725 fprintf(stderr
, "Uninitialized attribute %s", "_closure");
726 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 140);
729 fra
.me
.REG
[0] = ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0]);
730 fra
.me
.REG
[0] = CALL_static_type___MMClosure___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
731 fra
.me
.REG
[0] = CALL_static_type___MMSignature___return_type(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
734 stack_frame_head
= fra
.me
.prev
;
735 return fra
.me
.REG
[0];
737 val_t
escape___EscapableClosure___closure(val_t p0
){
738 struct {struct stack_frame_t me
;} fra
;
741 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
742 fra
.me
.file
= LOCATE_escape
;
744 fra
.me
.meth
= LOCATE_escape___EscapableClosure___closure
;
745 fra
.me
.has_broke
= 0;
747 fra
.me
.REG
[0] = NIT_NULL
;
749 REGB0
= TAG_Bool(ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0])!=NIT_NULL
);
750 /* ./syntax//escape.nit:133 */
751 if (UNTAG_Bool(REGB0
)) {
753 fprintf(stderr
, "Uninitialized attribute %s", "_closure");
754 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 133);
757 fra
.me
.REG
[0] = ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[0]);
758 stack_frame_head
= fra
.me
.prev
;
759 return fra
.me
.REG
[0];
761 void escape___EscapableClosure___init(val_t p0
, val_t p1
, val_t p2
, val_t p3
, int* init_table
){
762 int itpos3
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_EscapableClosure
].i
;
763 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
765 if (init_table
[itpos3
]) return;
766 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
767 fra
.me
.file
= LOCATE_escape
;
769 fra
.me
.meth
= LOCATE_escape___EscapableClosure___init
;
770 fra
.me
.has_broke
= 0;
772 fra
.me
.REG
[0] = NIT_NULL
;
773 fra
.me
.REG
[1] = NIT_NULL
;
774 fra
.me
.REG
[2] = NIT_NULL
;
775 fra
.me
.REG
[3] = NIT_NULL
;
776 fra
.me
.REG
[4] = NIT_NULL
;
781 fra
.me
.REG
[4] = fra
.me
.REG
[0];
782 /* ./syntax//escape.nit:144 */
783 CALL_escape___EscapableBlock___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], init_table
);
784 /* ./syntax//escape.nit:145 */
785 ATTR_escape___EscapableClosure____closure(fra
.me
.REG
[4]) = fra
.me
.REG
[2];
786 /* ./syntax//escape.nit:146 */
787 ATTR_escape___EscapableClosure____break_list(fra
.me
.REG
[4]) = fra
.me
.REG
[3];
788 stack_frame_head
= fra
.me
.prev
;
789 init_table
[itpos3
] = 1;
792 val_t
escape___AEscapeExpr___escapable(val_t p0
){
793 struct {struct stack_frame_t me
;} fra
;
795 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
796 fra
.me
.file
= LOCATE_escape
;
798 fra
.me
.meth
= LOCATE_escape___AEscapeExpr___escapable
;
799 fra
.me
.has_broke
= 0;
801 fra
.me
.REG
[0] = NIT_NULL
;
803 fra
.me
.REG
[0] = ATTR_escape___AEscapeExpr____escapable(fra
.me
.REG
[0]);
804 /* ./syntax//escape.nit:154 */
805 stack_frame_head
= fra
.me
.prev
;
806 return fra
.me
.REG
[0];
808 val_t
escape___AEscapeExpr___kwname(val_t p0
){
809 struct {struct stack_frame_t me
;} fra
;
811 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
812 fra
.me
.file
= LOCATE_escape
;
814 fra
.me
.meth
= LOCATE_escape___AEscapeExpr___kwname
;
815 fra
.me
.has_broke
= 0;
817 /* ./syntax//escape.nit:157 */
818 fprintf(stderr
, "Deferred method called");
819 fprintf(stderr
, " (%s:%d)\n", LOCATE_escape
, 157);
821 stack_frame_head
= fra
.me
.prev
;
824 val_t
escape___AEscapeExpr___compute_escapable_block(val_t p0
, val_t p1
){
825 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
829 static val_t once_value_1
; /* Once value */
830 static val_t once_value_2
; /* Once value */
831 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
832 fra
.me
.file
= LOCATE_escape
;
834 fra
.me
.meth
= LOCATE_escape___AEscapeExpr___compute_escapable_block
;
835 fra
.me
.has_broke
= 0;
837 fra
.me
.REG
[0] = NIT_NULL
;
838 fra
.me
.REG
[1] = NIT_NULL
;
839 fra
.me
.REG
[2] = NIT_NULL
;
840 fra
.me
.REG
[3] = NIT_NULL
;
841 fra
.me
.REG
[4] = NIT_NULL
;
844 fra
.me
.REG
[2] = CALL_parser_nodes___ALabelable___n_label(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
845 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
846 /* ./syntax//escape.nit:165 */
847 if (UNTAG_Bool(REGB0
)) {
849 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
850 if (UNTAG_Bool(REGB1
)) {
851 REGB1
= TAG_Bool(false);
854 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
858 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
859 if (UNTAG_Bool(REGB0
)) {
860 fra
.me
.REG
[2] = CALL_escape___EscapableContext___get_by_label(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
861 /* ./syntax//escape.nit:166 */
863 fra
.me
.REG
[3] = CALL_escape___EscapableContext___head(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
864 fra
.me
.REG
[2] = fra
.me
.REG
[3];
865 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
866 /* ./syntax//escape.nit:169 */
867 if (UNTAG_Bool(REGB0
)) {
869 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
870 if (UNTAG_Bool(REGB1
)) {
871 REGB1
= TAG_Bool(false);
874 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
878 if (UNTAG_Bool(REGB0
)) {
879 fra
.me
.REG
[1] = CALL_escape___EscapableContext___visitor(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
881 fra
.me
.REG
[3] = NEW_Array_array___Array___with_capacity(REGB0
);
882 /* ./syntax//escape.nit:170 */
884 fra
.me
.REG
[4] = BOX_NativeString("Syntax Error: '");
886 fra
.me
.REG
[4] = NEW_String_string___String___with_native(fra
.me
.REG
[4], REGB0
);
887 once_value_1
= fra
.me
.REG
[4];
888 register_static_object(&once_value_1
);
889 } else fra
.me
.REG
[4] = once_value_1
;
890 array___Array___add(fra
.me
.REG
[3], fra
.me
.REG
[4]);
891 fra
.me
.REG
[4] = CALL_escape___AEscapeExpr___kwname(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
892 array___Array___add(fra
.me
.REG
[3], fra
.me
.REG
[4]);
894 fra
.me
.REG
[4] = BOX_NativeString("' statment outside block.");
896 fra
.me
.REG
[4] = NEW_String_string___String___with_native(fra
.me
.REG
[4], REGB0
);
897 once_value_2
= fra
.me
.REG
[4];
898 register_static_object(&once_value_2
);
899 } else fra
.me
.REG
[4] = once_value_2
;
900 array___Array___add(fra
.me
.REG
[3], fra
.me
.REG
[4]);
901 fra
.me
.REG
[3] = CALL_string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
902 CALL_syntax_base___AbsSyntaxVisitor___error(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], fra
.me
.REG
[3]);
905 /* ./syntax//escape.nit:173 */
906 ATTR_escape___AEscapeExpr____escapable(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
907 /* ./syntax//escape.nit:174 */
910 stack_frame_head
= fra
.me
.prev
;
911 return fra
.me
.REG
[2];
913 val_t
escape___AContinueExpr___kwname(val_t p0
){
914 struct {struct stack_frame_t me
;} fra
;
917 static val_t once_value_1
; /* Once value */
918 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
919 fra
.me
.file
= LOCATE_escape
;
921 fra
.me
.meth
= LOCATE_escape___AContinueExpr___kwname
;
922 fra
.me
.has_broke
= 0;
924 fra
.me
.REG
[0] = NIT_NULL
;
926 /* ./syntax//escape.nit:180 */
928 fra
.me
.REG
[0] = BOX_NativeString("continue");
930 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
931 once_value_1
= fra
.me
.REG
[0];
932 register_static_object(&once_value_1
);
933 } else fra
.me
.REG
[0] = once_value_1
;
936 stack_frame_head
= fra
.me
.prev
;
937 return fra
.me
.REG
[0];
939 val_t
escape___ABreakExpr___kwname(val_t p0
){
940 struct {struct stack_frame_t me
;} fra
;
943 static val_t once_value_1
; /* Once value */
944 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
945 fra
.me
.file
= LOCATE_escape
;
947 fra
.me
.meth
= LOCATE_escape___ABreakExpr___kwname
;
948 fra
.me
.has_broke
= 0;
950 fra
.me
.REG
[0] = NIT_NULL
;
952 /* ./syntax//escape.nit:185 */
954 fra
.me
.REG
[0] = BOX_NativeString("break");
956 fra
.me
.REG
[0] = NEW_String_string___String___with_native(fra
.me
.REG
[0], REGB0
);
957 once_value_1
= fra
.me
.REG
[0];
958 register_static_object(&once_value_1
);
959 } else fra
.me
.REG
[0] = once_value_1
;
962 stack_frame_head
= fra
.me
.prev
;
963 return fra
.me
.REG
[0];