]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Set target_type for member initializers
authorJürg Billeter <j@bitron.ch>
Fri, 14 Nov 2008 21:36:16 +0000 (21:36 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 14 Nov 2008 21:36:16 +0000 (21:36 +0000)
2008-11-14  Jürg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala:

Set target_type for member initializers

svn path=/trunk/; revision=2023

ChangeLog
vala/valasemanticanalyzer.vala

index d0e0604b33321a796ede201d45082d123266da79..b9d86070552aa056888deb37e72bb2f421beb453 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-14  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valasemanticanalyzer.vala:
+
+       Set target_type for member initializers
+
 2008-11-14  Jürg Billeter  <j@bitron.ch>
 
        * vapi/packages/gstreamer-0.10/:
index 8b2cbba894269454dbc9a272a8084d1771d6bfe1..4bc3f74beb4ab3e1b8322ba38e053f1cf9dcb613 100644 (file)
@@ -599,8 +599,6 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
        }
 
        public void visit_member_initializer (MemberInitializer init, DataType type) {
-               init.check (this);
-
                init.symbol_reference = symbol_lookup_inherited (type.data_type, init.name);
                if (!(init.symbol_reference is Field || init.symbol_reference is Property)) {
                        init.error = true;
@@ -625,7 +623,12 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                                return;
                        }
                }
-               if (init.initializer.value_type == null || !init.initializer.value_type.compatible (member_type)) {
+
+               init.initializer.target_type = member_type;
+
+               init.check (this);
+
+               if (init.initializer.value_type == null || !init.initializer.value_type.compatible (init.initializer.target_type)) {
                        init.error = true;
                        Report.error (init.source_reference, "Invalid type for member `%s'".printf (init.name));
                        return;