From: Rico Tzschichholz Date: Fri, 19 Jul 2019 18:02:26 +0000 (+0200) Subject: vala: Implicit GValue cast requires GOBJECT profile X-Git-Tag: 0.45.90~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ced707301010de6e511d6a8cdfae3bd032c8cd0b;p=thirdparty%2Fvala.git vala: Implicit GValue cast requires GOBJECT profile This fixes criticals like vala_data_type_get_data_type: assertion 'self != NULL' failed Regression of 7d771a0c07d63cb7605cbdc28dd8df50719731f8 --- diff --git a/vala/valabinaryexpression.vala b/vala/valabinaryexpression.vala index f21aa42c0..0578ba93d 100644 --- a/vala/valabinaryexpression.vala +++ b/vala/valabinaryexpression.vala @@ -442,24 +442,26 @@ public class Vala.BinaryExpression : Expression { || operator == BinaryOperator.INEQUALITY) { /* relational operation */ - // Implicit cast for comparsion expression of GValue with other type - var gvalue_type = context.analyzer.gvalue_type.data_type; - if ((left.target_type.data_type == gvalue_type && right.target_type.data_type != gvalue_type) - || (left.target_type.data_type != gvalue_type && right.target_type.data_type == gvalue_type)) { - Expression gvalue_expr; - DataType target_type; - if (left.target_type.data_type == gvalue_type) { - gvalue_expr = left; - target_type = right.target_type; - } else { - gvalue_expr = right; - target_type = left.target_type; - } + if (context.profile == Profile.GOBJECT) { + // Implicit cast for comparsion expression of GValue with other type + var gvalue_type = context.analyzer.gvalue_type.data_type; + if ((left.target_type.data_type == gvalue_type && right.target_type.data_type != gvalue_type) + || (left.target_type.data_type != gvalue_type && right.target_type.data_type == gvalue_type)) { + Expression gvalue_expr; + DataType target_type; + if (left.target_type.data_type == gvalue_type) { + gvalue_expr = left; + target_type = right.target_type; + } else { + gvalue_expr = right; + target_type = left.target_type; + } - var cast_expr = new CastExpression (gvalue_expr, target_type, gvalue_expr.source_reference); - replace_expression (gvalue_expr, cast_expr); - checked = false; - return check (context); + var cast_expr = new CastExpression (gvalue_expr, target_type, gvalue_expr.source_reference); + replace_expression (gvalue_expr, cast_expr); + checked = false; + return check (context); + } } if (!right.value_type.compatible (left.value_type)