summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--vala/valadynamicproperty.vala3
-rw-r--r--vala/valaproperty.vala4
-rw-r--r--vala/valasemanticanalyzer.vala4
4 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2b5f5644f..2240b90aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);