]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Cast instance parameter in member-initializer for base-properties 04806bb5df09f07aab7903222ecee2244c7a9f70
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 21 Jan 2020 16:56:28 +0000 (17:56 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 21 Jan 2020 17:01:18 +0000 (18:01 +0100)
This fixes warnings issued with -Wincompatible-pointer-types

Fixes https://gitlab.gnome.org/GNOME/vala/issues/899

codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/objects/member-initializer-base-properties.vala [new file with mode: 0644]

index 932228eb57b10f1e1d1ae78716d8a443d6cb672a..1e0bfb4e23aafc9dd459ee5ed3d8ad740da56acc 100644 (file)
@@ -5024,6 +5024,11 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        }
                                } else if (init.symbol_reference is Property) {
                                        var p = (Property) init.symbol_reference;
+                                       if (p.base_property != null) {
+                                               p = p.base_property;
+                                       } else if (p.base_interface_property != null) {
+                                               p = p.base_interface_property;
+                                       }
                                        var instance_target_type = SemanticAnalyzer.get_data_type_for_symbol ((TypeSymbol) p.parent_symbol);
                                        var typed_inst = transform_value (new GLibValue (expr.type_reference, instance), instance_target_type, init);
                                        var inst_ma = new MemberAccess.simple ("fake");
index c3b44aa7f6f3a2f5975be4cdbc2b11445bb65ddc..24f9d16224f374c52f5b93ddf1a061603eac7e82 100644 (file)
@@ -354,6 +354,7 @@ TESTS = \
        objects/interface-property-delegate.vala \
        objects/interface-property-override.vala \
        objects/interface-virtual-override.vala \
+       objects/member-initializer-base-properties.vala \
        objects/methods.vala \
        objects/paramspec.vala \
        objects/plugin-module-init.vala \
diff --git a/tests/objects/member-initializer-base-properties.vala b/tests/objects/member-initializer-base-properties.vala
new file mode 100644 (file)
index 0000000..b21956d
--- /dev/null
@@ -0,0 +1,19 @@
+interface IFoo {
+       public abstract string prop { get; set; }
+}
+
+class Bar {
+       public virtual string prop_v { get; set; }
+}
+
+class Foo : Bar, IFoo {
+       public string prop { get; set; }
+       public override string prop_v { get; set; }
+}
+
+void main() {
+       var foo = new Foo () {
+               prop = "bar",
+               prop_v = "bar"
+       };
+}