]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Fix position of "result" parameter for struct constructor
authorRico Tzschichholz <ricotz@ubuntu.com>
Thu, 5 Aug 2021 15:14:48 +0000 (17:14 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 22 Aug 2021 08:25:11 +0000 (10:25 +0200)
Thanks to Princeton Ferro

codegen/valagirwriter.vala

index a7acf680d4db6222a96ac2d7982c786ad162d69c..795c2fe955f3c8e2f4418f3408d43dbf74f76b20 100644 (file)
@@ -1192,6 +1192,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");
@@ -1205,10 +1210,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);
                        }