async Task <Document> ImportStaticClassWithUsing(Document document, SemanticModel model, SyntaxNode root, SyntaxNode node, SymbolInfo info, CancellationToken cancellationToken) { var cu = root as CompilationUnitSyntax; var staticUsing = SyntaxFactory .UsingDirective(SyntaxFactory.ParseName(info.Symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat))) .WithStaticKeyword(SyntaxFactory.Token(SyntaxKind.StaticKeyword)) .WithAdditionalAnnotations(Formatter.Annotation); cu = cu.AddUsingDirective(staticUsing, node, true); var newDoc = document.WithSyntaxRoot(cu); var newModel = await newDoc.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); var visitor = new SearchImportReplacementsVisitor(newModel, info, cancellationToken); var newRoot = await newModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false); visitor.Visit(newRoot); cu = (CompilationUnitSyntax)newRoot.TrackNodes(visitor.ReplaceNodes); foreach (var ma in visitor.ReplaceNodes) { var current = cu.GetCurrentNode <MemberAccessExpressionSyntax>(ma); cu = cu.ReplaceNode(current, current.Name.WithAdditionalAnnotations(Formatter.Annotation)); } return(document.WithSyntaxRoot(cu)); }
Document ImportStaticClassWithUsing(Document document, SemanticModel model, SyntaxNode root, SyntaxNode node, SymbolInfo info, CancellationToken cancellationToken) { var cu = root as CompilationUnitSyntax; var visitor = new SearchImportReplacementsVisitor(model, info, cancellationToken); visitor.Visit(root); cu = (CompilationUnitSyntax)root.TrackNodes(visitor.ReplaceNodes); foreach (var ma in visitor.ReplaceNodes) { var current = cu.GetCurrentNode<MemberAccessExpressionSyntax>(ma); cu = cu.ReplaceNode(current, current.Name.WithAdditionalAnnotations(Formatter.Annotation)); } var staticUsing = SyntaxFactory .UsingDirective(SyntaxFactory.ParseName(info.Symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat))) .WithStaticKeyword(SyntaxFactory.Token(SyntaxKind.StaticKeyword)) .WithAdditionalAnnotations(Formatter.Annotation); cu = cu.AddUsingDirective(staticUsing, node, true); return document.WithSyntaxRoot(cu); }