From 6405bab4e20c142d6c04d63ef7f69abf367712c3 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 26 Sep 2021 13:49:51 +0200 Subject: [PATCH] vala: Accept NullType as generic type argument --- tests/Makefile.am | 1 + tests/generics/null-type.vala | 10 ++++++++++ vala/valasemanticanalyzer.vala | 1 + 3 files changed, 12 insertions(+) create mode 100644 tests/generics/null-type.vala diff --git a/tests/Makefile.am b/tests/Makefile.am index 1d823ca11..d8b353fed 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -680,6 +680,7 @@ TESTS = \ generics/parameter-invalid-initializer.test \ generics/parameter-sizeof-initializer.vala \ generics/member-dup-destroy.vala \ + generics/null-type.vala \ generics/property-int-cast.vala \ generics/reference-transfer.vala \ generics/string-literal-comparison.vala \ diff --git a/tests/generics/null-type.vala b/tests/generics/null-type.vala new file mode 100644 index 000000000..a427ee8c1 --- /dev/null +++ b/tests/generics/null-type.vala @@ -0,0 +1,10 @@ +void foo (T t) { + assert (t == null); + assert (typeof (T) == Type.INVALID); + assert (T.dup == null); + assert (T.destroy == null); +} + +void main () { + foo (null); +} diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index de9096775..abc0a4b56 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -1354,6 +1354,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { void check_type_argument (DataType type_arg) { if (type_arg is GenericType + || type_arg is NullType || type_arg is PointerType || type_arg is VoidType || is_reference_type_argument (type_arg) -- 2.47.2