protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda) { var declaredElement = lambda.ParameterDeclarations[0].DeclaredElement; var replacement = accumulatorLambda.BodyExpression; var toReplace = new LocalList <IReferenceExpression>(); foreach (var referenceExpression in lambda.BodyExpression.Descendants <IReferenceExpression>()) { var currentElement = referenceExpression.Reference.Resolve().DeclaredElement; if (declaredElement.Equals(currentElement) || referenceExpression.QualifierExpression == null && referenceExpression.NameIdentifier.Name == declaredElement.ShortName) { toReplace.Add(referenceExpression); } } for (int i = 0; i < toReplace.Count; i++) { toReplace[i].ReplaceBy(replacement); } accumulatorLambda.SetBodyExpression(lambda.BodyExpression); }
protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda) { var declaredElement = lambda.ParameterDeclarations[0].DeclaredElement; var replacement = accumulatorLambda.BodyExpression; var toReplace = new LocalList<IReferenceExpression>(); foreach (var referenceExpression in lambda.BodyExpression.Descendants<IReferenceExpression>()) { var currentElement = referenceExpression.Reference.Resolve().DeclaredElement; if (declaredElement.Equals(currentElement) || referenceExpression.QualifierExpression == null && referenceExpression.NameIdentifier.Name == declaredElement.ShortName) { toReplace.Add(referenceExpression); } } for (int i = 0; i < toReplace.Count; i++) { toReplace[i].ReplaceBy(replacement); } accumulatorLambda.SetBodyExpression(lambda.BodyExpression); }
protected override void Merge(ILambdaExpression accumulatorLambda, ILambdaExpression lambda) { var newBody = Factory.CreateExpression("$0 && $1", accumulatorLambda.BodyExpression, lambda.BodyExpression); accumulatorLambda.SetBodyExpression(newBody); }