public static Task <Document> RefactorAsync( Document document, AnonymousMethodExpressionSyntax anonymousMethod, CancellationToken cancellationToken = default(CancellationToken)) { if (document == null) { throw new ArgumentNullException(nameof(document)); } if (anonymousMethod == null) { throw new ArgumentNullException(nameof(anonymousMethod)); } LambdaExpressionSyntax lambda = ParenthesizedLambdaExpression( anonymousMethod.AsyncKeyword, anonymousMethod.ParameterList, EqualsGreaterThanToken(), anonymousMethod.Block); lambda = lambda .WithTriviaFrom(anonymousMethod) .WithFormatterAnnotation(); return(document.ReplaceNodeAsync(anonymousMethod, lambda, cancellationToken)); }
public static async Task <Document> RefactorAsync( Document document, AnonymousMethodExpressionSyntax anonymousMethod, CancellationToken cancellationToken = default(CancellationToken)) { if (document == null) { throw new ArgumentNullException(nameof(document)); } if (anonymousMethod == null) { throw new ArgumentNullException(nameof(anonymousMethod)); } SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); LambdaExpressionSyntax lambda = ParenthesizedLambdaExpression( anonymousMethod.AsyncKeyword, anonymousMethod.ParameterList, Token(SyntaxKind.EqualsGreaterThanToken), anonymousMethod.Block); lambda = lambda .WithTriviaFrom(anonymousMethod) .WithFormatterAnnotation(); root = root.ReplaceNode(anonymousMethod, lambda); return(document.WithSyntaxRoot(root)); }
private static Task <Document> RefactorAsync( Document document, ExpressionSyntax expression, IMethodSymbol methodSymbol, SemanticModel semanticModel, CancellationToken cancellationToken) { ImmutableArray <IParameterSymbol> parameterSymbols = methodSymbol.Parameters; LambdaExpressionSyntax lambda = null; if (parameterSymbols.Length == 0) { lambda = ParenthesizedLambdaExpression( (methodSymbol.IsAsync) ? AsyncKeyword() : default(SyntaxToken), ParameterList(), EqualsGreaterThanToken(), InvocationExpression(expression, ArgumentList())); } else { int position = expression.SpanStart; string name = NameGenerator.Default.EnsureUniqueLocalName(DefaultNames.LambdaParameter, semanticModel, position, cancellationToken: cancellationToken); ParameterSyntax parameter = Parameter(Identifier(name).WithRenameAnnotation()); ArgumentSyntax argument = Argument(IdentifierName(name)); if (parameterSymbols.Length == 1) { lambda = SimpleLambdaExpression( (methodSymbol.IsAsync) ? AsyncKeyword() : default(SyntaxToken), parameter, EqualsGreaterThanToken(), InvocationExpression(expression, ArgumentList(argument))); } else { string name2 = NameGenerator.Default.EnsureUniqueLocalName(DefaultNames.SecondLambdaParameter, semanticModel, position, cancellationToken: cancellationToken); lambda = ParenthesizedLambdaExpression( (methodSymbol.IsAsync) ? AsyncKeyword() : default(SyntaxToken), ParameterList(parameter, Parameter(Identifier(name2))), EqualsGreaterThanToken(), InvocationExpression(expression, ArgumentList(argument, Argument(IdentifierName(name2))))); } } lambda = lambda .WithTriviaFrom(expression) .WithFormatterAnnotation(); return(document.ReplaceNodeAsync(expression, lambda, cancellationToken)); }