From: Rico Tzschichholz Date: Sun, 7 Mar 2021 12:42:16 +0000 (+0100) Subject: vala: Check (optional) type-arguments of array creation expression X-Git-Tag: 0.51.91~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67c42f757f8f7adf94988779c7f5981a404ad2e5;p=thirdparty%2Fvala.git vala: Check (optional) type-arguments of array creation expression --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 98d4e386a..7a52be5fc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -888,6 +888,8 @@ TESTS = \ semantic/array-incompatible-initializer.test \ semantic/array-incompatible-initializer2.test \ semantic/array-invalid-type-argument.test \ + semantic/array-too-few-type-arguments.test \ + semantic/array-too-many-type-arguments.test \ semantic/assignment-element-incompatible-ownership.test \ semantic/assignment-element-incompatible-type.test \ semantic/assignment-fixed-array-length.test \ diff --git a/tests/semantic/array-too-few-type-arguments.test b/tests/semantic/array-too-few-type-arguments.test new file mode 100644 index 000000000..3161b5b3e --- /dev/null +++ b/tests/semantic/array-too-few-type-arguments.test @@ -0,0 +1,8 @@ +Invalid Code + +class Foo { +} + +void main () { + var foo = new Foo[] {}; +} diff --git a/tests/semantic/array-too-many-type-arguments.test b/tests/semantic/array-too-many-type-arguments.test new file mode 100644 index 000000000..84d64e83f --- /dev/null +++ b/tests/semantic/array-too-many-type-arguments.test @@ -0,0 +1,8 @@ +Invalid Code + +class Foo { +} + +void main () { + var foo = new Foo[] {}; +} diff --git a/vala/valaarraycreationexpression.vala b/vala/valaarraycreationexpression.vala index fdc2eef8d..2cdd3bbf0 100644 --- a/vala/valaarraycreationexpression.vala +++ b/vala/valaarraycreationexpression.vala @@ -245,6 +245,12 @@ public class Vala.ArrayCreationExpression : Expression { if (element_type != null) { element_type.check (context); + + // check whether there is the expected amount of type-arguments + if (!element_type.check_type_arguments (context, true)) { + error = true; + return false; + } } if (length_type == null) {