diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | vala/valadynamicproperty.vala | 3 | ||||
-rw-r--r-- | vala/valaproperty.vala | 4 | ||||
-rw-r--r-- | vala/valasemanticanalyzer.vala | 4 |
4 files changed, 16 insertions, 3 deletions
@@ -1,5 +1,13 @@ 2008-11-04 Jürg Billeter <j@bitron.ch> + * vala/valadynamicproperty.vala: + * vala/valaproperty.vala: + * vala/valasemanticanalyzer.vala: + + Fix crash when using dynamic properties, fixes bug 559304 + +2008-11-04 Jürg Billeter <j@bitron.ch> + * gobject/valaccodememberaccessmodule.vala: * gobject/valagsignalmodule.vala: diff --git a/vala/valadynamicproperty.vala b/vala/valadynamicproperty.vala index e18ebbe3c..cc092c26b 100644 --- a/vala/valadynamicproperty.vala +++ b/vala/valadynamicproperty.vala @@ -40,4 +40,7 @@ public class Vala.DynamicProperty : Property { return new ArrayList<string> (); } + public override bool check (SemanticAnalyzer analyzer) { + return true; + } } diff --git a/vala/valaproperty.vala b/vala/valaproperty.vala index 05c0c95d7..39247b0e4 100644 --- a/vala/valaproperty.vala +++ b/vala/valaproperty.vala @@ -34,7 +34,9 @@ public class Vala.Property : Member, Lockable { get { return _data_type; } set { _data_type = value; - _data_type.parent_node = this; + if (value != null) { + _data_type.parent_node = this; + } } } diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index d81f9d223..f803028b2 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -1683,7 +1683,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { // dynamic property assignment var prop = new DynamicProperty (expr.inner.value_type, expr.member_name, expr.source_reference); prop.access = SymbolAccessibility.PUBLIC; - prop.set_accessor = new PropertyAccessor (false, true, false, null, null); + prop.set_accessor = new PropertyAccessor (false, true, false, null, prop.source_reference); prop.set_accessor.access = SymbolAccessibility.PUBLIC; prop.owner = expr.inner.value_type.data_type.scope; dynamic_object_type.type_symbol.scope.add (null, prop); @@ -1700,7 +1700,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { prop.property_type = expr.inner.value_type.copy (); } prop.access = SymbolAccessibility.PUBLIC; - prop.get_accessor = new PropertyAccessor (true, false, false, null, null); + prop.get_accessor = new PropertyAccessor (true, false, false, null, prop.source_reference); prop.get_accessor.access = SymbolAccessibility.PUBLIC; prop.owner = expr.inner.value_type.data_type.scope; dynamic_object_type.type_symbol.scope.add (null, prop); |