From 3fd128fcc286611d98a1e72a54b8758b7c491847 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 10 Mar 2019 18:14:09 +0100 Subject: [PATCH] vala: Allow assignment of 0U to enum types Don't restrict unsigned 0 literal to flags-enums though. --- tests/Makefile.am | 1 + tests/enums/from-0-literal.vala | 21 +++++++++++++++++++++ vala/valaintegertype.vala | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/enums/from-0-literal.vala diff --git a/tests/Makefile.am b/tests/Makefile.am index 576e667f3..54392247e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -155,6 +155,7 @@ TESTS = \ enums/enum_only.vala \ enums/enums.vala \ enums/flags.vala \ + enums/from-0-literal.vala \ enums/bug673879.vala \ enums/bug763831.vala \ enums/bug780050.vala \ diff --git a/tests/enums/from-0-literal.vala b/tests/enums/from-0-literal.vala new file mode 100644 index 000000000..7f802588d --- /dev/null +++ b/tests/enums/from-0-literal.vala @@ -0,0 +1,21 @@ +enum Foo { + BAR +} + +[Flags] +enum Bar { + FOO +} + +void main () { + { + Foo foo; + foo = 0; + foo = 0U; + } + { + Bar bar; + bar = 0; + bar = 0U; + } +} diff --git a/vala/valaintegertype.vala b/vala/valaintegertype.vala index 53845455a..274fe4716 100644 --- a/vala/valaintegertype.vala +++ b/vala/valaintegertype.vala @@ -59,7 +59,7 @@ public class Vala.IntegerType : ValueType { return true; } } - } else if (target_type.data_type is Enum && literal_type_name == "int") { + } else if (target_type.data_type is Enum && (literal_type_name == "int" || literal_type_name == "uint")) { // allow implicit conversion from 0 to enum and flags types if (int.parse (literal_value) == 0) { return true; -- 2.47.2