summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--vala/parser.y14
2 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3dde9f15d..e4e7694c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-09-20 Raffaele Sandrini <raffaele@sandrini.ch>
+ * vala/parser.y: Add support for ownership transfer with properties
+ using the HASH (#) modifier. e.g. public string!# foo { get; set; }
+
+2007-09-20 Raffaele Sandrini <raffaele@sandrini.ch>
+
* vapi/glib-2.0.vala: add G.HashTable.size ()
2007-09-20 Jürg Billeter <j@bitron.ch>
diff --git a/vala/parser.y b/vala/parser.y
index 4bc417dbe..c8ed310bd 100644
--- a/vala/parser.y
+++ b/vala/parser.y
@@ -3066,6 +3066,13 @@ property_declaration
{
ValaSourceReference *src;
+ /* HASH in property type context has the meaning of transferring
+ * ownership instead of taking it */
+ if (vala_type_reference_get_takes_ownership ($5)) {
+ vala_type_reference_set_transfers_ownership ($5, TRUE);
+ vala_type_reference_set_takes_ownership ($5, FALSE);
+ }
+
if (!vala_type_reference_get_is_weak ($5)) {
vala_type_reference_set_takes_ownership ($5, TRUE);
}
@@ -3099,6 +3106,13 @@ property_declaration
{
ValaSourceReference *src;
+ /* HASH in property type context has the meaning of transferring
+ * ownership instead of taking it */
+ if (vala_type_reference_get_takes_ownership ($5)) {
+ vala_type_reference_set_transfers_ownership ($5, TRUE);
+ vala_type_reference_set_takes_ownership ($5, FALSE);
+ }
+
if (!vala_type_reference_get_is_weak ($5)) {
vala_type_reference_set_takes_ownership ($5, TRUE);
}