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));
            }
        }
Esempio n. 2
0
        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));
            }
        }