protected override SyntaxNode ApplyFix(MethodDeclarationSyntax method, MemberAccessExpressionSyntax variableAccess, SyntaxNode syntaxRoot) { ExpressionSyntax newAccess = AwaitExpression(variableAccess.Expression.WithLeadingTrivia(Space)); if (variableAccess.Parent is MemberAccessExpressionSyntax) { newAccess = ParenthesizedExpression(newAccess); } var lambdaExpression = variableAccess.FirstAncestorOrSelf <LambdaExpressionSyntax>(); if (lambdaExpression != null) { var newBody = lambdaExpression.Body.ReplaceNode(variableAccess, newAccess); var newLambda = LambdaFixProvider.FixLambda(method, lambdaExpression, newBody); return(method.ReplaceNode(method, newLambda)); } else { return(method.ReplaceNode(variableAccess, newAccess)); } }
protected override SyntaxNode ApplyFix(MethodDeclarationSyntax method, InvocationExpressionSyntax invocation, SyntaxNode syntaxRoot) { var lambda = invocation.FirstAncestorOrSelf <LambdaExpressionSyntax>(); SyntaxNode oldNode = invocation; SyntaxNode newNode = AwaitExpression(invocation.WithLeadingTrivia(Space)); SyntaxNode node = oldNode.Parent; while (node != null) { var memberAccess = node as MemberAccessExpressionSyntax; var identifierName = memberAccess?.Name as IdentifierNameSyntax; if (identifierName != null && identifierName.Identifier.ValueText == nameof(Task <int> .Result)) { newNode = memberAccess.Expression.ReplaceNode(oldNode, newNode); if (memberAccess.Parent is MemberAccessExpressionSyntax) { newNode = ParenthesizedExpression((ExpressionSyntax)newNode); } oldNode = memberAccess; break; } node = node.Parent; } if (lambda != null) { var newLambda = LambdaFixProvider.FixLambda(method, lambda, lambda.Body.ReplaceNode(oldNode, newNode)); return(method.ReplaceNode(method, newLambda)); } else { return(method.ReplaceNode(oldNode, newNode)); } }