From: Rico Tzschichholz Date: Thu, 15 Jul 2021 10:35:41 +0000 (+0200) Subject: codegen: Fix params-array in constructor for struct X-Git-Tag: 0.53.1~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eaf0e8786cd7a3bb6467d3fcc21ead2605824721;p=thirdparty%2Fvala.git codegen: Fix params-array in constructor for struct Fixes https://gitlab.gnome.org/GNOME/vala/issues/1202 --- diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala index cb1568d77..770b4a727 100644 --- a/codegen/valaccodearraymodule.vala +++ b/codegen/valaccodearraymodule.vala @@ -929,7 +929,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { cfile.add_include ("stdarg.h"); } - if (!(m is CreationMethod)) { + if (!(m is CreationMethod) || m.parent_symbol is Struct) { ccode.add_declaration ("va_list", new CCodeVariableDeclarator ("_va_list_%s".printf (get_ccode_name (local)))); var vastart = new CCodeFunctionCall (new CCodeIdentifier ("va_start")); vastart.add_argument (new CCodeIdentifier ("_va_list_%s".printf (get_ccode_name (local)))); diff --git a/tests/Makefile.am b/tests/Makefile.am index ca110d712..cb96b0d06 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -343,6 +343,7 @@ TESTS = \ structs/struct-static-field-initializer.test \ structs/struct-static-property-initializer.test \ structs/structs.vala \ + structs/constructor-params-array.vala \ structs/constructor-variadic.vala \ structs/constructor-wrong-name.test \ structs/default-gtype.vala \ diff --git a/tests/structs/constructor-params-array.vala b/tests/structs/constructor-params-array.vala new file mode 100644 index 000000000..585be83a9 --- /dev/null +++ b/tests/structs/constructor-params-array.vala @@ -0,0 +1,16 @@ +struct Foo { + public string[] sa; + + public Foo (params string[] strv) { + assert (strv.length == 3); + assert (strv[0] == "foo"); + assert (strv[1] == "bar"); + assert (strv[2] == "manam"); + sa = strv; + } +} + +void main () { + var foo = Foo ("foo", "bar", "manam"); + assert (foo.sa[1] == "bar"); +}