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