Update c_src to handle default closures.
[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] = ((syntax_base___MMSrcModule___node_t)CALL(variable[4],COLOR_syntax_base___MMSrcModule___node))(variable[4]) /*MMSrcModule::node*/;
17 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable[3] /*tv*/,COLOR_parser_prod___Visitor___visit))( 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) && ((((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[1] /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[1] /*n*/,COLOR_kernel___Object_____eqeq))( variable[1] /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
57 if (UNTAG_Bool(variable[3])) { /*if*/
58 variable[3] = variable[0];
59 ((control_flow___PNode___accept_control_flow_t)CALL( variable[1] /*n*/,COLOR_control_flow___PNode___accept_control_flow))( 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] = ((control_flow___Variable___must_be_set_t)CALL( variable[2] /*v*/,COLOR_control_flow___Variable___must_be_set))( 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] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL(variable[5],COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))(variable[5]) /*ControlFlowVisitor::control_flow_ctx*/;
117 variable[5] = ((control_flow___ControlFlowContext___is_set_t)CALL(variable[5],COLOR_control_flow___ControlFlowContext___is_set))(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_String_string___String___init(); /*new 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 ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[7]) /*String::append*/;
127 variable[8] = variable[2] /*v*/;
128 variable[8] = ((string___String___to_s_t)CALL(variable[8],COLOR_string___Object___to_s))(variable[8]) /*String::to_s*/;
129 ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[8]) /*String::append*/;
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 ((string___String___append_t)CALL(variable[5],COLOR_abstract_collection___IndexedCollection___append))(variable[5], variable[10]) /*String::append*/;
133 ((syntax_base___AbsSyntaxVisitor___error_t)CALL(variable[4],COLOR_syntax_base___AbsSyntaxVisitor___error))(variable[4], variable[1] /*n*/, variable[5]) /*AbsSyntaxVisitor::error*/;
134 variable[5] = variable[0];
135 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL(variable[5],COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))(variable[5]) /*ControlFlowVisitor::control_flow_ctx*/;
136 variable[4] = variable[5];
137 while (true) { /*while*/
138 variable[5] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[4] /*cfc*/ == NIT_NULL /*null*/) || (( variable[4] /*cfc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[4] /*cfc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[4] /*cfc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[4] /*cfc*/,COLOR_kernel___Object_____eqeq))( variable[4] /*cfc*/, NIT_NULL /*null*/) /*Object::==*/)))))));
139 if (!UNTAG_Bool(variable[5])) break; /* while*/
140 variable[5] = variable[0];
141 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("cfc: "), TAG_Int(5)); /*new String*/
142 variable[7] = ((control_flow___ControlFlowContext___set_variables_t)CALL( variable[4] /*cfc*/,COLOR_control_flow___ControlFlowContext___set_variables))( variable[4] /*cfc*/) /*ControlFlowContext::set_variables*/;
143 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)); /*new String*/
144 variable[7] = ((string___Collection___join_t)CALL(variable[7],COLOR_string___Collection___join))(variable[7], variable[8]) /*Collection::join*/;
145 variable[6] = ((string___String_____plus_t)CALL(variable[6],COLOR_string___String_____plus))(variable[6], variable[7]) /*String::+*/;
146 ((file___Object___print_t)CALL(variable[5],COLOR_file___Object___print))(variable[5], variable[6]) /*Object::print*/;
147 variable[5] = ((control_flow___ControlFlowContext___prev_t)CALL( variable[4] /*cfc*/,COLOR_control_flow___ControlFlowContext___prev))( variable[4] /*cfc*/) /*ControlFlowContext::prev*/;
148 variable[4] = variable[5] /*cfc=*/;
149 continue_5: while(0);
150 }
151 break_5: while(0);
152 }
153 return_label4: while(false);
154 tracehead = trace.prev;
155 return;
156 }
157 void control_flow___ControlFlowVisitor___mark_is_set(val_t self, val_t param0) {
158 struct trace_t trace = {NULL, NULL, 72, LOCATE_control_flow___ControlFlowVisitor___mark_is_set};
159 val_t variable[4];
160 void **closurevariable = NULL;
161 trace.prev = tracehead; tracehead = &trace;
162 trace.file = LOCATE_control_flow;
163 variable[0] = self;
164 variable[1] = param0;
165 variable[3] = variable[0];
166 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL(variable[3],COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))(variable[3]) /*ControlFlowVisitor::control_flow_ctx*/;
167 variable[3] = ((control_flow___ControlFlowContext___set_variables_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___set_variables))(variable[3]) /*ControlFlowContext::set_variables*/;
168 ((hash___HashSet___add_t)CALL(variable[3],COLOR_abstract_collection___SimpleCollection___add))(variable[3], variable[1] /*v*/) /*HashSet::add*/;
169 return_label6: while(false);
170 tracehead = trace.prev;
171 return;
172 }
173 void control_flow___ControlFlowVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
174 struct trace_t trace = {NULL, NULL, 77, LOCATE_control_flow___ControlFlowVisitor___init};
175 val_t variable[4];
176 void **closurevariable = NULL;
177 trace.prev = tracehead; tracehead = &trace;
178 trace.file = LOCATE_control_flow;
179 variable[0] = self;
180 variable[1] = param0;
181 variable[2] = param1;
182 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowVisitor].i]) return;
183 ((syntax_base___AbsSyntaxVisitor___init_t)CALL(variable[0],COLOR_syntax_base___AbsSyntaxVisitor___init))(variable[0], variable[1], variable[2], init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
184 return_label7: while(false);
185 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowVisitor].i] = 1;
186 tracehead = trace.prev;
187 return;
188 }
189 val_t control_flow___ControlFlowContext___prev(val_t self) {
190 struct trace_t trace = {NULL, NULL, 81, LOCATE_control_flow___ControlFlowContext___prev};
191 val_t *variable = NULL;
192 void **closurevariable = NULL;
193 trace.prev = tracehead; tracehead = &trace;
194 trace.file = LOCATE_control_flow;
195 tracehead = trace.prev;
196 return ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/;
197 }
198 val_t control_flow___ControlFlowContext___unreash(val_t self) {
199 struct trace_t trace = {NULL, NULL, 84, LOCATE_control_flow___ControlFlowContext___unreash};
200 val_t *variable = NULL;
201 void **closurevariable = NULL;
202 trace.prev = tracehead; tracehead = &trace;
203 trace.file = LOCATE_control_flow;
204 tracehead = trace.prev;
205 return ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/;
206 }
207 void control_flow___ControlFlowContext___unreash__eq(val_t self, val_t param0) {
208 struct trace_t trace = {NULL, NULL, 84, LOCATE_control_flow___ControlFlowContext___unreash__eq};
209 val_t *variable = NULL;
210 void **closurevariable = NULL;
211 trace.prev = tracehead; tracehead = &trace;
212 trace.file = LOCATE_control_flow;
213 ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/ = param0;
214 tracehead = trace.prev;
215 return;
216 }
217 val_t control_flow___ControlFlowContext___already_unreash(val_t self) {
218 struct trace_t trace = {NULL, NULL, 87, LOCATE_control_flow___ControlFlowContext___already_unreash};
219 val_t *variable = NULL;
220 void **closurevariable = NULL;
221 trace.prev = tracehead; tracehead = &trace;
222 trace.file = LOCATE_control_flow;
223 tracehead = trace.prev;
224 return ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/;
225 }
226 void control_flow___ControlFlowContext___already_unreash__eq(val_t self, val_t param0) {
227 struct trace_t trace = {NULL, NULL, 87, LOCATE_control_flow___ControlFlowContext___already_unreash__eq};
228 val_t *variable = NULL;
229 void **closurevariable = NULL;
230 trace.prev = tracehead; tracehead = &trace;
231 trace.file = LOCATE_control_flow;
232 ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/ = param0;
233 tracehead = trace.prev;
234 return;
235 }
236 val_t control_flow___ControlFlowContext___base_block(val_t self) {
237 struct trace_t trace = {NULL, NULL, 91, LOCATE_control_flow___ControlFlowContext___base_block};
238 val_t *variable = NULL;
239 void **closurevariable = NULL;
240 trace.prev = tracehead; tracehead = &trace;
241 trace.file = LOCATE_control_flow;
242 tracehead = trace.prev;
243 return ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/;
244 }
245 void control_flow___ControlFlowContext___base_block__eq(val_t self, val_t param0) {
246 struct trace_t trace = {NULL, NULL, 91, LOCATE_control_flow___ControlFlowContext___base_block__eq};
247 val_t *variable = NULL;
248 void **closurevariable = NULL;
249 trace.prev = tracehead; tracehead = &trace;
250 trace.file = LOCATE_control_flow;
251 ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/ = param0;
252 tracehead = trace.prev;
253 return;
254 }
255 val_t control_flow___ControlFlowContext___set_variables(val_t self) {
256 struct trace_t trace = {NULL, NULL, 94, LOCATE_control_flow___ControlFlowContext___set_variables};
257 val_t *variable = NULL;
258 void **closurevariable = NULL;
259 trace.prev = tracehead; tracehead = &trace;
260 trace.file = LOCATE_control_flow;
261 tracehead = trace.prev;
262 return ATTR_control_flow___ControlFlowContext____set_variables( self) /*ControlFlowContext::_set_variables*/;
263 }
264 val_t control_flow___ControlFlowContext___is_set(val_t self, val_t param0) {
265 struct trace_t trace = {NULL, NULL, 97, LOCATE_control_flow___ControlFlowContext___is_set};
266 val_t variable[6];
267 void **closurevariable = NULL;
268 trace.prev = tracehead; tracehead = &trace;
269 trace.file = LOCATE_control_flow;
270 variable[0] = self;
271 variable[1] = param0;
272 variable[3] = variable[0];
273 variable[3] = ATTR_control_flow___ControlFlowContext____set_variables(variable[3]) /*ControlFlowContext::_set_variables*/;
274 variable[3] = ((hash___HashSet___has_t)CALL(variable[3],COLOR_abstract_collection___Collection___has))(variable[3], variable[1] /*v*/) /*HashSet::has*/;
275 variable[4] = variable[3];
276 if (!UNTAG_Bool(variable[4])) { /* or */
277 variable[4] = variable[0];
278 variable[4] = ATTR_control_flow___ControlFlowContext____prev(variable[4]) /*ControlFlowContext::_prev*/;
279 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4], NIT_NULL /*null*/) /*Object::==*/)))))));
280 variable[5] = variable[4];
281 if (UNTAG_Bool(variable[5])) { /* and */
282 variable[5] = variable[0];
283 variable[5] = ATTR_control_flow___ControlFlowContext____prev(variable[5]) /*ControlFlowContext::_prev*/;
284 variable[5] = ((control_flow___ControlFlowContext___is_set_t)CALL(variable[5],COLOR_control_flow___ControlFlowContext___is_set))(variable[5], variable[1] /*v*/) /*ControlFlowContext::is_set*/;
285 }
286 variable[4] = variable[5];
287 }
288 variable[3] = variable[4];
289 variable[2] = variable[3];
290 goto return_label8;
291 return_label8: while(false);
292 tracehead = trace.prev;
293 return variable[2];
294 }
295 val_t control_flow___ControlFlowContext___sub(val_t self) {
296 struct trace_t trace = {NULL, NULL, 103, LOCATE_control_flow___ControlFlowContext___sub};
297 val_t variable[4];
298 void **closurevariable = NULL;
299 trace.prev = tracehead; tracehead = &trace;
300 trace.file = LOCATE_control_flow;
301 variable[0] = self;
302 variable[2] = variable[0];
303 variable[3] = NEW_ControlFlowContext_control_flow___ControlFlowContext___with_prev(variable[2]); /*new ControlFlowContext*/
304 variable[2] = variable[3];
305 variable[1] = variable[2];
306 goto return_label9;
307 return_label9: while(false);
308 tracehead = trace.prev;
309 return variable[1];
310 }
311 void control_flow___ControlFlowContext___init(val_t self, int* init_table) {
312 struct trace_t trace = {NULL, NULL, 108, LOCATE_control_flow___ControlFlowContext___init};
313 val_t variable[2];
314 void **closurevariable = NULL;
315 trace.prev = tracehead; tracehead = &trace;
316 trace.file = LOCATE_control_flow;
317 variable[0] = self;
318 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
319 return_label10: while(false);
320 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
321 tracehead = trace.prev;
322 return;
323 }
324 void control_flow___ControlFlowContext___with_prev(val_t self, val_t param0, int* init_table) {
325 struct trace_t trace = {NULL, NULL, 112, LOCATE_control_flow___ControlFlowContext___with_prev};
326 val_t variable[5];
327 void **closurevariable = NULL;
328 trace.prev = tracehead; tracehead = &trace;
329 trace.file = LOCATE_control_flow;
330 variable[0] = self;
331 variable[1] = param0;
332 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
333 variable[3] = variable[0];
334 ATTR_control_flow___ControlFlowContext____prev(variable[3]) /*ControlFlowContext::_prev*/ = variable[1] /*p*/;
335 variable[3] = variable[0];
336 variable[4] = ((control_flow___ControlFlowContext___unreash_t)CALL( variable[1] /*p*/,COLOR_control_flow___ControlFlowContext___unreash))( variable[1] /*p*/) /*ControlFlowContext::unreash*/;
337 ATTR_control_flow___ControlFlowContext____unreash(variable[3]) /*ControlFlowContext::_unreash*/ = variable[4];
338 variable[3] = variable[0];
339 variable[4] = ((control_flow___ControlFlowContext___already_unreash_t)CALL( variable[1] /*p*/,COLOR_control_flow___ControlFlowContext___already_unreash))( variable[1] /*p*/) /*ControlFlowContext::already_unreash*/;
340 ATTR_control_flow___ControlFlowContext____already_unreash(variable[3]) /*ControlFlowContext::_already_unreash*/ = variable[4];
341 variable[3] = variable[0];
342 variable[4] = ((control_flow___ControlFlowContext___base_block_t)CALL( variable[1] /*p*/,COLOR_control_flow___ControlFlowContext___base_block))( variable[1] /*p*/) /*ControlFlowContext::base_block*/;
343 ATTR_control_flow___ControlFlowContext____base_block(variable[3]) /*ControlFlowContext::_base_block*/ = variable[4];
344 return_label11: while(false);
345 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
346 tracehead = trace.prev;
347 return;
348 }
349 void control_flow___PNode___accept_control_flow(val_t self, val_t param0) {
350 struct trace_t trace = {NULL, NULL, 124, LOCATE_control_flow___PNode___accept_control_flow};
351 val_t variable[4];
352 void **closurevariable = NULL;
353 trace.prev = tracehead; tracehead = &trace;
354 trace.file = LOCATE_control_flow;
355 variable[0] = self;
356 variable[1] = param0;
357 variable[3] = variable[0];
358 ((syntax_base___PNode___accept_abs_syntax_visitor_t)CALL(variable[3],COLOR_syntax_base___PNode___accept_abs_syntax_visitor))(variable[3], variable[1] /*v*/) /*PNode::accept_abs_syntax_visitor*/;
359 return_label12: while(false);
360 tracehead = trace.prev;
361 return;
362 }
363 void control_flow___AMethPropdef___accept_control_flow(val_t self, val_t param0) {
364 struct trace_t trace = {NULL, NULL, 131, LOCATE_control_flow___AMethPropdef___accept_control_flow};
365 val_t variable[4];
366 void **closurevariable = NULL;
367 trace.prev = tracehead; tracehead = &trace;
368 trace.file = LOCATE_control_flow;
369 variable[0] = self;
370 variable[1] = param0;
371 variable[3] = NEW_ControlFlowContext_control_flow___ControlFlowContext___init(); /*new ControlFlowContext*/
372 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::control_flow_ctx=*/;
373 ((control_flow___AMethPropdef___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AMethPropdef___accept_control_flow))(variable[0], variable[1]) /*super AMethPropdef::accept_control_flow*/;
374 return_label13: while(false);
375 tracehead = trace.prev;
376 return;
377 }
378 void control_flow___AConcreteMethPropdef___accept_control_flow(val_t self, val_t param0) {
379 struct trace_t trace = {NULL, NULL, 139, LOCATE_control_flow___AConcreteMethPropdef___accept_control_flow};
380 val_t variable[5];
381 void **closurevariable = NULL;
382 trace.prev = tracehead; tracehead = &trace;
383 trace.file = LOCATE_control_flow;
384 variable[0] = self;
385 variable[1] = param0;
386 ((control_flow___AConcreteMethPropdef___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AConcreteMethPropdef___accept_control_flow))(variable[0], variable[1]) /*super AConcreteMethPropdef::accept_control_flow*/;
387 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
388 variable[3] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___unreash))(variable[3]) /*ControlFlowContext::unreash*/;
389 variable[3] = TAG_Bool((variable[3])==( TAG_Bool(false)));
390 variable[4] = variable[3];
391 if (UNTAG_Bool(variable[4])) { /* and */
392 variable[4] = variable[0];
393 variable[4] = ((syntax_base___AMethPropdef___method_t)CALL(variable[4],COLOR_syntax_base___AMethPropdef___method))(variable[4]) /*AMethPropdef::method*/;
394 variable[4] = ((static_type___MMLocalProperty___signature_t)CALL(variable[4],COLOR_static_type___MMLocalProperty___signature))(variable[4]) /*MMLocalProperty::signature*/;
395 variable[4] = ((static_type___MMSignature___return_type_t)CALL(variable[4],COLOR_static_type___MMSignature___return_type))(variable[4]) /*MMSignature::return_type*/;
396 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4], NIT_NULL /*null*/) /*Object::==*/)))))));
397 }
398 variable[3] = variable[4];
399 if (UNTAG_Bool(variable[3])) { /*if*/
400 variable[3] = variable[0];
401 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*/
402 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
403 }
404 return_label14: while(false);
405 tracehead = trace.prev;
406 return;
407 }
408 void control_flow___AVardeclExpr___accept_control_flow(val_t self, val_t param0) {
409 struct trace_t trace = {NULL, NULL, 149, LOCATE_control_flow___AVardeclExpr___accept_control_flow};
410 val_t variable[4];
411 void **closurevariable = NULL;
412 trace.prev = tracehead; tracehead = &trace;
413 trace.file = LOCATE_control_flow;
414 variable[0] = self;
415 variable[1] = param0;
416 ((control_flow___AVardeclExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AVardeclExpr___accept_control_flow))(variable[0], variable[1]) /*super AVardeclExpr::accept_control_flow*/;
417 variable[3] = variable[0];
418 variable[3] = ((parser_nodes___AVardeclExpr___n_expr_t)CALL(variable[3],COLOR_parser_nodes___AVardeclExpr___n_expr))(variable[3]) /*AVardeclExpr::n_expr*/;
419 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
420 if (UNTAG_Bool(variable[3])) { /*if*/
421 variable[3] = variable[0];
422 variable[3] = ((syntax_base___AVardeclExpr___variable_t)CALL(variable[3],COLOR_syntax_base___AVardeclExpr___variable))(variable[3]) /*AVardeclExpr::variable*/;
423 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::mark_is_set*/;
424 }
425 return_label15: while(false);
426 tracehead = trace.prev;
427 return;
428 }
429 void control_flow___ABlockExpr___accept_control_flow(val_t self, val_t param0) {
430 struct trace_t trace = {NULL, NULL, 157, LOCATE_control_flow___ABlockExpr___accept_control_flow};
431 val_t variable[8];
432 void **closurevariable = NULL;
433 trace.prev = tracehead; tracehead = &trace;
434 trace.file = LOCATE_control_flow;
435 variable[0] = self;
436 variable[1] = param0;
437 variable[3] = variable[0];
438 variable[3] = ((parser_nodes___ABlockExpr___n_expr_t)CALL(variable[3],COLOR_parser_nodes___ABlockExpr___n_expr))(variable[3]) /*ABlockExpr::n_expr*/;
439 variable[3] = ((list___List___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*List::iterator*/;
440 while (true) { /*for*/
441 variable[4] = ((list___ListIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ListIterator::is_ok*/;
442 if (!UNTAG_Bool(variable[4])) break; /*for*/
443 variable[4] = ((list___ListIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ListIterator::item*/;
444 variable[5] = variable[4];
445 variable[6] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
446 variable[6] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[6],COLOR_control_flow___ControlFlowContext___unreash))(variable[6]) /*ControlFlowContext::unreash*/;
447 variable[7] = variable[6];
448 if (UNTAG_Bool(variable[7])) { /* and */
449 variable[7] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
450 variable[7] = ((control_flow___ControlFlowContext___already_unreash_t)CALL(variable[7],COLOR_control_flow___ControlFlowContext___already_unreash))(variable[7]) /*ControlFlowContext::already_unreash*/;
451 variable[7] = TAG_Bool(!UNTAG_Bool(variable[7]));
452 }
453 variable[6] = variable[7];
454 if (UNTAG_Bool(variable[6])) { /*if*/
455 variable[6] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
456 ((control_flow___ControlFlowContext___already_unreash__eq_t)CALL(variable[6],COLOR_control_flow___ControlFlowContext___already_unreash__eq))(variable[6], TAG_Bool(true)) /*ControlFlowContext::already_unreash=*/;
457 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Warning: unreachable statement."), TAG_Int(31)); /*new String*/
458 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable[1] /*v*/, variable[5] /*e*/, variable[6]) /*AbsSyntaxVisitor::warning*/;
459 }
460 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[5] /*e*/) /*ControlFlowVisitor::visit*/;
461 continue_17: while(0);
462 ((list___ListIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ListIterator::next*/;
463 }
464 break_17: while(0);
465 return_label16: while(false);
466 tracehead = trace.prev;
467 return;
468 }
469 void control_flow___AReturnExpr___accept_control_flow(val_t self, val_t param0) {
470 struct trace_t trace = {NULL, NULL, 170, LOCATE_control_flow___AReturnExpr___accept_control_flow};
471 val_t variable[4];
472 void **closurevariable = NULL;
473 trace.prev = tracehead; tracehead = &trace;
474 trace.file = LOCATE_control_flow;
475 variable[0] = self;
476 variable[1] = param0;
477 ((control_flow___AReturnExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AReturnExpr___accept_control_flow))(variable[0], variable[1]) /*super AReturnExpr::accept_control_flow*/;
478 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
479 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___unreash__eq))(variable[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
480 return_label18: while(false);
481 tracehead = trace.prev;
482 return;
483 }
484 val_t control_flow___ABlockControler___block(val_t self) {
485 struct trace_t trace = {NULL, NULL, 179, LOCATE_control_flow___ABlockControler___block};
486 val_t *variable = NULL;
487 void **closurevariable = NULL;
488 trace.prev = tracehead; tracehead = &trace;
489 trace.file = LOCATE_control_flow;
490 tracehead = trace.prev;
491 return ATTR_control_flow___ABlockControler____block( self) /*ABlockControler::_block*/;
492 }
493 void control_flow___ABreakExpr___accept_control_flow(val_t self, val_t param0) {
494 struct trace_t trace = {NULL, NULL, 184, LOCATE_control_flow___ABreakExpr___accept_control_flow};
495 val_t variable[6];
496 void **closurevariable = NULL;
497 trace.prev = tracehead; tracehead = &trace;
498 trace.file = LOCATE_control_flow;
499 variable[0] = self;
500 variable[1] = param0;
501 ((control_flow___ABreakExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___ABreakExpr___accept_control_flow))(variable[0], variable[1]) /*super ABreakExpr::accept_control_flow*/;
502 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
503 variable[4] = ((control_flow___ControlFlowContext___base_block_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___base_block))(variable[4]) /*ControlFlowContext::base_block*/;
504 variable[3] = variable[4];
505 variable[4] = TAG_Bool(( variable[3] /*block*/ == NIT_NULL /*null*/) || (( variable[3] /*block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*block*/,COLOR_kernel___Object_____eqeq))( variable[3] /*block*/, NIT_NULL /*null*/) /*Object::==*/)))));
506 if (UNTAG_Bool(variable[4])) { /*if*/
507 variable[4] = variable[0];
508 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'break' statment outside block."), TAG_Int(45)); /*new String*/
509 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
510 goto return_label19;
511 }
512 variable[4] = variable[0];
513 ATTR_control_flow___ABlockControler____block(variable[4]) /*ABlockControler::_block*/ = variable[3] /*block*/;
514 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
515 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___unreash__eq))(variable[4], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
516 return_label19: while(false);
517 tracehead = trace.prev;
518 return;
519 }
520 void control_flow___AContinueExpr___accept_control_flow(val_t self, val_t param0) {
521 struct trace_t trace = {NULL, NULL, 198, LOCATE_control_flow___AContinueExpr___accept_control_flow};
522 val_t variable[6];
523 void **closurevariable = NULL;
524 trace.prev = tracehead; tracehead = &trace;
525 trace.file = LOCATE_control_flow;
526 variable[0] = self;
527 variable[1] = param0;
528 ((control_flow___AContinueExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AContinueExpr___accept_control_flow))(variable[0], variable[1]) /*super AContinueExpr::accept_control_flow*/;
529 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
530 variable[4] = ((control_flow___ControlFlowContext___base_block_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___base_block))(variable[4]) /*ControlFlowContext::base_block*/;
531 variable[3] = variable[4];
532 variable[4] = TAG_Bool(( variable[3] /*block*/ == NIT_NULL /*null*/) || (( variable[3] /*block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable[3] /*block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable[3] /*block*/,COLOR_kernel___Object_____eqeq))( variable[3] /*block*/, NIT_NULL /*null*/) /*Object::==*/)))));
533 if (UNTAG_Bool(variable[4])) { /*if*/
534 variable[4] = variable[0];
535 variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'continue' outside block."), TAG_Int(39)); /*new String*/
536 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
537 goto return_label20;
538 }
539 variable[4] = variable[0];
540 ATTR_control_flow___ABlockControler____block(variable[4]) /*ABlockControler::_block*/ = variable[3] /*block*/;
541 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
542 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___unreash__eq))(variable[4], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
543 return_label20: while(false);
544 tracehead = trace.prev;
545 return;
546 }
547 void control_flow___AAbortExpr___accept_control_flow(val_t self, val_t param0) {
548 struct trace_t trace = {NULL, NULL, 212, LOCATE_control_flow___AAbortExpr___accept_control_flow};
549 val_t variable[4];
550 void **closurevariable = NULL;
551 trace.prev = tracehead; tracehead = &trace;
552 trace.file = LOCATE_control_flow;
553 variable[0] = self;
554 variable[1] = param0;
555 ((control_flow___AAbortExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AAbortExpr___accept_control_flow))(variable[0], variable[1]) /*super AAbortExpr::accept_control_flow*/;
556 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
557 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___unreash__eq))(variable[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
558 return_label21: while(false);
559 tracehead = trace.prev;
560 return;
561 }
562 void control_flow___AClosureCallExpr___accept_control_flow(val_t self, val_t param0) {
563 struct trace_t trace = {NULL, NULL, 220, LOCATE_control_flow___AClosureCallExpr___accept_control_flow};
564 val_t variable[4];
565 void **closurevariable = NULL;
566 trace.prev = tracehead; tracehead = &trace;
567 trace.file = LOCATE_control_flow;
568 variable[0] = self;
569 variable[1] = param0;
570 ((control_flow___AClosureCallExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AClosureCallExpr___accept_control_flow))(variable[0], variable[1]) /*super AClosureCallExpr::accept_control_flow*/;
571 variable[3] = variable[0];
572 variable[3] = ((syntax_base___AClosureCallExpr___variable_t)CALL(variable[3],COLOR_syntax_base___AClosureCallExpr___variable))(variable[3]) /*AClosureCallExpr::variable*/;
573 variable[3] = ((syntax_base___ClosureVariable___closure_t)CALL(variable[3],COLOR_syntax_base___ClosureVariable___closure))(variable[3]) /*ClosureVariable::closure*/;
574 variable[3] = ((static_type___MMClosure___is_break_t)CALL(variable[3],COLOR_static_type___MMClosure___is_break))(variable[3]) /*MMClosure::is_break*/;
575 if (UNTAG_Bool(variable[3])) { /*if*/
576 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
577 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___unreash__eq))(variable[3], TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
578 }
579 return_label22: while(false);
580 tracehead = trace.prev;
581 return;
582 }
583 void control_flow___AIfExpr___accept_control_flow(val_t self, val_t param0) {
584 struct trace_t trace = {NULL, NULL, 228, LOCATE_control_flow___AIfExpr___accept_control_flow};
585 val_t variable[9];
586 void **closurevariable = NULL;
587 trace.prev = tracehead; tracehead = &trace;
588 trace.file = LOCATE_control_flow;
589 variable[0] = self;
590 variable[1] = param0;
591 variable[3] = variable[0];
592 variable[3] = ((parser_nodes___AIfExpr___n_expr_t)CALL(variable[3],COLOR_parser_nodes___AIfExpr___n_expr))(variable[3]) /*AIfExpr::n_expr*/;
593 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::visit*/;
594 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
595 variable[3] = variable[4];
596 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
597 variable[4] = ((control_flow___ControlFlowContext___sub_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___sub))(variable[4]) /*ControlFlowContext::sub*/;
598 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
599 variable[4] = variable[0];
600 variable[4] = ((parser_nodes___AIfExpr___n_then_t)CALL(variable[4],COLOR_parser_nodes___AIfExpr___n_then))(variable[4]) /*AIfExpr::n_then*/;
601 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[4]) /*ControlFlowVisitor::visit*/;
602 variable[4] = variable[0];
603 variable[4] = ((parser_nodes___AIfExpr___n_else_t)CALL(variable[4],COLOR_parser_nodes___AIfExpr___n_else))(variable[4]) /*AIfExpr::n_else*/;
604 variable[4] = TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4], NIT_NULL /*null*/) /*Object::==*/)))));
605 if (UNTAG_Bool(variable[4])) { /*if*/
606 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
607 } else { /*if*/
608 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
609 variable[4] = variable[5];
610 variable[5] = ((control_flow___ControlFlowContext___sub_t)CALL( variable[3] /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___sub))( variable[3] /*old_control_flow_ctx*/) /*ControlFlowContext::sub*/;
611 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[5]) /*ControlFlowVisitor::control_flow_ctx=*/;
612 variable[5] = variable[0];
613 variable[5] = ((parser_nodes___AIfExpr___n_else_t)CALL(variable[5],COLOR_parser_nodes___AIfExpr___n_else))(variable[5]) /*AIfExpr::n_else*/;
614 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable[1] /*v*/,COLOR_parser_prod___Visitor___visit))( variable[1] /*v*/, variable[5]) /*ControlFlowVisitor::visit*/;
615 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
616 variable[5] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[5],COLOR_control_flow___ControlFlowContext___unreash))(variable[5]) /*ControlFlowContext::unreash*/;
617 variable[6] = variable[5];
618 if (UNTAG_Bool(variable[6])) { /* and */
619 variable[6] = ((control_flow___ControlFlowContext___unreash_t)CALL( variable[4] /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash))( variable[4] /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
620 }
621 variable[5] = variable[6];
622 ((control_flow___ControlFlowContext___unreash__eq_t)CALL( variable[3] /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash__eq))( variable[3] /*old_control_flow_ctx*/, variable[5]) /*ControlFlowContext::unreash=*/;
623 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
624 variable[5] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[5],COLOR_control_flow___ControlFlowContext___unreash))(variable[5]) /*ControlFlowContext::unreash*/;
625 if (UNTAG_Bool(variable[5])) { /*if*/
626 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[4] /*then_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
627 }
628 variable[5] = ((control_flow___ControlFlowContext___unreash_t)CALL( variable[4] /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash))( variable[4] /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
629 if (UNTAG_Bool(variable[5])) { /*if*/
630 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
631 variable[4] = variable[5] /*then_control_flow_ctx=*/;
632 }
633 variable[5] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
634 variable[5] = ((control_flow___ControlFlowContext___set_variables_t)CALL(variable[5],COLOR_control_flow___ControlFlowContext___set_variables))(variable[5]) /*ControlFlowContext::set_variables*/;
635 variable[5] = ((hash___HashSet___iterator_t)CALL(variable[5],COLOR_abstract_collection___Collection___iterator))(variable[5]) /*HashSet::iterator*/;
636 while (true) { /*for*/
637 variable[6] = ((abstract_collection___Iterator___is_ok_t)CALL(variable[5],COLOR_abstract_collection___Iterator___is_ok))(variable[5]) /*Iterator::is_ok*/;
638 if (!UNTAG_Bool(variable[6])) break; /*for*/
639 variable[6] = ((abstract_collection___Iterator___item_t)CALL(variable[5],COLOR_abstract_collection___Iterator___item))(variable[5]) /*Iterator::item*/;
640 variable[7] = variable[6];
641 variable[8] = ((control_flow___ControlFlowContext___is_set_t)CALL( variable[4] /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___is_set))( variable[4] /*then_control_flow_ctx*/, variable[7] /*variable*/) /*ControlFlowContext::is_set*/;
642 if (UNTAG_Bool(variable[8])) { /*if*/
643 variable[8] = ((control_flow___ControlFlowContext___set_variables_t)CALL( variable[3] /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___set_variables))( variable[3] /*old_control_flow_ctx*/) /*ControlFlowContext::set_variables*/;
644 ((hash___HashSet___add_t)CALL(variable[8],COLOR_abstract_collection___SimpleCollection___add))(variable[8], variable[7] /*variable*/) /*HashSet::add*/;
645 }
646 continue_24: while(0);
647 ((abstract_collection___Iterator___next_t)CALL(variable[5],COLOR_abstract_collection___Iterator___next))(variable[5]) /*Iterator::next*/;
648 }
649 break_24: while(0);
650 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
651 }
652 return_label23: while(false);
653 tracehead = trace.prev;
654 return;
655 }
656 void control_flow___AControlableBlock___accept_control_flow(val_t self, val_t param0) {
657 struct trace_t trace = {NULL, NULL, 265, LOCATE_control_flow___AControlableBlock___accept_control_flow};
658 val_t variable[6];
659 void **closurevariable = NULL;
660 trace.prev = tracehead; tracehead = &trace;
661 trace.file = LOCATE_control_flow;
662 variable[0] = self;
663 variable[1] = param0;
664 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
665 variable[3] = variable[4];
666 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
667 variable[4] = ((control_flow___ControlFlowContext___sub_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___sub))(variable[4]) /*ControlFlowContext::sub*/;
668 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
669 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
670 variable[5] = variable[0];
671 ((control_flow___ControlFlowContext___base_block__eq_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___base_block__eq))(variable[4], variable[5]) /*ControlFlowContext::base_block=*/;
672 ((control_flow___AControlableBlock___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AControlableBlock___accept_control_flow))(variable[0], variable[1]) /*super AControlableBlock::accept_control_flow*/;
673 variable[4] = variable[0];
674 ((control_flow___AControlableBlock___check_control_flow_t)CALL(variable[4],COLOR_control_flow___AControlableBlock___check_control_flow))(variable[4], variable[1] /*v*/) /*AControlableBlock::check_control_flow*/;
675 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
676 return_label25: while(false);
677 tracehead = trace.prev;
678 return;
679 }
680 void control_flow___AControlableBlock___check_control_flow(val_t self, val_t param0) {
681 struct trace_t trace = {NULL, NULL, 283, LOCATE_control_flow___AControlableBlock___check_control_flow};
682 val_t variable[3];
683 void **closurevariable = NULL;
684 trace.prev = tracehead; tracehead = &trace;
685 trace.file = LOCATE_control_flow;
686 variable[0] = self;
687 variable[1] = param0;
688 return_label26: while(false);
689 tracehead = trace.prev;
690 return;
691 }
692 void control_flow___AVarExpr___accept_control_flow(val_t self, val_t param0) {
693 struct trace_t trace = {NULL, NULL, 295, LOCATE_control_flow___AVarExpr___accept_control_flow};
694 val_t variable[5];
695 void **closurevariable = NULL;
696 trace.prev = tracehead; tracehead = &trace;
697 trace.file = LOCATE_control_flow;
698 variable[0] = self;
699 variable[1] = param0;
700 ((control_flow___AVarExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AVarExpr___accept_control_flow))(variable[0], variable[1]) /*super AVarExpr::accept_control_flow*/;
701 variable[3] = variable[0];
702 variable[4] = variable[0];
703 variable[4] = ((syntax_base___AVarFormExpr___variable_t)CALL(variable[4],COLOR_syntax_base___AVarFormExpr___variable))(variable[4]) /*AVarFormExpr::variable*/;
704 ((control_flow___ControlFlowVisitor___check_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___check_is_set))( variable[1] /*v*/, variable[3], variable[4]) /*ControlFlowVisitor::check_is_set*/;
705 return_label27: while(false);
706 tracehead = trace.prev;
707 return;
708 }
709 void control_flow___AVarAssignExpr___accept_control_flow(val_t self, val_t param0) {
710 struct trace_t trace = {NULL, NULL, 303, LOCATE_control_flow___AVarAssignExpr___accept_control_flow};
711 val_t variable[4];
712 void **closurevariable = NULL;
713 trace.prev = tracehead; tracehead = &trace;
714 trace.file = LOCATE_control_flow;
715 variable[0] = self;
716 variable[1] = param0;
717 ((control_flow___AVarAssignExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AVarAssignExpr___accept_control_flow))(variable[0], variable[1]) /*super AVarAssignExpr::accept_control_flow*/;
718 variable[3] = variable[0];
719 variable[3] = ((syntax_base___AVarFormExpr___variable_t)CALL(variable[3],COLOR_syntax_base___AVarFormExpr___variable))(variable[3]) /*AVarFormExpr::variable*/;
720 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::mark_is_set*/;
721 return_label28: while(false);
722 tracehead = trace.prev;
723 return;
724 }
725 void control_flow___AVarReassignExpr___accept_control_flow(val_t self, val_t param0) {
726 struct trace_t trace = {NULL, NULL, 311, LOCATE_control_flow___AVarReassignExpr___accept_control_flow};
727 val_t variable[5];
728 void **closurevariable = NULL;
729 trace.prev = tracehead; tracehead = &trace;
730 trace.file = LOCATE_control_flow;
731 variable[0] = self;
732 variable[1] = param0;
733 ((control_flow___AVarReassignExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AVarReassignExpr___accept_control_flow))(variable[0], variable[1]) /*super AVarReassignExpr::accept_control_flow*/;
734 variable[3] = variable[0];
735 variable[4] = variable[0];
736 variable[4] = ((syntax_base___AVarFormExpr___variable_t)CALL(variable[4],COLOR_syntax_base___AVarFormExpr___variable))(variable[4]) /*AVarFormExpr::variable*/;
737 ((control_flow___ControlFlowVisitor___check_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___check_is_set))( variable[1] /*v*/, variable[3], variable[4]) /*ControlFlowVisitor::check_is_set*/;
738 variable[3] = variable[0];
739 variable[3] = ((syntax_base___AVarFormExpr___variable_t)CALL(variable[3],COLOR_syntax_base___AVarFormExpr___variable))(variable[3]) /*AVarFormExpr::variable*/;
740 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::mark_is_set*/;
741 return_label29: while(false);
742 tracehead = trace.prev;
743 return;
744 }
745 void control_flow___AClosureDecl___accept_control_flow(val_t self, val_t param0) {
746 struct trace_t trace = {NULL, NULL, 320, LOCATE_control_flow___AClosureDecl___accept_control_flow};
747 val_t variable[6];
748 void **closurevariable = NULL;
749 trace.prev = tracehead; tracehead = &trace;
750 trace.file = LOCATE_control_flow;
751 variable[0] = self;
752 variable[1] = param0;
753 variable[3] = variable[0];
754 variable[3] = ((parser_nodes___AClosureDecl___n_expr_t)CALL(variable[3],COLOR_parser_nodes___AClosureDecl___n_expr))(variable[3]) /*AClosureDecl::n_expr*/;
755 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
756 if (UNTAG_Bool(variable[3])) { /*if*/
757 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
758 variable[3] = variable[4];
759 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
760 variable[4] = ((control_flow___ControlFlowContext___sub_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___sub))(variable[4]) /*ControlFlowContext::sub*/;
761 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[4]) /*ControlFlowVisitor::control_flow_ctx=*/;
762 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
763 variable[5] = variable[0];
764 variable[5] = ((parser_nodes___AClosureDecl___n_expr_t)CALL(variable[5],COLOR_parser_nodes___AClosureDecl___n_expr))(variable[5]) /*AClosureDecl::n_expr*/;
765 ((control_flow___ControlFlowContext___base_block__eq_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___base_block__eq))(variable[4], variable[5]) /*ControlFlowContext::base_block=*/;
766 ((control_flow___AClosureDecl___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AClosureDecl___accept_control_flow))(variable[0], variable[1]) /*super AClosureDecl::accept_control_flow*/;
767 variable[4] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
768 variable[4] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[4],COLOR_control_flow___ControlFlowContext___unreash))(variable[4]) /*ControlFlowContext::unreash*/;
769 variable[4] = TAG_Bool((variable[4])==( TAG_Bool(false)));
770 if (UNTAG_Bool(variable[4])) { /*if*/
771 variable[4] = variable[0];
772 variable[4] = ((syntax_base___PClosureDecl___variable_t)CALL(variable[4],COLOR_syntax_base___PClosureDecl___variable))(variable[4]) /*PClosureDecl::variable*/;
773 variable[4] = ((syntax_base___ClosureVariable___closure_t)CALL(variable[4],COLOR_syntax_base___ClosureVariable___closure))(variable[4]) /*ClosureVariable::closure*/;
774 variable[4] = ((static_type___MMClosure___signature_t)CALL(variable[4],COLOR_static_type___MMClosure___signature))(variable[4]) /*MMClosure::signature*/;
775 variable[4] = ((static_type___MMSignature___return_type_t)CALL(variable[4],COLOR_static_type___MMSignature___return_type))(variable[4]) /*MMSignature::return_type*/;
776 variable[4] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[4] == NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[4],COLOR_kernel___Object_____eqeq))(variable[4], NIT_NULL /*null*/) /*Object::==*/)))))));
777 if (UNTAG_Bool(variable[4])) { /*if*/
778 variable[4] = variable[0];
779 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*/
780 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
781 } else { /*if*/
782 variable[4] = variable[0];
783 variable[4] = ((syntax_base___PClosureDecl___variable_t)CALL(variable[4],COLOR_syntax_base___PClosureDecl___variable))(variable[4]) /*PClosureDecl::variable*/;
784 variable[4] = ((syntax_base___ClosureVariable___closure_t)CALL(variable[4],COLOR_syntax_base___ClosureVariable___closure))(variable[4]) /*ClosureVariable::closure*/;
785 variable[4] = ((static_type___MMClosure___is_break_t)CALL(variable[4],COLOR_static_type___MMClosure___is_break))(variable[4]) /*MMClosure::is_break*/;
786 if (UNTAG_Bool(variable[4])) { /*if*/
787 variable[4] = variable[0];
788 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*/
789 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[4], variable[5]) /*AbsSyntaxVisitor::error*/;
790 }
791 }
792 }
793 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable[1] /*v*/, variable[3] /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
794 }
795 return_label30: while(false);
796 tracehead = trace.prev;
797 return;
798 }
799 void control_flow___AClosureDef___accept_control_flow(val_t self, val_t param0) {
800 struct trace_t trace = {NULL, NULL, 345, LOCATE_control_flow___AClosureDef___accept_control_flow};
801 val_t variable[6];
802 void **closurevariable = NULL;
803 trace.prev = tracehead; tracehead = &trace;
804 trace.file = LOCATE_control_flow;
805 variable[0] = self;
806 variable[1] = param0;
807 variable[3] = variable[0];
808 variable[3] = ((syntax_base___PClosureDef___variables_t)CALL(variable[3],COLOR_syntax_base___PClosureDef___variables))(variable[3]) /*PClosureDef::variables*/;
809 variable[3] = ((array___AbstractArray___iterator_t)CALL(variable[3],COLOR_abstract_collection___Collection___iterator))(variable[3]) /*AbstractArray::iterator*/;
810 while (true) { /*for*/
811 variable[4] = ((array___ArrayIterator___is_ok_t)CALL(variable[3],COLOR_abstract_collection___Iterator___is_ok))(variable[3]) /*ArrayIterator::is_ok*/;
812 if (!UNTAG_Bool(variable[4])) break; /*for*/
813 variable[4] = ((array___ArrayIterator___item_t)CALL(variable[3],COLOR_abstract_collection___Iterator___item))(variable[3]) /*ArrayIterator::item*/;
814 variable[5] = variable[4];
815 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable[1] /*v*/, variable[5] /*va*/) /*ControlFlowVisitor::mark_is_set*/;
816 continue_32: while(0);
817 ((array___ArrayIterator___next_t)CALL(variable[3],COLOR_abstract_collection___Iterator___next))(variable[3]) /*ArrayIterator::next*/;
818 }
819 break_32: while(0);
820 ((control_flow___AClosureDef___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AClosureDef___accept_control_flow))(variable[0], variable[1]) /*super AClosureDef::accept_control_flow*/;
821 return_label31: while(false);
822 tracehead = trace.prev;
823 return;
824 }
825 void control_flow___AClosureDef___check_control_flow(val_t self, val_t param0) {
826 struct trace_t trace = {NULL, NULL, 351, LOCATE_control_flow___AClosureDef___check_control_flow};
827 val_t variable[5];
828 void **closurevariable = NULL;
829 trace.prev = tracehead; tracehead = &trace;
830 trace.file = LOCATE_control_flow;
831 variable[0] = self;
832 variable[1] = param0;
833 variable[3] = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable[1] /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
834 variable[3] = ((control_flow___ControlFlowContext___unreash_t)CALL(variable[3],COLOR_control_flow___ControlFlowContext___unreash))(variable[3]) /*ControlFlowContext::unreash*/;
835 variable[3] = TAG_Bool((variable[3])==( TAG_Bool(false)));
836 if (UNTAG_Bool(variable[3])) { /*if*/
837 variable[3] = variable[0];
838 variable[3] = ((syntax_base___PClosureDef___closure_t)CALL(variable[3],COLOR_syntax_base___PClosureDef___closure))(variable[3]) /*PClosureDef::closure*/;
839 variable[3] = ((static_type___MMClosure___signature_t)CALL(variable[3],COLOR_static_type___MMClosure___signature))(variable[3]) /*MMClosure::signature*/;
840 variable[3] = ((static_type___MMSignature___return_type_t)CALL(variable[3],COLOR_static_type___MMSignature___return_type))(variable[3]) /*MMSignature::return_type*/;
841 variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] == NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable[3],COLOR_kernel___Object_____eqeq))(variable[3], NIT_NULL /*null*/) /*Object::==*/)))))));
842 if (UNTAG_Bool(variable[3])) { /*if*/
843 variable[3] = variable[0];
844 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*/
845 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
846 } else { /*if*/
847 variable[3] = variable[0];
848 variable[3] = ((syntax_base___PClosureDef___closure_t)CALL(variable[3],COLOR_syntax_base___PClosureDef___closure))(variable[3]) /*PClosureDef::closure*/;
849 variable[3] = ((static_type___MMClosure___is_break_t)CALL(variable[3],COLOR_static_type___MMClosure___is_break))(variable[3]) /*MMClosure::is_break*/;
850 if (UNTAG_Bool(variable[3])) { /*if*/
851 variable[3] = variable[0];
852 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*/
853 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::error*/;
854 }
855 }
856 }
857 return_label33: while(false);
858 tracehead = trace.prev;
859 return;
860 }
861 void control_flow___AOnceExpr___accept_control_flow(val_t self, val_t param0) {
862 struct trace_t trace = {NULL, NULL, 364, LOCATE_control_flow___AOnceExpr___accept_control_flow};
863 val_t variable[5];
864 void **closurevariable = NULL;
865 trace.prev = tracehead; tracehead = &trace;
866 trace.file = LOCATE_control_flow;
867 variable[0] = self;
868 variable[1] = param0;
869 variable[3] = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable[1] /*v*/) /*ControlFlowVisitor::once_count*/;
870 variable[3] = TAG_Bool(UNTAG_Int(variable[3])>UNTAG_Int( TAG_Int(0)));
871 if (UNTAG_Bool(variable[3])) { /*if*/
872 variable[3] = variable[0];
873 variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)); /*new String*/
874 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable[1] /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable[1] /*v*/, variable[3], variable[4]) /*AbsSyntaxVisitor::warning*/;
875 }
876 variable[3] = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable[1] /*v*/) /*ControlFlowVisitor::once_count*/;
877 variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1)));
878 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::once_count=*/;
879 ((control_flow___AOnceExpr___accept_control_flow_t)CALL(variable[0],COLOR_SUPER_control_flow___AOnceExpr___accept_control_flow))(variable[0], variable[1]) /*super AOnceExpr::accept_control_flow*/;
880 variable[3] = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable[1] /*v*/) /*ControlFlowVisitor::once_count*/;
881 variable[3] = TAG_Int(UNTAG_Int(variable[3])-UNTAG_Int( TAG_Int(1)));
882 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable[1] /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable[1] /*v*/, variable[3]) /*ControlFlowVisitor::once_count=*/;
883 return_label34: while(false);
884 tracehead = trace.prev;
885 return;
886 }