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)); }
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)); }