1 /* valaconditionalexpression.c generated by valac, the Vala compiler
2 * generated from valaconditionalexpression.vala, do not modify */
3
4 /* valaconditionalexpression.vala
5 *
6 * Copyright (C) 2006-2011 Jürg Billeter
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 *
22 * Author:
23 * Jürg Billeter <j@bitron.ch>
24 */
25
26 #include "vala.h"
27 #include <glib.h>
28 #include <valagee.h>
29 #include <glib-object.h>
30 #include <stdlib.h>
31 #include <string.h>
32
33 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
34 #define _g_free0(var) (var = (g_free (var), NULL))
35 #define _vala_source_reference_unref0(var) ((var == NULL) ? NULL : (var = (vala_source_reference_unref (var), NULL)))
36
37 struct _ValaConditionalExpressionPrivate {
38 ValaExpression* _condition;
39 ValaExpression* _true_expression;
40 ValaExpression* _false_expression;
41 };
42
43 static gint ValaConditionalExpression_private_offset;
44 static gpointer vala_conditional_expression_parent_class = NULL;
45
46 static void vala_conditional_expression_real_accept (ValaCodeNode* base,
47 ValaCodeVisitor* visitor);
48 static void vala_conditional_expression_real_accept_children (ValaCodeNode* base,
49 ValaCodeVisitor* visitor);
50 static gboolean vala_conditional_expression_real_is_pure (ValaExpression* base);
51 static gboolean vala_conditional_expression_real_is_accessible (ValaExpression* base,
52 ValaSymbol* sym);
53 static void vala_conditional_expression_real_get_error_types (ValaCodeNode* base,
54 ValaCollection* collection,
55 ValaSourceReference* source_reference);
56 static gchar* vala_conditional_expression_real_to_string (ValaCodeNode* base);
57 static void vala_conditional_expression_real_replace_expression (ValaCodeNode* base,
58 ValaExpression* old_node,
59 ValaExpression* new_node);
60 static void vala_conditional_expression_real_get_defined_variables (ValaCodeNode* base,
61 ValaCollection* collection);
62 static void vala_conditional_expression_real_get_used_variables (ValaCodeNode* base,
63 ValaCollection* collection);
64 static gboolean vala_conditional_expression_real_check (ValaCodeNode* base,
65 ValaCodeContext* context);
66 static void vala_conditional_expression_finalize (ValaCodeNode * obj);
67 static GType vala_conditional_expression_get_type_once (void);
68
69 static inline gpointer
vala_conditional_expression_get_instance_private(ValaConditionalExpression * self)70 vala_conditional_expression_get_instance_private (ValaConditionalExpression* self)
71 {
72 return G_STRUCT_MEMBER_P (self, ValaConditionalExpression_private_offset);
73 }
74
75 ValaExpression*
vala_conditional_expression_get_condition(ValaConditionalExpression * self)76 vala_conditional_expression_get_condition (ValaConditionalExpression* self)
77 {
78 ValaExpression* result;
79 ValaExpression* _tmp0_;
80 g_return_val_if_fail (self != NULL, NULL);
81 _tmp0_ = self->priv->_condition;
82 result = _tmp0_;
83 return result;
84 }
85
86 static gpointer
_vala_code_node_ref0(gpointer self)87 _vala_code_node_ref0 (gpointer self)
88 {
89 return self ? vala_code_node_ref (self) : NULL;
90 }
91
92 void
vala_conditional_expression_set_condition(ValaConditionalExpression * self,ValaExpression * value)93 vala_conditional_expression_set_condition (ValaConditionalExpression* self,
94 ValaExpression* value)
95 {
96 ValaExpression* _tmp0_;
97 ValaExpression* _tmp1_;
98 g_return_if_fail (self != NULL);
99 _tmp0_ = _vala_code_node_ref0 (value);
100 _vala_code_node_unref0 (self->priv->_condition);
101 self->priv->_condition = _tmp0_;
102 _tmp1_ = self->priv->_condition;
103 vala_code_node_set_parent_node ((ValaCodeNode*) _tmp1_, (ValaCodeNode*) self);
104 }
105
106 ValaExpression*
vala_conditional_expression_get_true_expression(ValaConditionalExpression * self)107 vala_conditional_expression_get_true_expression (ValaConditionalExpression* self)
108 {
109 ValaExpression* result;
110 ValaExpression* _tmp0_;
111 g_return_val_if_fail (self != NULL, NULL);
112 _tmp0_ = self->priv->_true_expression;
113 result = _tmp0_;
114 return result;
115 }
116
117 void
vala_conditional_expression_set_true_expression(ValaConditionalExpression * self,ValaExpression * value)118 vala_conditional_expression_set_true_expression (ValaConditionalExpression* self,
119 ValaExpression* value)
120 {
121 ValaExpression* _tmp0_;
122 ValaExpression* _tmp1_;
123 g_return_if_fail (self != NULL);
124 _tmp0_ = _vala_code_node_ref0 (value);
125 _vala_code_node_unref0 (self->priv->_true_expression);
126 self->priv->_true_expression = _tmp0_;
127 _tmp1_ = self->priv->_true_expression;
128 vala_code_node_set_parent_node ((ValaCodeNode*) _tmp1_, (ValaCodeNode*) self);
129 }
130
131 ValaExpression*
vala_conditional_expression_get_false_expression(ValaConditionalExpression * self)132 vala_conditional_expression_get_false_expression (ValaConditionalExpression* self)
133 {
134 ValaExpression* result;
135 ValaExpression* _tmp0_;
136 g_return_val_if_fail (self != NULL, NULL);
137 _tmp0_ = self->priv->_false_expression;
138 result = _tmp0_;
139 return result;
140 }
141
142 void
vala_conditional_expression_set_false_expression(ValaConditionalExpression * self,ValaExpression * value)143 vala_conditional_expression_set_false_expression (ValaConditionalExpression* self,
144 ValaExpression* value)
145 {
146 ValaExpression* _tmp0_;
147 ValaExpression* _tmp1_;
148 g_return_if_fail (self != NULL);
149 _tmp0_ = _vala_code_node_ref0 (value);
150 _vala_code_node_unref0 (self->priv->_false_expression);
151 self->priv->_false_expression = _tmp0_;
152 _tmp1_ = self->priv->_false_expression;
153 vala_code_node_set_parent_node ((ValaCodeNode*) _tmp1_, (ValaCodeNode*) self);
154 }
155
156 /**
157 * Creates a new conditional expression.
158 *
159 * @param cond a condition
160 * @param true_expr expression to be evaluated if condition is true
161 * @param false_expr expression to be evaluated if condition is false
162 * @return newly created conditional expression
163 */
164 ValaConditionalExpression*
vala_conditional_expression_construct(GType object_type,ValaExpression * cond,ValaExpression * true_expr,ValaExpression * false_expr,ValaSourceReference * source)165 vala_conditional_expression_construct (GType object_type,
166 ValaExpression* cond,
167 ValaExpression* true_expr,
168 ValaExpression* false_expr,
169 ValaSourceReference* source)
170 {
171 ValaConditionalExpression* self = NULL;
172 g_return_val_if_fail (cond != NULL, NULL);
173 g_return_val_if_fail (true_expr != NULL, NULL);
174 g_return_val_if_fail (false_expr != NULL, NULL);
175 self = (ValaConditionalExpression*) vala_expression_construct (object_type);
176 vala_conditional_expression_set_condition (self, cond);
177 vala_conditional_expression_set_true_expression (self, true_expr);
178 vala_conditional_expression_set_false_expression (self, false_expr);
179 vala_code_node_set_source_reference ((ValaCodeNode*) self, source);
180 return self;
181 }
182
183 ValaConditionalExpression*
vala_conditional_expression_new(ValaExpression * cond,ValaExpression * true_expr,ValaExpression * false_expr,ValaSourceReference * source)184 vala_conditional_expression_new (ValaExpression* cond,
185 ValaExpression* true_expr,
186 ValaExpression* false_expr,
187 ValaSourceReference* source)
188 {
189 return vala_conditional_expression_construct (VALA_TYPE_CONDITIONAL_EXPRESSION, cond, true_expr, false_expr, source);
190 }
191
192 static void
vala_conditional_expression_real_accept(ValaCodeNode * base,ValaCodeVisitor * visitor)193 vala_conditional_expression_real_accept (ValaCodeNode* base,
194 ValaCodeVisitor* visitor)
195 {
196 ValaConditionalExpression * self;
197 self = (ValaConditionalExpression*) base;
198 g_return_if_fail (visitor != NULL);
199 vala_code_visitor_visit_conditional_expression (visitor, self);
200 vala_code_visitor_visit_expression (visitor, (ValaExpression*) self);
201 }
202
203 static void
vala_conditional_expression_real_accept_children(ValaCodeNode * base,ValaCodeVisitor * visitor)204 vala_conditional_expression_real_accept_children (ValaCodeNode* base,
205 ValaCodeVisitor* visitor)
206 {
207 ValaConditionalExpression * self;
208 ValaExpression* _tmp0_;
209 ValaExpression* _tmp1_;
210 ValaExpression* _tmp2_;
211 ValaExpression* _tmp3_;
212 ValaExpression* _tmp4_;
213 ValaExpression* _tmp5_;
214 self = (ValaConditionalExpression*) base;
215 g_return_if_fail (visitor != NULL);
216 _tmp0_ = vala_conditional_expression_get_condition (self);
217 _tmp1_ = _tmp0_;
218 vala_code_node_accept ((ValaCodeNode*) _tmp1_, visitor);
219 _tmp2_ = vala_conditional_expression_get_true_expression (self);
220 _tmp3_ = _tmp2_;
221 vala_code_node_accept ((ValaCodeNode*) _tmp3_, visitor);
222 _tmp4_ = vala_conditional_expression_get_false_expression (self);
223 _tmp5_ = _tmp4_;
224 vala_code_node_accept ((ValaCodeNode*) _tmp5_, visitor);
225 }
226
227 static gboolean
vala_conditional_expression_real_is_pure(ValaExpression * base)228 vala_conditional_expression_real_is_pure (ValaExpression* base)
229 {
230 ValaConditionalExpression * self;
231 gboolean _tmp0_ = FALSE;
232 gboolean _tmp1_ = FALSE;
233 ValaExpression* _tmp2_;
234 ValaExpression* _tmp3_;
235 gboolean result = FALSE;
236 self = (ValaConditionalExpression*) base;
237 _tmp2_ = vala_conditional_expression_get_condition (self);
238 _tmp3_ = _tmp2_;
239 if (vala_expression_is_pure (_tmp3_)) {
240 ValaExpression* _tmp4_;
241 ValaExpression* _tmp5_;
242 _tmp4_ = vala_conditional_expression_get_true_expression (self);
243 _tmp5_ = _tmp4_;
244 _tmp1_ = vala_expression_is_pure (_tmp5_);
245 } else {
246 _tmp1_ = FALSE;
247 }
248 if (_tmp1_) {
249 ValaExpression* _tmp6_;
250 ValaExpression* _tmp7_;
251 _tmp6_ = vala_conditional_expression_get_false_expression (self);
252 _tmp7_ = _tmp6_;
253 _tmp0_ = vala_expression_is_pure (_tmp7_);
254 } else {
255 _tmp0_ = FALSE;
256 }
257 result = _tmp0_;
258 return result;
259 }
260
261 static gboolean
vala_conditional_expression_real_is_accessible(ValaExpression * base,ValaSymbol * sym)262 vala_conditional_expression_real_is_accessible (ValaExpression* base,
263 ValaSymbol* sym)
264 {
265 ValaConditionalExpression * self;
266 gboolean _tmp0_ = FALSE;
267 gboolean _tmp1_ = FALSE;
268 ValaExpression* _tmp2_;
269 ValaExpression* _tmp3_;
270 gboolean result = FALSE;
271 self = (ValaConditionalExpression*) base;
272 g_return_val_if_fail (sym != NULL, FALSE);
273 _tmp2_ = vala_conditional_expression_get_condition (self);
274 _tmp3_ = _tmp2_;
275 if (vala_expression_is_accessible (_tmp3_, sym)) {
276 ValaExpression* _tmp4_;
277 ValaExpression* _tmp5_;
278 _tmp4_ = vala_conditional_expression_get_true_expression (self);
279 _tmp5_ = _tmp4_;
280 _tmp1_ = vala_expression_is_accessible (_tmp5_, sym);
281 } else {
282 _tmp1_ = FALSE;
283 }
284 if (_tmp1_) {
285 ValaExpression* _tmp6_;
286 ValaExpression* _tmp7_;
287 _tmp6_ = vala_conditional_expression_get_false_expression (self);
288 _tmp7_ = _tmp6_;
289 _tmp0_ = vala_expression_is_accessible (_tmp7_, sym);
290 } else {
291 _tmp0_ = FALSE;
292 }
293 result = _tmp0_;
294 return result;
295 }
296
297 static void
vala_conditional_expression_real_get_error_types(ValaCodeNode * base,ValaCollection * collection,ValaSourceReference * source_reference)298 vala_conditional_expression_real_get_error_types (ValaCodeNode* base,
299 ValaCollection* collection,
300 ValaSourceReference* source_reference)
301 {
302 ValaConditionalExpression * self;
303 ValaExpression* _tmp0_;
304 ValaExpression* _tmp1_;
305 ValaExpression* _tmp2_;
306 ValaExpression* _tmp3_;
307 ValaExpression* _tmp4_;
308 ValaExpression* _tmp5_;
309 self = (ValaConditionalExpression*) base;
310 g_return_if_fail (collection != NULL);
311 _tmp0_ = vala_conditional_expression_get_condition (self);
312 _tmp1_ = _tmp0_;
313 vala_code_node_get_error_types ((ValaCodeNode*) _tmp1_, collection, source_reference);
314 _tmp2_ = vala_conditional_expression_get_true_expression (self);
315 _tmp3_ = _tmp2_;
316 vala_code_node_get_error_types ((ValaCodeNode*) _tmp3_, collection, source_reference);
317 _tmp4_ = vala_conditional_expression_get_false_expression (self);
318 _tmp5_ = _tmp4_;
319 vala_code_node_get_error_types ((ValaCodeNode*) _tmp5_, collection, source_reference);
320 }
321
322 static gchar*
vala_conditional_expression_real_to_string(ValaCodeNode * base)323 vala_conditional_expression_real_to_string (ValaCodeNode* base)
324 {
325 ValaConditionalExpression * self;
326 ValaExpression* _tmp0_;
327 ValaExpression* _tmp1_;
328 gchar* _tmp2_;
329 gchar* _tmp3_;
330 ValaExpression* _tmp4_;
331 ValaExpression* _tmp5_;
332 gchar* _tmp6_;
333 gchar* _tmp7_;
334 ValaExpression* _tmp8_;
335 ValaExpression* _tmp9_;
336 gchar* _tmp10_;
337 gchar* _tmp11_;
338 gchar* _tmp12_;
339 gchar* _tmp13_;
340 gchar* result = NULL;
341 self = (ValaConditionalExpression*) base;
342 _tmp0_ = vala_conditional_expression_get_condition (self);
343 _tmp1_ = _tmp0_;
344 _tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
345 _tmp3_ = _tmp2_;
346 _tmp4_ = vala_conditional_expression_get_true_expression (self);
347 _tmp5_ = _tmp4_;
348 _tmp6_ = vala_code_node_to_string ((ValaCodeNode*) _tmp5_);
349 _tmp7_ = _tmp6_;
350 _tmp8_ = vala_conditional_expression_get_false_expression (self);
351 _tmp9_ = _tmp8_;
352 _tmp10_ = vala_code_node_to_string ((ValaCodeNode*) _tmp9_);
353 _tmp11_ = _tmp10_;
354 _tmp12_ = g_strdup_printf ("(%s ? %s : %s)", _tmp3_, _tmp7_, _tmp11_);
355 _tmp13_ = _tmp12_;
356 _g_free0 (_tmp11_);
357 _g_free0 (_tmp7_);
358 _g_free0 (_tmp3_);
359 result = _tmp13_;
360 return result;
361 }
362
363 static void
vala_conditional_expression_real_replace_expression(ValaCodeNode * base,ValaExpression * old_node,ValaExpression * new_node)364 vala_conditional_expression_real_replace_expression (ValaCodeNode* base,
365 ValaExpression* old_node,
366 ValaExpression* new_node)
367 {
368 ValaConditionalExpression * self;
369 ValaExpression* _tmp0_;
370 ValaExpression* _tmp1_;
371 ValaExpression* _tmp2_;
372 ValaExpression* _tmp3_;
373 ValaExpression* _tmp4_;
374 ValaExpression* _tmp5_;
375 self = (ValaConditionalExpression*) base;
376 g_return_if_fail (old_node != NULL);
377 g_return_if_fail (new_node != NULL);
378 _tmp0_ = vala_conditional_expression_get_condition (self);
379 _tmp1_ = _tmp0_;
380 if (_tmp1_ == old_node) {
381 vala_conditional_expression_set_condition (self, new_node);
382 }
383 _tmp2_ = vala_conditional_expression_get_true_expression (self);
384 _tmp3_ = _tmp2_;
385 if (_tmp3_ == old_node) {
386 vala_conditional_expression_set_true_expression (self, new_node);
387 }
388 _tmp4_ = vala_conditional_expression_get_false_expression (self);
389 _tmp5_ = _tmp4_;
390 if (_tmp5_ == old_node) {
391 vala_conditional_expression_set_false_expression (self, new_node);
392 }
393 }
394
395 static void
vala_conditional_expression_real_get_defined_variables(ValaCodeNode * base,ValaCollection * collection)396 vala_conditional_expression_real_get_defined_variables (ValaCodeNode* base,
397 ValaCollection* collection)
398 {
399 ValaConditionalExpression * self;
400 ValaExpression* _tmp0_;
401 ValaExpression* _tmp1_;
402 ValaExpression* _tmp2_;
403 ValaExpression* _tmp3_;
404 ValaExpression* _tmp4_;
405 ValaExpression* _tmp5_;
406 self = (ValaConditionalExpression*) base;
407 g_return_if_fail (collection != NULL);
408 _tmp0_ = vala_conditional_expression_get_condition (self);
409 _tmp1_ = _tmp0_;
410 vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp1_, collection);
411 _tmp2_ = vala_conditional_expression_get_true_expression (self);
412 _tmp3_ = _tmp2_;
413 vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp3_, collection);
414 _tmp4_ = vala_conditional_expression_get_false_expression (self);
415 _tmp5_ = _tmp4_;
416 vala_code_node_get_defined_variables ((ValaCodeNode*) _tmp5_, collection);
417 }
418
419 static void
vala_conditional_expression_real_get_used_variables(ValaCodeNode * base,ValaCollection * collection)420 vala_conditional_expression_real_get_used_variables (ValaCodeNode* base,
421 ValaCollection* collection)
422 {
423 ValaConditionalExpression * self;
424 ValaExpression* _tmp0_;
425 ValaExpression* _tmp1_;
426 ValaExpression* _tmp2_;
427 ValaExpression* _tmp3_;
428 ValaExpression* _tmp4_;
429 ValaExpression* _tmp5_;
430 self = (ValaConditionalExpression*) base;
431 g_return_if_fail (collection != NULL);
432 _tmp0_ = vala_conditional_expression_get_condition (self);
433 _tmp1_ = _tmp0_;
434 vala_code_node_get_used_variables ((ValaCodeNode*) _tmp1_, collection);
435 _tmp2_ = vala_conditional_expression_get_true_expression (self);
436 _tmp3_ = _tmp2_;
437 vala_code_node_get_used_variables ((ValaCodeNode*) _tmp3_, collection);
438 _tmp4_ = vala_conditional_expression_get_false_expression (self);
439 _tmp5_ = _tmp4_;
440 vala_code_node_get_used_variables ((ValaCodeNode*) _tmp5_, collection);
441 }
442
443 static gboolean
vala_conditional_expression_real_check(ValaCodeNode * base,ValaCodeContext * context)444 vala_conditional_expression_real_check (ValaCodeNode* base,
445 ValaCodeContext* context)
446 {
447 ValaConditionalExpression * self;
448 gboolean _tmp0_;
449 gboolean _tmp1_;
450 ValaSemanticAnalyzer* _tmp4_;
451 ValaSemanticAnalyzer* _tmp5_;
452 ValaSymbol* _tmp6_;
453 ValaSymbol* _tmp7_;
454 gchar* temp_name = NULL;
455 gchar* _tmp10_;
456 ValaExpression* _tmp11_;
457 ValaExpression* _tmp12_;
458 ValaDataType* _tmp13_;
459 ValaDataType* _tmp14_;
460 ValaExpression* _tmp15_;
461 ValaExpression* _tmp16_;
462 ValaDataType* _tmp17_;
463 ValaDataType* _tmp18_;
464 ValaLocalVariable* local = NULL;
465 const gchar* _tmp19_;
466 ValaSourceReference* _tmp20_;
467 ValaSourceReference* _tmp21_;
468 ValaLocalVariable* _tmp22_;
469 ValaDeclarationStatement* decl = NULL;
470 ValaLocalVariable* _tmp23_;
471 ValaSourceReference* _tmp24_;
472 ValaSourceReference* _tmp25_;
473 ValaDeclarationStatement* _tmp26_;
474 ValaLocalVariable* true_local = NULL;
475 const gchar* _tmp27_;
476 ValaExpression* _tmp28_;
477 ValaExpression* _tmp29_;
478 ValaExpression* _tmp30_;
479 ValaExpression* _tmp31_;
480 ValaSourceReference* _tmp32_;
481 ValaSourceReference* _tmp33_;
482 ValaLocalVariable* _tmp34_;
483 ValaBlock* true_block = NULL;
484 ValaExpression* _tmp35_;
485 ValaExpression* _tmp36_;
486 ValaSourceReference* _tmp37_;
487 ValaSourceReference* _tmp38_;
488 ValaBlock* _tmp39_;
489 ValaDeclarationStatement* true_decl = NULL;
490 ValaLocalVariable* _tmp40_;
491 ValaExpression* _tmp41_;
492 ValaExpression* _tmp42_;
493 ValaSourceReference* _tmp43_;
494 ValaSourceReference* _tmp44_;
495 ValaDeclarationStatement* _tmp45_;
496 ValaBlock* _tmp46_;
497 ValaDeclarationStatement* _tmp47_;
498 ValaLocalVariable* false_local = NULL;
499 const gchar* _tmp48_;
500 ValaExpression* _tmp49_;
501 ValaExpression* _tmp50_;
502 ValaExpression* _tmp51_;
503 ValaExpression* _tmp52_;
504 ValaSourceReference* _tmp53_;
505 ValaSourceReference* _tmp54_;
506 ValaLocalVariable* _tmp55_;
507 ValaBlock* false_block = NULL;
508 ValaExpression* _tmp56_;
509 ValaExpression* _tmp57_;
510 ValaSourceReference* _tmp58_;
511 ValaSourceReference* _tmp59_;
512 ValaBlock* _tmp60_;
513 ValaDeclarationStatement* false_decl = NULL;
514 ValaLocalVariable* _tmp61_;
515 ValaExpression* _tmp62_;
516 ValaExpression* _tmp63_;
517 ValaSourceReference* _tmp64_;
518 ValaSourceReference* _tmp65_;
519 ValaDeclarationStatement* _tmp66_;
520 ValaBlock* _tmp67_;
521 ValaDeclarationStatement* _tmp68_;
522 ValaIfStatement* if_stmt = NULL;
523 ValaExpression* _tmp69_;
524 ValaExpression* _tmp70_;
525 ValaBlock* _tmp71_;
526 ValaBlock* _tmp72_;
527 ValaSourceReference* _tmp73_;
528 ValaSourceReference* _tmp74_;
529 ValaIfStatement* _tmp75_;
530 ValaSemanticAnalyzer* _tmp76_;
531 ValaSemanticAnalyzer* _tmp77_;
532 ValaBlock* _tmp78_;
533 ValaDeclarationStatement* _tmp79_;
534 ValaSemanticAnalyzer* _tmp80_;
535 ValaSemanticAnalyzer* _tmp81_;
536 ValaBlock* _tmp82_;
537 ValaIfStatement* _tmp83_;
538 gboolean _tmp84_ = FALSE;
539 gboolean _tmp85_ = FALSE;
540 ValaIfStatement* _tmp86_;
541 ValaLocalVariable* _tmp95_;
542 ValaExpression* _tmp96_;
543 ValaExpression* _tmp97_;
544 ValaLocalVariable* _tmp98_;
545 ValaExpression* _tmp99_;
546 ValaExpression* _tmp100_;
547 ValaBlock* _tmp101_;
548 ValaLocalVariable* _tmp102_;
549 ValaBlock* _tmp103_;
550 ValaLocalVariable* _tmp104_;
551 ValaExpression* _tmp105_;
552 ValaExpression* _tmp106_;
553 ValaDataType* _tmp107_;
554 ValaDataType* _tmp108_;
555 ValaExpression* _tmp109_;
556 ValaExpression* _tmp110_;
557 ValaDataType* _tmp111_;
558 ValaDataType* _tmp112_;
559 gboolean _tmp167_ = FALSE;
560 ValaExpression* _tmp168_;
561 ValaExpression* _tmp169_;
562 ValaDataType* _tmp170_;
563 ValaDataType* _tmp171_;
564 gboolean _tmp172_;
565 gboolean _tmp173_;
566 ValaDataType* _tmp180_;
567 ValaDataType* _tmp181_;
568 ValaDataType* _tmp182_;
569 ValaDataType* _tmp183_;
570 ValaDataType* _tmp184_;
571 ValaDataType* _tmp185_;
572 ValaLocalVariable* _tmp186_;
573 ValaDataType* _tmp187_;
574 ValaDataType* _tmp188_;
575 ValaDeclarationStatement* _tmp189_;
576 ValaExpression* _tmp190_;
577 ValaExpression* _tmp191_;
578 ValaDataType* _tmp192_;
579 ValaDataType* _tmp193_;
580 ValaExpression* _tmp194_;
581 ValaExpression* _tmp195_;
582 ValaDataType* _tmp196_;
583 ValaDataType* _tmp197_;
584 ValaExpressionStatement* true_stmt = NULL;
585 ValaLocalVariable* _tmp198_;
586 const gchar* _tmp199_;
587 const gchar* _tmp200_;
588 ValaExpression* _tmp201_;
589 ValaExpression* _tmp202_;
590 ValaSourceReference* _tmp203_;
591 ValaSourceReference* _tmp204_;
592 ValaMemberAccess* _tmp205_;
593 ValaMemberAccess* _tmp206_;
594 ValaExpression* _tmp207_;
595 ValaExpression* _tmp208_;
596 ValaExpression* _tmp209_;
597 ValaExpression* _tmp210_;
598 ValaSourceReference* _tmp211_;
599 ValaSourceReference* _tmp212_;
600 ValaAssignment* _tmp213_;
601 ValaAssignment* _tmp214_;
602 ValaExpression* _tmp215_;
603 ValaExpression* _tmp216_;
604 ValaSourceReference* _tmp217_;
605 ValaSourceReference* _tmp218_;
606 ValaExpressionStatement* _tmp219_;
607 ValaExpressionStatement* _tmp220_;
608 ValaExpressionStatement* false_stmt = NULL;
609 ValaLocalVariable* _tmp221_;
610 const gchar* _tmp222_;
611 const gchar* _tmp223_;
612 ValaExpression* _tmp224_;
613 ValaExpression* _tmp225_;
614 ValaSourceReference* _tmp226_;
615 ValaSourceReference* _tmp227_;
616 ValaMemberAccess* _tmp228_;
617 ValaMemberAccess* _tmp229_;
618 ValaExpression* _tmp230_;
619 ValaExpression* _tmp231_;
620 ValaExpression* _tmp232_;
621 ValaExpression* _tmp233_;
622 ValaSourceReference* _tmp234_;
623 ValaSourceReference* _tmp235_;
624 ValaAssignment* _tmp236_;
625 ValaAssignment* _tmp237_;
626 ValaExpression* _tmp238_;
627 ValaExpression* _tmp239_;
628 ValaSourceReference* _tmp240_;
629 ValaSourceReference* _tmp241_;
630 ValaExpressionStatement* _tmp242_;
631 ValaExpressionStatement* _tmp243_;
632 ValaBlock* _tmp244_;
633 ValaDeclarationStatement* _tmp245_;
634 ValaExpressionStatement* _tmp246_;
635 ValaBlock* _tmp247_;
636 ValaDeclarationStatement* _tmp248_;
637 ValaExpressionStatement* _tmp249_;
638 ValaExpressionStatement* _tmp250_;
639 ValaExpressionStatement* _tmp251_;
640 ValaMemberAccess* ma = NULL;
641 ValaLocalVariable* _tmp252_;
642 const gchar* _tmp253_;
643 const gchar* _tmp254_;
644 ValaSourceReference* _tmp255_;
645 ValaSourceReference* _tmp256_;
646 ValaMemberAccess* _tmp257_;
647 ValaMemberAccess* _tmp258_;
648 ValaDataType* _tmp259_;
649 ValaDataType* _tmp260_;
650 ValaMemberAccess* _tmp261_;
651 ValaDataType* _tmp262_;
652 ValaDataType* _tmp263_;
653 ValaCodeNode* _tmp264_;
654 ValaCodeNode* _tmp265_;
655 ValaMemberAccess* _tmp266_;
656 ValaMemberAccess* _tmp267_;
657 gboolean result = FALSE;
658 self = (ValaConditionalExpression*) base;
659 g_return_val_if_fail (context != NULL, FALSE);
660 _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
661 _tmp1_ = _tmp0_;
662 if (_tmp1_) {
663 gboolean _tmp2_;
664 gboolean _tmp3_;
665 _tmp2_ = vala_code_node_get_error ((ValaCodeNode*) self);
666 _tmp3_ = _tmp2_;
667 result = !_tmp3_;
668 return result;
669 }
670 vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
671 _tmp4_ = vala_code_context_get_analyzer (context);
672 _tmp5_ = _tmp4_;
673 _tmp6_ = vala_semantic_analyzer_get_current_symbol (_tmp5_);
674 _tmp7_ = _tmp6_;
675 if (!VALA_IS_BLOCK (_tmp7_)) {
676 ValaSourceReference* _tmp8_;
677 ValaSourceReference* _tmp9_;
678 _tmp8_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
679 _tmp9_ = _tmp8_;
680 vala_report_error (_tmp9_, "Conditional expressions may only be used in blocks");
681 vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
682 result = FALSE;
683 return result;
684 }
685 _tmp10_ = vala_code_node_get_temp_name ();
686 temp_name = _tmp10_;
687 _tmp11_ = vala_conditional_expression_get_true_expression (self);
688 _tmp12_ = _tmp11_;
689 _tmp13_ = vala_expression_get_target_type ((ValaExpression*) self);
690 _tmp14_ = _tmp13_;
691 vala_expression_set_target_type (_tmp12_, _tmp14_);
692 _tmp15_ = vala_conditional_expression_get_false_expression (self);
693 _tmp16_ = _tmp15_;
694 _tmp17_ = vala_expression_get_target_type ((ValaExpression*) self);
695 _tmp18_ = _tmp17_;
696 vala_expression_set_target_type (_tmp16_, _tmp18_);
697 _tmp19_ = temp_name;
698 _tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
699 _tmp21_ = _tmp20_;
700 _tmp22_ = vala_local_variable_new (NULL, _tmp19_, NULL, _tmp21_);
701 local = _tmp22_;
702 _tmp23_ = local;
703 _tmp24_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
704 _tmp25_ = _tmp24_;
705 _tmp26_ = vala_declaration_statement_new ((ValaSymbol*) _tmp23_, _tmp25_);
706 decl = _tmp26_;
707 _tmp27_ = temp_name;
708 _tmp28_ = vala_conditional_expression_get_true_expression (self);
709 _tmp29_ = _tmp28_;
710 _tmp30_ = vala_conditional_expression_get_true_expression (self);
711 _tmp31_ = _tmp30_;
712 _tmp32_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp31_);
713 _tmp33_ = _tmp32_;
714 _tmp34_ = vala_local_variable_new (NULL, _tmp27_, _tmp29_, _tmp33_);
715 true_local = _tmp34_;
716 _tmp35_ = vala_conditional_expression_get_true_expression (self);
717 _tmp36_ = _tmp35_;
718 _tmp37_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp36_);
719 _tmp38_ = _tmp37_;
720 _tmp39_ = vala_block_new (_tmp38_);
721 true_block = _tmp39_;
722 _tmp40_ = true_local;
723 _tmp41_ = vala_conditional_expression_get_true_expression (self);
724 _tmp42_ = _tmp41_;
725 _tmp43_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp42_);
726 _tmp44_ = _tmp43_;
727 _tmp45_ = vala_declaration_statement_new ((ValaSymbol*) _tmp40_, _tmp44_);
728 true_decl = _tmp45_;
729 _tmp46_ = true_block;
730 _tmp47_ = true_decl;
731 vala_block_add_statement (_tmp46_, (ValaStatement*) _tmp47_);
732 _tmp48_ = temp_name;
733 _tmp49_ = vala_conditional_expression_get_false_expression (self);
734 _tmp50_ = _tmp49_;
735 _tmp51_ = vala_conditional_expression_get_false_expression (self);
736 _tmp52_ = _tmp51_;
737 _tmp53_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp52_);
738 _tmp54_ = _tmp53_;
739 _tmp55_ = vala_local_variable_new (NULL, _tmp48_, _tmp50_, _tmp54_);
740 false_local = _tmp55_;
741 _tmp56_ = vala_conditional_expression_get_false_expression (self);
742 _tmp57_ = _tmp56_;
743 _tmp58_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp57_);
744 _tmp59_ = _tmp58_;
745 _tmp60_ = vala_block_new (_tmp59_);
746 false_block = _tmp60_;
747 _tmp61_ = false_local;
748 _tmp62_ = vala_conditional_expression_get_false_expression (self);
749 _tmp63_ = _tmp62_;
750 _tmp64_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp63_);
751 _tmp65_ = _tmp64_;
752 _tmp66_ = vala_declaration_statement_new ((ValaSymbol*) _tmp61_, _tmp65_);
753 false_decl = _tmp66_;
754 _tmp67_ = false_block;
755 _tmp68_ = false_decl;
756 vala_block_add_statement (_tmp67_, (ValaStatement*) _tmp68_);
757 _tmp69_ = vala_conditional_expression_get_condition (self);
758 _tmp70_ = _tmp69_;
759 _tmp71_ = true_block;
760 _tmp72_ = false_block;
761 _tmp73_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
762 _tmp74_ = _tmp73_;
763 _tmp75_ = vala_if_statement_new (_tmp70_, _tmp71_, _tmp72_, _tmp74_);
764 if_stmt = _tmp75_;
765 _tmp76_ = vala_code_context_get_analyzer (context);
766 _tmp77_ = _tmp76_;
767 _tmp78_ = _tmp77_->insert_block;
768 _tmp79_ = decl;
769 vala_expression_insert_statement ((ValaExpression*) self, _tmp78_, (ValaStatement*) _tmp79_);
770 _tmp80_ = vala_code_context_get_analyzer (context);
771 _tmp81_ = _tmp80_;
772 _tmp82_ = _tmp81_->insert_block;
773 _tmp83_ = if_stmt;
774 vala_expression_insert_statement ((ValaExpression*) self, _tmp82_, (ValaStatement*) _tmp83_);
775 _tmp86_ = if_stmt;
776 if (!vala_code_node_check ((ValaCodeNode*) _tmp86_, context)) {
777 _tmp85_ = TRUE;
778 } else {
779 ValaExpression* _tmp87_;
780 ValaExpression* _tmp88_;
781 gboolean _tmp89_;
782 gboolean _tmp90_;
783 _tmp87_ = vala_conditional_expression_get_true_expression (self);
784 _tmp88_ = _tmp87_;
785 _tmp89_ = vala_code_node_get_error ((ValaCodeNode*) _tmp88_);
786 _tmp90_ = _tmp89_;
787 _tmp85_ = _tmp90_;
788 }
789 if (_tmp85_) {
790 _tmp84_ = TRUE;
791 } else {
792 ValaExpression* _tmp91_;
793 ValaExpression* _tmp92_;
794 gboolean _tmp93_;
795 gboolean _tmp94_;
796 _tmp91_ = vala_conditional_expression_get_false_expression (self);
797 _tmp92_ = _tmp91_;
798 _tmp93_ = vala_code_node_get_error ((ValaCodeNode*) _tmp92_);
799 _tmp94_ = _tmp93_;
800 _tmp84_ = _tmp94_;
801 }
802 if (_tmp84_) {
803 vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
804 result = FALSE;
805 _vala_code_node_unref0 (if_stmt);
806 _vala_code_node_unref0 (false_decl);
807 _vala_code_node_unref0 (false_block);
808 _vala_code_node_unref0 (false_local);
809 _vala_code_node_unref0 (true_decl);
810 _vala_code_node_unref0 (true_block);
811 _vala_code_node_unref0 (true_local);
812 _vala_code_node_unref0 (decl);
813 _vala_code_node_unref0 (local);
814 _g_free0 (temp_name);
815 return result;
816 }
817 _tmp95_ = true_local;
818 _tmp96_ = vala_variable_get_initializer ((ValaVariable*) _tmp95_);
819 _tmp97_ = _tmp96_;
820 vala_conditional_expression_set_true_expression (self, _tmp97_);
821 _tmp98_ = false_local;
822 _tmp99_ = vala_variable_get_initializer ((ValaVariable*) _tmp98_);
823 _tmp100_ = _tmp99_;
824 vala_conditional_expression_set_false_expression (self, _tmp100_);
825 _tmp101_ = true_block;
826 _tmp102_ = true_local;
827 vala_block_remove_local_variable (_tmp101_, _tmp102_);
828 _tmp103_ = false_block;
829 _tmp104_ = false_local;
830 vala_block_remove_local_variable (_tmp103_, _tmp104_);
831 _tmp105_ = vala_conditional_expression_get_false_expression (self);
832 _tmp106_ = _tmp105_;
833 _tmp107_ = vala_expression_get_value_type (_tmp106_);
834 _tmp108_ = _tmp107_;
835 _tmp109_ = vala_conditional_expression_get_true_expression (self);
836 _tmp110_ = _tmp109_;
837 _tmp111_ = vala_expression_get_value_type (_tmp110_);
838 _tmp112_ = _tmp111_;
839 if (vala_data_type_compatible (_tmp108_, _tmp112_)) {
840 ValaExpression* _tmp113_;
841 ValaExpression* _tmp114_;
842 ValaDataType* _tmp115_;
843 ValaDataType* _tmp116_;
844 ValaDataType* _tmp117_;
845 ValaDataType* _tmp118_;
846 _tmp113_ = vala_conditional_expression_get_true_expression (self);
847 _tmp114_ = _tmp113_;
848 _tmp115_ = vala_expression_get_value_type (_tmp114_);
849 _tmp116_ = _tmp115_;
850 _tmp117_ = vala_data_type_copy (_tmp116_);
851 _tmp118_ = _tmp117_;
852 vala_expression_set_value_type ((ValaExpression*) self, _tmp118_);
853 _vala_code_node_unref0 (_tmp118_);
854 } else {
855 ValaExpression* _tmp119_;
856 ValaExpression* _tmp120_;
857 ValaDataType* _tmp121_;
858 ValaDataType* _tmp122_;
859 ValaExpression* _tmp123_;
860 ValaExpression* _tmp124_;
861 ValaDataType* _tmp125_;
862 ValaDataType* _tmp126_;
863 _tmp119_ = vala_conditional_expression_get_true_expression (self);
864 _tmp120_ = _tmp119_;
865 _tmp121_ = vala_expression_get_value_type (_tmp120_);
866 _tmp122_ = _tmp121_;
867 _tmp123_ = vala_conditional_expression_get_false_expression (self);
868 _tmp124_ = _tmp123_;
869 _tmp125_ = vala_expression_get_value_type (_tmp124_);
870 _tmp126_ = _tmp125_;
871 if (vala_data_type_compatible (_tmp122_, _tmp126_)) {
872 ValaExpression* _tmp127_;
873 ValaExpression* _tmp128_;
874 ValaDataType* _tmp129_;
875 ValaDataType* _tmp130_;
876 ValaDataType* _tmp131_;
877 ValaDataType* _tmp132_;
878 _tmp127_ = vala_conditional_expression_get_false_expression (self);
879 _tmp128_ = _tmp127_;
880 _tmp129_ = vala_expression_get_value_type (_tmp128_);
881 _tmp130_ = _tmp129_;
882 _tmp131_ = vala_data_type_copy (_tmp130_);
883 _tmp132_ = _tmp131_;
884 vala_expression_set_value_type ((ValaExpression*) self, _tmp132_);
885 _vala_code_node_unref0 (_tmp132_);
886 } else {
887 ValaSourceReference* source_reference = NULL;
888 ValaExpression* _tmp133_;
889 ValaExpression* _tmp134_;
890 ValaSourceReference* _tmp135_;
891 ValaSourceReference* _tmp136_;
892 ValaSourceFile* _tmp137_;
893 ValaSourceFile* _tmp138_;
894 ValaExpression* _tmp139_;
895 ValaExpression* _tmp140_;
896 ValaSourceReference* _tmp141_;
897 ValaSourceReference* _tmp142_;
898 ValaSourceLocation _tmp143_ = {0};
899 ValaSourceLocation _tmp144_;
900 ValaExpression* _tmp145_;
901 ValaExpression* _tmp146_;
902 ValaSourceReference* _tmp147_;
903 ValaSourceReference* _tmp148_;
904 ValaSourceLocation _tmp149_ = {0};
905 ValaSourceLocation _tmp150_;
906 ValaSourceReference* _tmp151_;
907 ValaSourceReference* _tmp152_;
908 ValaExpression* _tmp153_;
909 ValaExpression* _tmp154_;
910 ValaDataType* _tmp155_;
911 ValaDataType* _tmp156_;
912 gchar* _tmp157_;
913 gchar* _tmp158_;
914 ValaExpression* _tmp159_;
915 ValaExpression* _tmp160_;
916 ValaDataType* _tmp161_;
917 ValaDataType* _tmp162_;
918 gchar* _tmp163_;
919 gchar* _tmp164_;
920 gchar* _tmp165_;
921 gchar* _tmp166_;
922 vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
923 _tmp133_ = vala_conditional_expression_get_true_expression (self);
924 _tmp134_ = _tmp133_;
925 _tmp135_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp134_);
926 _tmp136_ = _tmp135_;
927 _tmp137_ = vala_source_reference_get_file (_tmp136_);
928 _tmp138_ = _tmp137_;
929 _tmp139_ = vala_conditional_expression_get_true_expression (self);
930 _tmp140_ = _tmp139_;
931 _tmp141_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp140_);
932 _tmp142_ = _tmp141_;
933 vala_source_reference_get_begin (_tmp142_, &_tmp143_);
934 _tmp144_ = _tmp143_;
935 _tmp145_ = vala_conditional_expression_get_false_expression (self);
936 _tmp146_ = _tmp145_;
937 _tmp147_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp146_);
938 _tmp148_ = _tmp147_;
939 vala_source_reference_get_end (_tmp148_, &_tmp149_);
940 _tmp150_ = _tmp149_;
941 _tmp151_ = vala_source_reference_new (_tmp138_, &_tmp144_, &_tmp150_);
942 source_reference = _tmp151_;
943 _tmp152_ = source_reference;
944 _tmp153_ = vala_conditional_expression_get_true_expression (self);
945 _tmp154_ = _tmp153_;
946 _tmp155_ = vala_expression_get_value_type (_tmp154_);
947 _tmp156_ = _tmp155_;
948 _tmp157_ = vala_data_type_to_prototype_string (_tmp156_, NULL);
949 _tmp158_ = _tmp157_;
950 _tmp159_ = vala_conditional_expression_get_false_expression (self);
951 _tmp160_ = _tmp159_;
952 _tmp161_ = vala_expression_get_value_type (_tmp160_);
953 _tmp162_ = _tmp161_;
954 _tmp163_ = vala_data_type_to_prototype_string (_tmp162_, NULL);
955 _tmp164_ = _tmp163_;
956 _tmp165_ = g_strdup_printf ("Cannot resolve target type from `%s' and `%s'", _tmp158_, _tmp164_);
957 _tmp166_ = _tmp165_;
958 vala_report_error (_tmp152_, _tmp166_);
959 _g_free0 (_tmp166_);
960 _g_free0 (_tmp164_);
961 _g_free0 (_tmp158_);
962 result = FALSE;
963 _vala_source_reference_unref0 (source_reference);
964 _vala_code_node_unref0 (if_stmt);
965 _vala_code_node_unref0 (false_decl);
966 _vala_code_node_unref0 (false_block);
967 _vala_code_node_unref0 (false_local);
968 _vala_code_node_unref0 (true_decl);
969 _vala_code_node_unref0 (true_block);
970 _vala_code_node_unref0 (true_local);
971 _vala_code_node_unref0 (decl);
972 _vala_code_node_unref0 (local);
973 _g_free0 (temp_name);
974 return result;
975 }
976 }
977 _tmp168_ = vala_conditional_expression_get_true_expression (self);
978 _tmp169_ = _tmp168_;
979 _tmp170_ = vala_expression_get_value_type (_tmp169_);
980 _tmp171_ = _tmp170_;
981 _tmp172_ = vala_data_type_get_value_owned (_tmp171_);
982 _tmp173_ = _tmp172_;
983 if (_tmp173_) {
984 _tmp167_ = TRUE;
985 } else {
986 ValaExpression* _tmp174_;
987 ValaExpression* _tmp175_;
988 ValaDataType* _tmp176_;
989 ValaDataType* _tmp177_;
990 gboolean _tmp178_;
991 gboolean _tmp179_;
992 _tmp174_ = vala_conditional_expression_get_false_expression (self);
993 _tmp175_ = _tmp174_;
994 _tmp176_ = vala_expression_get_value_type (_tmp175_);
995 _tmp177_ = _tmp176_;
996 _tmp178_ = vala_data_type_get_value_owned (_tmp177_);
997 _tmp179_ = _tmp178_;
998 _tmp167_ = _tmp179_;
999 }
1000 _tmp180_ = vala_expression_get_value_type ((ValaExpression*) self);
1001 _tmp181_ = _tmp180_;
1002 vala_data_type_set_value_owned (_tmp181_, _tmp167_);
1003 _tmp182_ = vala_expression_get_value_type ((ValaExpression*) self);
1004 _tmp183_ = _tmp182_;
1005 vala_data_type_set_floating_reference (_tmp183_, FALSE);
1006 _tmp184_ = vala_expression_get_value_type ((ValaExpression*) self);
1007 _tmp185_ = _tmp184_;
1008 vala_code_node_check ((ValaCodeNode*) _tmp185_, context);
1009 _tmp186_ = local;
1010 _tmp187_ = vala_expression_get_value_type ((ValaExpression*) self);
1011 _tmp188_ = _tmp187_;
1012 vala_variable_set_variable_type ((ValaVariable*) _tmp186_, _tmp188_);
1013 _tmp189_ = decl;
1014 vala_code_node_check ((ValaCodeNode*) _tmp189_, context);
1015 _tmp190_ = vala_conditional_expression_get_true_expression (self);
1016 _tmp191_ = _tmp190_;
1017 _tmp192_ = vala_expression_get_value_type ((ValaExpression*) self);
1018 _tmp193_ = _tmp192_;
1019 vala_expression_set_target_type (_tmp191_, _tmp193_);
1020 _tmp194_ = vala_conditional_expression_get_false_expression (self);
1021 _tmp195_ = _tmp194_;
1022 _tmp196_ = vala_expression_get_value_type ((ValaExpression*) self);
1023 _tmp197_ = _tmp196_;
1024 vala_expression_set_target_type (_tmp195_, _tmp197_);
1025 _tmp198_ = local;
1026 _tmp199_ = vala_symbol_get_name ((ValaSymbol*) _tmp198_);
1027 _tmp200_ = _tmp199_;
1028 _tmp201_ = vala_conditional_expression_get_true_expression (self);
1029 _tmp202_ = _tmp201_;
1030 _tmp203_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp202_);
1031 _tmp204_ = _tmp203_;
1032 _tmp205_ = vala_member_access_new_simple (_tmp200_, _tmp204_);
1033 _tmp206_ = _tmp205_;
1034 _tmp207_ = vala_conditional_expression_get_true_expression (self);
1035 _tmp208_ = _tmp207_;
1036 _tmp209_ = vala_conditional_expression_get_true_expression (self);
1037 _tmp210_ = _tmp209_;
1038 _tmp211_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp210_);
1039 _tmp212_ = _tmp211_;
1040 _tmp213_ = vala_assignment_new ((ValaExpression*) _tmp206_, _tmp208_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp212_);
1041 _tmp214_ = _tmp213_;
1042 _tmp215_ = vala_conditional_expression_get_true_expression (self);
1043 _tmp216_ = _tmp215_;
1044 _tmp217_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp216_);
1045 _tmp218_ = _tmp217_;
1046 _tmp219_ = vala_expression_statement_new ((ValaExpression*) _tmp214_, _tmp218_);
1047 _tmp220_ = _tmp219_;
1048 _vala_code_node_unref0 (_tmp214_);
1049 _vala_code_node_unref0 (_tmp206_);
1050 true_stmt = _tmp220_;
1051 _tmp221_ = local;
1052 _tmp222_ = vala_symbol_get_name ((ValaSymbol*) _tmp221_);
1053 _tmp223_ = _tmp222_;
1054 _tmp224_ = vala_conditional_expression_get_false_expression (self);
1055 _tmp225_ = _tmp224_;
1056 _tmp226_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp225_);
1057 _tmp227_ = _tmp226_;
1058 _tmp228_ = vala_member_access_new_simple (_tmp223_, _tmp227_);
1059 _tmp229_ = _tmp228_;
1060 _tmp230_ = vala_conditional_expression_get_false_expression (self);
1061 _tmp231_ = _tmp230_;
1062 _tmp232_ = vala_conditional_expression_get_false_expression (self);
1063 _tmp233_ = _tmp232_;
1064 _tmp234_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp233_);
1065 _tmp235_ = _tmp234_;
1066 _tmp236_ = vala_assignment_new ((ValaExpression*) _tmp229_, _tmp231_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp235_);
1067 _tmp237_ = _tmp236_;
1068 _tmp238_ = vala_conditional_expression_get_false_expression (self);
1069 _tmp239_ = _tmp238_;
1070 _tmp240_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp239_);
1071 _tmp241_ = _tmp240_;
1072 _tmp242_ = vala_expression_statement_new ((ValaExpression*) _tmp237_, _tmp241_);
1073 _tmp243_ = _tmp242_;
1074 _vala_code_node_unref0 (_tmp237_);
1075 _vala_code_node_unref0 (_tmp229_);
1076 false_stmt = _tmp243_;
1077 _tmp244_ = true_block;
1078 _tmp245_ = true_decl;
1079 _tmp246_ = true_stmt;
1080 vala_block_replace_statement (_tmp244_, (ValaStatement*) _tmp245_, (ValaStatement*) _tmp246_);
1081 _tmp247_ = false_block;
1082 _tmp248_ = false_decl;
1083 _tmp249_ = false_stmt;
1084 vala_block_replace_statement (_tmp247_, (ValaStatement*) _tmp248_, (ValaStatement*) _tmp249_);
1085 _tmp250_ = true_stmt;
1086 vala_code_node_check ((ValaCodeNode*) _tmp250_, context);
1087 _tmp251_ = false_stmt;
1088 vala_code_node_check ((ValaCodeNode*) _tmp251_, context);
1089 _tmp252_ = local;
1090 _tmp253_ = vala_symbol_get_name ((ValaSymbol*) _tmp252_);
1091 _tmp254_ = _tmp253_;
1092 _tmp255_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
1093 _tmp256_ = _tmp255_;
1094 _tmp257_ = vala_member_access_new_simple (_tmp254_, _tmp256_);
1095 ma = _tmp257_;
1096 _tmp258_ = ma;
1097 _tmp259_ = vala_expression_get_formal_target_type ((ValaExpression*) self);
1098 _tmp260_ = _tmp259_;
1099 vala_expression_set_formal_target_type ((ValaExpression*) _tmp258_, _tmp260_);
1100 _tmp261_ = ma;
1101 _tmp262_ = vala_expression_get_target_type ((ValaExpression*) self);
1102 _tmp263_ = _tmp262_;
1103 vala_expression_set_target_type ((ValaExpression*) _tmp261_, _tmp263_);
1104 _tmp264_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
1105 _tmp265_ = _tmp264_;
1106 _tmp266_ = ma;
1107 vala_code_node_replace_expression (_tmp265_, (ValaExpression*) self, (ValaExpression*) _tmp266_);
1108 _tmp267_ = ma;
1109 vala_code_node_check ((ValaCodeNode*) _tmp267_, context);
1110 result = TRUE;
1111 _vala_code_node_unref0 (ma);
1112 _vala_code_node_unref0 (false_stmt);
1113 _vala_code_node_unref0 (true_stmt);
1114 _vala_code_node_unref0 (if_stmt);
1115 _vala_code_node_unref0 (false_decl);
1116 _vala_code_node_unref0 (false_block);
1117 _vala_code_node_unref0 (false_local);
1118 _vala_code_node_unref0 (true_decl);
1119 _vala_code_node_unref0 (true_block);
1120 _vala_code_node_unref0 (true_local);
1121 _vala_code_node_unref0 (decl);
1122 _vala_code_node_unref0 (local);
1123 _g_free0 (temp_name);
1124 return result;
1125 }
1126
1127 static void
vala_conditional_expression_class_init(ValaConditionalExpressionClass * klass,gpointer klass_data)1128 vala_conditional_expression_class_init (ValaConditionalExpressionClass * klass,
1129 gpointer klass_data)
1130 {
1131 vala_conditional_expression_parent_class = g_type_class_peek_parent (klass);
1132 ((ValaCodeNodeClass *) klass)->finalize = vala_conditional_expression_finalize;
1133 g_type_class_adjust_private_offset (klass, &ValaConditionalExpression_private_offset);
1134 ((ValaCodeNodeClass *) klass)->accept = (void (*) (ValaCodeNode*, ValaCodeVisitor*)) vala_conditional_expression_real_accept;
1135 ((ValaCodeNodeClass *) klass)->accept_children = (void (*) (ValaCodeNode*, ValaCodeVisitor*)) vala_conditional_expression_real_accept_children;
1136 ((ValaExpressionClass *) klass)->is_pure = (gboolean (*) (ValaExpression*)) vala_conditional_expression_real_is_pure;
1137 ((ValaExpressionClass *) klass)->is_accessible = (gboolean (*) (ValaExpression*, ValaSymbol*)) vala_conditional_expression_real_is_accessible;
1138 ((ValaCodeNodeClass *) klass)->get_error_types = (void (*) (ValaCodeNode*, ValaCollection*, ValaSourceReference*)) vala_conditional_expression_real_get_error_types;
1139 ((ValaCodeNodeClass *) klass)->to_string = (gchar* (*) (ValaCodeNode*)) vala_conditional_expression_real_to_string;
1140 ((ValaCodeNodeClass *) klass)->replace_expression = (void (*) (ValaCodeNode*, ValaExpression*, ValaExpression*)) vala_conditional_expression_real_replace_expression;
1141 ((ValaCodeNodeClass *) klass)->get_defined_variables = (void (*) (ValaCodeNode*, ValaCollection*)) vala_conditional_expression_real_get_defined_variables;
1142 ((ValaCodeNodeClass *) klass)->get_used_variables = (void (*) (ValaCodeNode*, ValaCollection*)) vala_conditional_expression_real_get_used_variables;
1143 ((ValaCodeNodeClass *) klass)->check = (gboolean (*) (ValaCodeNode*, ValaCodeContext*)) vala_conditional_expression_real_check;
1144 }
1145
1146 static void
vala_conditional_expression_instance_init(ValaConditionalExpression * self,gpointer klass)1147 vala_conditional_expression_instance_init (ValaConditionalExpression * self,
1148 gpointer klass)
1149 {
1150 self->priv = vala_conditional_expression_get_instance_private (self);
1151 }
1152
1153 static void
vala_conditional_expression_finalize(ValaCodeNode * obj)1154 vala_conditional_expression_finalize (ValaCodeNode * obj)
1155 {
1156 ValaConditionalExpression * self;
1157 self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpression);
1158 _vala_code_node_unref0 (self->priv->_condition);
1159 _vala_code_node_unref0 (self->priv->_true_expression);
1160 _vala_code_node_unref0 (self->priv->_false_expression);
1161 VALA_CODE_NODE_CLASS (vala_conditional_expression_parent_class)->finalize (obj);
1162 }
1163
1164 /**
1165 * Represents a conditional expression in the source code.
1166 */
1167 static GType
vala_conditional_expression_get_type_once(void)1168 vala_conditional_expression_get_type_once (void)
1169 {
1170 static const GTypeInfo g_define_type_info = { sizeof (ValaConditionalExpressionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_conditional_expression_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaConditionalExpression), 0, (GInstanceInitFunc) vala_conditional_expression_instance_init, NULL };
1171 GType vala_conditional_expression_type_id;
1172 vala_conditional_expression_type_id = g_type_register_static (VALA_TYPE_EXPRESSION, "ValaConditionalExpression", &g_define_type_info, 0);
1173 ValaConditionalExpression_private_offset = g_type_add_instance_private (vala_conditional_expression_type_id, sizeof (ValaConditionalExpressionPrivate));
1174 return vala_conditional_expression_type_id;
1175 }
1176
1177 GType
vala_conditional_expression_get_type(void)1178 vala_conditional_expression_get_type (void)
1179 {
1180 static volatile gsize vala_conditional_expression_type_id__volatile = 0;
1181 if (g_once_init_enter (&vala_conditional_expression_type_id__volatile)) {
1182 GType vala_conditional_expression_type_id;
1183 vala_conditional_expression_type_id = vala_conditional_expression_get_type_once ();
1184 g_once_init_leave (&vala_conditional_expression_type_id__volatile, vala_conditional_expression_type_id);
1185 }
1186 return vala_conditional_expression_type_id__volatile;
1187 }
1188
1189