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)"};
8 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
21 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
27 tracehead
= trace
.prev
;
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*/;
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
;
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*/;
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
;
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)"};
60 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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*/;
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*/;
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
;
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*/;
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
;
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*/;
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
;
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*/;
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
;
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)"};
130 trace
.prev
= tracehead
; tracehead
= &trace
;
131 variable0
= NEW_control_flow___ControlFlowContext___with( self
); /*new ControlFlowContext*/
133 return_label3
: while(false);
134 tracehead
= trace
.prev
;
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
;
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)"};
149 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
168 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
178 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
191 trace
.prev
= tracehead
; tracehead
= &trace
;
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::==*/)))))));
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*/;
209 tracehead
= trace
.prev
;
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)"};
219 trace
.prev
= tracehead
; tracehead
= &trace
;
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
));
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*/;
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*/;
247 tracehead
= trace
.prev
;
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)"};
254 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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*/;
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)"};
275 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;
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)"};
299 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;
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)"};
322 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
340 trace
.prev
= tracehead
; tracehead
= &trace
;
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=*/;
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*/;
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*/;
378 variable4
= variable5
;
379 ((control_flow___ControlFlowContext___unreash__eq_t
)CALL(variable3
,COLOR_control_flow___ControlFlowContext___unreash__eq
))(variable3
, variable4
) /*ControlFlowContext::unreash=*/;
381 tracehead
= trace
.prev
;
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)"};
389 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
407 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;