From 869a81a7a3f06f363ef52ef2e535b710681913d2 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sat, 13 Feb 2021 14:47:03 +0100 Subject: [PATCH] vala: Check type-arguments in base-types/prerequisites of class/interface Fixes https://gitlab.gnome.org/GNOME/vala/issues/404 --- tests/Makefile.am | 2 ++ tests/generics/arrays-not-supported-2.test | 10 ++++++++++ tests/generics/arrays-not-supported-3.test | 10 ++++++++++ vala/valaclass.vala | 1 + vala/valainterface.vala | 1 + 5 files changed, 24 insertions(+) create mode 100644 tests/generics/arrays-not-supported-2.test create mode 100644 tests/generics/arrays-not-supported-3.test 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 : Object { +} + +interface Bar : Object, Foo { +} + +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 : Object { +} + +class Bar : Foo { +} + +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 ()) { -- 2.47.3