From: Rico Tzschichholz Date: Thu, 22 Nov 2018 11:40:23 +0000 (+0100) Subject: vala: Don't replace assignments for local variables with non-null simple-types X-Git-Tag: 0.45.1~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f885e91cb196b9f03586e88ec56c8c8995919c3;p=thirdparty%2Fvala.git vala: Don't replace assignments for local variables with non-null simple-types Reintroduce e701142da4601ece5ca71cc4484728b08969c74e See https://gitlab.gnome.org/GNOME/vala/issues/755 --- diff --git a/vala/valaassignment.vala b/vala/valaassignment.vala index 0b6fbc9ad..183ea57be 100644 --- a/vala/valaassignment.vala +++ b/vala/valaassignment.vala @@ -224,13 +224,13 @@ public class Vala.Assignment : Expression { return false; } - if (operator != AssignmentOperator.SIMPLE && left is MemberAccess) { + unowned MemberAccess? ma = left as MemberAccess; + if (operator != AssignmentOperator.SIMPLE && ma != null + && !(left.value_type.is_non_null_simple_type () && ma.symbol_reference is LocalVariable)) { // transform into simple assignment // FIXME: only do this if the backend doesn't support // the assignment natively - var ma = (MemberAccess) left; - var old_value = new MemberAccess (ma.inner, ma.member_name); BinaryOperator bop; @@ -260,9 +260,7 @@ public class Vala.Assignment : Expression { operator = AssignmentOperator.SIMPLE; } - if (left is MemberAccess) { - var ma = (MemberAccess) left; - + if (ma != null) { if (ma.symbol_reference is Property) { var prop = (Property) ma.symbol_reference;