[vala] girparser: support return_void metadata argument



commit beff49b10b7101154fd99620940034fec0d4bb02
Author: Evan Nemerson <evan nemerson com>
Date:   Sun May 25 19:39:48 2014 -0700

    girparser: support return_void metadata argument
    
    This allows us to generate backwards compatible signatures for
    functions with a void return value and a single out param for a struct
    from metadata files instead of resorting to *-custom.vala.

 vala/valagirparser.vala |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index b99cd51..d60dffb 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -78,7 +78,8 @@ public class Vala.GirParser : CodeVisitor {
                INSTANCE_IDX,
                EXPERIMENTAL,
                FLOATING,
-               TYPE_ID;
+               TYPE_ID,
+               RETURN_VOID;
 
                public static ArgumentType? from_string (string name) {
                        var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -3440,8 +3441,10 @@ public class Vala.GirParser : CodeVisitor {
                                        if (last_param.param.variable_type is UnresolvedType) {
                                                var st = resolve_symbol (node.parent, ((UnresolvedType) 
last_param.param.variable_type).unresolved_symbol) as Struct;
                                                if (st != null && !st.is_simple_type () && 
!last_param.param.variable_type.nullable) {
-                                                       last_param.keep = false;
-                                                       return_type = last_param.param.variable_type.copy ();
+                                                       if (!node.metadata.get_bool 
(ArgumentType.RETURN_VOID, false)) {
+                                                               last_param.keep = false;
+                                                               return_type = 
last_param.param.variable_type.copy ();
+                                                       }
                                                }
                                        }
                                }


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