From de3d9117c4f3bf9f3143ecb47bb866ca4f8fed18 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 11 Mar 2011 08:31:11 +0100 Subject: [PATCH] Make collapsing of "x = x + y" to "x += y" work in a few more cases. --- .../Ast/Transforms/ReplaceMethodCallsWithOperators.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/Ast/Transforms/ReplaceMethodCallsWithOperators.cs b/ICSharpCode.Decompiler/Ast/Transforms/ReplaceMethodCallsWithOperators.cs index 21d5efb55..274a41c27 100644 --- a/ICSharpCode.Decompiler/Ast/Transforms/ReplaceMethodCallsWithOperators.cs +++ b/ICSharpCode.Decompiler/Ast/Transforms/ReplaceMethodCallsWithOperators.cs @@ -207,7 +207,14 @@ namespace ICSharpCode.Decompiler.Ast.Transforms bool IsWithoutSideEffects(Expression left) { - return left is IdentifierExpression; // TODO + if (left is ThisReferenceExpression) + return true; + if (left is IdentifierExpression) + return true; + MemberReferenceExpression mre = left as MemberReferenceExpression; + if (mre != null) + return mre.Annotation() != null && IsWithoutSideEffects(mre.Target); + return false; } void IAstTransform.Run(AstNode node)