[vala/0.52] girwriter: Fix position of "result" parameter for struct constructor



commit 8bbb40dace8da65b379b1d82e7e0509af8ac9dbe
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Thu Aug 5 17:14:48 2021 +0200

    girwriter: Fix position of "result" parameter for struct constructor
    
    Thanks to Princeton Ferro

 codegen/valagirwriter.vala | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala
index ef0cd5f07..07b6f1e4c 100644
--- a/codegen/valagirwriter.vala
+++ b/codegen/valagirwriter.vala
@@ -1202,6 +1202,11 @@ public class Vala.GIRWriter : CodeVisitor {
                                }
                        }
 
+                       if (constructor && ret_is_struct) {
+                               // struct constructor has its result as first parameter
+                               write_param_or_return (return_type, "parameter", ref index, false, "result", 
return_comment, ParameterDirection.OUT, constructor, true);
+                       }
+
                        if (type_params != null) {
                                foreach (var p in type_params) {
                                        write_type_parameter (p, "parameter");
@@ -1215,10 +1220,10 @@ public class Vala.GIRWriter : CodeVisitor {
                                write_implicit_params (param.variable_type, ref index, get_ccode_array_length 
(param), get_ccode_name (param), param.direction);
                        }
 
-                       if (ret_is_struct) {
+                       if (!constructor && ret_is_struct) {
                                // struct returns are converted to parameters
                                write_param_or_return (return_type, "parameter", ref index, false, "result", 
return_comment, ParameterDirection.OUT, constructor, true);
-                       } else {
+                       } else if (!constructor) {
                                write_implicit_params (return_type, ref index, return_array_length, "result", 
ParameterDirection.OUT);
                        }
 


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