8696ff8aec3b254f1570aa068ba9a1e655aea031
[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 variable0;
6 val_t variable1;
7 val_t variable2;
8 trace.prev = tracehead; tracehead = &trace;
9 trace.file = LOCATE_control_flow;
10 variable0 = param0;
11 variable2 = NEW_ControlFlowVisitor_control_flow___ControlFlowVisitor___init( variable0 /*tc*/, self); /*new ControlFlowVisitor*/
12 variable1 = variable2;
13 variable2 = ((syntax_base___MMSrcModule___node_t)CALL( self,COLOR_syntax_base___MMSrcModule___node))( self) /*MMSrcModule::node*/;
14 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable1 /*tv*/,COLOR_parser_prod___Visitor___visit))( variable1 /*tv*/, variable2) /*ControlFlowVisitor::visit*/;
15 tracehead = trace.prev;
16 return;
17 }
18 void control_flow___ControlFlowVisitor___visit(val_t self, val_t param0) {
19 struct trace_t trace = {NULL, NULL, 38, LOCATE_control_flow___ControlFlowVisitor___visit};
20 val_t variable0;
21 val_t variable1;
22 trace.prev = tracehead; tracehead = &trace;
23 trace.file = LOCATE_control_flow;
24 variable0 = param0;
25 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ == NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/, NIT_NULL /*null*/) /*Object::==*/)))))));
26 if (UNTAG_Bool(variable1)) { /*if*/
27 ((control_flow___PNode___accept_control_flow_t)CALL( variable0 /*n*/,COLOR_control_flow___PNode___accept_control_flow))( variable0 /*n*/, self) /*PNode::accept_control_flow*/;
28 }
29 tracehead = trace.prev;
30 return;
31 }
32 val_t control_flow___ControlFlowVisitor___once_count(val_t self) {
33 struct trace_t trace = {NULL, NULL, 43, LOCATE_control_flow___ControlFlowVisitor___once_count};
34 trace.prev = tracehead; tracehead = &trace;
35 trace.file = LOCATE_control_flow;
36 tracehead = trace.prev;
37 return ATTR_control_flow___ControlFlowVisitor____once_count( self) /*ControlFlowVisitor::_once_count*/;
38 }
39 void control_flow___ControlFlowVisitor___once_count__eq(val_t self, val_t param0) {
40 struct trace_t trace = {NULL, NULL, 43, LOCATE_control_flow___ControlFlowVisitor___once_count__eq};
41 trace.prev = tracehead; tracehead = &trace;
42 trace.file = LOCATE_control_flow;
43 ATTR_control_flow___ControlFlowVisitor____once_count( self) /*ControlFlowVisitor::_once_count*/ = param0;
44 tracehead = trace.prev;
45 return;
46 }
47 val_t control_flow___ControlFlowVisitor___control_flow_ctx(val_t self) {
48 struct trace_t trace = {NULL, NULL, 46, LOCATE_control_flow___ControlFlowVisitor___control_flow_ctx};
49 trace.prev = tracehead; tracehead = &trace;
50 trace.file = LOCATE_control_flow;
51 tracehead = trace.prev;
52 return ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self) /*ControlFlowVisitor::_control_flow_ctx*/;
53 }
54 void control_flow___ControlFlowVisitor___control_flow_ctx__eq(val_t self, val_t param0) {
55 struct trace_t trace = {NULL, NULL, 46, LOCATE_control_flow___ControlFlowVisitor___control_flow_ctx__eq};
56 trace.prev = tracehead; tracehead = &trace;
57 trace.file = LOCATE_control_flow;
58 ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self) /*ControlFlowVisitor::_control_flow_ctx*/ = param0;
59 tracehead = trace.prev;
60 return;
61 }
62 void control_flow___ControlFlowVisitor___check_is_set(val_t self, val_t param0, val_t param1) {
63 struct trace_t trace = {NULL, NULL, 49, LOCATE_control_flow___ControlFlowVisitor___check_is_set};
64 val_t variable0;
65 val_t variable1;
66 val_t variable2;
67 val_t variable3;
68 val_t variable4;
69 val_t variable5;
70 val_t variable6;
71 val_t variable7;
72 trace.prev = tracehead; tracehead = &trace;
73 trace.file = LOCATE_control_flow;
74 variable0 = param0;
75 variable1 = param1;
76 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( self,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( self) /*ControlFlowVisitor::control_flow_ctx*/;
77 variable2 = ((control_flow___ControlFlowContext___is_set_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___is_set))(variable2, variable1 /*v*/) /*ControlFlowContext::is_set*/;
78 if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable2)))) { /*if*/
79 variable2 = NEW_String_string___String___init(); /*new String*/
80 variable3 = NEW_String_string___String___with_native(BOX_NativeString("Error: variable '"), TAG_Int(17)); /*new String*/
81 variable4 = variable3;
82 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
83 variable5 = variable1 /*v*/;
84 variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
85 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable5) /*String::append*/;
86 variable6 = NEW_String_string___String___with_native(BOX_NativeString("' is possibly unset."), TAG_Int(20)); /*new String*/
87 variable7 = variable6;
88 ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable7) /*String::append*/;
89 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( self,COLOR_syntax_base___AbsSyntaxVisitor___error))( self, variable0 /*n*/, variable2) /*AbsSyntaxVisitor::error*/;
90 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( self,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( self) /*ControlFlowVisitor::control_flow_ctx*/;
91 variable2 = variable3;
92 while (true) { /*while*/
93 variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*cfc*/ == NIT_NULL /*null*/) || (( variable2 /*cfc*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*cfc*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*cfc*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*cfc*/,COLOR_kernel___Object_____eqeq))( variable2 /*cfc*/, NIT_NULL /*null*/) /*Object::==*/)))))));
94 if (!UNTAG_Bool(variable3)) break; /* while*/
95 variable3 = NEW_String_string___String___with_native(BOX_NativeString("cfc: "), TAG_Int(5)); /*new String*/
96 variable4 = ((control_flow___ControlFlowContext___set_variables_t)CALL( variable2 /*cfc*/,COLOR_control_flow___ControlFlowContext___set_variables))( variable2 /*cfc*/) /*ControlFlowContext::set_variables*/;
97 variable5 = NEW_String_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)); /*new String*/
98 variable4 = ((string___Collection___join_t)CALL(variable4,COLOR_string___Collection___join))(variable4, variable5) /*Collection::join*/;
99 variable3 = ((string___String_____plus_t)CALL(variable3,COLOR_string___String_____plus))(variable3, variable4) /*String::+*/;
100 ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable3) /*Object::print*/;
101 variable3 = ((control_flow___ControlFlowContext___prev_t)CALL( variable2 /*cfc*/,COLOR_control_flow___ControlFlowContext___prev))( variable2 /*cfc*/) /*ControlFlowContext::prev*/;
102 variable2 = variable3 /*cfc=*/;
103 continue_3: while(0);
104 }
105 break_3: while(0);
106 }
107 tracehead = trace.prev;
108 return;
109 }
110 void control_flow___ControlFlowVisitor___mark_is_set(val_t self, val_t param0) {
111 struct trace_t trace = {NULL, NULL, 61, LOCATE_control_flow___ControlFlowVisitor___mark_is_set};
112 val_t variable0;
113 val_t variable1;
114 trace.prev = tracehead; tracehead = &trace;
115 trace.file = LOCATE_control_flow;
116 variable0 = param0;
117 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( self,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( self) /*ControlFlowVisitor::control_flow_ctx*/;
118 variable1 = ((control_flow___ControlFlowContext___set_variables_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___set_variables))(variable1) /*ControlFlowContext::set_variables*/;
119 ((hash___HashSet___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1, variable0 /*v*/) /*HashSet::add*/;
120 tracehead = trace.prev;
121 return;
122 }
123 void control_flow___ControlFlowVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
124 struct trace_t trace = {NULL, NULL, 66, LOCATE_control_flow___ControlFlowVisitor___init};
125 val_t variable0;
126 val_t variable1;
127 trace.prev = tracehead; tracehead = &trace;
128 trace.file = LOCATE_control_flow;
129 variable0 = param0;
130 variable1 = param1;
131 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowVisitor].i]) return;
132 ((syntax_base___AbsSyntaxVisitor___init_t)CALL( self,COLOR_syntax_base___AbsSyntaxVisitor___init))( self, param0, param1, init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
133 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowVisitor].i] = 1;
134 tracehead = trace.prev;
135 return;
136 }
137 val_t control_flow___ControlFlowContext___prev(val_t self) {
138 struct trace_t trace = {NULL, NULL, 70, LOCATE_control_flow___ControlFlowContext___prev};
139 trace.prev = tracehead; tracehead = &trace;
140 trace.file = LOCATE_control_flow;
141 tracehead = trace.prev;
142 return ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/;
143 }
144 val_t control_flow___ControlFlowContext___has_return(val_t self) {
145 struct trace_t trace = {NULL, NULL, 73, LOCATE_control_flow___ControlFlowContext___has_return};
146 trace.prev = tracehead; tracehead = &trace;
147 trace.file = LOCATE_control_flow;
148 tracehead = trace.prev;
149 return ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/;
150 }
151 void control_flow___ControlFlowContext___has_return__eq(val_t self, val_t param0) {
152 struct trace_t trace = {NULL, NULL, 73, LOCATE_control_flow___ControlFlowContext___has_return__eq};
153 trace.prev = tracehead; tracehead = &trace;
154 trace.file = LOCATE_control_flow;
155 ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/ = param0;
156 tracehead = trace.prev;
157 return;
158 }
159 val_t control_flow___ControlFlowContext___unreash(val_t self) {
160 struct trace_t trace = {NULL, NULL, 76, LOCATE_control_flow___ControlFlowContext___unreash};
161 trace.prev = tracehead; tracehead = &trace;
162 trace.file = LOCATE_control_flow;
163 tracehead = trace.prev;
164 return ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/;
165 }
166 void control_flow___ControlFlowContext___unreash__eq(val_t self, val_t param0) {
167 struct trace_t trace = {NULL, NULL, 76, LOCATE_control_flow___ControlFlowContext___unreash__eq};
168 trace.prev = tracehead; tracehead = &trace;
169 trace.file = LOCATE_control_flow;
170 ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/ = param0;
171 tracehead = trace.prev;
172 return;
173 }
174 val_t control_flow___ControlFlowContext___already_unreash(val_t self) {
175 struct trace_t trace = {NULL, NULL, 79, LOCATE_control_flow___ControlFlowContext___already_unreash};
176 trace.prev = tracehead; tracehead = &trace;
177 trace.file = LOCATE_control_flow;
178 tracehead = trace.prev;
179 return ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/;
180 }
181 void control_flow___ControlFlowContext___already_unreash__eq(val_t self, val_t param0) {
182 struct trace_t trace = {NULL, NULL, 79, LOCATE_control_flow___ControlFlowContext___already_unreash__eq};
183 trace.prev = tracehead; tracehead = &trace;
184 trace.file = LOCATE_control_flow;
185 ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/ = param0;
186 tracehead = trace.prev;
187 return;
188 }
189 val_t control_flow___ControlFlowContext___base_block(val_t self) {
190 struct trace_t trace = {NULL, NULL, 83, LOCATE_control_flow___ControlFlowContext___base_block};
191 trace.prev = tracehead; tracehead = &trace;
192 trace.file = LOCATE_control_flow;
193 tracehead = trace.prev;
194 return ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/;
195 }
196 void control_flow___ControlFlowContext___base_block__eq(val_t self, val_t param0) {
197 struct trace_t trace = {NULL, NULL, 83, LOCATE_control_flow___ControlFlowContext___base_block__eq};
198 trace.prev = tracehead; tracehead = &trace;
199 trace.file = LOCATE_control_flow;
200 ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/ = param0;
201 tracehead = trace.prev;
202 return;
203 }
204 val_t control_flow___ControlFlowContext___set_variables(val_t self) {
205 struct trace_t trace = {NULL, NULL, 86, LOCATE_control_flow___ControlFlowContext___set_variables};
206 trace.prev = tracehead; tracehead = &trace;
207 trace.file = LOCATE_control_flow;
208 tracehead = trace.prev;
209 return ATTR_control_flow___ControlFlowContext____set_variables( self) /*ControlFlowContext::_set_variables*/;
210 }
211 val_t control_flow___ControlFlowContext___is_set(val_t self, val_t param0) {
212 struct trace_t trace = {NULL, NULL, 89, LOCATE_control_flow___ControlFlowContext___is_set};
213 val_t variable0;
214 val_t variable1;
215 val_t variable2;
216 val_t variable3;
217 trace.prev = tracehead; tracehead = &trace;
218 trace.file = LOCATE_control_flow;
219 variable0 = param0;
220 variable1 = ATTR_control_flow___ControlFlowContext____set_variables( self) /*ControlFlowContext::_set_variables*/;
221 variable1 = ((hash___HashSet___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1, variable0 /*v*/) /*HashSet::has*/;
222 variable2 = variable1;
223 if (!UNTAG_Bool(variable2)) { /* or */
224 variable2 = ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/;
225 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))))));
226 variable3 = variable2;
227 if (UNTAG_Bool(variable3)) { /* and */
228 variable3 = ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/;
229 variable3 = ((control_flow___ControlFlowContext___is_set_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___is_set))(variable3, variable0 /*v*/) /*ControlFlowContext::is_set*/;
230 }
231 variable2 = variable3;
232 }
233 variable1 = variable2;
234 goto return_label6;
235 return_label6: while(false);
236 tracehead = trace.prev;
237 return variable1;
238 }
239 val_t control_flow___ControlFlowContext___sub(val_t self) {
240 struct trace_t trace = {NULL, NULL, 95, LOCATE_control_flow___ControlFlowContext___sub};
241 val_t variable0;
242 trace.prev = tracehead; tracehead = &trace;
243 trace.file = LOCATE_control_flow;
244 variable0 = NEW_ControlFlowContext_control_flow___ControlFlowContext___with( self); /*new ControlFlowContext*/
245 goto return_label7;
246 return_label7: while(false);
247 tracehead = trace.prev;
248 return variable0;
249 }
250 void control_flow___ControlFlowContext___init(val_t self, int* init_table) {
251 struct trace_t trace = {NULL, NULL, 100, LOCATE_control_flow___ControlFlowContext___init};
252 trace.prev = tracehead; tracehead = &trace;
253 trace.file = LOCATE_control_flow;
254 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
255 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
256 tracehead = trace.prev;
257 return;
258 }
259 void control_flow___ControlFlowContext___with(val_t self, val_t param0, int* init_table) {
260 struct trace_t trace = {NULL, NULL, 104, LOCATE_control_flow___ControlFlowContext___with};
261 val_t variable0;
262 val_t variable1;
263 trace.prev = tracehead; tracehead = &trace;
264 trace.file = LOCATE_control_flow;
265 variable0 = param0;
266 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
267 ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/ = variable0 /*p*/;
268 variable1 = ((control_flow___ControlFlowContext___has_return_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___has_return))( variable0 /*p*/) /*ControlFlowContext::has_return*/;
269 ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/ = variable1;
270 variable1 = ((control_flow___ControlFlowContext___unreash_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___unreash))( variable0 /*p*/) /*ControlFlowContext::unreash*/;
271 ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/ = variable1;
272 variable1 = ((control_flow___ControlFlowContext___already_unreash_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___already_unreash))( variable0 /*p*/) /*ControlFlowContext::already_unreash*/;
273 ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/ = variable1;
274 variable1 = ((control_flow___ControlFlowContext___base_block_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___base_block))( variable0 /*p*/) /*ControlFlowContext::base_block*/;
275 ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/ = variable1;
276 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
277 tracehead = trace.prev;
278 return;
279 }
280 void control_flow___PNode___accept_control_flow(val_t self, val_t param0) {
281 struct trace_t trace = {NULL, NULL, 117, LOCATE_control_flow___PNode___accept_control_flow};
282 val_t variable0;
283 trace.prev = tracehead; tracehead = &trace;
284 trace.file = LOCATE_control_flow;
285 variable0 = param0;
286 ((syntax_base___PNode___accept_abs_syntax_visitor_t)CALL( self,COLOR_syntax_base___PNode___accept_abs_syntax_visitor))( self, variable0 /*v*/) /*PNode::accept_abs_syntax_visitor*/;
287 tracehead = trace.prev;
288 return;
289 }
290 void control_flow___AMethPropdef___accept_control_flow(val_t self, val_t param0) {
291 struct trace_t trace = {NULL, NULL, 124, LOCATE_control_flow___AMethPropdef___accept_control_flow};
292 val_t variable0;
293 val_t variable1;
294 trace.prev = tracehead; tracehead = &trace;
295 trace.file = LOCATE_control_flow;
296 variable0 = param0;
297 variable1 = NEW_ControlFlowContext_control_flow___ControlFlowContext___init(); /*new ControlFlowContext*/
298 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable1) /*ControlFlowVisitor::control_flow_ctx=*/;
299 ((control_flow___AMethPropdef___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AMethPropdef___accept_control_flow))( self, param0) /*super AMethPropdef::accept_control_flow*/;
300 tracehead = trace.prev;
301 return;
302 }
303 void control_flow___AConcreteMethPropdef___accept_control_flow(val_t self, val_t param0) {
304 struct trace_t trace = {NULL, NULL, 132, LOCATE_control_flow___AConcreteMethPropdef___accept_control_flow};
305 val_t variable0;
306 val_t variable1;
307 val_t variable2;
308 trace.prev = tracehead; tracehead = &trace;
309 trace.file = LOCATE_control_flow;
310 variable0 = param0;
311 ((control_flow___AConcreteMethPropdef___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AConcreteMethPropdef___accept_control_flow))( self, param0) /*super AConcreteMethPropdef::accept_control_flow*/;
312 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
313 variable1 = ((control_flow___ControlFlowContext___has_return_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return))(variable1) /*ControlFlowContext::has_return*/;
314 variable1 = TAG_Bool((variable1)==( TAG_Bool(false)));
315 variable2 = variable1;
316 if (UNTAG_Bool(variable2)) { /* and */
317 variable2 = ((syntax_base___AMethPropdef___method_t)CALL( self,COLOR_syntax_base___AMethPropdef___method))( self) /*AMethPropdef::method*/;
318 variable2 = ((static_type___MMLocalProperty___signature_t)CALL(variable2,COLOR_static_type___MMLocalProperty___signature))(variable2) /*MMLocalProperty::signature*/;
319 variable2 = ((static_type___MMSignature___return_type_t)CALL(variable2,COLOR_static_type___MMSignature___return_type))(variable2) /*MMSignature::return_type*/;
320 variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))))));
321 }
322 variable1 = variable2;
323 if (UNTAG_Bool(variable1)) { /*if*/
324 variable1 = NEW_String_string___String___with_native(BOX_NativeString("Control error: Reached end of function."), TAG_Int(39)); /*new String*/
325 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable1) /*AbsSyntaxVisitor::error*/;
326 }
327 tracehead = trace.prev;
328 return;
329 }
330 void control_flow___PParam___accept_control_flow(val_t self, val_t param0) {
331 struct trace_t trace = {NULL, NULL, 142, LOCATE_control_flow___PParam___accept_control_flow};
332 val_t variable0;
333 val_t variable1;
334 trace.prev = tracehead; tracehead = &trace;
335 trace.file = LOCATE_control_flow;
336 variable0 = param0;
337 ((control_flow___PParam___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___PParam___accept_control_flow))( self, param0) /*super PParam::accept_control_flow*/;
338 variable1 = ((syntax_base___PParam___variable_t)CALL( self,COLOR_syntax_base___PParam___variable))( self) /*PParam::variable*/;
339 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable0 /*v*/, variable1) /*ControlFlowVisitor::mark_is_set*/;
340 tracehead = trace.prev;
341 return;
342 }
343 void control_flow___AVardeclExpr___accept_control_flow(val_t self, val_t param0) {
344 struct trace_t trace = {NULL, NULL, 150, LOCATE_control_flow___AVardeclExpr___accept_control_flow};
345 val_t variable0;
346 val_t variable1;
347 trace.prev = tracehead; tracehead = &trace;
348 trace.file = LOCATE_control_flow;
349 variable0 = param0;
350 ((control_flow___AVardeclExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AVardeclExpr___accept_control_flow))( self, param0) /*super AVardeclExpr::accept_control_flow*/;
351 variable1 = ((parser_nodes___AVardeclExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AVardeclExpr___n_expr))( self) /*AVardeclExpr::n_expr*/;
352 variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 == NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, NIT_NULL /*null*/) /*Object::==*/)))))));
353 if (UNTAG_Bool(variable1)) { /*if*/
354 variable1 = ((syntax_base___AVardeclExpr___variable_t)CALL( self,COLOR_syntax_base___AVardeclExpr___variable))( self) /*AVardeclExpr::variable*/;
355 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable0 /*v*/, variable1) /*ControlFlowVisitor::mark_is_set*/;
356 }
357 tracehead = trace.prev;
358 return;
359 }
360 void control_flow___ABlockExpr___accept_control_flow(val_t self, val_t param0) {
361 struct trace_t trace = {NULL, NULL, 158, LOCATE_control_flow___ABlockExpr___accept_control_flow};
362 val_t variable0;
363 val_t variable1;
364 val_t variable2;
365 val_t variable3;
366 val_t variable4;
367 trace.prev = tracehead; tracehead = &trace;
368 trace.file = LOCATE_control_flow;
369 variable0 = param0;
370 variable1 = ((parser_nodes___ABlockExpr___n_expr_t)CALL( self,COLOR_parser_nodes___ABlockExpr___n_expr))( self) /*ABlockExpr::n_expr*/;
371 variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
372 while (true) { /*for*/
373 variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
374 if (!UNTAG_Bool(variable2)) break; /*for*/
375 variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
376 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
377 variable3 = ((control_flow___ControlFlowContext___unreash_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___unreash))(variable3) /*ControlFlowContext::unreash*/;
378 variable4 = variable3;
379 if (UNTAG_Bool(variable4)) { /* and */
380 variable4 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
381 variable4 = ((control_flow___ControlFlowContext___already_unreash_t)CALL(variable4,COLOR_control_flow___ControlFlowContext___already_unreash))(variable4) /*ControlFlowContext::already_unreash*/;
382 variable4 = TAG_Bool(!UNTAG_Bool(variable4));
383 }
384 variable3 = variable4;
385 if (UNTAG_Bool(variable3)) { /*if*/
386 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
387 ((control_flow___ControlFlowContext___already_unreash__eq_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___already_unreash__eq))(variable3, TAG_Bool(true)) /*ControlFlowContext::already_unreash=*/;
388 variable3 = NEW_String_string___String___with_native(BOX_NativeString("Warning: unreachable statement."), TAG_Int(31)); /*new String*/
389 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable0 /*v*/, variable2 /*e*/, variable3) /*AbsSyntaxVisitor::warning*/;
390 }
391 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2 /*e*/) /*ControlFlowVisitor::visit*/;
392 continue_16: while(0);
393 ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
394 }
395 break_16: while(0);
396 tracehead = trace.prev;
397 return;
398 }
399 void control_flow___AReturnExpr___accept_control_flow(val_t self, val_t param0) {
400 struct trace_t trace = {NULL, NULL, 171, LOCATE_control_flow___AReturnExpr___accept_control_flow};
401 val_t variable0;
402 val_t variable1;
403 trace.prev = tracehead; tracehead = &trace;
404 trace.file = LOCATE_control_flow;
405 variable0 = param0;
406 ((control_flow___AReturnExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AReturnExpr___accept_control_flow))( self, param0) /*super AReturnExpr::accept_control_flow*/;
407 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
408 ((control_flow___ControlFlowContext___has_return__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::has_return=*/;
409 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
410 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
411 tracehead = trace.prev;
412 return;
413 }
414 val_t control_flow___ABlockControler___block(val_t self) {
415 struct trace_t trace = {NULL, NULL, 181, LOCATE_control_flow___ABlockControler___block};
416 trace.prev = tracehead; tracehead = &trace;
417 trace.file = LOCATE_control_flow;
418 tracehead = trace.prev;
419 return ATTR_control_flow___ABlockControler____block( self) /*ABlockControler::_block*/;
420 }
421 void control_flow___ABreakExpr___accept_control_flow(val_t self, val_t param0) {
422 struct trace_t trace = {NULL, NULL, 186, LOCATE_control_flow___ABreakExpr___accept_control_flow};
423 val_t variable0;
424 val_t variable1;
425 val_t variable2;
426 trace.prev = tracehead; tracehead = &trace;
427 trace.file = LOCATE_control_flow;
428 variable0 = param0;
429 ((control_flow___ABreakExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___ABreakExpr___accept_control_flow))( self, param0) /*super ABreakExpr::accept_control_flow*/;
430 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
431 variable2 = ((control_flow___ControlFlowContext___base_block_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block))(variable2) /*ControlFlowContext::base_block*/;
432 variable1 = variable2;
433 variable2 = TAG_Bool(( variable1 /*block*/ == NIT_NULL /*null*/) || (( variable1 /*block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*block*/,COLOR_kernel___Object_____eqeq))( variable1 /*block*/, NIT_NULL /*null*/) /*Object::==*/)))));
434 if (UNTAG_Bool(variable2)) { /*if*/
435 variable2 = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'break' statment outside block."), TAG_Int(45)); /*new String*/
436 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable2) /*AbsSyntaxVisitor::error*/;
437 goto return_label18;
438 }
439 ATTR_control_flow___ABlockControler____block( self) /*ABlockControler::_block*/ = variable1 /*block*/;
440 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
441 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable2, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
442 return_label18: while(false);
443 tracehead = trace.prev;
444 return;
445 }
446 void control_flow___AContinueExpr___accept_control_flow(val_t self, val_t param0) {
447 struct trace_t trace = {NULL, NULL, 200, LOCATE_control_flow___AContinueExpr___accept_control_flow};
448 val_t variable0;
449 val_t variable1;
450 val_t variable2;
451 trace.prev = tracehead; tracehead = &trace;
452 trace.file = LOCATE_control_flow;
453 variable0 = param0;
454 ((control_flow___AContinueExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AContinueExpr___accept_control_flow))( self, param0) /*super AContinueExpr::accept_control_flow*/;
455 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
456 variable2 = ((control_flow___ControlFlowContext___base_block_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block))(variable2) /*ControlFlowContext::base_block*/;
457 variable1 = variable2;
458 variable2 = TAG_Bool(( variable1 /*block*/ == NIT_NULL /*null*/) || (( variable1 /*block*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*block*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*block*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*block*/,COLOR_kernel___Object_____eqeq))( variable1 /*block*/, NIT_NULL /*null*/) /*Object::==*/)))));
459 if (UNTAG_Bool(variable2)) { /*if*/
460 variable2 = NEW_String_string___String___with_native(BOX_NativeString("Syntax Error: 'continue' outside block."), TAG_Int(39)); /*new String*/
461 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable2) /*AbsSyntaxVisitor::error*/;
462 goto return_label19;
463 }
464 ATTR_control_flow___ABlockControler____block( self) /*ABlockControler::_block*/ = variable1 /*block*/;
465 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
466 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable2, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
467 return_label19: while(false);
468 tracehead = trace.prev;
469 return;
470 }
471 void control_flow___AAbortExpr___accept_control_flow(val_t self, val_t param0) {
472 struct trace_t trace = {NULL, NULL, 214, LOCATE_control_flow___AAbortExpr___accept_control_flow};
473 val_t variable0;
474 val_t variable1;
475 trace.prev = tracehead; tracehead = &trace;
476 trace.file = LOCATE_control_flow;
477 variable0 = param0;
478 ((control_flow___AAbortExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AAbortExpr___accept_control_flow))( self, param0) /*super AAbortExpr::accept_control_flow*/;
479 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
480 ((control_flow___ControlFlowContext___has_return__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::has_return=*/;
481 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
482 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
483 tracehead = trace.prev;
484 return;
485 }
486 void control_flow___AIfExpr___accept_control_flow(val_t self, val_t param0) {
487 struct trace_t trace = {NULL, NULL, 223, LOCATE_control_flow___AIfExpr___accept_control_flow};
488 val_t variable0;
489 val_t variable1;
490 val_t variable2;
491 val_t variable3;
492 val_t variable4;
493 val_t variable5;
494 trace.prev = tracehead; tracehead = &trace;
495 trace.file = LOCATE_control_flow;
496 variable0 = param0;
497 variable1 = ((parser_nodes___AIfExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_expr))( self) /*AIfExpr::n_expr*/;
498 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*ControlFlowVisitor::visit*/;
499 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
500 variable1 = variable2;
501 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
502 variable2 = ((control_flow___ControlFlowContext___sub_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___sub))(variable2) /*ControlFlowContext::sub*/;
503 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable2) /*ControlFlowVisitor::control_flow_ctx=*/;
504 variable2 = ((parser_nodes___AIfExpr___n_then_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_then))( self) /*AIfExpr::n_then*/;
505 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*ControlFlowVisitor::visit*/;
506 variable2 = ((parser_nodes___AIfExpr___n_else_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_else))( self) /*AIfExpr::n_else*/;
507 variable2 = TAG_Bool((variable2 == NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2, NIT_NULL /*null*/) /*Object::==*/)))));
508 if (UNTAG_Bool(variable2)) { /*if*/
509 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable1 /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
510 } else { /*if*/
511 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
512 variable2 = variable3;
513 variable3 = ((control_flow___ControlFlowContext___sub_t)CALL( variable1 /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___sub))( variable1 /*old_control_flow_ctx*/) /*ControlFlowContext::sub*/;
514 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable3) /*ControlFlowVisitor::control_flow_ctx=*/;
515 variable3 = ((parser_nodes___AIfExpr___n_else_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_else))( self) /*AIfExpr::n_else*/;
516 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable3) /*ControlFlowVisitor::visit*/;
517 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
518 variable3 = ((control_flow___ControlFlowContext___has_return_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___has_return))(variable3) /*ControlFlowContext::has_return*/;
519 variable4 = variable3;
520 if (UNTAG_Bool(variable4)) { /* and */
521 variable4 = ((control_flow___ControlFlowContext___has_return_t)CALL( variable2 /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___has_return))( variable2 /*then_control_flow_ctx*/) /*ControlFlowContext::has_return*/;
522 }
523 variable3 = variable4;
524 ((control_flow___ControlFlowContext___has_return__eq_t)CALL( variable1 /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___has_return__eq))( variable1 /*old_control_flow_ctx*/, variable3) /*ControlFlowContext::has_return=*/;
525 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
526 variable3 = ((control_flow___ControlFlowContext___unreash_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___unreash))(variable3) /*ControlFlowContext::unreash*/;
527 variable4 = variable3;
528 if (UNTAG_Bool(variable4)) { /* and */
529 variable4 = ((control_flow___ControlFlowContext___unreash_t)CALL( variable2 /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash))( variable2 /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
530 }
531 variable3 = variable4;
532 ((control_flow___ControlFlowContext___unreash__eq_t)CALL( variable1 /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash__eq))( variable1 /*old_control_flow_ctx*/, variable3) /*ControlFlowContext::unreash=*/;
533 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
534 variable3 = ((control_flow___ControlFlowContext___unreash_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___unreash))(variable3) /*ControlFlowContext::unreash*/;
535 if (UNTAG_Bool(variable3)) { /*if*/
536 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable2 /*then_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
537 }
538 variable3 = ((control_flow___ControlFlowContext___unreash_t)CALL( variable2 /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash))( variable2 /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
539 if (UNTAG_Bool(variable3)) { /*if*/
540 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
541 variable2 = variable3 /*then_control_flow_ctx=*/;
542 }
543 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
544 variable3 = ((control_flow___ControlFlowContext___set_variables_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___set_variables))(variable3) /*ControlFlowContext::set_variables*/;
545 variable3 = ((hash___HashSet___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*HashSet::iterator*/;
546 while (true) { /*for*/
547 variable4 = ((abstract_collection___Iterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*Iterator::is_ok*/;
548 if (!UNTAG_Bool(variable4)) break; /*for*/
549 variable4 = ((abstract_collection___Iterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*Iterator::item*/;
550 variable5 = ((control_flow___ControlFlowContext___is_set_t)CALL( variable2 /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___is_set))( variable2 /*then_control_flow_ctx*/, variable4 /*variable*/) /*ControlFlowContext::is_set*/;
551 if (UNTAG_Bool(variable5)) { /*if*/
552 variable5 = ((control_flow___ControlFlowContext___set_variables_t)CALL( variable1 /*old_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___set_variables))( variable1 /*old_control_flow_ctx*/) /*ControlFlowContext::set_variables*/;
553 ((hash___HashSet___add_t)CALL(variable5,COLOR_abstract_collection___SimpleCollection___add))(variable5, variable4 /*variable*/) /*HashSet::add*/;
554 }
555 continue_22: while(0);
556 ((abstract_collection___Iterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*Iterator::next*/;
557 }
558 break_22: while(0);
559 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable1 /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
560 }
561 tracehead = trace.prev;
562 return;
563 }
564 void control_flow___AControlableBlock___accept_control_flow(val_t self, val_t param0) {
565 struct trace_t trace = {NULL, NULL, 261, LOCATE_control_flow___AControlableBlock___accept_control_flow};
566 val_t variable0;
567 val_t variable1;
568 val_t variable2;
569 trace.prev = tracehead; tracehead = &trace;
570 trace.file = LOCATE_control_flow;
571 variable0 = param0;
572 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
573 variable1 = variable2;
574 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
575 variable2 = ((control_flow___ControlFlowContext___sub_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___sub))(variable2) /*ControlFlowContext::sub*/;
576 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable2) /*ControlFlowVisitor::control_flow_ctx=*/;
577 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
578 ((control_flow___ControlFlowContext___base_block__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block__eq))(variable2, self) /*ControlFlowContext::base_block=*/;
579 ((control_flow___AControlableBlock___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AControlableBlock___accept_control_flow))( self, param0) /*super AControlableBlock::accept_control_flow*/;
580 ((control_flow___ControlFlowVisitor___control_flow_ctx__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx__eq))( variable0 /*v*/, variable1 /*old_control_flow_ctx*/) /*ControlFlowVisitor::control_flow_ctx=*/;
581 tracehead = trace.prev;
582 return;
583 }
584 void control_flow___AForVardeclExpr___accept_control_flow(val_t self, val_t param0) {
585 struct trace_t trace = {NULL, NULL, 286, LOCATE_control_flow___AForVardeclExpr___accept_control_flow};
586 val_t variable0;
587 val_t variable1;
588 trace.prev = tracehead; tracehead = &trace;
589 trace.file = LOCATE_control_flow;
590 variable0 = param0;
591 ((control_flow___AForVardeclExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AForVardeclExpr___accept_control_flow))( self, param0) /*super AForVardeclExpr::accept_control_flow*/;
592 variable1 = ((syntax_base___AForVardeclExpr___variable_t)CALL( self,COLOR_syntax_base___AForVardeclExpr___variable))( self) /*AForVardeclExpr::variable*/;
593 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable0 /*v*/, variable1) /*ControlFlowVisitor::mark_is_set*/;
594 tracehead = trace.prev;
595 return;
596 }
597 void control_flow___AVarExpr___accept_control_flow(val_t self, val_t param0) {
598 struct trace_t trace = {NULL, NULL, 295, LOCATE_control_flow___AVarExpr___accept_control_flow};
599 val_t variable0;
600 val_t variable1;
601 trace.prev = tracehead; tracehead = &trace;
602 trace.file = LOCATE_control_flow;
603 variable0 = param0;
604 ((control_flow___AVarExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AVarExpr___accept_control_flow))( self, param0) /*super AVarExpr::accept_control_flow*/;
605 variable1 = ((syntax_base___AVarFormExpr___variable_t)CALL( self,COLOR_syntax_base___AVarFormExpr___variable))( self) /*AVarFormExpr::variable*/;
606 ((control_flow___ControlFlowVisitor___check_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___check_is_set))( variable0 /*v*/, self, variable1) /*ControlFlowVisitor::check_is_set*/;
607 tracehead = trace.prev;
608 return;
609 }
610 void control_flow___AVarAssignExpr___accept_control_flow(val_t self, val_t param0) {
611 struct trace_t trace = {NULL, NULL, 303, LOCATE_control_flow___AVarAssignExpr___accept_control_flow};
612 val_t variable0;
613 val_t variable1;
614 trace.prev = tracehead; tracehead = &trace;
615 trace.file = LOCATE_control_flow;
616 variable0 = param0;
617 ((control_flow___AVarAssignExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AVarAssignExpr___accept_control_flow))( self, param0) /*super AVarAssignExpr::accept_control_flow*/;
618 variable1 = ((syntax_base___AVarFormExpr___variable_t)CALL( self,COLOR_syntax_base___AVarFormExpr___variable))( self) /*AVarFormExpr::variable*/;
619 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable0 /*v*/, variable1) /*ControlFlowVisitor::mark_is_set*/;
620 tracehead = trace.prev;
621 return;
622 }
623 void control_flow___AVarReassignExpr___accept_control_flow(val_t self, val_t param0) {
624 struct trace_t trace = {NULL, NULL, 311, LOCATE_control_flow___AVarReassignExpr___accept_control_flow};
625 val_t variable0;
626 val_t variable1;
627 trace.prev = tracehead; tracehead = &trace;
628 trace.file = LOCATE_control_flow;
629 variable0 = param0;
630 ((control_flow___AVarReassignExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AVarReassignExpr___accept_control_flow))( self, param0) /*super AVarReassignExpr::accept_control_flow*/;
631 variable1 = ((syntax_base___AVarFormExpr___variable_t)CALL( self,COLOR_syntax_base___AVarFormExpr___variable))( self) /*AVarFormExpr::variable*/;
632 ((control_flow___ControlFlowVisitor___check_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___check_is_set))( variable0 /*v*/, self, variable1) /*ControlFlowVisitor::check_is_set*/;
633 variable1 = ((syntax_base___AVarFormExpr___variable_t)CALL( self,COLOR_syntax_base___AVarFormExpr___variable))( self) /*AVarFormExpr::variable*/;
634 ((control_flow___ControlFlowVisitor___mark_is_set_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___mark_is_set))( variable0 /*v*/, variable1) /*ControlFlowVisitor::mark_is_set*/;
635 tracehead = trace.prev;
636 return;
637 }
638 void control_flow___AOnceExpr___accept_control_flow(val_t self, val_t param0) {
639 struct trace_t trace = {NULL, NULL, 321, LOCATE_control_flow___AOnceExpr___accept_control_flow};
640 val_t variable0;
641 val_t variable1;
642 trace.prev = tracehead; tracehead = &trace;
643 trace.file = LOCATE_control_flow;
644 variable0 = param0;
645 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
646 variable1 = TAG_Bool(UNTAG_Int(variable1)>UNTAG_Int( TAG_Int(0)));
647 if (UNTAG_Bool(variable1)) { /*if*/
648 variable1 = NEW_String_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)); /*new String*/
649 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable0 /*v*/, self, variable1) /*AbsSyntaxVisitor::warning*/;
650 }
651 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
652 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1)));
653 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable0 /*v*/, variable1) /*ControlFlowVisitor::once_count=*/;
654 ((control_flow___AOnceExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AOnceExpr___accept_control_flow))( self, param0) /*super AOnceExpr::accept_control_flow*/;
655 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
656 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
657 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable0 /*v*/, variable1) /*ControlFlowVisitor::once_count=*/;
658 tracehead = trace.prev;
659 return;
660 }