diff --git a/gobject/valagobjectmodule.vala b/gobject/valagobjectmodule.vala index 68f97d1..c06b8b1 100644 --- a/gobject/valagobjectmodule.vala +++ b/gobject/valagobjectmodule.vala @@ -1205,18 +1205,22 @@ public class Vala.GObjectModule : GTypeModule { string prefix = cl.get_lower_case_cname (null); CCodeExpression cself = new CCodeIdentifier ("self"); + var ccall = new CCodeFunctionCall(); if (prop.base_property != null) { var base_type = (Class) prop.base_property.parent_symbol; prefix = base_type.get_lower_case_cname (null); cself = transform_expression (cself, new ObjectType (cl), new ObjectType (base_type)); + ccall.call = new CCodeMemberAccess.pointer(cself,"set_%s".printf(prop.name)); } else if (prop.base_interface_property != null) { var base_type = (Interface) prop.base_interface_property.parent_symbol; - prefix = base_type.get_lower_case_cname (null); cself = transform_expression (cself, new ObjectType (cl), new ObjectType (base_type)); + ccall.call = new CCodeIdentifier("%s_real_set_%s".printf (prefix, prop.name)); } cswitch.add_statement (new CCodeCaseStatement (new CCodeIdentifier (prop.get_upper_case_cname ()))); - var ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_set_%s".printf (prefix, prop.name))); + if (ccall.call == null) { + ccall.call = new CCodeIdentifier ("%s_set_%s".printf (prefix, prop.name)); + } ccall.add_argument (cself); var cgetcall = new CCodeFunctionCall (); if (prop.property_type.data_type != null) {