]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Remove extra g_type_create_instance in constructors
authorJürg Billeter <j@bitron.ch>
Wed, 19 Nov 2008 08:32:03 +0000 (08:32 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Wed, 19 Nov 2008 08:32:03 +0000 (08:32 +0000)
2008-11-19  Jürg Billeter  <j@bitron.ch>

* gobject/valaccodemethodmodule.vala:

Remove extra g_type_create_instance in constructors

svn path=/trunk/; revision=2033

ChangeLog
gobject/valaccodemethodmodule.vala

index 9c5b6866c3dccc263c90258c9379f25ea97458a3..9cb1195dbb66dcf0c34f2932b1252f1e85e3d110 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-19  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodemethodmodule.vala:
+
+       Remove extra g_type_create_instance in constructors
+
 2008-11-19  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
 
        * gobject/valagobjectmodule.vala:
index 2394f9ced498368835e46ced8178e14dbbb88cbb..123cd329ae961141fa54b62be11c549f6f14e2ec 100644 (file)
@@ -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 ()) {