diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2014-01-26 12:10:57 +0100 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2014-01-26 12:12:20 +0100 |
commit | 6949360735ce69776f3e64d25fc3efab5ce387e5 (patch) | |
tree | 2852edd0a6846aa30887f9f9a9d49f562ab4e45a /vala/valabinaryexpression.vala | |
parent | 603c1c792adf538125e17e8bf70804c97e96a8f5 (diff) | |
download | vala-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.vala | 14 |
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; } |