[vala/0.44] vala: Implicit GValue cast requires GOBJECT profile



commit 68a0cfb8bd93307d99b18356742361a5dd3c3f51
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Fri Jul 19 20:02:26 2019 +0200

    vala: Implicit GValue cast requires GOBJECT profile
    
    This fixes criticals like
        vala_data_type_get_data_type: assertion 'self != NULL' failed
    
    Regression of 7d771a0c07d63cb7605cbdc28dd8df50719731f8

 vala/valabinaryexpression.vala | 36 +++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 17 deletions(-)
---
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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]