]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Fix MemberAccess.is_non_null() for EnumValue constants
authorOle André Vadla Ravnås <oleavr@gmail.com>
Tue, 14 Mar 2017 19:44:45 +0000 (20:44 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 14 Mar 2017 21:38:56 +0000 (22:38 +0100)
This is because an EnumValue object does not have a type reference.

https://bugzilla.gnome.org/show_bug.cgi?id=780050

tests/Makefile.am
tests/enums/bug780050.vala [new file with mode: 0644]
vala/valamemberaccess.vala

index 426570c5afb8e88e0f584a3ebb39b6c24bece69a..add13c5a861aa39f434f9d49309045964783c8f5 100644 (file)
@@ -112,6 +112,7 @@ TESTS = \
        enums/flags.vala \
        enums/bug673879.vala \
        enums/bug763831.vala \
+       enums/bug780050.vala \
        structs/structs.vala \
        structs/gvalue.vala \
        structs/bug530605.vala \
diff --git a/tests/enums/bug780050.vala b/tests/enums/bug780050.vala
new file mode 100644 (file)
index 0000000..b69f7c0
--- /dev/null
@@ -0,0 +1,10 @@
+enum Bar {
+       FOO
+}
+
+namespace Foo {
+       Bar bar = Bar.FOO;
+}
+
+void main () {
+}
index 23ca8d68bf5f68901f6b6a6f897ad9a25d472e1b..c00f5fca55c52305c0b09ba05e6588addf34633d 100644 (file)
@@ -187,7 +187,7 @@ public class Vala.MemberAccess : Expression {
        public override bool is_non_null () {
                var c = symbol_reference as Constant;
                if (c != null) {
-                       return !c.type_reference.nullable;
+                       return (c is EnumValue || !c.type_reference.nullable);
                } else {
                        return false;
                }