public static void AnalyzeAnonymousMethodExpression(SyntaxNodeAnalysisContext context) { var anonymousMethod = (AnonymousMethodExpressionSyntax)context.Node; if (anonymousMethod.SpanContainsDirectives()) { return; } SyntaxToken asyncKeyword = anonymousMethod.AsyncKeyword; if (!asyncKeyword.IsKind(SyntaxKind.AsyncKeyword)) { return; } RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(anonymousMethod, context.SemanticModel, context.CancellationToken); if (!result.Success) { return; } ReportDiagnostic(context, asyncKeyword, result); }
public static void AnalyzeLocalFunctionStatement(SyntaxNodeAnalysisContext context) { var localFunction = (LocalFunctionStatementSyntax)context.Node; if (localFunction.SpanContainsDirectives()) { return; } SyntaxToken asyncKeyword = localFunction.Modifiers.Find(SyntaxKind.AsyncKeyword); if (!asyncKeyword.IsKind(SyntaxKind.AsyncKeyword)) { return; } RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(localFunction, context.SemanticModel, context.CancellationToken); if (!result.Success) { return; } ReportDiagnostic(context, asyncKeyword, result); }
public static async Task ComputeRefactoringsAsync(RefactoringContext context, SyntaxToken token) { SyntaxNode parent = token.Parent; switch (parent.Kind()) { case SyntaxKind.MethodDeclaration: { var methodDeclaration = (MethodDeclarationSyntax)parent; SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(methodDeclaration, semanticModel, context.CancellationToken); ComputeRefactoring(context, token, result); return; } case SyntaxKind.LocalFunctionStatement: { var localFunction = (LocalFunctionStatementSyntax)parent; SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(localFunction, semanticModel, context.CancellationToken); ComputeRefactoring(context, token, result); return; } case SyntaxKind.ParenthesizedLambdaExpression: { var parenthesizedLambda = (ParenthesizedLambdaExpressionSyntax)parent; SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(parenthesizedLambda, semanticModel, context.CancellationToken); ComputeRefactoring(context, token, result); return; } case SyntaxKind.SimpleLambdaExpression: { var simpleLambda = (SimpleLambdaExpressionSyntax)parent; SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(simpleLambda, semanticModel, context.CancellationToken); ComputeRefactoring(context, token, result); return; } case SyntaxKind.AnonymousMethodExpression: { var anonymousMethod = (AnonymousMethodExpressionSyntax)parent; SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); RemoveAsyncAwaitResult result = RemoveAsyncAwaitAnalysis.Analyze(anonymousMethod, semanticModel, context.CancellationToken); ComputeRefactoring(context, token, result); return; } } }