]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support non-null cast for enum values
authorLuca Bruno <luca.bruno@immobiliare.it>
Mon, 25 Mar 2013 12:20:55 +0000 (13:20 +0100)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 25 Mar 2013 19:21:49 +0000 (20:21 +0100)
Fixes bug 673879.

codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/enums/bug673879.vala [new file with mode: 0644]

index a8d9e8cca44c27b6bcf4c73681efb7386e8ae5c4..332c9ba33022320128d56743fe3a6f9542108051 100644 (file)
@@ -5072,9 +5072,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        }
 
                        var innercexpr = get_cvalue (expr.inner);
-                       if (expr.type_reference.data_type is Struct && !expr.type_reference.nullable &&
-                               expr.inner.value_type.data_type is Struct && expr.inner.value_type.nullable) {
-                               // nullable integer or float or boolean or struct cast to non-nullable
+                       if (expr.type_reference is ValueType && !expr.type_reference.nullable &&
+                               expr.inner.value_type is ValueType && expr.inner.value_type.nullable) {
+                               // nullable integer or float or boolean or struct or enum cast to non-nullable
                                innercexpr = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, innercexpr);
                        }
                        set_cvalue (expr, new CCodeCastExpression (innercexpr, get_ccode_name (expr.type_reference)));
index c11565c7c83a02262d873cb7a083c051a51c9479..a647bb5e83a3031192f54d1f1ba038eb796da10d 100644 (file)
@@ -63,6 +63,7 @@ TESTS = \
        control-flow/bug652549.vala \
        control-flow/bug665904.vala \
        enums/enums.vala \
+       enums/bug673879.vala \
        structs/structs.vala \
        structs/gvalue.vala \
        structs/bug530605.vala \
diff --git a/tests/enums/bug673879.vala b/tests/enums/bug673879.vala
new file mode 100644 (file)
index 0000000..db32ff6
--- /dev/null
@@ -0,0 +1,12 @@
+enum Test
+{
+    TEST = 10
+}
+
+void main()
+{
+    Test? test = null;
+
+    test = Test.TEST;
+    assert ((!)test == 10);
+}