summaryrefslogtreecommitdiff
path: root/vala/valabinaryexpression.vala
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2014-01-26 12:10:57 +0100
committerLuca Bruno <lucabru@src.gnome.org>2014-01-26 12:12:20 +0100
commit6949360735ce69776f3e64d25fc3efab5ce387e5 (patch)
tree2852edd0a6846aa30887f9f9a9d49f562ab4e45a /vala/valabinaryexpression.vala
parent603c1c792adf538125e17e8bf70804c97e96a8f5 (diff)
downloadvala-6949360735ce69776f3e64d25fc3efab5ce387e5.tar.gz
Fix semantics for coalesce operator when target_type is null.
Fixes bug 639482
Diffstat (limited to 'vala/valabinaryexpression.vala')
-rw-r--r--vala/valabinaryexpression.vala14
1 files changed, 11 insertions, 3 deletions
diff --git a/vala/valabinaryexpression.vala b/vala/valabinaryexpression.vala
index 2b7289c05..19766e12f 100644
--- a/vala/valabinaryexpression.vala
+++ b/vala/valabinaryexpression.vala
@@ -221,10 +221,18 @@ public class Vala.BinaryExpression : Expression {
}
var ma = new MemberAccess.simple (local.name, source_reference);
- ma.target_type = target_type;
- ma.check (context);
+ Expression replace = ma;
- parent_node.replace_expression (this, ma);
+ if (target_type == null) {
+ replace = new ReferenceTransferExpression (replace, source_reference);
+ replace.target_type = local.variable_type.copy ();
+ replace.target_type.value_owned = true;
+ } else {
+ replace.target_type = target_type.copy ();
+ }
+ replace.check (context);
+
+ parent_node.replace_expression (this, replace);
return true;
}