From: Jürg Billeter Date: Sat, 20 Mar 2010 15:50:18 +0000 (+0100) Subject: Do not warn on assignment to same variable of different instance X-Git-Tag: 0.8.0~145 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f87e7cc375c18365066133a416486e322734b52;p=thirdparty%2Fvala.git Do not warn on assignment to same variable of different instance --- diff --git a/vala/valaassignment.vala b/vala/valaassignment.vala index 38fda74de..212685c98 100644 --- a/vala/valaassignment.vala +++ b/vala/valaassignment.vala @@ -358,9 +358,22 @@ public class Vala.Assignment : Expression { } var right_ma = right as MemberAccess; - if (right_ma != null && ma.symbol_reference == right_ma.symbol_reference && - (ma.symbol_reference is LocalVariable || ma.symbol_reference is Field || ma.symbol_reference is FormalParameter)) { - Report.warning (source_reference, "Assignment to same variable"); + if (right_ma != null && ma.symbol_reference == right_ma.symbol_reference) { + if (ma.symbol_reference is LocalVariable || ma.symbol_reference is FormalParameter) { + Report.warning (source_reference, "Assignment to same variable"); + } else if (ma.symbol_reference is Field) { + var f = (Field) ma.symbol_reference; + if (f.binding == MemberBinding.STATIC) { + Report.warning (source_reference, "Assignment to same variable"); + } else { + var ma_inner = ma.inner as MemberAccess; + var right_ma_inner = right_ma.inner as MemberAccess; + if (ma_inner != null && ma_inner.member_name == "this" && ma_inner.inner == null && + right_ma_inner != null && right_ma_inner.member_name == "this" && right_ma_inner.inner == null) { + Report.warning (source_reference, "Assignment to same variable"); + } + } + } } } else if (left is ElementAccess) { var ea = (ElementAccess) left;