From: Luca Bruno Date: Sun, 17 Jan 2010 22:07:49 +0000 (+0100) Subject: Support casting nullable structs to non-nullable structs X-Git-Tag: 0.7.10~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0eb82a01828f8b6bd867886d734ad7eeeed2a72;p=thirdparty%2Fvala.git Support casting nullable structs to non-nullable structs Fixes bug 588832. --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 06f1dda4f..32f1b4ab9 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -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 ()); } }