[vala] GIRWriter: Properly emit transfer-ownership=container



commit 1b1d46e187a9a90fb7abaa9847fee3bd1ac8c69d
Author: Michal Hruby <michal mhr gmail com>
Date:   Thu Jun 6 00:18:09 2013 +0100

    GIRWriter: Properly emit transfer-ownership=container

 codegen/valagirwriter.vala |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala
index 612fafe..6f61af5 100644
--- a/codegen/valagirwriter.vala
+++ b/codegen/valagirwriter.vala
@@ -1191,7 +1191,15 @@ public class Vala.GIRWriter : CodeVisitor {
                DelegateType delegate_type = type as DelegateType;
 
                if ((type.value_owned && delegate_type == null) || (constructor && 
!type.data_type.is_subtype_of (ginitiallyunowned_type))) {
-                       buffer.append_printf (" transfer-ownership=\"full\"");
+                       var any_owned = false;
+                       foreach (var generic_arg in type.get_type_arguments ()) {
+                               any_owned |= generic_arg.value_owned;
+                       }
+                       if (type.has_type_arguments () && !any_owned) {
+                               buffer.append_printf (" transfer-ownership=\"container\"");
+                       } else {
+                               buffer.append_printf (" transfer-ownership=\"full\"");
+                       }
                } else {
                        buffer.append_printf (" transfer-ownership=\"none\"");
                }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]