From: Rico Tzschichholz Date: Fri, 7 May 2021 11:46:28 +0000 (+0200) Subject: codegen: Don't add errornous cast for unknown type_symbol X-Git-Tag: 0.53.1~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86e992f774bd706e386acd00210548e493b268ef;p=thirdparty%2Fvala.git codegen: Don't add errornous cast for unknown type_symbol This causes invalid C code for reference transfer of GenericType. Regression of 7ae2f115a702439bd94bf09867b38019f39d010f Fixes https://gitlab.gnome.org/GNOME/vala/issues/1180 --- diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 8f74e0d34..88a3d74c9 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -413,7 +413,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { // Add cast for narrowed type access of variables if needed if (expr.symbol_reference is Variable) { unowned GLibValue cvalue = (GLibValue) expr.target_value; - if (cvalue.value_type.type_symbol != expr.value_type.type_symbol) { + if (cvalue.value_type.type_symbol != null && cvalue.value_type.type_symbol != expr.value_type.type_symbol) { cvalue.cvalue = new CCodeCastExpression (cvalue.cvalue, get_ccode_name (expr.value_type)); } } diff --git a/tests/generics/reference-transfer.vala b/tests/generics/reference-transfer.vala index da2c1e305..5dc7a666f 100644 --- a/tests/generics/reference-transfer.vala +++ b/tests/generics/reference-transfer.vala @@ -19,6 +19,16 @@ void foo (owned G g) { } void main () { - foo ("foo"); - bar (new Bar ("bar")); + { + foo ("foo"); + } + { + bar (new Bar ("bar")); + } + { + var bar = new Bar ("bar"); + var t = (owned) bar.g; + assert (bar.g == null); + assert (t == "bar"); + } }