compile: clean compiling_global.nit
[nit.git] / c_src / control_flow._sep.c
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};
5 val_t variable[6];
6 void **closurevariable = NULL;
7 trace.prev = tracehead; tracehead = &trace;
8 trace.file = LOCATE_control_flow;
9 variable[0] = self;
10 variable[1] = param0;
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;
20 return;
21 }
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};
24 val_t variable[2];
25 void **closurevariable = NULL;
26 trace.prev = tracehead; tracehead = &trace;
27 trace.file = LOCATE_control_flow;
28 variable[0] = self;
29 variable[1] = TAG_Bool(false);
30 goto return_label1;
31 return_label1: while(false);
32 tracehead = trace.prev;
33 return variable[1];
34 }
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};
37 val_t variable[2];
38 void **closurevariable = NULL;
39 trace.prev = tracehead; tracehead = &trace;
40 trace.file = LOCATE_control_flow;
41 variable[0] = self;
42 variable[1] = TAG_Bool(true);
43 goto return_label2;
44 return_label2: while(false);
45 tracehead = trace.prev;
46 return variable[1];
47 }
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};
50 val_t variable[4];
51 void **closurevariable = NULL;
52 trace.prev = tracehead; tracehead = &trace;
53 trace.file = LOCATE_control_flow;
54 variable[0] = self;
55 variable[1] = param0;
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*/;
60 }
61 return_label3: while(false);
62 tracehead = trace.prev;
63 return;
64 }
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*/;
73 }
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;
82 return;
83 }
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*/;
92 }
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;
101 return;
102 }
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};
105 val_t variable[11];
106 void **closurevariable = NULL;
107 trace.prev = tracehead; tracehead = &trace;
108 trace.file = LOCATE_control_flow;
109 variable[0] = self;
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]));
119 }
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);
151 }
152 break_5: while(0);
153 }
154 return_label4: while(false);
155 tracehead = trace.prev;
156 return;
157 }
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};
160 val_t variable[4];
161 void **closurevariable = NULL;
162 trace.prev = tracehead; tracehead = &trace;
163 trace.file = LOCATE_control_flow;
164 variable[0] = self;
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;
172 return;
173 }
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};
176 val_t variable[4];
177 void **closurevariable = NULL;
178 trace.prev = tracehead; tracehead = &trace;
179 trace.file = LOCATE_control_flow;
180 variable[0] = self;
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;
188 return;
189 }
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*/;
198 }
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*/;
207 }
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;
216 return;
217 }
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*/;
226 }
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;
235 return;
236 }
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*/;
245 }
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;
254 return;
255 }
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*/;
264 }
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};
267 val_t variable[6];
268 void **closurevariable = NULL;
269 trace.prev = tracehead; tracehead = &trace;
270 trace.file = LOCATE_control_flow;
271 variable[0] = self;
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*/;
286 }
287 variable[4] = variable[5];
288 }
289 variable[3] = variable[4];
290 variable[2] = variable[3];
291 goto return_label8;
292 return_label8: while(false);
293 tracehead = trace.prev;
294 return variable[2];
295 }
296 val_t control_flow___ControlFlowContext___sub(val_t self) {
297 struct trace_t trace = {NULL, NULL, 103, LOCATE_control_flow___ControlFlowContext___sub};
298 val_t variable[4];
299 void **closurevariable = NULL;
300 trace.prev = tracehead; tracehead = &trace;
301 trace.file = LOCATE_control_flow;
302 variable[0] = self;
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];
307 goto return_label9;
308 return_label9: while(false);
309 tracehead = trace.prev;
310 return variable[1];
311 }
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};
314 val_t variable[2];
315 void **closurevariable = NULL;
316 trace.prev = tracehead; tracehead = &trace;
317 trace.file = LOCATE_control_flow;
318 variable[0] = self;
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;
323 return;
324 }
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};
327 val_t variable[5];
328 void **closurevariable = NULL;
329 trace.prev = tracehead; tracehead = &trace;
330 trace.file = LOCATE_control_flow;
331 variable[0] = self;
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;
348 return;
349 }
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};
352 val_t variable[4];
353 void **closurevariable = NULL;
354 trace.prev = tracehead; tracehead = &trace;
355 trace.file = LOCATE_control_flow;
356 variable[0] = self;
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;
362 return;
363 }
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};
366 val_t variable[4];
367 void **closurevariable = NULL;
368 trace.prev = tracehead; tracehead = &trace;
369 trace.file = LOCATE_control_flow;
370 variable[0] = self;
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;
377 return;
378 }
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};
381 val_t variable[5];
382 void **closurevariable = NULL;
383 trace.prev = tracehead; tracehead = &trace;
384 trace.file = LOCATE_control_flow;
385 variable[0] = self;
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::==*/)))))));
398 }
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*/;
404 }
405 return_label14: while(false);
406 tracehead = trace.prev;
407 return;
408 }
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};
411 val_t variable[4];
412 void **closurevariable = NULL;
413 trace.prev = tracehead; tracehead = &trace;
414 trace.file = LOCATE_control_flow;
415 variable[0] = self;
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*/;
425 }
426 return_label15: while(false);
427 tracehead = trace.prev;
428 return;
429 }
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};
432 val_t variable[8];
433 void **closurevariable = NULL;
434 trace.prev = tracehead; tracehead = &trace;
435 trace.file = LOCATE_control_flow;
436 variable[0] = self;
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]));
453 }
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*/;
460 }
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*/;
464 }
465 break_17: while(0);
466 return_label16: while(false);
467 tracehead = trace.prev;
468 return;
469 }
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};
472 val_t variable[4];
473 void **closurevariable = NULL;
474 trace.prev = tracehead; tracehead = &trace;
475 trace.file = LOCATE_control_flow;
476 variable[0] = self;
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;
483 return;
484 }
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*/;
493 }
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};
496 val_t variable[6];
497 void **closurevariable = NULL;
498 trace.prev = tracehead; tracehead = &trace;
499 trace.file = LOCATE_control_flow;
500 variable[0] = self;
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*/;
511 goto return_label19;
512 }
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;
519 return;
520 }
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};
523 val_t variable[6];
524 void **closurevariable = NULL;
525 trace.prev = tracehead; tracehead = &trace;
526 trace.file = LOCATE_control_flow;
527 variable[0] = self;
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*/;
538 goto return_label20;
539 }
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;
546 return;
547 }
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};
550 val_t variable[4];
551 void **closurevariable = NULL;
552 trace.prev = tracehead; tracehead = &trace;
553 trace.file = LOCATE_control_flow;
554 variable[0] = self;
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;
561 return;
562 }
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};
565 val_t variable[4];
566 void **closurevariable = NULL;
567 trace.prev = tracehead; tracehead = &trace;
568 trace.file = LOCATE_control_flow;
569 variable[0] = self;
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=*/;
579 }
580 return_label22: while(false);
581 tracehead = trace.prev;
582 return;
583 }
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};
586 val_t variable[9];
587 void **closurevariable = NULL;
588 trace.prev = tracehead; tracehead = &trace;
589 trace.file = LOCATE_control_flow;
590 variable[0] = self;
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=*/;
608 } else { /*if*/
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*/;
621 }
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=*/;
628 }
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=*/;
633 }
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*/;
646 }
647 continue_24: while(0);
648 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
649 }
650 break_24: while(0);
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=*/;
652 }
653 return_label23: while(false);
654 tracehead = trace.prev;
655 return;
656 }
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};
659 val_t variable[6];
660 void **closurevariable = NULL;
661 trace.prev = tracehead; tracehead = &trace;
662 trace.file = LOCATE_control_flow;
663 variable[0] = self;
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;
679 return;
680 }
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};
683 val_t variable[3];
684 void **closurevariable = NULL;
685 trace.prev = tracehead; tracehead = &trace;
686 trace.file = LOCATE_control_flow;
687 variable[0] = self;
688 variable[1] = param0;
689 return_label26: while(false);
690 tracehead = trace.prev;
691 return;
692 }
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};
695 val_t variable[5];
696 void **closurevariable = NULL;
697 trace.prev = tracehead; tracehead = &trace;
698 trace.file = LOCATE_control_flow;
699 variable[0] = self;
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;
708 return;
709 }
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};
712 val_t variable[4];
713 void **closurevariable = NULL;
714 trace.prev = tracehead; tracehead = &trace;
715 trace.file = LOCATE_control_flow;
716 variable[0] = self;
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;
724 return;
725 }
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};
728 val_t variable[5];
729 void **closurevariable = NULL;
730 trace.prev = tracehead; tracehead = &trace;
731 trace.file = LOCATE_control_flow;
732 variable[0] = self;
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;
744 return;
745 }
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};
748 val_t variable[6];
749 void **closurevariable = NULL;
750 trace.prev = tracehead; tracehead = &trace;
751 trace.file = LOCATE_control_flow;
752 variable[0] = self;
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*/;
782 } else { /*if*/
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*/;
791 }
792 }
793 }
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=*/;
795 }
796 return_label30: while(false);
797 tracehead = trace.prev;
798 return;
799 }
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};
802 val_t variable[6];
803 void **closurevariable = NULL;
804 trace.prev = tracehead; tracehead = &trace;
805 trace.file = LOCATE_control_flow;
806 variable[0] = self;
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*/;
819 }
820 break_32: while(0);
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;
824 return;
825 }
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};
828 val_t variable[5];
829 void **closurevariable = NULL;
830 trace.prev = tracehead; tracehead = &trace;
831 trace.file = LOCATE_control_flow;
832 variable[0] = self;
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*/;
847 } else { /*if*/
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*/;
855 }
856 }
857 }
858 return_label33: while(false);
859 tracehead = trace.prev;
860 return;
861 }
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};
864 val_t variable[5];
865 void **closurevariable = NULL;
866 trace.prev = tracehead; tracehead = &trace;
867 trace.file = LOCATE_control_flow;
868 variable[0] = self;
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*/;
876 }
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;
886 return;
887 }