private async Task <Solution> MakeDecentAsync(Document document, MemberDeclarationSyntax memberDecl, CancellationToken cancellationToken) { string identifierTokenText = null; switch (memberDecl) { case TypeDeclarationSyntax ts: identifierTokenText = ts.Identifier.Text; break; case PropertyDeclarationSyntax ps: identifierTokenText = ps.Identifier.Text; break; } var newName = DirtyWordMagician.DirtyToDecent(identifierTokenText); // Get the symbol representing the type to be renamed. var semanticModel = await document.GetSemanticModelAsync(cancellationToken); var typeSymbol = semanticModel.GetDeclaredSymbol(memberDecl, cancellationToken); // Produce a new solution that has all references to that type renamed, including the declaration. var originalSolution = document.Project.Solution; var optionSet = originalSolution.Workspace.Options; var newSolution = await Renamer.RenameSymbolAsync(document.Project.Solution, typeSymbol, newName, optionSet, cancellationToken).ConfigureAwait(false); // Return the new solution with the now-uppercase type name. return(newSolution); }
private async Task <Solution> MakeFieldDecentAsync(Document document, SyntaxToken declaration, CancellationToken cancellationToken) { var newName = DirtyWordMagician.DirtyToDecent(declaration.ValueText); var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); var symbol = semanticModel.GetDeclaredSymbol(declaration.Parent, cancellationToken); var solution = document.Project.Solution; return(await Renamer.RenameSymbolAsync(solution, symbol, newName, solution.Workspace.Options, cancellationToken).ConfigureAwait(false)); }