misc: update Changelog and NOTICE; remove BUGS and TODO
[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 val_t control_flow___VariableContext___to_s(val_t self) {
4 struct trace_t trace = {NULL, NULL, 183, LOCATE_control_flow___VariableContext___to_s};
5 static val_t once_value_2 = NIT_NULL; /* Once value for string variable[8]*/
6 static val_t once_value_3 = NIT_NULL; /* Once value for string variable[8]*/
7 static val_t once_value_4 = NIT_NULL; /* Once value for string variable[8]*/
8 val_t variable[9];
9 struct WBT_ **closurevariable = NULL;
10 trace.prev = tracehead; tracehead = &trace;
11 trace.file = LOCATE_control_flow;
12 /* Register variable[0]: Local variable */
13 variable[0] = self;
14 /* Register variable[1]: Method return value and escape marker */
15 /* Register variable[2]: Local variable */
16 /* Register variable[3]: Result */
17 variable[3] = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
18 variable[2] = variable[3];
19 /* Register variable[3]: Result */
20 variable[3] = CALL_control_flow___VariableContext___node(variable[0])(variable[0]) /*VariableContext::node*/;
21 /* Register variable[3]: Result */
22 variable[3] = CALL_parser_prod___PNode___locate(variable[3])(variable[3]) /*PNode::locate*/;
23 CALL_abstract_collection___IndexedCollection___append( variable[2] /*s*/)( variable[2] /*s*/, variable[3]) /*Buffer::append*/;
24 /* Register variable[3]: Result */
25 variable[3] = ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/;
26 /* Register variable[3]: For iterator */
27 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Collection::iterator*/;
28 while (true) { /*for*/
29 /* Register variable[4]: For 'is_ok' result */
30 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
31 if (!UNTAG_Bool(variable[4])) break; /*for*/
32 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
33 /* Register variable[5]: Local variable */
34 variable[5] = variable[4];
35 /* Register variable[6]: Local variable */
36 /* Register variable[7]: Result */
37 variable[7] = CALL_control_flow___VariableContext___stype(variable[0])(variable[0], variable[5] /*v*/) /*VariableContext::stype*/;
38 variable[6] = variable[7];
39 /* Register variable[7]: Result */
40 variable[7] = TAG_Bool(( variable[6] /*t*/ == NIT_NULL /*null*/) || (( variable[6] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[6] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[6] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[6] /*t*/)( variable[6] /*t*/, NIT_NULL /*null*/) /*Object::==*/)))));
41 if (UNTAG_Bool(variable[7])) { /*if*/
42 goto continue_1;
43 }
44 variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
45 /* Register variable[8]: Once String constant */
46 if (once_value_2 != NIT_NULL) variable[8] = once_value_2;
47 else {
48 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)) /*new String*/;
49 once_value_2 = variable[8];
50 }
51 /* Register variable[8]: Result */
52 /* Ensure var variable[8]: super-string element*/
53 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
54 variable[8] = variable[5] /*v*/ /* Ensure var: super-string element*/;
55 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
56 /* Register variable[8]: Once String constant */
57 if (once_value_3 != NIT_NULL) variable[8] = once_value_3;
58 else {
59 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(":"), TAG_Int(1)) /*new String*/;
60 once_value_3 = variable[8];
61 }
62 /* Register variable[8]: Result */
63 /* Ensure var variable[8]: super-string element*/
64 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
65 variable[8] = variable[6] /*t*/ /* Ensure var: super-string element*/;
66 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/) /*AbstractArray::add*/;
67 /* Register variable[8]: Once String constant */
68 if (once_value_4 != NIT_NULL) variable[8] = once_value_4;
69 else {
70 variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
71 once_value_4 = variable[8];
72 }
73 /* Register variable[8]: Result */
74 /* Ensure var variable[8]: super-string element*/
75 CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
76 /* Register variable[7]: Result */
77 variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
78 CALL_abstract_collection___IndexedCollection___append( variable[2] /*s*/)( variable[2] /*s*/, variable[7]) /*Buffer::append*/;
79 continue_1: while(0);
80 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
81 }
82 break_1: while(0);
83 /* Register variable[3]: Result */
84 variable[3] = CALL_string___Object___to_s( variable[2] /*s*/)( variable[2] /*s*/) /*Buffer::to_s*/;
85 variable[1] = variable[3];
86 goto return_label0;
87 return_label0: while(false);
88 tracehead = trace.prev;
89 return variable[1];
90 }
91 val_t control_flow___VariableContext_____bra(val_t self, val_t param0) {
92 struct trace_t trace = {NULL, NULL, 25, LOCATE_control_flow___VariableContext_____bra};
93 val_t variable[4];
94 struct WBT_ **closurevariable = NULL;
95 trace.prev = tracehead; tracehead = &trace;
96 trace.file = LOCATE_control_flow;
97 /* Register variable[0]: Local variable */
98 variable[0] = self;
99 /* Register variable[1]: Local variable */
100 variable[1] = param0;
101 /* Register variable[2]: Method return value and escape marker */
102 /* Register variable[3]: Result */
103 variable[3] = ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/;
104 /* Register variable[3]: Result */
105 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*s*/) /*MapRead::has_key*/;
106 if (UNTAG_Bool(variable[3])) { /*if*/
107 /* Register variable[3]: Result */
108 variable[3] = ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/;
109 /* Register variable[3]: Result */
110 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*s*/) /*MapRead::[]*/;
111 variable[2] = variable[3];
112 goto return_label5;
113 } else { /*if*/
114 variable[2] = NIT_NULL /*null*/;
115 goto return_label5;
116 }
117 return_label5: while(false);
118 tracehead = trace.prev;
119 return variable[2];
120 }
121 void control_flow___VariableContext___add(val_t self, val_t param0) {
122 struct trace_t trace = {NULL, NULL, 36, LOCATE_control_flow___VariableContext___add};
123 val_t variable[5];
124 struct WBT_ **closurevariable = NULL;
125 trace.prev = tracehead; tracehead = &trace;
126 trace.file = LOCATE_control_flow;
127 /* Register variable[0]: Local variable */
128 variable[0] = self;
129 /* Register variable[1]: Local variable */
130 variable[1] = param0;
131 /* Register variable[2]: Method return value and escape marker */
132 /* Register variable[3]: Result */
133 variable[3] = ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/;
134 /* Register variable[4]: Result */
135 variable[4] = CALL_syntax_base___Variable___name( variable[1] /*v*/)( variable[1] /*v*/) /*Variable::name*/;
136 CALL_abstract_collection___Map_____braeq(variable[3])(variable[3], variable[4], variable[1] /*v*/) /*Map::[]=*/;
137 /* Register variable[3]: Result */
138 variable[3] = ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/;
139 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[1] /*v*/) /*SimpleCollection::add*/;
140 return_label6: while(false);
141 tracehead = trace.prev;
142 return;
143 }
144 void control_flow___VariableContext___mark_is_set(val_t self, val_t param0) {
145 struct trace_t trace = {NULL, NULL, 43, LOCATE_control_flow___VariableContext___mark_is_set};
146 val_t variable[4];
147 struct WBT_ **closurevariable = NULL;
148 trace.prev = tracehead; tracehead = &trace;
149 trace.file = LOCATE_control_flow;
150 /* Register variable[0]: Local variable */
151 variable[0] = self;
152 /* Register variable[1]: Local variable */
153 variable[1] = param0;
154 /* Register variable[2]: Method return value and escape marker */
155 /* Register variable[3]: Result */
156 variable[3] = ATTR_control_flow___VariableContext____set_variables(variable[0]) /*VariableContext::_set_variables*/;
157 CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[1] /*v*/) /*HashSet::add*/;
158 return_label7: while(false);
159 tracehead = trace.prev;
160 return;
161 }
162 void control_flow___VariableContext___check_is_set(val_t self, val_t param0, val_t param1) {
163 struct trace_t trace = {NULL, NULL, 48, LOCATE_control_flow___VariableContext___check_is_set};
164 static val_t once_value_9 = NIT_NULL; /* Once value for string variable[6]*/
165 static val_t once_value_10 = NIT_NULL; /* Once value for string variable[6]*/
166 static val_t once_value_12 = NIT_NULL; /* Once value for string variable[6]*/
167 static val_t once_value_13 = NIT_NULL; /* Once value for string variable[6]*/
168 static val_t once_value_14 = NIT_NULL; /* Once value for string variable[7]*/
169 static val_t once_value_15 = NIT_NULL; /* Once value for string variable[6]*/
170 static val_t once_value_16 = NIT_NULL; /* Once value for string variable[7]*/
171 static val_t once_value_17 = NIT_NULL; /* Once value for string variable[6]*/
172 val_t variable[8];
173 struct WBT_ **closurevariable = NULL;
174 trace.prev = tracehead; tracehead = &trace;
175 trace.file = LOCATE_control_flow;
176 /* Register variable[0]: Local variable */
177 variable[0] = self;
178 /* Register variable[1]: Local variable */
179 variable[1] = param0;
180 /* Register variable[2]: Local variable */
181 variable[2] = param1;
182 /* Register variable[3]: Method return value and escape marker */
183 /* Register variable[4]: Result */
184 variable[4] = CALL_control_flow___Variable___must_be_set( variable[2] /*v*/)( variable[2] /*v*/) /*Variable::must_be_set*/;
185 /* Ensure var variable[4]: Left 'and' operand*/
186 if (UNTAG_Bool(variable[4])) { /* and */
187 /* Register variable[4]: Result */
188 variable[4] = CALL_control_flow___VariableContext___is_set(variable[0])(variable[0], variable[2] /*v*/) /*VariableContext::is_set*/;
189 variable[4] = TAG_Bool(!UNTAG_Bool(variable[4]));
190 }
191 /* Register variable[4]: Result */
192 if (UNTAG_Bool(variable[4])) { /*if*/
193 /* Register variable[4]: Result */
194 variable[4] = ATTR_control_flow___VariableContext____visitor(variable[0]) /*VariableContext::_visitor*/;
195 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
196 /* Register variable[6]: Once String constant */
197 if (once_value_9 != NIT_NULL) variable[6] = once_value_9;
198 else {
199 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Error: variable '"), TAG_Int(17)) /*new String*/;
200 once_value_9 = variable[6];
201 }
202 /* Register variable[6]: Result */
203 /* Ensure var variable[6]: super-string element*/
204 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
205 variable[6] = variable[2] /*v*/ /* Ensure var: super-string element*/;
206 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
207 /* Register variable[6]: Once String constant */
208 if (once_value_10 != NIT_NULL) variable[6] = once_value_10;
209 else {
210 variable[6] = NEW_String_string___String___with_native(BOX_NativeString("' is possibly unset."), TAG_Int(20)) /*new String*/;
211 once_value_10 = variable[6];
212 }
213 /* Register variable[6]: Result */
214 /* Ensure var variable[6]: super-string element*/
215 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
216 /* Register variable[5]: Result */
217 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
218 CALL_syntax_base___AbsSyntaxVisitor___error(variable[4])(variable[4], variable[1] /*n*/, variable[5]) /*AbsSyntaxVisitor::error*/;
219 /* Register variable[4]: Local variable */
220 variable[4] = variable[0];
221 while (true) { /*while*/
222 if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
223 variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
224 /* Register variable[6]: Once String constant */
225 if (once_value_12 != NIT_NULL) variable[6] = once_value_12;
226 else {
227 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" "), TAG_Int(2)) /*new String*/;
228 once_value_12 = variable[6];
229 }
230 /* Register variable[6]: Result */
231 /* Ensure var variable[6]: super-string element*/
232 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
233 /* Register variable[6]: Result */
234 variable[6] = CALL_control_flow___VariableContext___node( variable[4] /*x*/)( variable[4] /*x*/) /*VariableContext::node*/;
235 /* Register variable[6]: Result */
236 variable[6] = CALL_parser_prod___PNode___locate(variable[6])(variable[6]) /*PNode::locate*/;
237 /* Ensure var variable[6]: super-string element*/
238 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
239 /* Register variable[6]: Once String constant */
240 if (once_value_13 != NIT_NULL) variable[6] = once_value_13;
241 else {
242 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
243 once_value_13 = variable[6];
244 }
245 /* Register variable[6]: Result */
246 /* Ensure var variable[6]: super-string element*/
247 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
248 /* Register variable[6]: Result */
249 variable[6] = ATTR_control_flow___VariableContext____set_variables( variable[4] /*x*/) /*VariableContext::_set_variables*/;
250 /* Register variable[7]: Once String constant */
251 if (once_value_14 != NIT_NULL) variable[7] = once_value_14;
252 else {
253 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
254 once_value_14 = variable[7];
255 }
256 /* Register variable[7]: Result */
257 /* Register variable[6]: Result */
258 variable[6] = CALL_string___Collection___join(variable[6])(variable[6], variable[7]) /*Collection::join*/;
259 /* Ensure var variable[6]: super-string element*/
260 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
261 /* Register variable[6]: Once String constant */
262 if (once_value_15 != NIT_NULL) variable[6] = once_value_15;
263 else {
264 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" ; "), TAG_Int(3)) /*new String*/;
265 once_value_15 = variable[6];
266 }
267 /* Register variable[6]: Result */
268 /* Ensure var variable[6]: super-string element*/
269 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
270 /* Register variable[6]: Result */
271 variable[6] = ATTR_control_flow___VariableContext____dico( variable[4] /*x*/) /*VariableContext::_dico*/;
272 /* Register variable[7]: Once String constant */
273 if (once_value_16 != NIT_NULL) variable[7] = once_value_16;
274 else {
275 variable[7] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
276 once_value_16 = variable[7];
277 }
278 /* Register variable[7]: Result */
279 /* Register variable[6]: Result */
280 variable[6] = CALL_string___Collection___join(variable[6])(variable[6], variable[7]) /*Collection::join*/;
281 /* Ensure var variable[6]: super-string element*/
282 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
283 /* Register variable[6]: Once String constant */
284 if (once_value_17 != NIT_NULL) variable[6] = once_value_17;
285 else {
286 variable[6] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
287 once_value_17 = variable[6];
288 }
289 /* Register variable[6]: Result */
290 /* Ensure var variable[6]: super-string element*/
291 CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
292 /* Register variable[5]: Result */
293 variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
294 CALL_file___Object___print(variable[0])(variable[0], variable[5]) /*Object::print*/;
295 /* Register variable[5]: Local variable */
296 variable[5] = variable[4] /*x*/;
297 /* Register variable[6]: Result */
298 variable[6] = TAG_Bool(( variable[5] /*x0*/==NIT_NULL) || VAL_ISA( variable[5] /*x0*/, COLOR_SubVariableContext, ID_SubVariableContext)) /*cast SubVariableContext*/;
299 if (UNTAG_Bool(variable[6])) { /*if*/
300 /* Register variable[6]: Result */
301 variable[6] = CALL_control_flow___SubVariableContext___prev( variable[5] /*x0*/)( variable[5] /*x0*/) /*SubVariableContext::prev*/;
302 variable[4] = variable[6] /*x=*/;
303 } else { /*if*/
304 goto break_11;
305 }
306 continue_11: while(0);
307 }
308 break_11: while(0);
309 }
310 return_label8: while(false);
311 tracehead = trace.prev;
312 return;
313 }
314 val_t control_flow___VariableContext___stype(val_t self, val_t param0) {
315 struct trace_t trace = {NULL, NULL, 65, LOCATE_control_flow___VariableContext___stype};
316 val_t variable[4];
317 struct WBT_ **closurevariable = NULL;
318 trace.prev = tracehead; tracehead = &trace;
319 trace.file = LOCATE_control_flow;
320 /* Register variable[0]: Local variable */
321 variable[0] = self;
322 /* Register variable[1]: Local variable */
323 variable[1] = param0;
324 /* Register variable[2]: Method return value and escape marker */
325 /* Register variable[3]: Result */
326 variable[3] = ATTR_control_flow___VariableContext____stypes(variable[0]) /*VariableContext::_stypes*/;
327 /* Register variable[3]: Result */
328 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*v*/) /*MapRead::has_key*/;
329 if (UNTAG_Bool(variable[3])) { /*if*/
330 /* Register variable[3]: Result */
331 variable[3] = ATTR_control_flow___VariableContext____stypes(variable[0]) /*VariableContext::_stypes*/;
332 /* Register variable[3]: Result */
333 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*v*/) /*MapRead::[]*/;
334 variable[2] = variable[3];
335 goto return_label18;
336 } else { /*if*/
337 /* Register variable[3]: Result */
338 variable[3] = CALL_syntax_base___Variable___stype( variable[1] /*v*/)( variable[1] /*v*/) /*Variable::stype*/;
339 variable[2] = variable[3];
340 goto return_label18;
341 }
342 return_label18: while(false);
343 tracehead = trace.prev;
344 return variable[2];
345 }
346 void control_flow___VariableContext___stype__eq(val_t self, val_t param0, val_t param1) {
347 struct trace_t trace = {NULL, NULL, 76, LOCATE_control_flow___VariableContext___stype__eq};
348 val_t variable[5];
349 struct WBT_ **closurevariable = NULL;
350 trace.prev = tracehead; tracehead = &trace;
351 trace.file = LOCATE_control_flow;
352 /* Register variable[0]: Local variable */
353 variable[0] = self;
354 /* Register variable[1]: Local variable */
355 variable[1] = param0;
356 /* Register variable[2]: Local variable */
357 variable[2] = param1;
358 /* Register variable[3]: Method return value and escape marker */
359 /* Register variable[4]: Result */
360 variable[4] = ATTR_control_flow___VariableContext____stypes(variable[0]) /*VariableContext::_stypes*/;
361 CALL_abstract_collection___Map_____braeq(variable[4])(variable[4], variable[1] /*v*/, variable[2] /*t*/) /*Map::[]=*/;
362 return_label19: while(false);
363 tracehead = trace.prev;
364 return;
365 }
366 val_t control_flow___VariableContext___sub(val_t self, val_t param0) {
367 struct trace_t trace = {NULL, NULL, 92, LOCATE_control_flow___VariableContext___sub};
368 val_t variable[4];
369 struct WBT_ **closurevariable = NULL;
370 trace.prev = tracehead; tracehead = &trace;
371 trace.file = LOCATE_control_flow;
372 /* Register variable[0]: Local variable */
373 variable[0] = self;
374 /* Register variable[1]: Local variable */
375 variable[1] = param0;
376 /* Register variable[2]: Method return value and escape marker */
377 /* Register variable[3]: Result */
378 variable[3] = NEW_SubVariableContext_control_flow___SubVariableContext___with_prev(variable[0], variable[1] /*node*/) /*new SubVariableContext*/;
379 variable[2] = variable[3];
380 goto return_label20;
381 return_label20: while(false);
382 tracehead = trace.prev;
383 return variable[2];
384 }
385 val_t control_flow___VariableContext___sub_with(val_t self, val_t param0, val_t param1, val_t param2) {
386 struct trace_t trace = {NULL, NULL, 98, LOCATE_control_flow___VariableContext___sub_with};
387 val_t variable[7];
388 struct WBT_ **closurevariable = NULL;
389 trace.prev = tracehead; tracehead = &trace;
390 trace.file = LOCATE_control_flow;
391 /* Register variable[0]: Local variable */
392 variable[0] = self;
393 /* Register variable[1]: Local variable */
394 variable[1] = param0;
395 /* Register variable[2]: Local variable */
396 variable[2] = param1;
397 /* Register variable[3]: Local variable */
398 variable[3] = param2;
399 /* Register variable[4]: Method return value and escape marker */
400 /* Register variable[5]: Local variable */
401 /* Register variable[6]: Result */
402 variable[6] = CALL_control_flow___VariableContext___sub(variable[0])(variable[0], variable[1] /*node*/) /*VariableContext::sub*/;
403 variable[5] = variable[6];
404 CALL_control_flow___VariableContext___stype__eq( variable[5] /*ctx*/)( variable[5] /*ctx*/, variable[2] /*v*/, variable[3] /*t*/) /*VariableContext::stype=*/;
405 variable[4] = variable[5] /*ctx*/;
406 goto return_label21;
407 return_label21: while(false);
408 tracehead = trace.prev;
409 return variable[4];
410 }
411 val_t control_flow___VariableContext___node(val_t self) {
412 struct trace_t trace = {NULL, NULL, 109, LOCATE_control_flow___VariableContext___node};
413 val_t *variable = NULL;
414 struct WBT_ **closurevariable = NULL;
415 trace.prev = tracehead; tracehead = &trace;
416 trace.file = LOCATE_control_flow;
417 tracehead = trace.prev;
418 return ATTR_control_flow___VariableContext____node( self) /*VariableContext::_node*/;
419 }
420 void control_flow___VariableContext___init(val_t self, val_t param0, val_t param1, int* init_table) {
421 struct trace_t trace = {NULL, NULL, 112, LOCATE_control_flow___VariableContext___init};
422 val_t variable[5];
423 struct WBT_ **closurevariable = NULL;
424 trace.prev = tracehead; tracehead = &trace;
425 trace.file = LOCATE_control_flow;
426 /* Register variable[0]: Local variable */
427 variable[0] = self;
428 /* Register variable[1]: Local variable */
429 variable[1] = param0;
430 /* Register variable[2]: Local variable */
431 variable[2] = param1;
432 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_VariableContext].i]) return;
433 /* Register variable[3]: Method return value and escape marker */
434 ATTR_control_flow___VariableContext____visitor(variable[0]) /*VariableContext::_visitor*/ = variable[1] /*visitor*/;
435 ATTR_control_flow___VariableContext____node(variable[0]) /*VariableContext::_node*/ = variable[2] /*node*/;
436 /* Register variable[4]: Result */
437 variable[4] = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, Variable]*/;
438 ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/ = variable[4];
439 return_label22: while(false);
440 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_VariableContext].i] = 1;
441 tracehead = trace.prev;
442 return;
443 }
444 val_t control_flow___VariableContext___unreash(val_t self) {
445 struct trace_t trace = {NULL, NULL, 119, LOCATE_control_flow___VariableContext___unreash};
446 val_t *variable = NULL;
447 struct WBT_ **closurevariable = NULL;
448 trace.prev = tracehead; tracehead = &trace;
449 trace.file = LOCATE_control_flow;
450 tracehead = trace.prev;
451 return ATTR_control_flow___VariableContext____unreash( self) /*VariableContext::_unreash*/;
452 }
453 void control_flow___VariableContext___unreash__eq(val_t self, val_t param0) {
454 struct trace_t trace = {NULL, NULL, 119, LOCATE_control_flow___VariableContext___unreash__eq};
455 val_t *variable = NULL;
456 struct WBT_ **closurevariable = NULL;
457 trace.prev = tracehead; tracehead = &trace;
458 trace.file = LOCATE_control_flow;
459 ATTR_control_flow___VariableContext____unreash( self) /*VariableContext::_unreash*/ = param0;
460 tracehead = trace.prev;
461 return;
462 }
463 val_t control_flow___VariableContext___already_unreash(val_t self) {
464 struct trace_t trace = {NULL, NULL, 122, LOCATE_control_flow___VariableContext___already_unreash};
465 val_t *variable = NULL;
466 struct WBT_ **closurevariable = NULL;
467 trace.prev = tracehead; tracehead = &trace;
468 trace.file = LOCATE_control_flow;
469 tracehead = trace.prev;
470 return ATTR_control_flow___VariableContext____already_unreash( self) /*VariableContext::_already_unreash*/;
471 }
472 void control_flow___VariableContext___already_unreash__eq(val_t self, val_t param0) {
473 struct trace_t trace = {NULL, NULL, 122, LOCATE_control_flow___VariableContext___already_unreash__eq};
474 val_t *variable = NULL;
475 struct WBT_ **closurevariable = NULL;
476 trace.prev = tracehead; tracehead = &trace;
477 trace.file = LOCATE_control_flow;
478 ATTR_control_flow___VariableContext____already_unreash( self) /*VariableContext::_already_unreash*/ = param0;
479 tracehead = trace.prev;
480 return;
481 }
482 val_t control_flow___VariableContext___set_variables(val_t self) {
483 struct trace_t trace = {NULL, NULL, 126, LOCATE_control_flow___VariableContext___set_variables};
484 val_t *variable = NULL;
485 struct WBT_ **closurevariable = NULL;
486 trace.prev = tracehead; tracehead = &trace;
487 trace.file = LOCATE_control_flow;
488 tracehead = trace.prev;
489 return ATTR_control_flow___VariableContext____set_variables( self) /*VariableContext::_set_variables*/;
490 }
491 val_t control_flow___VariableContext___is_set(val_t self, val_t param0) {
492 struct trace_t trace = {NULL, NULL, 129, LOCATE_control_flow___VariableContext___is_set};
493 val_t variable[4];
494 struct WBT_ **closurevariable = NULL;
495 trace.prev = tracehead; tracehead = &trace;
496 trace.file = LOCATE_control_flow;
497 /* Register variable[0]: Local variable */
498 variable[0] = self;
499 /* Register variable[1]: Local variable */
500 variable[1] = param0;
501 /* Register variable[2]: Method return value and escape marker */
502 /* Register variable[3]: Result */
503 variable[3] = ATTR_control_flow___VariableContext____set_variables(variable[0]) /*VariableContext::_set_variables*/;
504 /* Register variable[3]: Result */
505 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*v*/) /*HashSet::has*/;
506 variable[2] = variable[3];
507 goto return_label23;
508 return_label23: while(false);
509 tracehead = trace.prev;
510 return variable[2];
511 }
512 void control_flow___VariableContext___merge(val_t self, val_t param0) {
513 struct trace_t trace = {NULL, NULL, 135, LOCATE_control_flow___VariableContext___merge};
514 val_t variable[9];
515 struct WBT_ **closurevariable = NULL;
516 trace.prev = tracehead; tracehead = &trace;
517 trace.file = LOCATE_control_flow;
518 /* Register variable[0]: Local variable */
519 variable[0] = self;
520 /* Register variable[1]: Local variable */
521 variable[1] = param0;
522 /* Register variable[2]: Method return value and escape marker */
523 /* Register variable[3]: Result */
524 variable[3] = CALL_control_flow___VariableContext___unreash( variable[1] /*ctx*/)( variable[1] /*ctx*/) /*VariableContext::unreash*/;
525 if (UNTAG_Bool(variable[3])) { /*if*/
526 CALL_control_flow___VariableContext___unreash__eq(variable[0])(variable[0], TAG_Bool(true)) /*VariableContext::unreash=*/;
527 /* Register variable[3]: Result */
528 variable[3] = CALL_control_flow___VariableContext___already_unreash( variable[1] /*ctx*/)( variable[1] /*ctx*/) /*VariableContext::already_unreash*/;
529 if (UNTAG_Bool(variable[3])) { /*if*/
530 CALL_control_flow___VariableContext___already_unreash__eq(variable[0])(variable[0], TAG_Bool(true)) /*VariableContext::already_unreash=*/;
531 }
532 goto return_label24;
533 }
534 /* Register variable[3]: Result */
535 variable[3] = ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/;
536 /* Register variable[3]: For iterator */
537 variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Collection::iterator*/;
538 while (true) { /*for*/
539 /* Register variable[4]: For 'is_ok' result */
540 variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
541 if (!UNTAG_Bool(variable[4])) break; /*for*/
542 variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
543 /* Register variable[5]: Local variable */
544 variable[5] = variable[4];
545 /* Register variable[6]: Result */
546 variable[6] = CALL_control_flow___VariableContext___is_set(variable[0])(variable[0], variable[5] /*v*/) /*VariableContext::is_set*/;
547 variable[6] = TAG_Bool(!UNTAG_Bool(variable[6])) /* Ensure var: Left 'and' operand*/;
548 if (UNTAG_Bool(variable[6])) { /* and */
549 /* Register variable[6]: Result */
550 variable[6] = CALL_control_flow___VariableContext___is_set( variable[1] /*ctx*/)( variable[1] /*ctx*/, variable[5] /*v*/) /*VariableContext::is_set*/;
551 }
552 /* Register variable[6]: Result */
553 if (UNTAG_Bool(variable[6])) { /*if*/
554 CALL_control_flow___VariableContext___mark_is_set(variable[0])(variable[0], variable[5] /*v*/) /*VariableContext::mark_is_set*/;
555 }
556 /* Register variable[6]: Local variable */
557 /* Register variable[7]: Result */
558 variable[7] = CALL_control_flow___VariableContext___stype(variable[0])(variable[0], variable[5] /*v*/) /*VariableContext::stype*/;
559 variable[6] = variable[7];
560 /* Register variable[7]: Local variable */
561 /* Register variable[8]: Result */
562 variable[8] = CALL_control_flow___VariableContext___stype( variable[1] /*ctx*/)( variable[1] /*ctx*/, variable[5] /*v*/) /*VariableContext::stype*/;
563 variable[7] = variable[8];
564 /* Register variable[8]: Result */
565 variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[7] /*s1*/ == variable[6] /*s*/) || (( variable[7] /*s1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*s1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*s1*/, variable[6] /*s*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*s1*/)( variable[7] /*s1*/, variable[6] /*s*/) /*Object::==*/)))))));
566 if (UNTAG_Bool(variable[8])) { /*if*/
567 CALL_control_flow___VariableContext___stype__eq(variable[0])(variable[0], variable[5] /*v*/, variable[7] /*s1*/) /*VariableContext::stype=*/;
568 }
569 continue_25: while(0);
570 CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
571 }
572 break_25: while(0);
573 return_label24: while(false);
574 tracehead = trace.prev;
575 return;
576 }
577 void control_flow___VariableContext___merge2(val_t self, val_t param0, val_t param1, val_t param2) {
578 struct trace_t trace = {NULL, NULL, 153, LOCATE_control_flow___VariableContext___merge2};
579 val_t variable[12];
580 struct WBT_ **closurevariable = NULL;
581 trace.prev = tracehead; tracehead = &trace;
582 trace.file = LOCATE_control_flow;
583 /* Register variable[0]: Local variable */
584 variable[0] = self;
585 /* Register variable[1]: Local variable */
586 variable[1] = param0;
587 /* Register variable[2]: Local variable */
588 variable[2] = param1;
589 /* Register variable[3]: Local variable */
590 variable[3] = param2;
591 /* Register variable[4]: Method return value and escape marker */
592 /* Register variable[5]: Result */
593 variable[5] = CALL_control_flow___VariableContext___unreash( variable[1] /*ctx1*/)( variable[1] /*ctx1*/) /*VariableContext::unreash*/;
594 if (UNTAG_Bool(variable[5])) { /*if*/
595 CALL_control_flow___VariableContext___merge(variable[0])(variable[0], variable[2] /*ctx2*/) /*VariableContext::merge*/;
596 } else { /*if*/
597 /* Register variable[5]: Result */
598 variable[5] = CALL_control_flow___VariableContext___unreash( variable[2] /*ctx2*/)( variable[2] /*ctx2*/) /*VariableContext::unreash*/;
599 if (UNTAG_Bool(variable[5])) { /*if*/
600 CALL_control_flow___VariableContext___merge(variable[0])(variable[0], variable[1] /*ctx1*/) /*VariableContext::merge*/;
601 }
602 }
603 /* Register variable[5]: Result */
604 variable[5] = ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/;
605 /* Register variable[5]: For iterator */
606 variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*Collection::iterator*/;
607 while (true) { /*for*/
608 /* Register variable[6]: For 'is_ok' result */
609 variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
610 if (!UNTAG_Bool(variable[6])) break; /*for*/
611 variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
612 /* Register variable[7]: Local variable */
613 variable[7] = variable[6];
614 /* Register variable[8]: Result */
615 variable[8] = CALL_control_flow___VariableContext___is_set(variable[0])(variable[0], variable[7] /*v*/) /*VariableContext::is_set*/;
616 variable[8] = TAG_Bool(!UNTAG_Bool(variable[8])) /* Ensure var: Left 'and' operand*/;
617 if (UNTAG_Bool(variable[8])) { /* and */
618 /* Register variable[8]: Result */
619 variable[8] = CALL_control_flow___VariableContext___is_set( variable[1] /*ctx1*/)( variable[1] /*ctx1*/, variable[7] /*v*/) /*VariableContext::is_set*/;
620 }
621 /* Register variable[8]: Result */
622 /* Ensure var variable[8]: Left 'and' operand*/
623 if (UNTAG_Bool(variable[8])) { /* and */
624 /* Register variable[8]: Result */
625 variable[8] = CALL_control_flow___VariableContext___is_set( variable[2] /*ctx2*/)( variable[2] /*ctx2*/, variable[7] /*v*/) /*VariableContext::is_set*/;
626 }
627 /* Register variable[8]: Result */
628 if (UNTAG_Bool(variable[8])) { /*if*/
629 CALL_control_flow___VariableContext___mark_is_set(variable[0])(variable[0], variable[7] /*v*/) /*VariableContext::mark_is_set*/;
630 }
631 /* Register variable[8]: Local variable */
632 /* Register variable[9]: Result */
633 variable[9] = CALL_control_flow___VariableContext___stype(variable[0])(variable[0], variable[7] /*v*/) /*VariableContext::stype*/;
634 variable[8] = variable[9];
635 /* Register variable[9]: Local variable */
636 /* Register variable[10]: Result */
637 variable[10] = CALL_control_flow___VariableContext___stype( variable[1] /*ctx1*/)( variable[1] /*ctx1*/, variable[7] /*v*/) /*VariableContext::stype*/;
638 variable[9] = variable[10];
639 /* Register variable[10]: Local variable */
640 /* Register variable[11]: Result */
641 variable[11] = CALL_control_flow___VariableContext___stype( variable[2] /*ctx2*/)( variable[2] /*ctx2*/, variable[7] /*v*/) /*VariableContext::stype*/;
642 variable[10] = variable[11];
643 /* Register variable[11]: Result */
644 variable[11] = TAG_Bool(( variable[9] /*s1*/ == variable[8] /*s*/) || (( variable[9] /*s1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*s1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*s1*/, variable[8] /*s*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*s1*/)( variable[9] /*s1*/, variable[8] /*s*/) /*Object::==*/)))));
645 /* Ensure var variable[11]: Left 'and' operand*/
646 if (UNTAG_Bool(variable[11])) { /* and */
647 /* Register variable[11]: Result */
648 variable[11] = TAG_Bool(( variable[10] /*s2*/ == variable[8] /*s*/) || (( variable[10] /*s2*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*s2*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*s2*/, variable[8] /*s*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*s2*/)( variable[10] /*s2*/, variable[8] /*s*/) /*Object::==*/)))));
649 }
650 /* Register variable[11]: Result */
651 if (UNTAG_Bool(variable[11])) { /*if*/
652 } else { /*if*/
653 /* Register variable[11]: Result */
654 variable[11] = TAG_Bool(( variable[9] /*s1*/ == variable[10] /*s2*/) || (( variable[9] /*s1*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*s1*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*s1*/, variable[10] /*s2*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*s1*/)( variable[9] /*s1*/, variable[10] /*s2*/) /*Object::==*/)))));
655 if (UNTAG_Bool(variable[11])) { /*if*/
656 CALL_control_flow___VariableContext___stype__eq(variable[0])(variable[0], variable[7] /*v*/, variable[9] /*s1*/) /*VariableContext::stype=*/;
657 } else { /*if*/
658 /* Register variable[11]: Result */
659 variable[11] = CALL_static_type___MMType_____l( variable[9] /*s1*/)( variable[9] /*s1*/, variable[10] /*s2*/) /*MMType::<*/;
660 if (UNTAG_Bool(variable[11])) { /*if*/
661 CALL_control_flow___VariableContext___stype__eq(variable[0])(variable[0], variable[7] /*v*/, variable[10] /*s2*/) /*VariableContext::stype=*/;
662 } else { /*if*/
663 /* Register variable[11]: Result */
664 variable[11] = CALL_static_type___MMType_____l( variable[10] /*s2*/)( variable[10] /*s2*/, variable[9] /*s1*/) /*MMType::<*/;
665 if (UNTAG_Bool(variable[11])) { /*if*/
666 CALL_control_flow___VariableContext___stype__eq(variable[0])(variable[0], variable[7] /*v*/, variable[9] /*s1*/) /*VariableContext::stype=*/;
667 } else { /*if*/
668 /* Register variable[11]: Result */
669 variable[11] = CALL_control_flow___VariableContext___stype( variable[3] /*basectx*/)( variable[3] /*basectx*/, variable[7] /*v*/) /*VariableContext::stype*/;
670 CALL_control_flow___VariableContext___stype__eq(variable[0])(variable[0], variable[7] /*v*/, variable[11]) /*VariableContext::stype=*/;
671 }
672 }
673 }
674 }
675 continue_27: while(0);
676 CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
677 }
678 break_27: while(0);
679 return_label26: while(false);
680 tracehead = trace.prev;
681 return;
682 }
683 void control_flow___RootVariableContext___init(val_t self, val_t param0, val_t param1, int* init_table) {
684 struct trace_t trace = {NULL, NULL, 198, LOCATE_control_flow___RootVariableContext___init};
685 val_t variable[5];
686 struct WBT_ **closurevariable = NULL;
687 trace.prev = tracehead; tracehead = &trace;
688 trace.file = LOCATE_control_flow;
689 /* Register variable[0]: Local variable */
690 variable[0] = self;
691 /* Register variable[1]: Local variable */
692 variable[1] = param0;
693 /* Register variable[2]: Local variable */
694 variable[2] = param1;
695 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_RootVariableContext].i]) return;
696 /* Register variable[3]: Method return value and escape marker */
697 CALL_control_flow___VariableContext___init(variable[0])(variable[0], variable[1] /*visitor*/, variable[2] /*node*/, init_table /*YYY*/) /*VariableContext::init*/;
698 /* Register variable[4]: Result */
699 variable[4] = NEW_HashSet_hash___HashSet___init() /*new HashSet[Variable]*/;
700 ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/ = variable[4];
701 return_label28: while(false);
702 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_RootVariableContext].i] = 1;
703 tracehead = trace.prev;
704 return;
705 }
706 val_t control_flow___SubVariableContext_____bra(val_t self, val_t param0) {
707 struct trace_t trace = {NULL, NULL, 209, LOCATE_control_flow___SubVariableContext_____bra};
708 val_t variable[4];
709 struct WBT_ **closurevariable = NULL;
710 trace.prev = tracehead; tracehead = &trace;
711 trace.file = LOCATE_control_flow;
712 /* Register variable[0]: Local variable */
713 variable[0] = self;
714 /* Register variable[1]: Local variable */
715 variable[1] = param0;
716 /* Register variable[2]: Method return value and escape marker */
717 /* Register variable[3]: Result */
718 variable[3] = ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/;
719 /* Register variable[3]: Result */
720 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*s*/) /*MapRead::has_key*/;
721 if (UNTAG_Bool(variable[3])) { /*if*/
722 /* Register variable[3]: Result */
723 variable[3] = ATTR_control_flow___VariableContext____dico(variable[0]) /*VariableContext::_dico*/;
724 /* Register variable[3]: Result */
725 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*s*/) /*MapRead::[]*/;
726 variable[2] = variable[3];
727 goto return_label29;
728 } else { /*if*/
729 /* Register variable[3]: Result */
730 variable[3] = CALL_control_flow___SubVariableContext___prev(variable[0])(variable[0]) /*SubVariableContext::prev*/;
731 /* Register variable[3]: Result */
732 variable[3] = CALL_control_flow___VariableContext_____bra(variable[3])(variable[3], variable[1] /*s*/) /*VariableContext::[]*/;
733 variable[2] = variable[3];
734 goto return_label29;
735 }
736 return_label29: while(false);
737 tracehead = trace.prev;
738 return variable[2];
739 }
740 val_t control_flow___SubVariableContext___stype(val_t self, val_t param0) {
741 struct trace_t trace = {NULL, NULL, 218, LOCATE_control_flow___SubVariableContext___stype};
742 val_t variable[4];
743 struct WBT_ **closurevariable = NULL;
744 trace.prev = tracehead; tracehead = &trace;
745 trace.file = LOCATE_control_flow;
746 /* Register variable[0]: Local variable */
747 variable[0] = self;
748 /* Register variable[1]: Local variable */
749 variable[1] = param0;
750 /* Register variable[2]: Method return value and escape marker */
751 /* Register variable[3]: Result */
752 variable[3] = ATTR_control_flow___VariableContext____stypes(variable[0]) /*VariableContext::_stypes*/;
753 /* Register variable[3]: Result */
754 variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3], variable[1] /*v*/) /*MapRead::has_key*/;
755 if (UNTAG_Bool(variable[3])) { /*if*/
756 /* Register variable[3]: Result */
757 variable[3] = ATTR_control_flow___VariableContext____stypes(variable[0]) /*VariableContext::_stypes*/;
758 /* Register variable[3]: Result */
759 variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[1] /*v*/) /*MapRead::[]*/;
760 variable[2] = variable[3];
761 goto return_label30;
762 } else { /*if*/
763 /* Register variable[3]: Result */
764 variable[3] = CALL_control_flow___SubVariableContext___prev(variable[0])(variable[0]) /*SubVariableContext::prev*/;
765 /* Register variable[3]: Result */
766 variable[3] = CALL_control_flow___VariableContext___stype(variable[3])(variable[3], variable[1] /*v*/) /*VariableContext::stype*/;
767 variable[2] = variable[3];
768 goto return_label30;
769 }
770 return_label30: while(false);
771 tracehead = trace.prev;
772 return variable[2];
773 }
774 val_t control_flow___SubVariableContext___is_set(val_t self, val_t param0) {
775 struct trace_t trace = {NULL, NULL, 234, LOCATE_control_flow___SubVariableContext___is_set};
776 val_t variable[4];
777 struct WBT_ **closurevariable = NULL;
778 trace.prev = tracehead; tracehead = &trace;
779 trace.file = LOCATE_control_flow;
780 /* Register variable[0]: Local variable */
781 variable[0] = self;
782 /* Register variable[1]: Local variable */
783 variable[1] = param0;
784 /* Register variable[2]: Method return value and escape marker */
785 /* Register variable[3]: Result */
786 variable[3] = ATTR_control_flow___VariableContext____set_variables(variable[0]) /*VariableContext::_set_variables*/;
787 /* Register variable[3]: Result */
788 variable[3] = CALL_abstract_collection___Collection___has(variable[3])(variable[3], variable[1] /*v*/) /*HashSet::has*/;
789 /* Ensure var variable[3]: Left 'or' operand*/
790 if (!UNTAG_Bool(variable[3])) { /* or */
791 /* Register variable[3]: Result */
792 variable[3] = ATTR_control_flow___SubVariableContext____prev(variable[0]) /*SubVariableContext::_prev*/;
793 /* Register variable[3]: Result */
794 variable[3] = CALL_control_flow___VariableContext___is_set(variable[3])(variable[3], variable[1] /*v*/) /*VariableContext::is_set*/;
795 }
796 /* Register variable[3]: Result */
797 variable[2] = variable[3];
798 goto return_label31;
799 return_label31: while(false);
800 tracehead = trace.prev;
801 return variable[2];
802 }
803 val_t control_flow___SubVariableContext___prev(val_t self) {
804 struct trace_t trace = {NULL, NULL, 207, LOCATE_control_flow___SubVariableContext___prev};
805 val_t *variable = NULL;
806 struct WBT_ **closurevariable = NULL;
807 trace.prev = tracehead; tracehead = &trace;
808 trace.file = LOCATE_control_flow;
809 tracehead = trace.prev;
810 return ATTR_control_flow___SubVariableContext____prev( self) /*SubVariableContext::_prev*/;
811 }
812 void control_flow___SubVariableContext___with_prev(val_t self, val_t param0, val_t param1, int* init_table) {
813 struct trace_t trace = {NULL, NULL, 227, LOCATE_control_flow___SubVariableContext___with_prev};
814 val_t variable[5];
815 struct WBT_ **closurevariable = NULL;
816 trace.prev = tracehead; tracehead = &trace;
817 trace.file = LOCATE_control_flow;
818 /* Register variable[0]: Local variable */
819 variable[0] = self;
820 /* Register variable[1]: Local variable */
821 variable[1] = param0;
822 /* Register variable[2]: Local variable */
823 variable[2] = param1;
824 if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_SubVariableContext].i]) return;
825 /* Register variable[3]: Method return value and escape marker */
826 /* Register variable[4]: Result */
827 variable[4] = ATTR_control_flow___VariableContext____visitor( variable[1] /*p*/) /*VariableContext::_visitor*/;
828 CALL_control_flow___VariableContext___init(variable[0])(variable[0], variable[4], variable[2] /*node*/, init_table /*YYY*/) /*VariableContext::init*/;
829 ATTR_control_flow___SubVariableContext____prev(variable[0]) /*SubVariableContext::_prev*/ = variable[1] /*p*/;
830 /* Register variable[4]: Result */
831 variable[4] = ATTR_control_flow___VariableContext____all_variables( variable[1] /*p*/) /*VariableContext::_all_variables*/;
832 ATTR_control_flow___VariableContext____all_variables(variable[0]) /*VariableContext::_all_variables*/ = variable[4];
833 return_label32: while(false);
834 init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_SubVariableContext].i] = 1;
835 tracehead = trace.prev;
836 return;
837 }
838 val_t control_flow___Variable___must_be_set(val_t self) {
839 struct trace_t trace = {NULL, NULL, 241, LOCATE_control_flow___Variable___must_be_set};
840 val_t variable[2];
841 struct WBT_ **closurevariable = NULL;
842 trace.prev = tracehead; tracehead = &trace;
843 trace.file = LOCATE_control_flow;
844 /* Register variable[0]: Local variable */
845 variable[0] = self;
846 /* Register variable[1]: Method return value and escape marker */
847 variable[1] = TAG_Bool(false);
848 goto return_label33;
849 return_label33: while(false);
850 tracehead = trace.prev;
851 return variable[1];
852 }
853 val_t control_flow___VarVariable___must_be_set(val_t self) {
854 struct trace_t trace = {NULL, NULL, 246, LOCATE_control_flow___VarVariable___must_be_set};
855 val_t variable[2];
856 struct WBT_ **closurevariable = NULL;
857 trace.prev = tracehead; tracehead = &trace;
858 trace.file = LOCATE_control_flow;
859 /* Register variable[0]: Local variable */
860 variable[0] = self;
861 /* Register variable[1]: Method return value and escape marker */
862 variable[1] = TAG_Bool(true);
863 goto return_label34;
864 return_label34: while(false);
865 tracehead = trace.prev;
866 return variable[1];
867 }