private async static Task<Document> MakeMethodNonAsyncAsync(Document document, Diagnostic diagnostic, CancellationToken cancellationToken) { var root = await document.GetSyntaxRootAsync(cancellationToken); var node = root.FindNode(diagnostic.Location.SourceSpan); var methodDeclaration = node.FirstAncestorOrSelfOfType<MethodDeclarationSyntax>(); var rewriter = new ReturnTaskFromResultRewriter(); var asyncKeyword = methodDeclaration.Modifiers.First(t => t.Kind() == SyntaxKind.AsyncKeyword); var newMethodDeclaration = methodDeclaration .WithModifiers(methodDeclaration.Modifiers.Remove(asyncKeyword)) .WithBody((BlockSyntax) rewriter.VisitBlock(methodDeclaration.Body)); var newRoot = root.ReplaceNode(methodDeclaration, newMethodDeclaration); return document.WithSyntaxRoot(newRoot); }
private async static Task <Document> MakeMethodNonAsyncAsync(Document document, Diagnostic diagnostic, CancellationToken cancellationToken) { var root = await document.GetSyntaxRootAsync(cancellationToken); var node = root.FindNode(diagnostic.Location.SourceSpan); var methodDeclaration = node.FirstAncestorOrSelfOfType <MethodDeclarationSyntax>(); var rewriter = new ReturnTaskFromResultRewriter(); var asyncKeyword = methodDeclaration.Modifiers.First(t => t.Kind() == SyntaxKind.AsyncKeyword); var newMethodDeclaration = methodDeclaration .WithModifiers(methodDeclaration.Modifiers.Remove(asyncKeyword)) .WithBody((BlockSyntax)rewriter.VisitBlock(methodDeclaration.Body)); var newRoot = root.ReplaceNode(methodDeclaration, newMethodDeclaration); return(document.WithSyntaxRoot(newRoot)); }