From: Jürg Billeter Date: Wed, 19 Nov 2008 08:32:03 +0000 (+0000) Subject: Remove extra g_type_create_instance in constructors X-Git-Tag: VALA_0_5_2~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e73f908fa9aa3df3a343efa0d4c42616db6e9929;p=thirdparty%2Fvala.git Remove extra g_type_create_instance in constructors 2008-11-19 Jürg Billeter * gobject/valaccodemethodmodule.vala: Remove extra g_type_create_instance in constructors svn path=/trunk/; revision=2033 --- diff --git a/ChangeLog b/ChangeLog index 9c5b6866c..9cb1195db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-19 Jürg Billeter + + * gobject/valaccodemethodmodule.vala: + + Remove extra g_type_create_instance in constructors + 2008-11-19 Sebastian Dröge * gobject/valagobjectmodule.vala: diff --git a/gobject/valaccodemethodmodule.vala b/gobject/valaccodemethodmodule.vala index 2394f9ced..123cd329a 100644 --- a/gobject/valaccodemethodmodule.vala +++ b/gobject/valaccodemethodmodule.vala @@ -378,11 +378,17 @@ public class Vala.CCodeMethodModule : CCodeStructModule { } } else if (in_gtypeinstance_creation_method) { var cl = (Class) m.parent_symbol; - var cdecl = new CCodeDeclaration (cl.get_cname () + "*"); - var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_create_instance")); - ccall.add_argument (new CCodeIdentifier ("object_type")); - cdecl.add_declarator (new CCodeVariableDeclarator.with_initializer ("self", new CCodeCastExpression (ccall, cl.get_cname () + "*"))); - cinit.append (cdecl); + var cdeclaration = new CCodeDeclaration (cl.get_cname () + "*"); + var cdecl = new CCodeVariableDeclarator ("self"); + cdeclaration.add_declarator (cdecl); + cinit.append (cdeclaration); + + if (!((CreationMethod) m).chain_up) { + // TODO implicitly chain up to base class as in add_object_creation + var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_create_instance")); + ccall.add_argument (new CCodeIdentifier ("object_type")); + cdecl.initializer = new CCodeCastExpression (ccall, cl.get_cname () + "*"); + } /* type, dup func, and destroy func fields for generic types */ foreach (TypeParameter type_param in current_class.get_type_parameters ()) {