]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Cast instance parameter for property access in object-initializer
authorRico Tzschichholz <ricotz@ubuntu.com>
Fri, 4 Jan 2019 18:18:11 +0000 (19:18 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Fri, 4 Jan 2019 18:18:11 +0000 (19:18 +0100)
This will silence those incompatible-pointer-types warnings

codegen/valaccodebasemodule.vala

index d63c4ae528d46938270cee8763c622ec8af1b1e9..ae1ad0c2c295942f0ba064ad0bc9ec5ba65fb78b 100644 (file)
@@ -5070,10 +5070,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                                generate_class_struct_declaration (cl, cfile);
                                        }
                                } else if (init.symbol_reference is Property) {
-                                       var inst_ma = new MemberAccess.simple ("new");
-                                       inst_ma.value_type = expr.type_reference;
-                                       set_cvalue (inst_ma, instance);
-                                       store_property ((Property) init.symbol_reference, inst_ma, init.initializer.target_value);
+                                       var p = (Property) init.symbol_reference;
+                                       var instance_target_type = 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");
+                                       inst_ma.target_value = typed_inst;
+                                       store_property (p, inst_ma, init.initializer.target_value);
                                        // FIXME Do not ref/copy in the first place
                                        if (requires_destroy (init.initializer.target_value.value_type)) {
                                                ccode.add_expression (destroy_value (init.initializer.target_value));