From 0771248fd47770e0d25d139143de41eb16a6ee07 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 5 Feb 2023 19:33:15 +0100 Subject: codegen: Cast vfunc of property accessors by using cast_method_pointer() Found by -Wincompatible-function-pointer-types See https://gitlab.gnome.org/GNOME/vala/issues/1408 --- codegen/valagtypemodule.vala | 44 +++++++++------------- tests/methods/array-length-type.c-expected | 8 ++-- tests/objects/bug667668.c-expected | 4 +- tests/objects/bug702736.c-expected | 4 +- tests/objects/bug741465.c-expected | 12 +++--- tests/objects/bug764481.c-expected | 16 ++++---- tests/objects/bug779219.c-expected | 4 +- .../member-initializer-base-properties.c-expected | 8 ++-- tests/objects/properties.c-expected | 8 ++-- tests/objects/property-array.c-expected | 20 +++++----- tests/objects/property-delegate-owned.c-expected | 24 ++++++------ tests/objects/property-delegate.c-expected | 12 +++--- .../property-real-struct-assignment.c-expected | 4 +- 13 files changed, 79 insertions(+), 89 deletions(-) diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index 0d9fae482..34c0773d4 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -1365,14 +1365,16 @@ public class Vala.GTypeModule : GErrorModule { if (prop.get_accessor != null) { generate_property_accessor_declaration (prop.base_property.get_accessor, cfile); - string cname = get_ccode_real_name (prop.get_accessor); - ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), new CCodeIdentifier (cname)); + CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.get_accessor)); + cfunc = cast_method_pointer (prop.base_property.get_accessor.get_method (), cfunc, base_type); + ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), cfunc); } if (prop.set_accessor != null) { generate_property_accessor_declaration (prop.base_property.set_accessor, cfile); - string cname = get_ccode_real_name (prop.set_accessor); - ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), new CCodeIdentifier (cname)); + CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.set_accessor)); + cfunc = cast_method_pointer (prop.base_property.set_accessor.get_method (), cfunc, base_type); + ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), cfunc); } } } @@ -1533,7 +1535,7 @@ public class Vala.GTypeModule : GErrorModule { CCodeExpression cfunc = new CCodeIdentifier (cname); if (prop.is_abstract || prop.is_virtual) { - cfunc = cast_property_accessor_pointer (prop.get_accessor, cfunc, base_type); + cfunc = cast_method_pointer (prop.base_interface_property.get_accessor.get_method (), cfunc, base_type); } ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc); } @@ -1547,7 +1549,7 @@ public class Vala.GTypeModule : GErrorModule { CCodeExpression cfunc = new CCodeIdentifier (cname); if (prop.is_abstract || prop.is_virtual) { - cfunc = cast_property_accessor_pointer (prop.set_accessor, cfunc, base_type); + cfunc = cast_method_pointer (prop.base_interface_property.set_accessor.get_method (), cfunc, base_type); } ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc); } @@ -1587,7 +1589,7 @@ public class Vala.GTypeModule : GErrorModule { string cname = get_ccode_name (base_property.get_accessor); CCodeExpression cfunc = new CCodeIdentifier (cname); - cfunc = cast_property_accessor_pointer (prop.get_accessor, cfunc, iface); + cfunc = cast_method_pointer (base_property.get_accessor.get_method (), cfunc, iface); ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "get_%s".printf (prop.name)), cfunc); } if (base_property.set_accessor != null && prop.set_accessor != null) { @@ -1595,7 +1597,7 @@ public class Vala.GTypeModule : GErrorModule { string cname = get_ccode_name (base_property.set_accessor); CCodeExpression cfunc = new CCodeIdentifier (cname); - cfunc = cast_property_accessor_pointer (prop.set_accessor, cfunc, iface); + cfunc = cast_method_pointer (base_property.set_accessor.get_method (), cfunc, iface); ccode.add_assignment (new CCodeMemberAccess.pointer (ciface, "set_%s".printf (prop.name)), cfunc); } } @@ -1605,20 +1607,6 @@ public class Vala.GTypeModule : GErrorModule { cfile.add_function (iface_init); } - CCodeExpression cast_property_accessor_pointer (PropertyAccessor acc, CCodeExpression cfunc, ObjectTypeSymbol base_type) { - string cast; - if (acc.readable && acc.value_type.is_real_non_null_struct_type ()) { - cast = "void (*) (%s *, %s *)".printf (get_ccode_name (base_type), get_ccode_name (acc.value_type)); - } else if (acc.readable) { - cast = "%s (*) (%s *)".printf (get_ccode_name (acc.value_type), get_ccode_name (base_type)); - } else if (acc.value_type.is_real_non_null_struct_type ()) { - cast = "void (*) (%s *, %s *)".printf (get_ccode_name (base_type), get_ccode_name (acc.value_type)); - } else { - cast = "void (*) (%s *, %s)".printf (get_ccode_name (base_type), get_ccode_name (acc.value_type)); - } - return new CCodeCastExpression (cfunc, cast); - } - CCodeExpression cast_method_pointer (Method m, CCodeExpression cfunc, ObjectTypeSymbol base_type, int direction = 3) { // Cast the function pointer to match the interface string cast; @@ -1710,7 +1698,7 @@ public class Vala.GTypeModule : GErrorModule { if (prop.base_property == null || is_gsource) { continue; } - var base_type = prop.base_property.parent_symbol; + var base_type = (ObjectTypeSymbol) prop.base_property.parent_symbol; var ccast = new CCodeCastExpression (new CCodeIdentifier ("self"), "%s *".printf (get_ccode_name (base_type))); @@ -1718,14 +1706,16 @@ public class Vala.GTypeModule : GErrorModule { if (prop.get_accessor != null) { generate_property_accessor_declaration (prop.base_property.get_accessor, cfile); - string cname = get_ccode_real_name (prop.get_accessor); - ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), new CCodeIdentifier (cname)); + CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.get_accessor)); + cfunc = cast_method_pointer (prop.base_property.get_accessor.get_method (), cfunc, base_type); + ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "get_%s".printf (prop.name)), cfunc); } if (prop.set_accessor != null) { generate_property_accessor_declaration (prop.base_property.set_accessor, cfile); - string cname = get_ccode_real_name (prop.set_accessor); - ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), new CCodeIdentifier (cname)); + CCodeExpression cfunc = new CCodeIdentifier (get_ccode_real_name (prop.set_accessor)); + cfunc = cast_method_pointer (prop.base_property.set_accessor.get_method (), cfunc, base_type); + ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, "set_%s".printf (prop.name)), cfunc); } } } diff --git a/tests/methods/array-length-type.c-expected b/tests/methods/array-length-type.c-expected index 1f9c4e213..294185b86 100644 --- a/tests/methods/array-length-type.c-expected +++ b/tests/methods/array-length-type.c-expected @@ -734,8 +734,8 @@ foo_class_init (FooClass * klass, g_type_class_adjust_private_offset (klass, &Foo_private_offset); ((FooClass *) klass)->get_bar = (gint* (*) (Foo*, guint8*)) foo_real_get_bar; ((FooClass *) klass)->set_bar = (void (*) (Foo*, gint**, guint8*)) foo_real_set_bar; - FOO_CLASS (klass)->get_manar = foo_real_get_manar; - FOO_CLASS (klass)->set_manar = foo_real_set_manar; + FOO_CLASS (klass)->get_manar = (gint* (*) (Foo*, guint8*)) foo_real_get_manar; + FOO_CLASS (klass)->set_manar = (void (*) (Foo*, gint*, guint8)) foo_real_set_manar; } static void @@ -1031,8 +1031,8 @@ bar_class_init (BarClass * klass, g_type_class_adjust_private_offset (klass, &Bar_private_offset); ((FooClass *) klass)->get_bar = (gint* (*) (Foo*, guint8*)) bar_real_get_bar; ((FooClass *) klass)->set_bar = (void (*) (Foo*, gint**, guint8*)) bar_real_set_bar; - FOO_CLASS (klass)->get_manar = bar_real_get_manar; - FOO_CLASS (klass)->set_manar = bar_real_set_manar; + FOO_CLASS (klass)->get_manar = (gint* (*) (Foo*, guint8*)) bar_real_get_manar; + FOO_CLASS (klass)->set_manar = (void (*) (Foo*, gint*, guint8)) bar_real_set_manar; } static void diff --git a/tests/objects/bug667668.c-expected b/tests/objects/bug667668.c-expected index 643616b28..5cc677e73 100644 --- a/tests/objects/bug667668.c-expected +++ b/tests/objects/bug667668.c-expected @@ -318,8 +318,8 @@ bar_class_init (BarClass * klass, { bar_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Bar_private_offset); - FOO_CLASS (klass)->get_foo = bar_real_get_foo; - FOO_CLASS (klass)->set_foo = bar_real_set_foo; + FOO_CLASS (klass)->get_foo = (gconstpointer (*) (Foo*)) bar_real_get_foo; + FOO_CLASS (klass)->set_foo = (void (*) (Foo*, gconstpointer)) bar_real_set_foo; G_OBJECT_CLASS (klass)->get_property = _vala_bar_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_bar_set_property; G_OBJECT_CLASS (klass)->finalize = bar_finalize; diff --git a/tests/objects/bug702736.c-expected b/tests/objects/bug702736.c-expected index 7824b8436..038d673bb 100644 --- a/tests/objects/bug702736.c-expected +++ b/tests/objects/bug702736.c-expected @@ -263,7 +263,7 @@ class_b_class_init (ClassBClass * klass, gpointer klass_data) { class_b_parent_class = g_type_class_peek_parent (klass); - CLASS_A_CLASS (klass)->get_flags = class_b_real_get_flags; + CLASS_A_CLASS (klass)->get_flags = (gint (*) (ClassA*)) class_b_real_get_flags; G_OBJECT_CLASS (klass)->get_property = _vala_class_b_get_property; g_object_class_install_property (G_OBJECT_CLASS (klass), CLASS_B_FLAGS_PROPERTY, class_b_properties[CLASS_B_FLAGS_PROPERTY] = g_param_spec_int ("flags", "flags", "flags", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); } @@ -400,7 +400,7 @@ class_d_class_init (ClassDClass * klass, gpointer klass_data) { class_d_parent_class = g_type_class_peek_parent (klass); - CLASS_A_CLASS (klass)->get_flags = class_d_real_get_flags; + CLASS_A_CLASS (klass)->get_flags = (gint (*) (ClassA*)) class_d_real_get_flags; G_OBJECT_CLASS (klass)->get_property = _vala_class_d_get_property; g_object_class_install_property (G_OBJECT_CLASS (klass), CLASS_D_FLAGS_PROPERTY, class_d_properties[CLASS_D_FLAGS_PROPERTY] = g_param_spec_int ("flags", "flags", "flags", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); } diff --git a/tests/objects/bug741465.c-expected b/tests/objects/bug741465.c-expected index 45a70c9de..0a5312a23 100644 --- a/tests/objects/bug741465.c-expected +++ b/tests/objects/bug741465.c-expected @@ -184,8 +184,8 @@ static void foo_instance_init (Foo * self) { ((AbstractFoo *) self)->foo = (const gchar* (*) (AbstractFoo*)) foo_real_foo; - ((AbstractFoo *) self)->get_prop = foo_real_get_prop; - ((AbstractFoo *) self)->set_prop = foo_real_set_prop; + ((AbstractFoo *) self)->get_prop = (gint (*) (AbstractFoo*)) foo_real_get_prop; + ((AbstractFoo *) self)->set_prop = (void (*) (AbstractFoo*, gint)) foo_real_set_prop; } Bar* @@ -237,8 +237,8 @@ static void bar_instance_init (Bar * self) { ((AbstractFoo *) self)->foo = (const gchar* (*) (AbstractFoo*)) bar_real_foo; - ((AbstractFoo *) self)->get_prop = bar_real_get_prop; - ((AbstractFoo *) self)->set_prop = bar_real_set_prop; + ((AbstractFoo *) self)->get_prop = (gint (*) (AbstractFoo*)) bar_real_get_prop; + ((AbstractFoo *) self)->set_prop = (void (*) (AbstractFoo*, gint)) bar_real_set_prop; } static const gchar* @@ -320,8 +320,8 @@ manam_instance_init (Manam * self) { ((Manam *) self)->foo = (const gchar* (*) (Manam*)) manam_real_foo; ((Manam *) self)->foo_plain = (gint (*) (Manam*)) manam_real_foo_plain; - ((Manam *) self)->get_prop = manam_real_get_prop; - ((Manam *) self)->set_prop = manam_real_set_prop; + ((Manam *) self)->get_prop = (gint (*) (Manam*)) manam_real_get_prop; + ((Manam *) self)->set_prop = (void (*) (Manam*, gint)) manam_real_set_prop; self->field = 23; } diff --git a/tests/objects/bug764481.c-expected b/tests/objects/bug764481.c-expected index 016092893..c4d02772e 100644 --- a/tests/objects/bug764481.c-expected +++ b/tests/objects/bug764481.c-expected @@ -352,8 +352,8 @@ base_foo_class_init (BaseFooClass * klass, { base_foo_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &BaseFoo_private_offset); - BASE_FOO_CLASS (klass)->get_st = base_foo_real_get_st; - BASE_FOO_CLASS (klass)->set_st = base_foo_real_set_st; + BASE_FOO_CLASS (klass)->get_st = (void (*) (BaseFoo*, Manam*)) base_foo_real_get_st; + BASE_FOO_CLASS (klass)->set_st = (void (*) (BaseFoo*, Manam*)) base_foo_real_set_st; G_OBJECT_CLASS (klass)->get_property = _vala_base_foo_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_base_foo_set_property; G_OBJECT_CLASS (klass)->finalize = base_foo_finalize; @@ -516,8 +516,8 @@ foo_class_init (FooClass * klass, { foo_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Foo_private_offset); - FOO_CLASS (klass)->get_st = foo_real_get_st; - FOO_CLASS (klass)->set_st = foo_real_set_st; + FOO_CLASS (klass)->get_st = (void (*) (Foo*, Manam*)) foo_real_get_st; + FOO_CLASS (klass)->set_st = (void (*) (Foo*, Manam*)) foo_real_set_st; G_OBJECT_CLASS (klass)->get_property = _vala_foo_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_foo_set_property; G_OBJECT_CLASS (klass)->finalize = foo_finalize; @@ -646,8 +646,8 @@ bar_class_init (BarClass * klass, gpointer klass_data) { bar_parent_class = g_type_class_peek_parent (klass); - FOO_CLASS (klass)->get_st = bar_real_get_st; - FOO_CLASS (klass)->set_st = bar_real_set_st; + FOO_CLASS (klass)->get_st = (void (*) (Foo*, Manam*)) bar_real_get_st; + FOO_CLASS (klass)->set_st = (void (*) (Foo*, Manam*)) bar_real_set_st; G_OBJECT_CLASS (klass)->get_property = _vala_bar_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_bar_set_property; g_object_class_install_property (G_OBJECT_CLASS (klass), BAR_ST_PROPERTY, bar_properties[BAR_ST_PROPERTY] = g_param_spec_boxed ("st", "st", "st", TYPE_MANAM, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); @@ -765,8 +765,8 @@ baz_class_init (BazClass * klass, gpointer klass_data) { baz_parent_class = g_type_class_peek_parent (klass); - BASE_FOO_CLASS (klass)->get_st = baz_real_get_st; - BASE_FOO_CLASS (klass)->set_st = baz_real_set_st; + BASE_FOO_CLASS (klass)->get_st = (void (*) (BaseFoo*, Manam*)) baz_real_get_st; + BASE_FOO_CLASS (klass)->set_st = (void (*) (BaseFoo*, Manam*)) baz_real_set_st; G_OBJECT_CLASS (klass)->get_property = _vala_baz_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_baz_set_property; g_object_class_install_property (G_OBJECT_CLASS (klass), BAZ_ST_PROPERTY, baz_properties[BAZ_ST_PROPERTY] = g_param_spec_boxed ("st", "st", "st", TYPE_MANAM, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); diff --git a/tests/objects/bug779219.c-expected b/tests/objects/bug779219.c-expected index 30eb64ca4..5b063a55e 100644 --- a/tests/objects/bug779219.c-expected +++ b/tests/objects/bug779219.c-expected @@ -188,7 +188,7 @@ foo_ifoo_interface_init (IFooIface * iface, gpointer iface_data) { foo_ifoo_parent_iface = g_type_interface_peek_parent (iface); - iface->get_foo = (gint (*) (IFoo *)) foo_get_foo; + iface->get_foo = (gint (*) (IFoo*)) foo_get_foo; } static void @@ -264,7 +264,7 @@ bar_class_init (BarClass * klass, gpointer klass_data) { bar_parent_class = g_type_class_peek_parent (klass); - FOO_CLASS (klass)->get_foo = bar_real_get_foo; + FOO_CLASS (klass)->get_foo = (gint (*) (Foo*)) bar_real_get_foo; G_OBJECT_CLASS (klass)->get_property = _vala_bar_get_property; g_object_class_install_property (G_OBJECT_CLASS (klass), BAR_FOO_PROPERTY, bar_properties[BAR_FOO_PROPERTY] = g_param_spec_int ("foo", "foo", "foo", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); } diff --git a/tests/objects/member-initializer-base-properties.c-expected b/tests/objects/member-initializer-base-properties.c-expected index 7e9e769c4..d545238ce 100644 --- a/tests/objects/member-initializer-base-properties.c-expected +++ b/tests/objects/member-initializer-base-properties.c-expected @@ -390,8 +390,8 @@ bar_class_init (BarClass * klass, bar_parent_class = g_type_class_peek_parent (klass); ((BarClass *) klass)->finalize = bar_finalize; g_type_class_adjust_private_offset (klass, &Bar_private_offset); - BAR_CLASS (klass)->get_prop_v = bar_real_get_prop_v; - BAR_CLASS (klass)->set_prop_v = bar_real_set_prop_v; + BAR_CLASS (klass)->get_prop_v = (const gchar* (*) (Bar*)) bar_real_get_prop_v; + BAR_CLASS (klass)->set_prop_v = (void (*) (Bar*, const gchar*)) bar_real_set_prop_v; } static void @@ -530,8 +530,8 @@ foo_class_init (FooClass * klass, foo_parent_class = g_type_class_peek_parent (klass); ((BarClass *) klass)->finalize = foo_finalize; g_type_class_adjust_private_offset (klass, &Foo_private_offset); - BAR_CLASS (klass)->get_prop_v = foo_real_get_prop_v; - BAR_CLASS (klass)->set_prop_v = foo_real_set_prop_v; + BAR_CLASS (klass)->get_prop_v = (const gchar* (*) (Bar*)) foo_real_get_prop_v; + BAR_CLASS (klass)->set_prop_v = (void (*) (Bar*, const gchar*)) foo_real_set_prop_v; } static void diff --git a/tests/objects/properties.c-expected b/tests/objects/properties.c-expected index 00e0f0a7c..643aa51b3 100644 --- a/tests/objects/properties.c-expected +++ b/tests/objects/properties.c-expected @@ -1637,8 +1637,8 @@ maman_bar_class_init (MamanBarClass * klass, { maman_bar_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &MamanBar_private_offset); - MAMAN_FOO_CLASS (klass)->get_abstract_base_property = maman_bar_real_get_abstract_base_property; - MAMAN_FOO_CLASS (klass)->set_abstract_base_property = maman_bar_real_set_abstract_base_property; + MAMAN_FOO_CLASS (klass)->get_abstract_base_property = (gint (*) (MamanFoo*)) maman_bar_real_get_abstract_base_property; + MAMAN_FOO_CLASS (klass)->set_abstract_base_property = (void (*) (MamanFoo*, gint)) maman_bar_real_set_abstract_base_property; G_OBJECT_CLASS (klass)->get_property = _vala_maman_bar_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_maman_bar_set_property; G_OBJECT_CLASS (klass)->finalize = maman_bar_finalize; @@ -2131,8 +2131,8 @@ maman_biz_class_init (MamanBizClass * klass, { maman_biz_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &MamanBiz_private_offset); - MAMAN_ABIZ_CLASS (klass)->get_number2 = maman_biz_real_get_number2; - MAMAN_ABIZ_CLASS (klass)->set_number2 = maman_biz_real_set_number2; + MAMAN_ABIZ_CLASS (klass)->get_number2 = (gint (*) (MamanABiz*)) maman_biz_real_get_number2; + MAMAN_ABIZ_CLASS (klass)->set_number2 = (void (*) (MamanABiz*, gint)) maman_biz_real_set_number2; G_OBJECT_CLASS (klass)->get_property = _vala_maman_biz_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_maman_biz_set_property; G_OBJECT_CLASS (klass)->finalize = maman_biz_finalize; diff --git a/tests/objects/property-array.c-expected b/tests/objects/property-array.c-expected index 2c2898f34..3dd9eaeda 100644 --- a/tests/objects/property-array.c-expected +++ b/tests/objects/property-array.c-expected @@ -810,12 +810,12 @@ foo_class_init (FooClass * klass, foo_parent_class = g_type_class_peek_parent (klass); ((FooClass *) klass)->finalize = foo_finalize; g_type_class_adjust_private_offset (klass, &Foo_private_offset); - FOO_CLASS (klass)->get_array_v = foo_real_get_array_v; - FOO_CLASS (klass)->set_array_v = foo_real_set_array_v; - FOO_CLASS (klass)->get_array_no_length_v = foo_real_get_array_no_length_v; - FOO_CLASS (klass)->set_array_no_length_v = foo_real_set_array_no_length_v; - FOO_CLASS (klass)->get_strv_v = foo_real_get_strv_v; - FOO_CLASS (klass)->set_strv_v = foo_real_set_strv_v; + FOO_CLASS (klass)->get_array_v = (Manam** (*) (Foo*, gint*)) foo_real_get_array_v; + FOO_CLASS (klass)->set_array_v = (void (*) (Foo*, Manam**, gint)) foo_real_set_array_v; + FOO_CLASS (klass)->get_array_no_length_v = (Manam** (*) (Foo*)) foo_real_get_array_no_length_v; + FOO_CLASS (klass)->set_array_no_length_v = (void (*) (Foo*, Manam**)) foo_real_set_array_no_length_v; + FOO_CLASS (klass)->get_strv_v = (gchar** (*) (Foo*)) foo_real_get_strv_v; + FOO_CLASS (klass)->set_strv_v = (void (*) (Foo*, gchar**)) foo_real_set_strv_v; } static void @@ -1166,10 +1166,10 @@ bar_class_init (BarClass * klass, { bar_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Bar_private_offset); - BAR_CLASS (klass)->get_array_v = bar_real_get_array_v; - BAR_CLASS (klass)->set_array_v = bar_real_set_array_v; - BAR_CLASS (klass)->get_strv_v = bar_real_get_strv_v; - BAR_CLASS (klass)->set_strv_v = bar_real_set_strv_v; + BAR_CLASS (klass)->get_array_v = (Manam** (*) (Bar*)) bar_real_get_array_v; + BAR_CLASS (klass)->set_array_v = (void (*) (Bar*, Manam**)) bar_real_set_array_v; + BAR_CLASS (klass)->get_strv_v = (gchar** (*) (Bar*)) bar_real_get_strv_v; + BAR_CLASS (klass)->set_strv_v = (void (*) (Bar*, gchar**)) bar_real_set_strv_v; G_OBJECT_CLASS (klass)->get_property = _vala_bar_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_bar_set_property; G_OBJECT_CLASS (klass)->finalize = bar_finalize; diff --git a/tests/objects/property-delegate-owned.c-expected b/tests/objects/property-delegate-owned.c-expected index 2165bbf3d..df1c1fa37 100644 --- a/tests/objects/property-delegate-owned.c-expected +++ b/tests/objects/property-delegate-owned.c-expected @@ -588,10 +588,10 @@ foo_class_init (FooClass * klass, foo_parent_class = g_type_class_peek_parent (klass); ((FooClass *) klass)->finalize = foo_finalize; g_type_class_adjust_private_offset (klass, &Foo_private_offset); - FOO_CLASS (klass)->get_foo = foo_real_get_foo; - FOO_CLASS (klass)->set_foo = foo_real_set_foo; - FOO_CLASS (klass)->get_bar = foo_real_get_bar; - FOO_CLASS (klass)->set_bar = foo_real_set_bar; + FOO_CLASS (klass)->get_foo = (FooFunc (*) (Foo*, gpointer*)) foo_real_get_foo; + FOO_CLASS (klass)->set_foo = (void (*) (Foo*, FooFunc, gpointer, GDestroyNotify)) foo_real_set_foo; + FOO_CLASS (klass)->get_bar = (FooFunc (*) (Foo*, gpointer*)) foo_real_get_bar; + FOO_CLASS (klass)->set_bar = (void (*) (Foo*, FooFunc, gpointer, GDestroyNotify)) foo_real_set_bar; } static void @@ -599,10 +599,10 @@ foo_ifoo_interface_init (IFooIface * iface, gpointer iface_data) { foo_ifoo_parent_iface = g_type_interface_peek_parent (iface); - iface->get_foo = (FooFunc (*) (IFoo *)) foo_get_foo; - iface->set_foo = (void (*) (IFoo *, FooFunc)) foo_set_foo; - iface->get_bar = (FooFunc (*) (IFoo *)) foo_get_bar; - iface->set_bar = (void (*) (IFoo *, FooFunc)) foo_set_bar; + iface->get_foo = (FooFunc (*) (IFoo*, gpointer*)) foo_get_foo; + iface->set_foo = (void (*) (IFoo*, FooFunc, gpointer, GDestroyNotify)) foo_set_foo; + iface->get_bar = (FooFunc (*) (IFoo*, gpointer*)) foo_get_bar; + iface->set_bar = (void (*) (IFoo*, FooFunc, gpointer, GDestroyNotify)) foo_set_bar; } static void @@ -826,10 +826,10 @@ bar_class_init (BarClass * klass, bar_parent_class = g_type_class_peek_parent (klass); ((FooClass *) klass)->finalize = bar_finalize; g_type_class_adjust_private_offset (klass, &Bar_private_offset); - FOO_CLASS (klass)->get_foo = bar_real_get_foo; - FOO_CLASS (klass)->set_foo = bar_real_set_foo; - FOO_CLASS (klass)->get_bar = bar_real_get_bar; - FOO_CLASS (klass)->set_bar = bar_real_set_bar; + FOO_CLASS (klass)->get_foo = (FooFunc (*) (Foo*, gpointer*)) bar_real_get_foo; + FOO_CLASS (klass)->set_foo = (void (*) (Foo*, FooFunc, gpointer, GDestroyNotify)) bar_real_set_foo; + FOO_CLASS (klass)->get_bar = (FooFunc (*) (Foo*, gpointer*)) bar_real_get_bar; + FOO_CLASS (klass)->set_bar = (void (*) (Foo*, FooFunc, gpointer, GDestroyNotify)) bar_real_set_bar; } static void diff --git a/tests/objects/property-delegate.c-expected b/tests/objects/property-delegate.c-expected index 4484071d5..17977f8b5 100644 --- a/tests/objects/property-delegate.c-expected +++ b/tests/objects/property-delegate.c-expected @@ -507,10 +507,10 @@ foo_class_init (FooClass * klass, foo_parent_class = g_type_class_peek_parent (klass); ((FooClass *) klass)->finalize = foo_finalize; g_type_class_adjust_private_offset (klass, &Foo_private_offset); - FOO_CLASS (klass)->get_deleg_v = foo_real_get_deleg_v; - FOO_CLASS (klass)->set_deleg_v = foo_real_set_deleg_v; - FOO_CLASS (klass)->get_deleg_no_target_v = foo_real_get_deleg_no_target_v; - FOO_CLASS (klass)->set_deleg_no_target_v = foo_real_set_deleg_no_target_v; + FOO_CLASS (klass)->get_deleg_v = (Manam (*) (Foo*, gpointer*)) foo_real_get_deleg_v; + FOO_CLASS (klass)->set_deleg_v = (void (*) (Foo*, Manam, gpointer)) foo_real_set_deleg_v; + FOO_CLASS (klass)->get_deleg_no_target_v = (Manam (*) (Foo*)) foo_real_get_deleg_no_target_v; + FOO_CLASS (klass)->set_deleg_no_target_v = (void (*) (Foo*, Manam)) foo_real_set_deleg_no_target_v; } static void @@ -705,8 +705,8 @@ bar_class_init (BarClass * klass, { bar_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Bar_private_offset); - BAR_CLASS (klass)->get_deleg_v = bar_real_get_deleg_v; - BAR_CLASS (klass)->set_deleg_v = bar_real_set_deleg_v; + BAR_CLASS (klass)->get_deleg_v = (Manam (*) (Bar*)) bar_real_get_deleg_v; + BAR_CLASS (klass)->set_deleg_v = (void (*) (Bar*, Manam)) bar_real_set_deleg_v; G_OBJECT_CLASS (klass)->get_property = _vala_bar_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_bar_set_property; G_OBJECT_CLASS (klass)->finalize = bar_finalize; diff --git a/tests/objects/property-real-struct-assignment.c-expected b/tests/objects/property-real-struct-assignment.c-expected index 624f94746..52cea4ef2 100644 --- a/tests/objects/property-real-struct-assignment.c-expected +++ b/tests/objects/property-real-struct-assignment.c-expected @@ -324,8 +324,8 @@ manam_class_init (ManamClass * klass, { manam_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Manam_private_offset); - MANAM_CLASS (klass)->get_faz = manam_real_get_faz; - MANAM_CLASS (klass)->set_faz = manam_real_set_faz; + MANAM_CLASS (klass)->get_faz = (void (*) (Manam*, Foo*)) manam_real_get_faz; + MANAM_CLASS (klass)->set_faz = (void (*) (Manam*, Foo*)) manam_real_set_faz; G_OBJECT_CLASS (klass)->get_property = _vala_manam_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_manam_set_property; G_OBJECT_CLASS (klass)->finalize = manam_finalize; -- cgit v1.2.1