File vala-bgo638902-shotwell-fix.patch of Package vala
commit 2390d7519a482e442f6b98308f1b720381828b43
Author: Jürg Billeter <j@bitron.ch>
Date: Sat Jan 8 14:25:59 2011 +0100
Fix formal_target_type in conditional expressions
Fixes bug 638902.
# Comment out the .vala part to avoid regenerating the .c, which requires vala
#Index: vala-0.10.2/vala/valaconditionalexpression.vala
#===================================================================
#--- vala-0.10.2.orig/vala/valaconditionalexpression.vala
#+++ vala-0.10.2/vala/valaconditionalexpression.vala
#@@ -1,6 +1,6 @@
# /* valaconditionalexpression.vala
# *
#- * Copyright (C) 2006-2009 Jürg Billeter
#+ * Copyright (C) 2006-2011 Jürg Billeter
# *
# * This library is free software; you can redistribute it and/or
# * modify it under the terms of the GNU Lesser General Public
#@@ -176,6 +176,7 @@ public class Vala.ConditionalExpression
# false_block.replace_statement (false_decl, false_stmt);
#
# var ma = new MemberAccess.simple (local.name, source_reference);
#+ ma.formal_target_type = formal_target_type;
# ma.target_type = target_type;
# ma.check (analyzer);
#
Index: vala-0.10.2/vala/valaconditionalexpression.c
===================================================================
--- vala-0.10.2.orig/vala/valaconditionalexpression.c
+++ vala-0.10.2/vala/valaconditionalexpression.c
@@ -1382,6 +1382,8 @@ ValaAssignment* vala_assignment_construc
ValaExpressionStatement* vala_expression_statement_new (ValaExpression* expression, ValaSourceReference* source_reference);
ValaExpressionStatement* vala_expression_statement_construct (GType object_type, ValaExpression* expression, ValaSourceReference* source_reference);
void vala_block_replace_statement (ValaBlock* self, ValaStatement* old_stmt, ValaStatement* new_stmt);
+ValaDataType* vala_expression_get_formal_target_type (ValaExpression* self);
+void vala_expression_set_formal_target_type (ValaExpression* self, ValaDataType* value);
ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
void vala_code_node_replace_expression (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
@@ -1576,6 +1578,7 @@ static gboolean vala_conditional_express
vala_block_replace_statement (true_block, (ValaStatement*) true_decl, (ValaStatement*) true_stmt);
vala_block_replace_statement (false_block, (ValaStatement*) false_decl, (ValaStatement*) false_stmt);
ma = vala_member_access_new_simple (vala_symbol_get_name ((ValaSymbol*) local), vala_code_node_get_source_reference ((ValaCodeNode*) self));
+ vala_expression_set_formal_target_type ((ValaExpression*) ma, vala_expression_get_formal_target_type ((ValaExpression*) self));
vala_expression_set_target_type ((ValaExpression*) ma, vala_expression_get_target_type ((ValaExpression*) self));
vala_code_node_check ((ValaCodeNode*) ma, analyzer);
vala_code_node_replace_expression (vala_code_node_get_parent_node ((ValaCodeNode*) self), (ValaExpression*) self, (ValaExpression*) ma);