1 /* This C file is generated by NIT to compile module control_flow. */
2 #include "control_flow._sep.h"
3 void control_flow___MMSrcModule___do_control_flow(val_t self
, val_t param0
) {
4 struct trace_t trace
= {NULL
, NULL
, 23, LOCATE_control_flow___MMSrcModule___do_control_flow
};
6 void **closurevariable
= NULL
;
7 trace
.prev
= tracehead
; tracehead
= &trace
;
8 trace
.file
= LOCATE_control_flow
;
11 variable
[4] = variable
[0];
12 variable
[5] = NEW_ControlFlowVisitor_control_flow___ControlFlowVisitor___init( variable
[1] /*tc*/, variable
[4]); /*new ControlFlowVisitor*/
13 variable
[4] = variable
[5];
14 variable
[3] = variable
[4];
15 variable
[4] = variable
[0];
16 variable
[4] = CALL_syntax_base___MMSrcModule___node(variable
[4])(variable
[4]) /*MMSrcModule::node*/;
17 CALL_parser_prod___Visitor___visit( variable
[3] /*tv*/)( variable
[3] /*tv*/, variable
[4]) /*ControlFlowVisitor::visit*/;
18 return_label0
: while(false);
19 tracehead
= trace
.prev
;
22 val_t
control_flow___Variable___must_be_set(val_t self
) {
23 struct trace_t trace
= {NULL
, NULL
, 33, LOCATE_control_flow___Variable___must_be_set
};
25 void **closurevariable
= NULL
;
26 trace
.prev
= tracehead
; tracehead
= &trace
;
27 trace
.file
= LOCATE_control_flow
;
29 variable
[1] = TAG_Bool(false);
31 return_label1
: while(false);
32 tracehead
= trace
.prev
;
35 val_t
control_flow___VarVariable___must_be_set(val_t self
) {
36 struct trace_t trace
= {NULL
, NULL
, 38, LOCATE_control_flow___VarVariable___must_be_set
};
38 void **closurevariable
= NULL
;
39 trace
.prev
= tracehead
; tracehead
= &trace
;
40 trace
.file
= LOCATE_control_flow
;
42 variable
[1] = TAG_Bool(true);
44 return_label2
: while(false);
45 tracehead
= trace
.prev
;
48 void control_flow___ControlFlowVisitor___visit(val_t self
, val_t param0
) {
49 struct trace_t trace
= {NULL
, NULL
, 49, LOCATE_control_flow___ControlFlowVisitor___visit
};
51 void **closurevariable
= NULL
;
52 trace
.prev
= tracehead
; tracehead
= &trace
;
53 trace
.file
= LOCATE_control_flow
;
56 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[1] /*n*/ == NIT_NULL
/*null*/) || (( variable
[1] /*n*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[1] /*n*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[1] /*n*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[1] /*n*/)( variable
[1] /*n*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
57 if (UNTAG_Bool(variable
[3])) { /*if*/
58 variable
[3] = variable
[0];
59 CALL_control_flow___PNode___accept_control_flow( variable
[1] /*n*/)( variable
[1] /*n*/, variable
[3]) /*PNode::accept_control_flow*/;
61 return_label3
: while(false);
62 tracehead
= trace
.prev
;
65 val_t
control_flow___ControlFlowVisitor___once_count(val_t self
) {
66 struct trace_t trace
= {NULL
, NULL
, 54, LOCATE_control_flow___ControlFlowVisitor___once_count
};
67 val_t
*variable
= NULL
;
68 void **closurevariable
= NULL
;
69 trace
.prev
= tracehead
; tracehead
= &trace
;
70 trace
.file
= LOCATE_control_flow
;
71 tracehead
= trace
.prev
;
72 return ATTR_control_flow___ControlFlowVisitor____once_count( self
) /*ControlFlowVisitor::_once_count*/;
74 void control_flow___ControlFlowVisitor___once_count__eq(val_t self
, val_t param0
) {
75 struct trace_t trace
= {NULL
, NULL
, 54, LOCATE_control_flow___ControlFlowVisitor___once_count__eq
};
76 val_t
*variable
= NULL
;
77 void **closurevariable
= NULL
;
78 trace
.prev
= tracehead
; tracehead
= &trace
;
79 trace
.file
= LOCATE_control_flow
;
80 ATTR_control_flow___ControlFlowVisitor____once_count( self
) /*ControlFlowVisitor::_once_count*/ = param0
;
81 tracehead
= trace
.prev
;
84 val_t
control_flow___ControlFlowVisitor___control_flow_ctx(val_t self
) {
85 struct trace_t trace
= {NULL
, NULL
, 57, LOCATE_control_flow___ControlFlowVisitor___control_flow_ctx
};
86 val_t
*variable
= NULL
;
87 void **closurevariable
= NULL
;
88 trace
.prev
= tracehead
; tracehead
= &trace
;
89 trace
.file
= LOCATE_control_flow
;
90 tracehead
= trace
.prev
;
91 return ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self
) /*ControlFlowVisitor::_control_flow_ctx*/;
93 void control_flow___ControlFlowVisitor___control_flow_ctx__eq(val_t self
, val_t param0
) {
94 struct trace_t trace
= {NULL
, NULL
, 57, LOCATE_control_flow___ControlFlowVisitor___control_flow_ctx__eq
};
95 val_t
*variable
= NULL
;
96 void **closurevariable
= NULL
;
97 trace
.prev
= tracehead
; tracehead
= &trace
;
98 trace
.file
= LOCATE_control_flow
;
99 ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self
) /*ControlFlowVisitor::_control_flow_ctx*/ = param0
;
100 tracehead
= trace
.prev
;
103 void control_flow___ControlFlowVisitor___check_is_set(val_t self
, val_t param0
, val_t param1
) {
104 struct trace_t trace
= {NULL
, NULL
, 60, LOCATE_control_flow___ControlFlowVisitor___check_is_set
};
106 void **closurevariable
= NULL
;
107 trace
.prev
= tracehead
; tracehead
= &trace
;
108 trace
.file
= LOCATE_control_flow
;
110 variable
[1] = param0
;
111 variable
[2] = param1
;
112 variable
[4] = CALL_control_flow___Variable___must_be_set( variable
[2] /*v*/)( variable
[2] /*v*/) /*Variable::must_be_set*/;
113 variable
[5] = variable
[4];
114 if (UNTAG_Bool(variable
[5])) { /* and */
115 variable
[5] = variable
[0];
116 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx(variable
[5])(variable
[5]) /*ControlFlowVisitor::control_flow_ctx*/;
117 variable
[5] = CALL_control_flow___ControlFlowContext___is_set(variable
[5])(variable
[5], variable
[2] /*v*/) /*ControlFlowContext::is_set*/;
118 variable
[5] = TAG_Bool(!UNTAG_Bool(variable
[5]));
120 variable
[4] = variable
[5];
121 if (UNTAG_Bool(variable
[4])) { /*if*/
122 variable
[4] = variable
[0];
123 variable
[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
124 variable
[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: variable '"), TAG_Int(17)); /*new String*/
125 variable
[7] = variable
[6];
126 CALL_abstract_collection___SimpleCollection___add(variable
[5])(variable
[5], variable
[7]) /*AbstractArray::add*/;
127 variable
[8] = variable
[2] /*v*/;
128 variable
[8] = CALL_string___Object___to_s(variable
[8])(variable
[8]) /*Object::to_s*/;
129 CALL_abstract_collection___SimpleCollection___add(variable
[5])(variable
[5], variable
[8]) /*AbstractArray::add*/;
130 variable
[9] = NEW_String_string___String___with_native(BOX_NativeString("' is possibly unset."), TAG_Int(20)); /*new String*/
131 variable
[10] = variable
[9];
132 CALL_abstract_collection___SimpleCollection___add(variable
[5])(variable
[5], variable
[10]) /*AbstractArray::add*/;
133 variable
[5] = CALL_string___Object___to_s(variable
[5])(variable
[5]) /*Object::to_s*/;
134 CALL_syntax_base___AbsSyntaxVisitor___error(variable
[4])(variable
[4], variable
[1] /*n*/, variable
[5]) /*AbsSyntaxVisitor::error*/;
135 variable
[5] = variable
[0];
136 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx(variable
[5])(variable
[5]) /*ControlFlowVisitor::control_flow_ctx*/;
137 variable
[4] = variable
[5];
138 while (true) { /*while*/
139 variable
[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable
[4] /*cfc*/ == NIT_NULL
/*null*/) || (( variable
[4] /*cfc*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[4] /*cfc*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[4] /*cfc*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[4] /*cfc*/)( variable
[4] /*cfc*/, NIT_NULL
/*null*/) /*Object::==*/)))))));
140 if (!UNTAG_Bool(variable
[5])) break; /* while*/
141 variable
[5] = variable
[0];
142 variable
[6] = NEW_String_string___String___with_native(BOX_NativeString("cfc: "), TAG_Int(5)); /*new String*/
143 variable
[7] = CALL_control_flow___ControlFlowContext___set_variables( variable
[4] /*cfc*/)( variable
[4] /*cfc*/) /*ControlFlowContext::set_variables*/;
144 variable
[8] = NEW_String_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)); /*new String*/
145 variable
[7] = CALL_string___Collection___join(variable
[7])(variable
[7], variable
[8]) /*Collection::join*/;
146 variable
[6] = CALL_string___String_____plus(variable
[6])(variable
[6], variable
[7]) /*String::+*/;
147 CALL_file___Object___print(variable
[5])(variable
[5], variable
[6]) /*Object::print*/;
148 variable
[5] = CALL_control_flow___ControlFlowContext___prev( variable
[4] /*cfc*/)( variable
[4] /*cfc*/) /*ControlFlowContext::prev*/;
149 variable
[4] = variable
[5] /*cfc=*/;
150 continue_5
: while(0);
154 return_label4
: while(false);
155 tracehead
= trace
.prev
;
158 void control_flow___ControlFlowVisitor___mark_is_set(val_t self
, val_t param0
) {
159 struct trace_t trace
= {NULL
, NULL
, 72, LOCATE_control_flow___ControlFlowVisitor___mark_is_set
};
161 void **closurevariable
= NULL
;
162 trace
.prev
= tracehead
; tracehead
= &trace
;
163 trace
.file
= LOCATE_control_flow
;
165 variable
[1] = param0
;
166 variable
[3] = variable
[0];
167 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx(variable
[3])(variable
[3]) /*ControlFlowVisitor::control_flow_ctx*/;
168 variable
[3] = CALL_control_flow___ControlFlowContext___set_variables(variable
[3])(variable
[3]) /*ControlFlowContext::set_variables*/;
169 CALL_abstract_collection___SimpleCollection___add(variable
[3])(variable
[3], variable
[1] /*v*/) /*HashSet::add*/;
170 return_label6
: while(false);
171 tracehead
= trace
.prev
;
174 void control_flow___ControlFlowVisitor___init(val_t self
, val_t param0
, val_t param1
, int* init_table
) {
175 struct trace_t trace
= {NULL
, NULL
, 77, LOCATE_control_flow___ControlFlowVisitor___init
};
177 void **closurevariable
= NULL
;
178 trace
.prev
= tracehead
; tracehead
= &trace
;
179 trace
.file
= LOCATE_control_flow
;
181 variable
[1] = param0
;
182 variable
[2] = param1
;
183 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowVisitor
].i
]) return;
184 CALL_syntax_base___AbsSyntaxVisitor___init(variable
[0])(variable
[0], variable
[1], variable
[2], init_table
/*YYY*/) /*AbsSyntaxVisitor::init*/;
185 return_label7
: while(false);
186 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowVisitor
].i
] = 1;
187 tracehead
= trace
.prev
;
190 val_t
control_flow___ControlFlowContext___prev(val_t self
) {
191 struct trace_t trace
= {NULL
, NULL
, 81, LOCATE_control_flow___ControlFlowContext___prev
};
192 val_t
*variable
= NULL
;
193 void **closurevariable
= NULL
;
194 trace
.prev
= tracehead
; tracehead
= &trace
;
195 trace
.file
= LOCATE_control_flow
;
196 tracehead
= trace
.prev
;
197 return ATTR_control_flow___ControlFlowContext____prev( self
) /*ControlFlowContext::_prev*/;
199 val_t
control_flow___ControlFlowContext___unreash(val_t self
) {
200 struct trace_t trace
= {NULL
, NULL
, 84, LOCATE_control_flow___ControlFlowContext___unreash
};
201 val_t
*variable
= NULL
;
202 void **closurevariable
= NULL
;
203 trace
.prev
= tracehead
; tracehead
= &trace
;
204 trace
.file
= LOCATE_control_flow
;
205 tracehead
= trace
.prev
;
206 return ATTR_control_flow___ControlFlowContext____unreash( self
) /*ControlFlowContext::_unreash*/;
208 void control_flow___ControlFlowContext___unreash__eq(val_t self
, val_t param0
) {
209 struct trace_t trace
= {NULL
, NULL
, 84, LOCATE_control_flow___ControlFlowContext___unreash__eq
};
210 val_t
*variable
= NULL
;
211 void **closurevariable
= NULL
;
212 trace
.prev
= tracehead
; tracehead
= &trace
;
213 trace
.file
= LOCATE_control_flow
;
214 ATTR_control_flow___ControlFlowContext____unreash( self
) /*ControlFlowContext::_unreash*/ = param0
;
215 tracehead
= trace
.prev
;
218 val_t
control_flow___ControlFlowContext___already_unreash(val_t self
) {
219 struct trace_t trace
= {NULL
, NULL
, 87, LOCATE_control_flow___ControlFlowContext___already_unreash
};
220 val_t
*variable
= NULL
;
221 void **closurevariable
= NULL
;
222 trace
.prev
= tracehead
; tracehead
= &trace
;
223 trace
.file
= LOCATE_control_flow
;
224 tracehead
= trace
.prev
;
225 return ATTR_control_flow___ControlFlowContext____already_unreash( self
) /*ControlFlowContext::_already_unreash*/;
227 void control_flow___ControlFlowContext___already_unreash__eq(val_t self
, val_t param0
) {
228 struct trace_t trace
= {NULL
, NULL
, 87, LOCATE_control_flow___ControlFlowContext___already_unreash__eq
};
229 val_t
*variable
= NULL
;
230 void **closurevariable
= NULL
;
231 trace
.prev
= tracehead
; tracehead
= &trace
;
232 trace
.file
= LOCATE_control_flow
;
233 ATTR_control_flow___ControlFlowContext____already_unreash( self
) /*ControlFlowContext::_already_unreash*/ = param0
;
234 tracehead
= trace
.prev
;
237 val_t
control_flow___ControlFlowContext___base_block(val_t self
) {
238 struct trace_t trace
= {NULL
, NULL
, 91, LOCATE_control_flow___ControlFlowContext___base_block
};
239 val_t
*variable
= NULL
;
240 void **closurevariable
= NULL
;
241 trace
.prev
= tracehead
; tracehead
= &trace
;
242 trace
.file
= LOCATE_control_flow
;
243 tracehead
= trace
.prev
;
244 return ATTR_control_flow___ControlFlowContext____base_block( self
) /*ControlFlowContext::_base_block*/;
246 void control_flow___ControlFlowContext___base_block__eq(val_t self
, val_t param0
) {
247 struct trace_t trace
= {NULL
, NULL
, 91, LOCATE_control_flow___ControlFlowContext___base_block__eq
};
248 val_t
*variable
= NULL
;
249 void **closurevariable
= NULL
;
250 trace
.prev
= tracehead
; tracehead
= &trace
;
251 trace
.file
= LOCATE_control_flow
;
252 ATTR_control_flow___ControlFlowContext____base_block( self
) /*ControlFlowContext::_base_block*/ = param0
;
253 tracehead
= trace
.prev
;
256 val_t
control_flow___ControlFlowContext___set_variables(val_t self
) {
257 struct trace_t trace
= {NULL
, NULL
, 94, LOCATE_control_flow___ControlFlowContext___set_variables
};
258 val_t
*variable
= NULL
;
259 void **closurevariable
= NULL
;
260 trace
.prev
= tracehead
; tracehead
= &trace
;
261 trace
.file
= LOCATE_control_flow
;
262 tracehead
= trace
.prev
;
263 return ATTR_control_flow___ControlFlowContext____set_variables( self
) /*ControlFlowContext::_set_variables*/;
265 val_t
control_flow___ControlFlowContext___is_set(val_t self
, val_t param0
) {
266 struct trace_t trace
= {NULL
, NULL
, 97, LOCATE_control_flow___ControlFlowContext___is_set
};
268 void **closurevariable
= NULL
;
269 trace
.prev
= tracehead
; tracehead
= &trace
;
270 trace
.file
= LOCATE_control_flow
;
272 variable
[1] = param0
;
273 variable
[3] = variable
[0];
274 variable
[3] = ATTR_control_flow___ControlFlowContext____set_variables(variable
[3]) /*ControlFlowContext::_set_variables*/;
275 variable
[3] = CALL_abstract_collection___Collection___has(variable
[3])(variable
[3], variable
[1] /*v*/) /*HashSet::has*/;
276 variable
[4] = variable
[3];
277 if (!UNTAG_Bool(variable
[4])) { /* or */
278 variable
[4] = variable
[0];
279 variable
[4] = ATTR_control_flow___ControlFlowContext____prev(variable
[4]) /*ControlFlowContext::_prev*/;
280 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))))));
281 variable
[5] = variable
[4];
282 if (UNTAG_Bool(variable
[5])) { /* and */
283 variable
[5] = variable
[0];
284 variable
[5] = ATTR_control_flow___ControlFlowContext____prev(variable
[5]) /*ControlFlowContext::_prev*/;
285 variable
[5] = CALL_control_flow___ControlFlowContext___is_set(variable
[5])(variable
[5], variable
[1] /*v*/) /*ControlFlowContext::is_set*/;
287 variable
[4] = variable
[5];
289 variable
[3] = variable
[4];
290 variable
[2] = variable
[3];
292 return_label8
: while(false);
293 tracehead
= trace
.prev
;
296 val_t
control_flow___ControlFlowContext___sub(val_t self
) {
297 struct trace_t trace
= {NULL
, NULL
, 103, LOCATE_control_flow___ControlFlowContext___sub
};
299 void **closurevariable
= NULL
;
300 trace
.prev
= tracehead
; tracehead
= &trace
;
301 trace
.file
= LOCATE_control_flow
;
303 variable
[2] = variable
[0];
304 variable
[3] = NEW_ControlFlowContext_control_flow___ControlFlowContext___with_prev(variable
[2]); /*new ControlFlowContext*/
305 variable
[2] = variable
[3];
306 variable
[1] = variable
[2];
308 return_label9
: while(false);
309 tracehead
= trace
.prev
;
312 void control_flow___ControlFlowContext___init(val_t self
, int* init_table
) {
313 struct trace_t trace
= {NULL
, NULL
, 108, LOCATE_control_flow___ControlFlowContext___init
};
315 void **closurevariable
= NULL
;
316 trace
.prev
= tracehead
; tracehead
= &trace
;
317 trace
.file
= LOCATE_control_flow
;
319 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowContext
].i
]) return;
320 return_label10
: while(false);
321 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowContext
].i
] = 1;
322 tracehead
= trace
.prev
;
325 void control_flow___ControlFlowContext___with_prev(val_t self
, val_t param0
, int* init_table
) {
326 struct trace_t trace
= {NULL
, NULL
, 112, LOCATE_control_flow___ControlFlowContext___with_prev
};
328 void **closurevariable
= NULL
;
329 trace
.prev
= tracehead
; tracehead
= &trace
;
330 trace
.file
= LOCATE_control_flow
;
332 variable
[1] = param0
;
333 if (init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowContext
].i
]) return;
334 variable
[3] = variable
[0];
335 ATTR_control_flow___ControlFlowContext____prev(variable
[3]) /*ControlFlowContext::_prev*/ = variable
[1] /*p*/;
336 variable
[3] = variable
[0];
337 variable
[4] = CALL_control_flow___ControlFlowContext___unreash( variable
[1] /*p*/)( variable
[1] /*p*/) /*ControlFlowContext::unreash*/;
338 ATTR_control_flow___ControlFlowContext____unreash(variable
[3]) /*ControlFlowContext::_unreash*/ = variable
[4];
339 variable
[3] = variable
[0];
340 variable
[4] = CALL_control_flow___ControlFlowContext___already_unreash( variable
[1] /*p*/)( variable
[1] /*p*/) /*ControlFlowContext::already_unreash*/;
341 ATTR_control_flow___ControlFlowContext____already_unreash(variable
[3]) /*ControlFlowContext::_already_unreash*/ = variable
[4];
342 variable
[3] = variable
[0];
343 variable
[4] = CALL_control_flow___ControlFlowContext___base_block( variable
[1] /*p*/)( variable
[1] /*p*/) /*ControlFlowContext::base_block*/;
344 ATTR_control_flow___ControlFlowContext____base_block(variable
[3]) /*ControlFlowContext::_base_block*/ = variable
[4];
345 return_label11
: while(false);
346 init_table
[VAL2OBJ(variable
[0])->vft
[INIT_TABLE_POS_ControlFlowContext
].i
] = 1;
347 tracehead
= trace
.prev
;
350 void control_flow___PNode___accept_control_flow(val_t self
, val_t param0
) {
351 struct trace_t trace
= {NULL
, NULL
, 124, LOCATE_control_flow___PNode___accept_control_flow
};
353 void **closurevariable
= NULL
;
354 trace
.prev
= tracehead
; tracehead
= &trace
;
355 trace
.file
= LOCATE_control_flow
;
357 variable
[1] = param0
;
358 variable
[3] = variable
[0];
359 CALL_syntax_base___PNode___accept_abs_syntax_visitor(variable
[3])(variable
[3], variable
[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
360 return_label12
: while(false);
361 tracehead
= trace
.prev
;
364 void control_flow___AMethPropdef___accept_control_flow(val_t self
, val_t param0
) {
365 struct trace_t trace
= {NULL
, NULL
, 131, LOCATE_control_flow___AMethPropdef___accept_control_flow
};
367 void **closurevariable
= NULL
;
368 trace
.prev
= tracehead
; tracehead
= &trace
;
369 trace
.file
= LOCATE_control_flow
;
371 variable
[1] = param0
;
372 variable
[3] = NEW_ControlFlowContext_control_flow___ControlFlowContext___init(); /*new ControlFlowContext*/
373 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::control_flow_ctx=*/;
374 CALL_SUPER_control_flow___AMethPropdef___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AMethPropdef::accept_control_flow*/;
375 return_label13
: while(false);
376 tracehead
= trace
.prev
;
379 void control_flow___AConcreteMethPropdef___accept_control_flow(val_t self
, val_t param0
) {
380 struct trace_t trace
= {NULL
, NULL
, 139, LOCATE_control_flow___AConcreteMethPropdef___accept_control_flow
};
382 void **closurevariable
= NULL
;
383 trace
.prev
= tracehead
; tracehead
= &trace
;
384 trace
.file
= LOCATE_control_flow
;
386 variable
[1] = param0
;
387 CALL_SUPER_control_flow___AConcreteMethPropdef___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AConcreteMethPropdef::accept_control_flow*/;
388 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
389 variable
[3] = CALL_control_flow___ControlFlowContext___unreash(variable
[3])(variable
[3]) /*ControlFlowContext::unreash*/;
390 variable
[3] = TAG_Bool((variable
[3])==( TAG_Bool(false)));
391 variable
[4] = variable
[3];
392 if (UNTAG_Bool(variable
[4])) { /* and */
393 variable
[4] = variable
[0];
394 variable
[4] = CALL_syntax_base___AMethPropdef___method(variable
[4])(variable
[4]) /*AMethPropdef::method*/;
395 variable
[4] = CALL_static_type___MMLocalProperty___signature(variable
[4])(variable
[4]) /*MMLocalProperty::signature*/;
396 variable
[4] = CALL_static_type___MMSignature___return_type(variable
[4])(variable
[4]) /*MMSignature::return_type*/;
397 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))))));
399 variable
[3] = variable
[4];
400 if (UNTAG_Bool(variable
[3])) { /*if*/
401 variable
[3] = variable
[0];
402 variable
[4] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of function (a 'return' with a value was expected)."), TAG_Int(78)); /*new String*/
403 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*AbsSyntaxVisitor::error*/;
405 return_label14
: while(false);
406 tracehead
= trace
.prev
;
409 void control_flow___AVardeclExpr___accept_control_flow(val_t self
, val_t param0
) {
410 struct trace_t trace
= {NULL
, NULL
, 149, LOCATE_control_flow___AVardeclExpr___accept_control_flow
};
412 void **closurevariable
= NULL
;
413 trace
.prev
= tracehead
; tracehead
= &trace
;
414 trace
.file
= LOCATE_control_flow
;
416 variable
[1] = param0
;
417 CALL_SUPER_control_flow___AVardeclExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AVardeclExpr::accept_control_flow*/;
418 variable
[3] = variable
[0];
419 variable
[3] = CALL_parser_nodes___AVardeclExpr___n_expr(variable
[3])(variable
[3]) /*AVardeclExpr::n_expr*/;
420 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
421 if (UNTAG_Bool(variable
[3])) { /*if*/
422 variable
[3] = variable
[0];
423 variable
[3] = CALL_syntax_base___AVardeclExpr___variable(variable
[3])(variable
[3]) /*AVardeclExpr::variable*/;
424 CALL_control_flow___ControlFlowVisitor___mark_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::mark_is_set*/;
426 return_label15
: while(false);
427 tracehead
= trace
.prev
;
430 void control_flow___ABlockExpr___accept_control_flow(val_t self
, val_t param0
) {
431 struct trace_t trace
= {NULL
, NULL
, 157, LOCATE_control_flow___ABlockExpr___accept_control_flow
};
433 void **closurevariable
= NULL
;
434 trace
.prev
= tracehead
; tracehead
= &trace
;
435 trace
.file
= LOCATE_control_flow
;
437 variable
[1] = param0
;
438 variable
[3] = variable
[0];
439 variable
[3] = CALL_parser_nodes___ABlockExpr___n_expr(variable
[3])(variable
[3]) /*ABlockExpr::n_expr*/;
440 variable
[3] = CALL_abstract_collection___Collection___iterator(variable
[3])(variable
[3]) /*List::iterator*/;
441 while (true) { /*for*/
442 variable
[4] = CALL_abstract_collection___Iterator___is_ok(variable
[3])(variable
[3]) /*ListIterator::is_ok*/;
443 if (!UNTAG_Bool(variable
[4])) break; /*for*/
444 variable
[4] = CALL_abstract_collection___Iterator___item(variable
[3])(variable
[3]) /*ListIterator::item*/;
445 variable
[5] = variable
[4];
446 variable
[6] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
447 variable
[6] = CALL_control_flow___ControlFlowContext___unreash(variable
[6])(variable
[6]) /*ControlFlowContext::unreash*/;
448 variable
[7] = variable
[6];
449 if (UNTAG_Bool(variable
[7])) { /* and */
450 variable
[7] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
451 variable
[7] = CALL_control_flow___ControlFlowContext___already_unreash(variable
[7])(variable
[7]) /*ControlFlowContext::already_unreash*/;
452 variable
[7] = TAG_Bool(!UNTAG_Bool(variable
[7]));
454 variable
[6] = variable
[7];
455 if (UNTAG_Bool(variable
[6])) { /*if*/
456 variable
[6] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
457 CALL_control_flow___ControlFlowContext___already_unreash__eq(variable
[6])(variable
[6], TAG_Bool(true)) /*ControlFlowContext::already_unreash=*/;
458 variable
[6] = NEW_String_string___String___with_native(BOX_NativeString("Warning: unreachable statement."), TAG_Int(31)); /*new String*/
459 CALL_syntax_base___AbsSyntaxVisitor___warning( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[5] /*e*/, variable
[6]) /*AbsSyntaxVisitor::warning*/;
461 CALL_parser_prod___Visitor___visit( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[5] /*e*/) /*ControlFlowVisitor::visit*/;
462 continue_17
: while(0);
463 CALL_abstract_collection___Iterator___next(variable
[3])(variable
[3]) /*ListIterator::next*/;
466 return_label16
: while(false);
467 tracehead
= trace
.prev
;
470 void control_flow___AReturnExpr___accept_control_flow(val_t self
, val_t param0
) {
471 struct trace_t trace
= {NULL
, NULL
, 170, LOCATE_control_flow___AReturnExpr___accept_control_flow
};
473 void **closurevariable
= NULL
;
474 trace
.prev
= tracehead
; tracehead
= &trace
;
475 trace
.file
= LOCATE_control_flow
;
477 variable
[1] = param0
;
478 CALL_SUPER_control_flow___AReturnExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AReturnExpr::accept_control_flow*/;
479 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
480 CALL_control_flow___ControlFlowContext___unreash__eq(variable
[3])(variable
[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
481 return_label18
: while(false);
482 tracehead
= trace
.prev
;
485 val_t
control_flow___ABlockControler___block(val_t self
) {
486 struct trace_t trace
= {NULL
, NULL
, 179, LOCATE_control_flow___ABlockControler___block
};
487 val_t
*variable
= NULL
;
488 void **closurevariable
= NULL
;
489 trace
.prev
= tracehead
; tracehead
= &trace
;
490 trace
.file
= LOCATE_control_flow
;
491 tracehead
= trace
.prev
;
492 return ATTR_control_flow___ABlockControler____block( self
) /*ABlockControler::_block*/;
494 void control_flow___ABreakExpr___accept_control_flow(val_t self
, val_t param0
) {
495 struct trace_t trace
= {NULL
, NULL
, 184, LOCATE_control_flow___ABreakExpr___accept_control_flow
};
497 void **closurevariable
= NULL
;
498 trace
.prev
= tracehead
; tracehead
= &trace
;
499 trace
.file
= LOCATE_control_flow
;
501 variable
[1] = param0
;
502 CALL_SUPER_control_flow___ABreakExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super ABreakExpr::accept_control_flow*/;
503 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
504 variable
[4] = CALL_control_flow___ControlFlowContext___base_block(variable
[4])(variable
[4]) /*ControlFlowContext::base_block*/;
505 variable
[3] = variable
[4];
506 variable
[4] = TAG_Bool(( variable
[3] /*block*/ == NIT_NULL
/*null*/) || (( variable
[3] /*block*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*block*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*block*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*block*/)( variable
[3] /*block*/, NIT_NULL
/*null*/) /*Object::==*/)))));
507 if (UNTAG_Bool(variable
[4])) { /*if*/
508 variable
[4] = variable
[0];
509 variable
[5] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'break' statment outside block."), TAG_Int(45)); /*new String*/
510 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4], variable
[5]) /*AbsSyntaxVisitor::error*/;
513 variable
[4] = variable
[0];
514 ATTR_control_flow___ABlockControler____block(variable
[4]) /*ABlockControler::_block*/ = variable
[3] /*block*/;
515 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
516 CALL_control_flow___ControlFlowContext___unreash__eq(variable
[4])(variable
[4], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
517 return_label19
: while(false);
518 tracehead
= trace
.prev
;
521 void control_flow___AContinueExpr___accept_control_flow(val_t self
, val_t param0
) {
522 struct trace_t trace
= {NULL
, NULL
, 198, LOCATE_control_flow___AContinueExpr___accept_control_flow
};
524 void **closurevariable
= NULL
;
525 trace
.prev
= tracehead
; tracehead
= &trace
;
526 trace
.file
= LOCATE_control_flow
;
528 variable
[1] = param0
;
529 CALL_SUPER_control_flow___AContinueExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AContinueExpr::accept_control_flow*/;
530 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
531 variable
[4] = CALL_control_flow___ControlFlowContext___base_block(variable
[4])(variable
[4]) /*ControlFlowContext::base_block*/;
532 variable
[3] = variable
[4];
533 variable
[4] = TAG_Bool(( variable
[3] /*block*/ == NIT_NULL
/*null*/) || (( variable
[3] /*block*/ != NIT_NULL
) && ((CALL_kernel___Object_____eqeq( variable
[3] /*block*/)==kernel___Object_____eqeq
)?
(IS_EQUAL_NN( variable
[3] /*block*/, NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable
[3] /*block*/)( variable
[3] /*block*/, NIT_NULL
/*null*/) /*Object::==*/)))));
534 if (UNTAG_Bool(variable
[4])) { /*if*/
535 variable
[4] = variable
[0];
536 variable
[5] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'continue' outside block."), TAG_Int(39)); /*new String*/
537 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4], variable
[5]) /*AbsSyntaxVisitor::error*/;
540 variable
[4] = variable
[0];
541 ATTR_control_flow___ABlockControler____block(variable
[4]) /*ABlockControler::_block*/ = variable
[3] /*block*/;
542 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
543 CALL_control_flow___ControlFlowContext___unreash__eq(variable
[4])(variable
[4], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
544 return_label20
: while(false);
545 tracehead
= trace
.prev
;
548 void control_flow___AAbortExpr___accept_control_flow(val_t self
, val_t param0
) {
549 struct trace_t trace
= {NULL
, NULL
, 212, LOCATE_control_flow___AAbortExpr___accept_control_flow
};
551 void **closurevariable
= NULL
;
552 trace
.prev
= tracehead
; tracehead
= &trace
;
553 trace
.file
= LOCATE_control_flow
;
555 variable
[1] = param0
;
556 CALL_SUPER_control_flow___AAbortExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AAbortExpr::accept_control_flow*/;
557 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
558 CALL_control_flow___ControlFlowContext___unreash__eq(variable
[3])(variable
[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
559 return_label21
: while(false);
560 tracehead
= trace
.prev
;
563 void control_flow___AClosureCallExpr___accept_control_flow(val_t self
, val_t param0
) {
564 struct trace_t trace
= {NULL
, NULL
, 220, LOCATE_control_flow___AClosureCallExpr___accept_control_flow
};
566 void **closurevariable
= NULL
;
567 trace
.prev
= tracehead
; tracehead
= &trace
;
568 trace
.file
= LOCATE_control_flow
;
570 variable
[1] = param0
;
571 CALL_SUPER_control_flow___AClosureCallExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AClosureCallExpr::accept_control_flow*/;
572 variable
[3] = variable
[0];
573 variable
[3] = CALL_syntax_base___AClosureCallExpr___variable(variable
[3])(variable
[3]) /*AClosureCallExpr::variable*/;
574 variable
[3] = CALL_syntax_base___ClosureVariable___closure(variable
[3])(variable
[3]) /*ClosureVariable::closure*/;
575 variable
[3] = CALL_static_type___MMClosure___is_break(variable
[3])(variable
[3]) /*MMClosure::is_break*/;
576 if (UNTAG_Bool(variable
[3])) { /*if*/
577 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
578 CALL_control_flow___ControlFlowContext___unreash__eq(variable
[3])(variable
[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
580 return_label22
: while(false);
581 tracehead
= trace
.prev
;
584 void control_flow___AIfExpr___accept_control_flow(val_t self
, val_t param0
) {
585 struct trace_t trace
= {NULL
, NULL
, 228, LOCATE_control_flow___AIfExpr___accept_control_flow
};
587 void **closurevariable
= NULL
;
588 trace
.prev
= tracehead
; tracehead
= &trace
;
589 trace
.file
= LOCATE_control_flow
;
591 variable
[1] = param0
;
592 variable
[3] = variable
[0];
593 variable
[3] = CALL_parser_nodes___AIfExpr___n_expr(variable
[3])(variable
[3]) /*AIfExpr::n_expr*/;
594 CALL_parser_prod___Visitor___visit( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::visit*/;
595 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
596 variable
[3] = variable
[4];
597 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
598 variable
[4] = CALL_control_flow___ControlFlowContext___sub(variable
[4])(variable
[4]) /*ControlFlowContext::sub*/;
599 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
600 variable
[4] = variable
[0];
601 variable
[4] = CALL_parser_nodes___AIfExpr___n_then(variable
[4])(variable
[4]) /*AIfExpr::n_then*/;
602 CALL_parser_prod___Visitor___visit( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4]) /*ControlFlowVisitor::visit*/;
603 variable
[4] = variable
[0];
604 variable
[4] = CALL_parser_nodes___AIfExpr___n_else(variable
[4])(variable
[4]) /*AIfExpr::n_else*/;
605 variable
[4] = TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))));
606 if (UNTAG_Bool(variable
[4])) { /*if*/
607 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
609 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
610 variable
[4] = variable
[5];
611 variable
[5] = CALL_control_flow___ControlFlowContext___sub( variable
[3] /*old_control_flow_ctx*/)( variable
[3] /*old_control_flow_ctx*/) /*ControlFlowContext::sub*/;
612 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[5]) /*ControlFlowVisitor::control_flow_ctx=*/;
613 variable
[5] = variable
[0];
614 variable
[5] = CALL_parser_nodes___AIfExpr___n_else(variable
[5])(variable
[5]) /*AIfExpr::n_else*/;
615 CALL_parser_prod___Visitor___visit( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[5]) /*ControlFlowVisitor::visit*/;
616 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
617 variable
[5] = CALL_control_flow___ControlFlowContext___unreash(variable
[5])(variable
[5]) /*ControlFlowContext::unreash*/;
618 variable
[6] = variable
[5];
619 if (UNTAG_Bool(variable
[6])) { /* and */
620 variable
[6] = CALL_control_flow___ControlFlowContext___unreash( variable
[4] /*then_control_flow_ctx*/)( variable
[4] /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
622 variable
[5] = variable
[6];
623 CALL_control_flow___ControlFlowContext___unreash__eq( variable
[3] /*old_control_flow_ctx*/)( variable
[3] /*old_control_flow_ctx*/, variable
[5]) /*ControlFlowContext::unreash=*/;
624 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
625 variable
[5] = CALL_control_flow___ControlFlowContext___unreash(variable
[5])(variable
[5]) /*ControlFlowContext::unreash*/;
626 if (UNTAG_Bool(variable
[5])) { /*if*/
627 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4] /*then_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
629 variable
[5] = CALL_control_flow___ControlFlowContext___unreash( variable
[4] /*then_control_flow_ctx*/)( variable
[4] /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
630 if (UNTAG_Bool(variable
[5])) { /*if*/
631 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
632 variable
[4] = variable
[5] /*then_control_flow_ctx=*/;
634 variable
[5] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
635 variable
[5] = CALL_control_flow___ControlFlowContext___set_variables(variable
[5])(variable
[5]) /*ControlFlowContext::set_variables*/;
636 variable
[5] = CALL_abstract_collection___Collection___iterator(variable
[5])(variable
[5]) /*HashSet::iterator*/;
637 while (true) { /*for*/
638 variable
[6] = CALL_abstract_collection___Iterator___is_ok(variable
[5])(variable
[5]) /*Iterator::is_ok*/;
639 if (!UNTAG_Bool(variable
[6])) break; /*for*/
640 variable
[6] = CALL_abstract_collection___Iterator___item(variable
[5])(variable
[5]) /*Iterator::item*/;
641 variable
[7] = variable
[6];
642 variable
[8] = CALL_control_flow___ControlFlowContext___is_set( variable
[4] /*then_control_flow_ctx*/)( variable
[4] /*then_control_flow_ctx*/, variable
[7] /*variable*/) /*ControlFlowContext::is_set*/;
643 if (UNTAG_Bool(variable
[8])) { /*if*/
644 variable
[8] = CALL_control_flow___ControlFlowContext___set_variables( variable
[3] /*old_control_flow_ctx*/)( variable
[3] /*old_control_flow_ctx*/) /*ControlFlowContext::set_variables*/;
645 CALL_abstract_collection___SimpleCollection___add(variable
[8])(variable
[8], variable
[7] /*variable*/) /*HashSet::add*/;
647 continue_24
: while(0);
648 CALL_abstract_collection___Iterator___next(variable
[5])(variable
[5]) /*Iterator::next*/;
651 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
653 return_label23
: while(false);
654 tracehead
= trace
.prev
;
657 void control_flow___AControlableBlock___accept_control_flow(val_t self
, val_t param0
) {
658 struct trace_t trace
= {NULL
, NULL
, 265, LOCATE_control_flow___AControlableBlock___accept_control_flow
};
660 void **closurevariable
= NULL
;
661 trace
.prev
= tracehead
; tracehead
= &trace
;
662 trace
.file
= LOCATE_control_flow
;
664 variable
[1] = param0
;
665 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
666 variable
[3] = variable
[4];
667 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
668 variable
[4] = CALL_control_flow___ControlFlowContext___sub(variable
[4])(variable
[4]) /*ControlFlowContext::sub*/;
669 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
670 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
671 variable
[5] = variable
[0];
672 CALL_control_flow___ControlFlowContext___base_block__eq(variable
[4])(variable
[4], variable
[5]) /*ControlFlowContext::base_block=*/;
673 CALL_SUPER_control_flow___AControlableBlock___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AControlableBlock::accept_control_flow*/;
674 variable
[4] = variable
[0];
675 CALL_control_flow___AControlableBlock___check_control_flow(variable
[4])(variable
[4], variable
[1] /*v*/) /*AControlableBlock::check_control_flow*/;
676 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
677 return_label25
: while(false);
678 tracehead
= trace
.prev
;
681 void control_flow___AControlableBlock___check_control_flow(val_t self
, val_t param0
) {
682 struct trace_t trace
= {NULL
, NULL
, 283, LOCATE_control_flow___AControlableBlock___check_control_flow
};
684 void **closurevariable
= NULL
;
685 trace
.prev
= tracehead
; tracehead
= &trace
;
686 trace
.file
= LOCATE_control_flow
;
688 variable
[1] = param0
;
689 return_label26
: while(false);
690 tracehead
= trace
.prev
;
693 void control_flow___AVarExpr___accept_control_flow(val_t self
, val_t param0
) {
694 struct trace_t trace
= {NULL
, NULL
, 295, LOCATE_control_flow___AVarExpr___accept_control_flow
};
696 void **closurevariable
= NULL
;
697 trace
.prev
= tracehead
; tracehead
= &trace
;
698 trace
.file
= LOCATE_control_flow
;
700 variable
[1] = param0
;
701 CALL_SUPER_control_flow___AVarExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AVarExpr::accept_control_flow*/;
702 variable
[3] = variable
[0];
703 variable
[4] = variable
[0];
704 variable
[4] = CALL_syntax_base___AVarFormExpr___variable(variable
[4])(variable
[4]) /*AVarFormExpr::variable*/;
705 CALL_control_flow___ControlFlowVisitor___check_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*ControlFlowVisitor::check_is_set*/;
706 return_label27
: while(false);
707 tracehead
= trace
.prev
;
710 void control_flow___AVarAssignExpr___accept_control_flow(val_t self
, val_t param0
) {
711 struct trace_t trace
= {NULL
, NULL
, 303, LOCATE_control_flow___AVarAssignExpr___accept_control_flow
};
713 void **closurevariable
= NULL
;
714 trace
.prev
= tracehead
; tracehead
= &trace
;
715 trace
.file
= LOCATE_control_flow
;
717 variable
[1] = param0
;
718 CALL_SUPER_control_flow___AVarAssignExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AVarAssignExpr::accept_control_flow*/;
719 variable
[3] = variable
[0];
720 variable
[3] = CALL_syntax_base___AVarFormExpr___variable(variable
[3])(variable
[3]) /*AVarFormExpr::variable*/;
721 CALL_control_flow___ControlFlowVisitor___mark_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::mark_is_set*/;
722 return_label28
: while(false);
723 tracehead
= trace
.prev
;
726 void control_flow___AVarReassignExpr___accept_control_flow(val_t self
, val_t param0
) {
727 struct trace_t trace
= {NULL
, NULL
, 311, LOCATE_control_flow___AVarReassignExpr___accept_control_flow
};
729 void **closurevariable
= NULL
;
730 trace
.prev
= tracehead
; tracehead
= &trace
;
731 trace
.file
= LOCATE_control_flow
;
733 variable
[1] = param0
;
734 CALL_SUPER_control_flow___AVarReassignExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AVarReassignExpr::accept_control_flow*/;
735 variable
[3] = variable
[0];
736 variable
[4] = variable
[0];
737 variable
[4] = CALL_syntax_base___AVarFormExpr___variable(variable
[4])(variable
[4]) /*AVarFormExpr::variable*/;
738 CALL_control_flow___ControlFlowVisitor___check_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*ControlFlowVisitor::check_is_set*/;
739 variable
[3] = variable
[0];
740 variable
[3] = CALL_syntax_base___AVarFormExpr___variable(variable
[3])(variable
[3]) /*AVarFormExpr::variable*/;
741 CALL_control_flow___ControlFlowVisitor___mark_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::mark_is_set*/;
742 return_label29
: while(false);
743 tracehead
= trace
.prev
;
746 void control_flow___AClosureDecl___accept_control_flow(val_t self
, val_t param0
) {
747 struct trace_t trace
= {NULL
, NULL
, 320, LOCATE_control_flow___AClosureDecl___accept_control_flow
};
749 void **closurevariable
= NULL
;
750 trace
.prev
= tracehead
; tracehead
= &trace
;
751 trace
.file
= LOCATE_control_flow
;
753 variable
[1] = param0
;
754 variable
[3] = variable
[0];
755 variable
[3] = CALL_parser_nodes___AClosureDecl___n_expr(variable
[3])(variable
[3]) /*AClosureDecl::n_expr*/;
756 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
757 if (UNTAG_Bool(variable
[3])) { /*if*/
758 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
759 variable
[3] = variable
[4];
760 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
761 variable
[4] = CALL_control_flow___ControlFlowContext___sub(variable
[4])(variable
[4]) /*ControlFlowContext::sub*/;
762 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
763 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
764 variable
[5] = variable
[0];
765 variable
[5] = CALL_parser_nodes___AClosureDecl___n_expr(variable
[5])(variable
[5]) /*AClosureDecl::n_expr*/;
766 CALL_control_flow___ControlFlowContext___base_block__eq(variable
[4])(variable
[4], variable
[5]) /*ControlFlowContext::base_block=*/;
767 CALL_SUPER_control_flow___AClosureDecl___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AClosureDecl::accept_control_flow*/;
768 variable
[4] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
769 variable
[4] = CALL_control_flow___ControlFlowContext___unreash(variable
[4])(variable
[4]) /*ControlFlowContext::unreash*/;
770 variable
[4] = TAG_Bool((variable
[4])==( TAG_Bool(false)));
771 if (UNTAG_Bool(variable
[4])) { /*if*/
772 variable
[4] = variable
[0];
773 variable
[4] = CALL_syntax_base___PClosureDecl___variable(variable
[4])(variable
[4]) /*PClosureDecl::variable*/;
774 variable
[4] = CALL_syntax_base___ClosureVariable___closure(variable
[4])(variable
[4]) /*ClosureVariable::closure*/;
775 variable
[4] = CALL_static_type___MMClosure___signature(variable
[4])(variable
[4]) /*MMClosure::signature*/;
776 variable
[4] = CALL_static_type___MMSignature___return_type(variable
[4])(variable
[4]) /*MMSignature::return_type*/;
777 variable
[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[4] == NIT_NULL
/*null*/) || ((variable
[4] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[4])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[4], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[4])(variable
[4], NIT_NULL
/*null*/) /*Object::==*/)))))));
778 if (UNTAG_Bool(variable
[4])) { /*if*/
779 variable
[4] = variable
[0];
780 variable
[5] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of bloc (a 'continue' with a value was expected)."), TAG_Int(76)); /*new String*/
781 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4], variable
[5]) /*AbsSyntaxVisitor::error*/;
783 variable
[4] = variable
[0];
784 variable
[4] = CALL_syntax_base___PClosureDecl___variable(variable
[4])(variable
[4]) /*PClosureDecl::variable*/;
785 variable
[4] = CALL_syntax_base___ClosureVariable___closure(variable
[4])(variable
[4]) /*ClosureVariable::closure*/;
786 variable
[4] = CALL_static_type___MMClosure___is_break(variable
[4])(variable
[4]) /*MMClosure::is_break*/;
787 if (UNTAG_Bool(variable
[4])) { /*if*/
788 variable
[4] = variable
[0];
789 variable
[5] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of break bloc (an 'abort' was expected)."), TAG_Int(67)); /*new String*/
790 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[4], variable
[5]) /*AbsSyntaxVisitor::error*/;
794 CALL_control_flow___ControlFlowVisitor___control_flow_ctx__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
796 return_label30
: while(false);
797 tracehead
= trace
.prev
;
800 void control_flow___AClosureDef___accept_control_flow(val_t self
, val_t param0
) {
801 struct trace_t trace
= {NULL
, NULL
, 345, LOCATE_control_flow___AClosureDef___accept_control_flow
};
803 void **closurevariable
= NULL
;
804 trace
.prev
= tracehead
; tracehead
= &trace
;
805 trace
.file
= LOCATE_control_flow
;
807 variable
[1] = param0
;
808 variable
[3] = variable
[0];
809 variable
[3] = CALL_syntax_base___PClosureDef___variables(variable
[3])(variable
[3]) /*PClosureDef::variables*/;
810 variable
[3] = CALL_abstract_collection___Collection___iterator(variable
[3])(variable
[3]) /*AbstractArray::iterator*/;
811 while (true) { /*for*/
812 variable
[4] = CALL_abstract_collection___Iterator___is_ok(variable
[3])(variable
[3]) /*ArrayIterator::is_ok*/;
813 if (!UNTAG_Bool(variable
[4])) break; /*for*/
814 variable
[4] = CALL_abstract_collection___Iterator___item(variable
[3])(variable
[3]) /*ArrayIterator::item*/;
815 variable
[5] = variable
[4];
816 CALL_control_flow___ControlFlowVisitor___mark_is_set( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[5] /*va*/) /*ControlFlowVisitor::mark_is_set*/;
817 continue_32
: while(0);
818 CALL_abstract_collection___Iterator___next(variable
[3])(variable
[3]) /*ArrayIterator::next*/;
821 CALL_SUPER_control_flow___AClosureDef___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AClosureDef::accept_control_flow*/;
822 return_label31
: while(false);
823 tracehead
= trace
.prev
;
826 void control_flow___AClosureDef___check_control_flow(val_t self
, val_t param0
) {
827 struct trace_t trace
= {NULL
, NULL
, 351, LOCATE_control_flow___AClosureDef___check_control_flow
};
829 void **closurevariable
= NULL
;
830 trace
.prev
= tracehead
; tracehead
= &trace
;
831 trace
.file
= LOCATE_control_flow
;
833 variable
[1] = param0
;
834 variable
[3] = CALL_control_flow___ControlFlowVisitor___control_flow_ctx( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
835 variable
[3] = CALL_control_flow___ControlFlowContext___unreash(variable
[3])(variable
[3]) /*ControlFlowContext::unreash*/;
836 variable
[3] = TAG_Bool((variable
[3])==( TAG_Bool(false)));
837 if (UNTAG_Bool(variable
[3])) { /*if*/
838 variable
[3] = variable
[0];
839 variable
[3] = CALL_syntax_base___PClosureDef___closure(variable
[3])(variable
[3]) /*PClosureDef::closure*/;
840 variable
[3] = CALL_static_type___MMClosure___signature(variable
[3])(variable
[3]) /*MMClosure::signature*/;
841 variable
[3] = CALL_static_type___MMSignature___return_type(variable
[3])(variable
[3]) /*MMSignature::return_type*/;
842 variable
[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable
[3] == NIT_NULL
/*null*/) || ((variable
[3] != NIT_NULL
) && ((CALL_kernel___Object_____eqeq(variable
[3])==kernel___Object_____eqeq
)?
(IS_EQUAL_NN(variable
[3], NIT_NULL
/*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable
[3])(variable
[3], NIT_NULL
/*null*/) /*Object::==*/)))))));
843 if (UNTAG_Bool(variable
[3])) { /*if*/
844 variable
[3] = variable
[0];
845 variable
[4] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of bloc (a 'continue' with a value was expected)."), TAG_Int(76)); /*new String*/
846 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*AbsSyntaxVisitor::error*/;
848 variable
[3] = variable
[0];
849 variable
[3] = CALL_syntax_base___PClosureDef___closure(variable
[3])(variable
[3]) /*PClosureDef::closure*/;
850 variable
[3] = CALL_static_type___MMClosure___is_break(variable
[3])(variable
[3]) /*MMClosure::is_break*/;
851 if (UNTAG_Bool(variable
[3])) { /*if*/
852 variable
[3] = variable
[0];
853 variable
[4] = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of break bloc (a 'break' was expected)."), TAG_Int(66)); /*new String*/
854 CALL_syntax_base___AbsSyntaxVisitor___error( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*AbsSyntaxVisitor::error*/;
858 return_label33
: while(false);
859 tracehead
= trace
.prev
;
862 void control_flow___AOnceExpr___accept_control_flow(val_t self
, val_t param0
) {
863 struct trace_t trace
= {NULL
, NULL
, 364, LOCATE_control_flow___AOnceExpr___accept_control_flow
};
865 void **closurevariable
= NULL
;
866 trace
.prev
= tracehead
; tracehead
= &trace
;
867 trace
.file
= LOCATE_control_flow
;
869 variable
[1] = param0
;
870 variable
[3] = CALL_control_flow___ControlFlowVisitor___once_count( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::once_count*/;
871 variable
[3] = TAG_Bool(UNTAG_Int(variable
[3])>UNTAG_Int( TAG_Int(0)));
872 if (UNTAG_Bool(variable
[3])) { /*if*/
873 variable
[3] = variable
[0];
874 variable
[4] = NEW_String_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)); /*new String*/
875 CALL_syntax_base___AbsSyntaxVisitor___warning( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3], variable
[4]) /*AbsSyntaxVisitor::warning*/;
877 variable
[3] = CALL_control_flow___ControlFlowVisitor___once_count( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::once_count*/;
878 variable
[3] = TAG_Int(UNTAG_Int(variable
[3])+UNTAG_Int( TAG_Int(1)));
879 CALL_control_flow___ControlFlowVisitor___once_count__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::once_count=*/;
880 CALL_SUPER_control_flow___AOnceExpr___accept_control_flow(variable
[0])(variable
[0], variable
[1]) /*super AOnceExpr::accept_control_flow*/;
881 variable
[3] = CALL_control_flow___ControlFlowVisitor___once_count( variable
[1] /*v*/)( variable
[1] /*v*/) /*ControlFlowVisitor::once_count*/;
882 variable
[3] = TAG_Int(UNTAG_Int(variable
[3])-UNTAG_Int( TAG_Int(1)));
883 CALL_control_flow___ControlFlowVisitor___once_count__eq( variable
[1] /*v*/)( variable
[1] /*v*/, variable
[3]) /*ControlFlowVisitor::once_count=*/;
884 return_label34
: while(false);
885 tracehead
= trace
.prev
;