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.53.1~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b0ff3b318ca9ad734a39ea673e0e5593d15e8d9;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 cfe4adbb4..3e754e58e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -229,6 +229,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 427a37980..daef9789f 100644 --- a/vala/valamethod.vala +++ b/vala/valamethod.vala @@ -848,6 +848,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; @@ -872,6 +873,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) {