[vala/staging: 9/9] vala: Allow assignment of 0U to enum types



commit 270361907182a4c8b4b291fd1a505d47dd8bcaae
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sun Mar 10 18:14:09 2019 +0100

    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(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c48c1a15b..6c1653bda 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -193,6 +193,7 @@ TESTS = \
        enums/enum-no-gtype.vala \
        enums/enums.vala \
        enums/flags.vala \
+       enums/from-0-literal.vala \
        enums/no_gtype_to_string.vala \
        enums/bug666035.vala \
        enums/bug666035-1.test \
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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]