summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-02-13 14:47:03 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2021-02-13 14:57:20 +0100
commit869a81a7a3f06f363ef52ef2e535b710681913d2 (patch)
tree803f8f72de1ea8f05b69a3b52defe2d27c2d3557
parent563e4d794f6c4816b5448b35cf669451a67246a9 (diff)
downloadvala-869a81a7a3f06f363ef52ef2e535b710681913d2.tar.gz
vala: Check type-arguments in base-types/prerequisites of class/interface
Fixes https://gitlab.gnome.org/GNOME/vala/issues/404
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/generics/arrays-not-supported-2.test10
-rw-r--r--tests/generics/arrays-not-supported-3.test10
-rw-r--r--vala/valaclass.vala1
-rw-r--r--vala/valainterface.vala1
5 files changed, 24 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 15d82e086..16820e66d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -653,6 +653,8 @@ TESTS = \
asynchronous/variadic-invalid-2.test \
asynchronous/yield.vala \
generics/arrays-not-supported.test \
+ generics/arrays-not-supported-2.test \
+ generics/arrays-not-supported-3.test \
generics/constructor-chain-up.vala \
generics/floating-type-cast.vala \
generics/inference-argument-may-fail.vala \
diff --git a/tests/generics/arrays-not-supported-2.test b/tests/generics/arrays-not-supported-2.test
new file mode 100644
index 000000000..3682da652
--- /dev/null
+++ b/tests/generics/arrays-not-supported-2.test
@@ -0,0 +1,10 @@
+Invalid Code
+
+interface Foo<T> : Object {
+}
+
+interface Bar : Object, Foo<int[]> {
+}
+
+void main () {
+}
diff --git a/tests/generics/arrays-not-supported-3.test b/tests/generics/arrays-not-supported-3.test
new file mode 100644
index 000000000..6ef20d35d
--- /dev/null
+++ b/tests/generics/arrays-not-supported-3.test
@@ -0,0 +1,10 @@
+Invalid Code
+
+class Foo<T> : Object {
+}
+
+class Bar : Foo<int[]> {
+}
+
+void main () {
+}
diff --git a/vala/valaclass.vala b/vala/valaclass.vala
index 3bf845847..ee2e7593d 100644
--- a/vala/valaclass.vala
+++ b/vala/valaclass.vala
@@ -572,6 +572,7 @@ public class Vala.Class : ObjectTypeSymbol {
foreach (DataType type in base_types) {
type.check (context);
+ context.analyzer.check_type (type);
}
foreach (TypeParameter p in get_type_parameters ()) {
diff --git a/vala/valainterface.vala b/vala/valainterface.vala
index 1e0cbdaa8..b48d5b8b0 100644
--- a/vala/valainterface.vala
+++ b/vala/valainterface.vala
@@ -202,6 +202,7 @@ public class Vala.Interface : ObjectTypeSymbol {
foreach (DataType type in prerequisites) {
type.check (context);
+ context.analyzer.check_type (type);
}
foreach (TypeParameter p in get_type_parameters ()) {