From: Jürg Billeter Date: Fri, 13 Jun 2008 16:40:33 +0000 (+0000) Subject: Support object creation expressions for simple types X-Git-Tag: VALA_0_3_4~76 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fc4ad72ac969a2833264d9cd6d2411247b2cd9f2;p=thirdparty%2Fvala.git Support object creation expressions for simple types 2008-06-13 Jürg Billeter * gobject/valaccodegenerator.vala: Support object creation expressions for simple types svn path=/trunk/; revision=1577 --- diff --git a/ChangeLog b/ChangeLog index 20d52cb6e..6b5baa336 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-06-13 Jürg Billeter + + * gobject/valaccodegenerator.vala: + + Support object creation expressions for simple types + 2008-06-13 Jürg Billeter * vapi/glib-2.0.vapi: diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index d089b1001..773cc3588 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -2991,7 +2991,8 @@ public class Vala.CCodeGenerator : CodeGenerator { CCodeExpression instance = null; CCodeFunctionCall creation_call = null; - if (expr.type_reference.data_type is Struct || expr.get_object_initializer ().size > 0) { + var st = expr.type_reference.data_type as Struct; + if ((st != null && !st.is_simple_type ()) || expr.get_object_initializer ().size > 0) { // value-type initialization or object creation expression with object initializer var temp_decl = get_temp_variable (expr.type_reference, false, expr); temp_vars.add (temp_decl); @@ -3028,7 +3029,7 @@ public class Vala.CCodeGenerator : CodeGenerator { creation_call = new CCodeFunctionCall (new CCodeIdentifier (m.get_cname ())); - if (expr.type_reference.data_type is Struct && !(m.cinstance_parameter_position < 0)) { + if ((st != null && !st.is_simple_type ()) && !(m.cinstance_parameter_position < 0)) { creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance)); } @@ -3120,7 +3121,7 @@ public class Vala.CCodeGenerator : CodeGenerator { i++; } - if (expr.type_reference.data_type is Struct && m.cinstance_parameter_position < 0) { + if ((st != null && !st.is_simple_type ()) && m.cinstance_parameter_position < 0) { // instance parameter is at the end in a struct creation method creation_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, instance)); }