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)