From: Juerg Billeter Date: Fri, 27 Jul 2007 11:31:20 +0000 (+0000) Subject: use cast for field initializers when necessary X-Git-Tag: VALA_0_1_2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2e56f943639ba0db2390b65b40e2261797fa27e;p=thirdparty%2Fvala.git use cast for field initializers when necessary 2007-07-27 Juerg Billeter * gobject/valacodegenerator.vala: use cast for field initializers when necessary svn path=/trunk/; revision=401 --- diff --git a/ChangeLog b/ChangeLog index 6ec431133..42c4fa646 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-07-27 Jürg Billeter + + * gobject/valacodegenerator.vala: use cast for field initializers when + necessary + 2007-07-27 Jürg Billeter * vala/valasemanticanalyzer.vala: fix memory leak in cast expressions diff --git a/gobject/valacodegenerator.vala b/gobject/valacodegenerator.vala index 439674425..eb546130e 100644 --- a/gobject/valacodegenerator.vala +++ b/gobject/valacodegenerator.vala @@ -429,8 +429,17 @@ public class Vala.CodeGenerator : CodeVisitor { } if (f.initializer != null) { - instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (lhs, (CCodeExpression) f.initializer.ccodenode))); - + var rhs = (CCodeExpression) f.initializer.ccodenode; + if (f.type_reference.data_type != null + && f.initializer.static_type.data_type != null + && f.type_reference.data_type.is_reference_type () + && f.initializer.static_type.data_type != f.type_reference.data_type) { + // FIXME: use C cast if debugging disabled + rhs = new InstanceCast (rhs, f.type_reference.data_type); + } + + instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (lhs, rhs))); + if (f.type_reference.data_type is Array && !f.no_array_length && f.initializer is ArrayCreationExpression) { var ma = new MemberAccess.simple (f.name);