]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Do not set accessor vfunc for NoAccessorMethod properties
authorLuca Bruno <lucabru@src.gnome.org>
Thu, 1 Sep 2011 14:43:48 +0000 (16:43 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 30 Nov 2011 13:17:09 +0000 (14:17 +0100)
Partially fixes bug 658006.

codegen/valagtypemodule.vala

index 99900c6a4ac819b83f1a071226a7eca0c38081fa..753d7614f8602de85c42c1196c8a48306a09b712 100644 (file)
@@ -1250,13 +1250,15 @@ public class Vala.GTypeModule : GErrorModule {
                        var ccast = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf (get_ccode_upper_case_name (base_type))));
                        ccast.add_argument (new CCodeIdentifier ("klass"));
 
-                       if (prop.get_accessor != null) {
-                               string cname = CCodeBaseModule.get_ccode_real_name (prop.get_accessor);
-                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), new CCodeIdentifier (cname));
-                       }
-                       if (prop.set_accessor != null) {
-                               string cname = CCodeBaseModule.get_ccode_real_name (prop.set_accessor);
-                               ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), new CCodeIdentifier (cname));
+                       if (!get_ccode_no_accessor_method (prop.base_property)) {
+                               if (prop.get_accessor != null) {
+                                       string cname = CCodeBaseModule.get_ccode_real_name (prop.get_accessor);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), new CCodeIdentifier (cname));
+                               }
+                               if (prop.set_accessor != null) {
+                                       string cname = CCodeBaseModule.get_ccode_real_name (prop.set_accessor);
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), new CCodeIdentifier (cname));
+                               }
                        }
                }
 
@@ -1371,29 +1373,31 @@ public class Vala.GTypeModule : GErrorModule {
                        
                        var ciface = new CCodeIdentifier ("iface");
 
-                       if (prop.get_accessor != null) {
-                               string cname = CCodeBaseModule.get_ccode_real_name (prop.get_accessor);
-                               if (prop.is_abstract || prop.is_virtual) {
-                                       cname = CCodeBaseModule.get_ccode_name (prop.get_accessor);
-                               }
+                       if (!get_ccode_no_accessor_method (prop.base_interface_property)) {
+                               if (prop.get_accessor != null) {
+                                       string cname = CCodeBaseModule.get_ccode_real_name (prop.get_accessor);
+                                       if (prop.is_abstract || prop.is_virtual) {
+                                               cname = CCodeBaseModule.get_ccode_name (prop.get_accessor);
+                                       }
 
-                               CCodeExpression cfunc = new CCodeIdentifier (cname);
-                               if (prop.is_abstract || prop.is_virtual) {
-                                       cfunc = cast_property_accessor_pointer (prop.get_accessor, cfunc, base_type);
-                               }
-                               ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc);
-                       }
-                       if (prop.set_accessor != null) {
-                               string cname = CCodeBaseModule.get_ccode_real_name (prop.set_accessor);
-                               if (prop.is_abstract || prop.is_virtual) {
-                                       cname = CCodeBaseModule.get_ccode_name (prop.set_accessor);
+                                       CCodeExpression cfunc = new CCodeIdentifier (cname);
+                                       if (prop.is_abstract || prop.is_virtual) {
+                                               cfunc = cast_property_accessor_pointer (prop.get_accessor, cfunc, base_type);
+                                       }
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc);
                                }
+                               if (prop.set_accessor != null) {
+                                       string cname = CCodeBaseModule.get_ccode_real_name (prop.set_accessor);
+                                       if (prop.is_abstract || prop.is_virtual) {
+                                               cname = CCodeBaseModule.get_ccode_name (prop.set_accessor);
+                                       }
 
-                               CCodeExpression cfunc = new CCodeIdentifier (cname);
-                               if (prop.is_abstract || prop.is_virtual) {
-                                       cfunc = cast_property_accessor_pointer (prop.set_accessor, cfunc, base_type);
+                                       CCodeExpression cfunc = new CCodeIdentifier (cname);
+                                       if (prop.is_abstract || prop.is_virtual) {
+                                               cfunc = cast_property_accessor_pointer (prop.set_accessor, cfunc, base_type);
+                                       }
+                                       ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc);
                                }
-                               ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc);
                        }
                }