]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Support casting nullable structs to non-nullable structs
authorLuca Bruno <lethalman88@gmail.com>
Sun, 17 Jan 2010 22:07:49 +0000 (23:07 +0100)
committerJürg Billeter <j@bitron.ch>
Mon, 18 Jan 2010 21:55:11 +0000 (22:55 +0100)
Fixes bug 588832.

codegen/valaccodebasemodule.vala

index 06f1dda4fa596d600366f1483b67f6d777bf9c8e..32f1b4ab9ea6c38bac2257b0a449497886749201 100644 (file)
@@ -4225,7 +4225,13 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                                }
                        }
 
-                       expr.ccodenode = new CCodeCastExpression ((CCodeExpression) expr.inner.ccodenode, expr.type_reference.get_cname ());
+                       var innercexpr = (CCodeExpression) expr.inner.ccodenode;
+                       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
+                               innercexpr = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, innercexpr);
+                       }
+                       expr.ccodenode = new CCodeCastExpression (innercexpr, expr.type_reference.get_cname ());
                }
        }