Exemple #1
0
        public static async Task <Document> RefactorAsync(
            Document document,
            LambdaExpressionSyntax lambda,
            ExpressionSyntax expression,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            var methodSymbol = (IMethodSymbol)semanticModel.GetSymbol(lambda, cancellationToken);

            StatementSyntax statement;

            if (ShouldCreateExpressionStatement(expression, methodSymbol))
            {
                statement = ExpressionStatement(expression);
            }
            else
            {
                statement = ReturnStatement(expression);
            }

            BlockSyntax block = Block(statement);

            block = block
                    .WithCloseBraceToken(
                block.CloseBraceToken
                .WithLeadingTrivia(TriviaList(NewLine())));

            LambdaExpressionSyntax newLambda = lambda;

            switch (lambda.Kind())
            {
            case SyntaxKind.SimpleLambdaExpression:
            {
                newLambda = ((SimpleLambdaExpressionSyntax)lambda).WithBody(block);
                break;
            }

            case SyntaxKind.ParenthesizedLambdaExpression:
            {
                newLambda = ((ParenthesizedLambdaExpressionSyntax)lambda).WithBody(block);
                break;
            }
            }

            newLambda = newLambda.WithFormatterAnnotation();

            return(await document.ReplaceNodeAsync(lambda, newLambda, cancellationToken).ConfigureAwait(false));
        }
        public static async Task <Document> RefactorAsync(
            Document document,
            ParenthesizedLambdaExpressionSyntax lambda,
            CancellationToken cancellationToken)
        {
            LambdaExpressionSyntax newLambda = SyntaxRewriter.VisitNode(lambda);

            if (lambda.ParameterList.Parameters.Count == 1)
            {
                newLambda = ConvertParenthesizedLambdaToSimpleLambda((ParenthesizedLambdaExpressionSyntax)newLambda);
            }

            newLambda = newLambda.WithFormatterAnnotation();

            return(await document.ReplaceNodeAsync(lambda, newLambda, cancellationToken).ConfigureAwait(false));
        }
Exemple #3
0
        private static async Task <Document> SimplifyLambdaExpressionParameterListAsync(
            Document document,
            ParenthesizedLambdaExpressionSyntax lambda,
            CancellationToken cancellationToken)
        {
            SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);

            LambdaExpressionSyntax newLambda = SyntaxRewriter.VisitNode(lambda);

            if (lambda.ParameterList.Parameters.Count == 1)
            {
                newLambda = ConvertParenthesizedLambdaToSimpleLambda((ParenthesizedLambdaExpressionSyntax)newLambda);
            }

            newLambda = newLambda.WithFormatterAnnotation();

            root = root.ReplaceNode(lambda, newLambda);

            return(document.WithSyntaxRoot(root));
        }