]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add support for class field initializers for classes that are not derived
authorSebastian Dröge <sdroege@src.gnome.org>
Wed, 19 Nov 2008 08:11:07 +0000 (08:11 +0000)
committerSebastian Dröge <sdroege@src.gnome.org>
Wed, 19 Nov 2008 08:11:07 +0000 (08:11 +0000)
* gobject/valagobjectmodule.vala:
Add support for class field initializers for classes that are not
derived from GObject.

svn path=/trunk/; revision=2032

ChangeLog
gobject/valagobjectmodule.vala

index 247278d930bc6f88234e61e099ce96db151536fe..9c5b6866c3dccc263c90258c9379f25ea97458a3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-19  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * gobject/valagobjectmodule.vala:
+
+       Add support for class field initializers for classes that are not
+       derived from GObject.
+
 2008-11-18  Thijs Vermeir  <thijsvermeir@gmail.com>
 
        * vapi/packages/gtk+-2.0/gtk+-2.0.metadata:
index 68f97d19cbea4ca41579be29a7c28d9a4e98c4d3..9c928424d9160bdf7aa9a953fa2105c5f798bb66 100644 (file)
@@ -767,6 +767,19 @@ public class Vala.GObjectModule : GTypeModule {
                        }
                }
 
+               /* initialize class fields */
+               var fields = cl.get_fields ();
+               foreach (Field field in fields) {
+                       if (field.binding != MemberBinding.CLASS || field.initializer == null) {
+                               continue;
+                       }
+                       CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"),
+                                                                     field.get_cname (), true);
+                       CCodeExpression right = (CCodeExpression)field.initializer.ccodenode;
+                       CCodeAssignment assign = new CCodeAssignment (left, right);
+                       init_block.add_statement (new CCodeExpressionStatement (assign));
+               }
+
                if (cl.is_subtype_of (gobject_type)) {
                        /* create type, dup_func, and destroy_func properties for generic types */
                        foreach (TypeParameter type_param in cl.get_type_parameters ()) {
@@ -829,19 +842,6 @@ public class Vala.GObjectModule : GTypeModule {
                                instance_priv_struct.add_field ("GDestroyNotify", func_name);
                        }
 
-                       /* initialize class fields */
-                       var fields = cl.get_fields ();
-                       foreach (Field field in fields) {
-                               if (field.binding != MemberBinding.CLASS || field.initializer == null) {
-                                       continue;
-                               }
-                               CCodeExpression left = new CCodeMemberAccess (new CCodeIdentifier ("klass"),
-                                                                             field.get_cname (), true);
-                               CCodeExpression right = (CCodeExpression)field.initializer.ccodenode;
-                               CCodeAssignment assign = new CCodeAssignment (left, right);
-                               init_block.add_statement (new CCodeExpressionStatement (assign));
-                       }
-
                        /* create properties */
                        var props = cl.get_properties ();
                        foreach (Property prop in props) {