First NIT release and new clean mercurial repository
[nit.git] / c_src / control_flow._sep.c
1 #include "control_flow._sep.h"
2 void control_flow___MMSrcModule___do_control_flow(val_t self, val_t param0) {
3 struct trace_t trace = {NULL, "control_flow::MMSrcModule::do_control_flow (src/syntax//control_flow.nit:23,2--28:15)"};
4 val_t variable0;
5 val_t variable1;
6 val_t variable2;
7 trace.prev = tracehead; tracehead = &trace;
8 variable0 = param0;
9 variable2 = NEW_control_flow___ControlFlowVisitor___init( variable0 /*tc*/, self); /*new ControlFlowVisitor*/
10 variable1 = variable2;
11 variable2 = ((syntax_base___MMSrcModule___node_t)CALL( self,COLOR_syntax_base___MMSrcModule___node))( self) /*MMSrcModule::node*/;
12 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable1 /*tv*/,COLOR_parser_prod___Visitor___visit))( variable1 /*tv*/, variable2) /*ControlFlowVisitor::visit*/;
13 tracehead = trace.prev;
14 return;
15 }
16 void control_flow___ControlFlowVisitor___visit(val_t self, val_t param0) {
17 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::visit (src/syntax//control_flow.nit:38,2--40:46)"};
18 val_t variable0;
19 val_t variable1;
20 trace.prev = tracehead; tracehead = &trace;
21 variable0 = param0;
22 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*/) /*PNode::==*/)))))));
23 if (UNTAG_Bool(variable1)) { /*if*/
24 ((control_flow___PNode___accept_control_flow_t)CALL( variable0 /*n*/,COLOR_control_flow___PNode___accept_control_flow))( variable0 /*n*/, self) /*PNode::accept_control_flow*/;
25 }
26 tracehead = trace.prev;
27 return;
28 }
29 val_t control_flow___ControlFlowVisitor___once_count(val_t self) {
30 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::once_count (src/syntax//control_flow.nit:43,2--44:40)"};
31 trace.prev = tracehead; tracehead = &trace;
32 tracehead = trace.prev;
33 return ATTR_control_flow___ControlFlowVisitor____once_count( self) /*ControlFlowVisitor::_once_count*/;
34 }
35 void control_flow___ControlFlowVisitor___once_count__eq(val_t self, val_t param0) {
36 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::once_count= (src/syntax//control_flow.nit:43,2--44:40)"};
37 trace.prev = tracehead; tracehead = &trace;
38 ATTR_control_flow___ControlFlowVisitor____once_count( self) /*ControlFlowVisitor::_once_count*/ = param0;
39 tracehead = trace.prev;
40 return;
41 }
42 val_t control_flow___ControlFlowVisitor___control_flow_ctx(val_t self) {
43 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::control_flow_ctx (src/syntax//control_flow.nit:46,2--47:61)"};
44 trace.prev = tracehead; tracehead = &trace;
45 tracehead = trace.prev;
46 return ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self) /*ControlFlowVisitor::_control_flow_ctx*/;
47 }
48 void control_flow___ControlFlowVisitor___control_flow_ctx__eq(val_t self, val_t param0) {
49 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::control_flow_ctx= (src/syntax//control_flow.nit:46,2--47:61)"};
50 trace.prev = tracehead; tracehead = &trace;
51 ATTR_control_flow___ControlFlowVisitor____control_flow_ctx( self) /*ControlFlowVisitor::_control_flow_ctx*/ = param0;
52 tracehead = trace.prev;
53 return;
54 }
55 void control_flow___ControlFlowVisitor___init(val_t self, val_t param0, val_t param1, int* init_table) {
56 struct trace_t trace = {NULL, "control_flow::ControlFlowVisitor::init (src/syntax//control_flow.nit:49,2--21)"};
57 val_t variable0;
58 val_t variable1;
59 trace.prev = tracehead; tracehead = &trace;
60 variable0 = param0;
61 variable1 = param1;
62 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowVisitor].i]) return;
63 ((syntax_base___AbsSyntaxVisitor___init_t)CALL( self,COLOR_syntax_base___AbsSyntaxVisitor___init))( self, param0, param1, init_table /*YYY*/) /*AbsSyntaxVisitor::init*/;
64 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowVisitor].i] = 1;
65 tracehead = trace.prev;
66 return;
67 }
68 val_t control_flow___ControlFlowContext___prev(val_t self) {
69 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::prev (src/syntax//control_flow.nit:53,2--54:40)"};
70 trace.prev = tracehead; tracehead = &trace;
71 tracehead = trace.prev;
72 return ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/;
73 }
74 val_t control_flow___ControlFlowContext___has_return(val_t self) {
75 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::has_return (src/syntax//control_flow.nit:56,2--57:41)"};
76 trace.prev = tracehead; tracehead = &trace;
77 tracehead = trace.prev;
78 return ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/;
79 }
80 void control_flow___ControlFlowContext___has_return__eq(val_t self, val_t param0) {
81 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::has_return= (src/syntax//control_flow.nit:56,2--57:41)"};
82 trace.prev = tracehead; tracehead = &trace;
83 ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/ = param0;
84 tracehead = trace.prev;
85 return;
86 }
87 val_t control_flow___ControlFlowContext___unreash(val_t self) {
88 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::unreash (src/syntax//control_flow.nit:59,2--60:38)"};
89 trace.prev = tracehead; tracehead = &trace;
90 tracehead = trace.prev;
91 return ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/;
92 }
93 void control_flow___ControlFlowContext___unreash__eq(val_t self, val_t param0) {
94 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::unreash= (src/syntax//control_flow.nit:59,2--60:38)"};
95 trace.prev = tracehead; tracehead = &trace;
96 ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/ = param0;
97 tracehead = trace.prev;
98 return;
99 }
100 val_t control_flow___ControlFlowContext___already_unreash(val_t self) {
101 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::already_unreash (src/syntax//control_flow.nit:62,2--64:46)"};
102 trace.prev = tracehead; tracehead = &trace;
103 tracehead = trace.prev;
104 return ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/;
105 }
106 void control_flow___ControlFlowContext___already_unreash__eq(val_t self, val_t param0) {
107 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::already_unreash= (src/syntax//control_flow.nit:62,2--64:46)"};
108 trace.prev = tracehead; tracehead = &trace;
109 ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/ = param0;
110 tracehead = trace.prev;
111 return;
112 }
113 val_t control_flow___ControlFlowContext___base_block(val_t self) {
114 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::base_block (src/syntax//control_flow.nit:66,2--67:54)"};
115 trace.prev = tracehead; tracehead = &trace;
116 tracehead = trace.prev;
117 return ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/;
118 }
119 void control_flow___ControlFlowContext___base_block__eq(val_t self, val_t param0) {
120 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::base_block= (src/syntax//control_flow.nit:66,2--67:54)"};
121 trace.prev = tracehead; tracehead = &trace;
122 ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/ = param0;
123 tracehead = trace.prev;
124 return;
125 }
126 val_t control_flow___ControlFlowContext___sub(val_t self) {
127 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::sub (src/syntax//control_flow.nit:69,2--71:41)"};
128 val_t variable0;
129 trace.prev = tracehead; tracehead = &trace;
130 variable0 = NEW_control_flow___ControlFlowContext___with( self); /*new ControlFlowContext*/
131 goto return_label3;
132 return_label3: while(false);
133 tracehead = trace.prev;
134 return variable0;
135 }
136 void control_flow___ControlFlowContext___init(val_t self, int* init_table) {
137 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::init (src/syntax//control_flow.nit:74,2--5)"};
138 trace.prev = tracehead; tracehead = &trace;
139 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
140 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
141 tracehead = trace.prev;
142 return;
143 }
144 void control_flow___ControlFlowContext___with(val_t self, val_t param0, int* init_table) {
145 struct trace_t trace = {NULL, "control_flow::ControlFlowContext::with (src/syntax//control_flow.nit:78,2--84:28)"};
146 val_t variable0;
147 val_t variable1;
148 trace.prev = tracehead; tracehead = &trace;
149 variable0 = param0;
150 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i]) return;
151 ATTR_control_flow___ControlFlowContext____prev( self) /*ControlFlowContext::_prev*/ = variable0 /*p*/;
152 variable1 = ((control_flow___ControlFlowContext___has_return_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___has_return))( variable0 /*p*/) /*ControlFlowContext::has_return*/;
153 ATTR_control_flow___ControlFlowContext____has_return( self) /*ControlFlowContext::_has_return*/ = variable1;
154 variable1 = ((control_flow___ControlFlowContext___unreash_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___unreash))( variable0 /*p*/) /*ControlFlowContext::unreash*/;
155 ATTR_control_flow___ControlFlowContext____unreash( self) /*ControlFlowContext::_unreash*/ = variable1;
156 variable1 = ((control_flow___ControlFlowContext___already_unreash_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___already_unreash))( variable0 /*p*/) /*ControlFlowContext::already_unreash*/;
157 ATTR_control_flow___ControlFlowContext____already_unreash( self) /*ControlFlowContext::_already_unreash*/ = variable1;
158 variable1 = ((control_flow___ControlFlowContext___base_block_t)CALL( variable0 /*p*/,COLOR_control_flow___ControlFlowContext___base_block))( variable0 /*p*/) /*ControlFlowContext::base_block*/;
159 ATTR_control_flow___ControlFlowContext____base_block( self) /*ControlFlowContext::_base_block*/ = variable1;
160 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ControlFlowContext].i] = 1;
161 tracehead = trace.prev;
162 return;
163 }
164 void control_flow___PNode___accept_control_flow(val_t self, val_t param0) {
165 struct trace_t trace = {NULL, "control_flow::PNode::accept_control_flow (src/syntax//control_flow.nit:91,2--93:29)"};
166 val_t variable0;
167 trace.prev = tracehead; tracehead = &trace;
168 variable0 = param0;
169 ((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*/;
170 tracehead = trace.prev;
171 return;
172 }
173 void control_flow___AMethPropdef___accept_control_flow(val_t self, val_t param0) {
174 struct trace_t trace = {NULL, "control_flow::AMethPropdef::accept_control_flow (src/syntax//control_flow.nit:98,2--101:7)"};
175 val_t variable0;
176 val_t variable1;
177 trace.prev = tracehead; tracehead = &trace;
178 variable0 = param0;
179 variable1 = NEW_control_flow___ControlFlowContext___init(); /*new ControlFlowContext*/
180 ((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=*/;
181 ((control_flow___AMethPropdef___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AMethPropdef___accept_control_flow))( self, param0) /*super AMethPropdef::accept_control_flow*/;
182 tracehead = trace.prev;
183 return;
184 }
185 void control_flow___AConcreteMethPropdef___accept_control_flow(val_t self, val_t param0) {
186 struct trace_t trace = {NULL, "control_flow::AConcreteMethPropdef::accept_control_flow (src/syntax//control_flow.nit:106,2--110:58)"};
187 val_t variable0;
188 val_t variable1;
189 val_t variable2;
190 trace.prev = tracehead; tracehead = &trace;
191 variable0 = param0;
192 ((control_flow___AConcreteMethPropdef___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AConcreteMethPropdef___accept_control_flow))( self, param0) /*super AConcreteMethPropdef::accept_control_flow*/;
193 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
194 variable1 = ((control_flow___ControlFlowContext___has_return_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return))(variable1) /*ControlFlowContext::has_return*/;
195 variable1 = TAG_Bool((variable1)==( TAG_Bool(false)));
196 variable2 = variable1;
197 if (UNTAG_Bool(variable2)) { /* and */
198 variable2 = ((syntax_base___AMethPropdef___method_t)CALL( self,COLOR_syntax_base___AMethPropdef___method))( self) /*AConcreteMethPropdef::method*/;
199 variable2 = ((genericity___MMLocalProperty___signature_t)CALL(variable2,COLOR_static_type___MMLocalProperty___signature))(variable2) /*MMMethSrcMethod::signature*/;
200 variable2 = ((static_type___MMSignature___return_type_t)CALL(variable2,COLOR_static_type___MMSignature___return_type))(variable2) /*MMSignature::return_type*/;
201 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*/) /*MMType::==*/)))))));
202 }
203 variable1 = variable2;
204 if (UNTAG_Bool(variable1)) { /*if*/
205 variable1 = NEW_string___String___with_native(BOX_NativeString("Control error: Reached end of function."), TAG_Int(39)); /*new String*/
206 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable1) /*ControlFlowVisitor::error*/;
207 }
208 tracehead = trace.prev;
209 return;
210 }
211 void control_flow___ABlockExpr___accept_control_flow(val_t self, val_t param0) {
212 struct trace_t trace = {NULL, "control_flow::ABlockExpr::accept_control_flow (src/syntax//control_flow.nit:116,2--123:12)"};
213 val_t variable0;
214 val_t variable1;
215 val_t variable2;
216 val_t variable3;
217 val_t variable4;
218 trace.prev = tracehead; tracehead = &trace;
219 variable0 = param0;
220 variable1 = ((parser_nodes___ABlockExpr___n_expr_t)CALL( self,COLOR_parser_nodes___ABlockExpr___n_expr))( self) /*ABlockExpr::n_expr*/;
221 variable1 = ((list___List___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*List::iterator*/;
222 while (true) { /*for*/
223 variable2 = ((list___ListIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ListIterator::is_ok*/;
224 if (!UNTAG_Bool(variable2)) break; /*for*/
225 variable2 = ((list___ListIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ListIterator::item*/;
226 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
227 variable3 = ((control_flow___ControlFlowContext___unreash_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___unreash))(variable3) /*ControlFlowContext::unreash*/;
228 variable4 = variable3;
229 if (UNTAG_Bool(variable4)) { /* and */
230 variable4 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
231 variable4 = ((control_flow___ControlFlowContext___already_unreash_t)CALL(variable4,COLOR_control_flow___ControlFlowContext___already_unreash))(variable4) /*ControlFlowContext::already_unreash*/;
232 variable4 = TAG_Bool(!UNTAG_Bool(variable4));
233 }
234 variable3 = variable4;
235 if (UNTAG_Bool(variable3)) { /*if*/
236 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
237 ((control_flow___ControlFlowContext___already_unreash__eq_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___already_unreash__eq))(variable3, TAG_Bool(true)) /*ControlFlowContext::already_unreash=*/;
238 variable3 = NEW_string___String___with_native(BOX_NativeString("Warning: unreachable statement."), TAG_Int(31)); /*new String*/
239 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable0 /*v*/, variable2 /*e*/, variable3) /*ControlFlowVisitor::warning*/;
240 }
241 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2 /*e*/) /*ControlFlowVisitor::visit*/;
242 continue_10: while(0);
243 ((list___ListIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ListIterator::next*/;
244 }
245 break_10: while(0);
246 tracehead = trace.prev;
247 return;
248 }
249 void control_flow___AReturnExpr___accept_control_flow(val_t self, val_t param0) {
250 struct trace_t trace = {NULL, "control_flow::AReturnExpr::accept_control_flow (src/syntax//control_flow.nit:129,2--133:35)"};
251 val_t variable0;
252 val_t variable1;
253 trace.prev = tracehead; tracehead = &trace;
254 variable0 = param0;
255 ((control_flow___AReturnExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AReturnExpr___accept_control_flow))( self, param0) /*super AReturnExpr::accept_control_flow*/;
256 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
257 ((control_flow___ControlFlowContext___has_return__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::has_return=*/;
258 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
259 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
260 tracehead = trace.prev;
261 return;
262 }
263 val_t control_flow___ABlockControler___block(val_t self) {
264 struct trace_t trace = {NULL, "control_flow::ABlockControler::block (src/syntax//control_flow.nit:139,2--40)"};
265 trace.prev = tracehead; tracehead = &trace;
266 tracehead = trace.prev;
267 return ATTR_control_flow___ABlockControler____block( self) /*ABlockControler::_block*/;
268 }
269 void control_flow___ABreakExpr___accept_control_flow(val_t self, val_t param0) {
270 struct trace_t trace = {NULL, "control_flow::ABreakExpr::accept_control_flow (src/syntax//control_flow.nit:144,2--153:35)"};
271 val_t variable0;
272 val_t variable1;
273 val_t variable2;
274 trace.prev = tracehead; tracehead = &trace;
275 variable0 = param0;
276 ((control_flow___ABreakExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___ABreakExpr___accept_control_flow))( self, param0) /*super ABreakExpr::accept_control_flow*/;
277 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
278 variable2 = ((control_flow___ControlFlowContext___base_block_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block))(variable2) /*ControlFlowContext::base_block*/;
279 variable1 = variable2;
280 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*/) /*AControlableBlock::==*/)))));
281 if (UNTAG_Bool(variable2)) { /*if*/
282 variable2 = NEW_string___String___with_native(BOX_NativeString("Syntax Error: 'break' statment outside block."), TAG_Int(45)); /*new String*/
283 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable2) /*ControlFlowVisitor::error*/;
284 goto return_label12;
285 }
286 ATTR_control_flow___ABlockControler____block( self) /*ABreakExpr::_block*/ = variable1 /*block*/;
287 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
288 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable2, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
289 return_label12: while(false);
290 tracehead = trace.prev;
291 return;
292 }
293 void control_flow___AContinueExpr___accept_control_flow(val_t self, val_t param0) {
294 struct trace_t trace = {NULL, "control_flow::AContinueExpr::accept_control_flow (src/syntax//control_flow.nit:158,2--167:35)"};
295 val_t variable0;
296 val_t variable1;
297 val_t variable2;
298 trace.prev = tracehead; tracehead = &trace;
299 variable0 = param0;
300 ((control_flow___AContinueExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AContinueExpr___accept_control_flow))( self, param0) /*super AContinueExpr::accept_control_flow*/;
301 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
302 variable2 = ((control_flow___ControlFlowContext___base_block_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block))(variable2) /*ControlFlowContext::base_block*/;
303 variable1 = variable2;
304 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*/) /*AControlableBlock::==*/)))));
305 if (UNTAG_Bool(variable2)) { /*if*/
306 variable2 = NEW_string___String___with_native(BOX_NativeString("Syntax Error: 'continue' outside block."), TAG_Int(39)); /*new String*/
307 ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, self, variable2) /*ControlFlowVisitor::error*/;
308 goto return_label13;
309 }
310 ATTR_control_flow___ABlockControler____block( self) /*AContinueExpr::_block*/ = variable1 /*block*/;
311 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
312 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable2, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
313 return_label13: while(false);
314 tracehead = trace.prev;
315 return;
316 }
317 void control_flow___AAbortExpr___accept_control_flow(val_t self, val_t param0) {
318 struct trace_t trace = {NULL, "control_flow::AAbortExpr::accept_control_flow (src/syntax//control_flow.nit:172,2--176:35)"};
319 val_t variable0;
320 val_t variable1;
321 trace.prev = tracehead; tracehead = &trace;
322 variable0 = param0;
323 ((control_flow___AAbortExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AAbortExpr___accept_control_flow))( self, param0) /*super AAbortExpr::accept_control_flow*/;
324 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
325 ((control_flow___ControlFlowContext___has_return__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___has_return__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::has_return=*/;
326 variable1 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
327 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable1,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable1, TAG_Bool(true)) /*ControlFlowContext::unreash=*/;
328 tracehead = trace.prev;
329 return;
330 }
331 void control_flow___AIfExpr___accept_control_flow(val_t self, val_t param0) {
332 struct trace_t trace = {NULL, "control_flow::AIfExpr::accept_control_flow (src/syntax//control_flow.nit:181,2--204:92)"};
333 val_t variable0;
334 val_t variable1;
335 val_t variable2;
336 val_t variable3;
337 val_t variable4;
338 val_t variable5;
339 trace.prev = tracehead; tracehead = &trace;
340 variable0 = param0;
341 variable1 = ((parser_nodes___AIfExpr___n_expr_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_expr))( self) /*AIfExpr::n_expr*/;
342 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable1) /*ControlFlowVisitor::visit*/;
343 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
344 variable1 = variable2;
345 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
346 variable2 = ((control_flow___ControlFlowContext___sub_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___sub))(variable2) /*ControlFlowContext::sub*/;
347 ((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=*/;
348 variable2 = ((parser_nodes___AIfExpr___n_then_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_then))( self) /*AIfExpr::n_then*/;
349 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable2) /*ControlFlowVisitor::visit*/;
350 variable2 = ((parser_nodes___AIfExpr___n_else_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_else))( self) /*AIfExpr::n_else*/;
351 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*/) /*PExpr::==*/)))));
352 if (UNTAG_Bool(variable2)) { /*if*/
353 ((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=*/;
354 } else { /*if*/
355 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
356 variable2 = variable3;
357 ((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=*/;
358 variable3 = ((parser_nodes___AIfExpr___n_else_t)CALL( self,COLOR_parser_nodes___AIfExpr___n_else))( self) /*AIfExpr::n_else*/;
359 ((control_flow___ControlFlowVisitor___visit_t)CALL( variable0 /*v*/,COLOR_parser_prod___Visitor___visit))( variable0 /*v*/, variable3) /*ControlFlowVisitor::visit*/;
360 ((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=*/;
361 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
362 variable4 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
363 variable4 = ((control_flow___ControlFlowContext___has_return_t)CALL(variable4,COLOR_control_flow___ControlFlowContext___has_return))(variable4) /*ControlFlowContext::has_return*/;
364 variable5 = variable4;
365 if (UNTAG_Bool(variable5)) { /* and */
366 variable5 = ((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*/;
367 }
368 variable4 = variable5;
369 ((control_flow___ControlFlowContext___has_return__eq_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___has_return__eq))(variable3, variable4) /*ControlFlowContext::has_return=*/;
370 variable3 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
371 variable4 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
372 variable4 = ((control_flow___ControlFlowContext___unreash_t)CALL(variable4,COLOR_control_flow___ControlFlowContext___unreash))(variable4) /*ControlFlowContext::unreash*/;
373 variable5 = variable4;
374 if (UNTAG_Bool(variable5)) { /* and */
375 variable5 = ((control_flow___ControlFlowContext___unreash_t)CALL( variable2 /*then_control_flow_ctx*/,COLOR_control_flow___ControlFlowContext___unreash))( variable2 /*then_control_flow_ctx*/) /*ControlFlowContext::unreash*/;
376 }
377 variable4 = variable5;
378 ((control_flow___ControlFlowContext___unreash__eq_t)CALL(variable3,COLOR_control_flow___ControlFlowContext___unreash__eq))(variable3, variable4) /*ControlFlowContext::unreash=*/;
379 }
380 tracehead = trace.prev;
381 return;
382 }
383 void control_flow___AControlableBlock___accept_control_flow(val_t self, val_t param0) {
384 struct trace_t trace = {NULL, "control_flow::AControlableBlock::accept_control_flow (src/syntax//control_flow.nit:211,2--223:43)"};
385 val_t variable0;
386 val_t variable1;
387 val_t variable2;
388 trace.prev = tracehead; tracehead = &trace;
389 variable0 = param0;
390 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
391 variable1 = variable2;
392 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
393 variable2 = ((control_flow___ControlFlowContext___sub_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___sub))(variable2) /*ControlFlowContext::sub*/;
394 ((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=*/;
395 variable2 = ((control_flow___ControlFlowVisitor___control_flow_ctx_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___control_flow_ctx))( variable0 /*v*/) /*ControlFlowVisitor::control_flow_ctx*/;
396 ((control_flow___ControlFlowContext___base_block__eq_t)CALL(variable2,COLOR_control_flow___ControlFlowContext___base_block__eq))(variable2, self) /*ControlFlowContext::base_block=*/;
397 ((control_flow___AControlableBlock___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AControlableBlock___accept_control_flow))( self, param0) /*super AControlableBlock::accept_control_flow*/;
398 ((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=*/;
399 tracehead = trace.prev;
400 return;
401 }
402 void control_flow___AOnceExpr___accept_control_flow(val_t self, val_t param0) {
403 struct trace_t trace = {NULL, "control_flow::AOnceExpr::accept_control_flow (src/syntax//control_flow.nit:236,2--245:33)"};
404 val_t variable0;
405 val_t variable1;
406 trace.prev = tracehead; tracehead = &trace;
407 variable0 = param0;
408 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
409 variable1 = TAG_Bool(UNTAG_Int(variable1)>UNTAG_Int( TAG_Int(0)));
410 if (UNTAG_Bool(variable1)) { /*if*/
411 variable1 = NEW_string___String___with_native(BOX_NativeString("Useless once in a once expression."), TAG_Int(34)); /*new String*/
412 ((syntax_base___AbsSyntaxVisitor___warning_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___warning))( variable0 /*v*/, self, variable1) /*ControlFlowVisitor::warning*/;
413 }
414 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
415 variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1)));
416 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable0 /*v*/, variable1) /*ControlFlowVisitor::once_count=*/;
417 ((control_flow___AOnceExpr___accept_control_flow_t)CALL( self,COLOR_SUPER_control_flow___AOnceExpr___accept_control_flow))( self, param0) /*super AOnceExpr::accept_control_flow*/;
418 variable1 = ((control_flow___ControlFlowVisitor___once_count_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count))( variable0 /*v*/) /*ControlFlowVisitor::once_count*/;
419 variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1)));
420 ((control_flow___ControlFlowVisitor___once_count__eq_t)CALL( variable0 /*v*/,COLOR_control_flow___ControlFlowVisitor___once_count__eq))( variable0 /*v*/, variable1) /*ControlFlowVisitor::once_count=*/;
421 tracehead = trace.prev;
422 return;
423 }