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)"};
7 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
20 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
26 tracehead
= trace
.prev
;
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*/;
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
;
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*/;
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
;
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)"};
59 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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*/;
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*/;
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
;
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*/;
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
;
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*/;
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
;
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*/;
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
;
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)"};
129 trace
.prev
= tracehead
; tracehead
= &trace
;
130 variable0
= NEW_control_flow___ControlFlowContext___with( self
); /*new ControlFlowContext*/
132 return_label3
: while(false);
133 tracehead
= trace
.prev
;
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
;
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)"};
148 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
167 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
177 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
190 trace
.prev
= tracehead
; tracehead
= &trace
;
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::==*/)))))));
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*/;
208 tracehead
= trace
.prev
;
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)"};
218 trace
.prev
= tracehead
; tracehead
= &trace
;
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
));
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*/;
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*/;
246 tracehead
= trace
.prev
;
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)"};
253 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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*/;
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)"};
274 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;
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)"};
298 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;
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)"};
321 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
339 trace
.prev
= tracehead
; tracehead
= &trace
;
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=*/;
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*/;
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*/;
377 variable4
= variable5
;
378 ((control_flow___ControlFlowContext___unreash__eq_t
)CALL(variable3
,COLOR_control_flow___ControlFlowContext___unreash__eq
))(variable3
, variable4
) /*ControlFlowContext::unreash=*/;
380 tracehead
= trace
.prev
;
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)"};
388 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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)"};
406 trace
.prev
= tracehead
; tracehead
= &trace
;
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*/;
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
;