From: Rico Tzschichholz Date: Wed, 26 May 2021 07:02:52 +0000 (+0200) Subject: vala: Parameter following params-array parameter is not allowed X-Git-Tag: 0.50.9~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f4eec0df56a72df25e056743ff7ee4bec0ea4695;p=thirdparty%2Fvala.git vala: Parameter following params-array parameter is not allowed Fixes https://gitlab.gnome.org/GNOME/vala/issues/1183 --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 0cf57444b..abf9372e9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -228,6 +228,7 @@ TESTS = \ methods/nowrapper-no-vfunc.test \ methods/params-array.vala \ methods/params-array-abstract.test \ + methods/params-array-preceding.test \ methods/params-array-with-throws.vala \ methods/print-attribute.vala \ methods/print-attribute-invalid.test \ diff --git a/tests/methods/params-array-preceding.test b/tests/methods/params-array-preceding.test new file mode 100644 index 000000000..0e57bf188 --- /dev/null +++ b/tests/methods/params-array-preceding.test @@ -0,0 +1,7 @@ +Invalid Code + +void foo (params string[] strv, int i) { +} + +void main () { +} diff --git a/vala/valamethod.vala b/vala/valamethod.vala index 0bed502b9..9c34c7ad0 100644 --- a/vala/valamethod.vala +++ b/vala/valamethod.vala @@ -841,6 +841,7 @@ public class Vala.Method : Subroutine, Callable { } var optional_param = false; + var params_array_param = false; foreach (Parameter param in parameters) { if (!param.check (context)) { error = true; @@ -865,6 +866,11 @@ public class Vala.Method : Subroutine, Callable { optional_param = true; } + if (params_array_param) { + Report.error (param.source_reference, "parameter follows params-array parameter"); + } else if (param.params_array) { + params_array_param = true; + } // Add local variable to provide access to params arrays which will be constructed out of the given va-args if (param.params_array && body != null) { if (params_array_var != null) {