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