blob: 9cd6ad8b71df4ea7e5a28a242a8a05431595ba32 [file]
//using Microsoft.CodeAnalysis;
//using Microsoft.CodeAnalysis.CodeActions;
//using Microsoft.CodeAnalysis.CodeFixes;
//using Microsoft.CodeAnalysis.CSharp;
//using Microsoft.CodeAnalysis.CSharp.Syntax;
//using Microsoft.CodeAnalysis.Rename;
//using Microsoft.CodeAnalysis.Text;
//using System;
//using System.Collections.Generic;
//using System.Collections.Immutable;
//using System.Composition;
//using System.Linq;
//using System.Threading;
//using System.Threading.Tasks;
//namespace Lucene.Net.CodeAnalysis.Dev
//{
// //[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(LuceneNetCodeAnalysisDevCodeFixProvider)), Shared]
// public class LuceneNetCodeAnalysisDevCodeFixProvider : CodeFixProvider
// {
// public sealed override ImmutableArray<string> FixableDiagnosticIds
// {
// get { return ImmutableArray.Create(LuceneNetCodeAnalysisDevAnalyzer.DiagnosticId); }
// }
// public sealed override FixAllProvider GetFixAllProvider()
// {
// // See https://github.com/dotnet/roslyn/blob/main/docs/analyzers/FixAllProvider.md for more information on Fix All Providers
// return WellKnownFixAllProviders.BatchFixer;
// }
// public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context)
// {
// var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
// // TODO: Replace the following code with your own analysis, generating a CodeAction for each fix to suggest
// var diagnostic = context.Diagnostics.First();
// var diagnosticSpan = diagnostic.Location.SourceSpan;
// // Find the type declaration identified by the diagnostic.
// var declaration = root.FindToken(diagnosticSpan.Start).Parent.AncestorsAndSelf().OfType<TypeDeclarationSyntax>().First();
// // Register a code action that will invoke the fix.
// context.RegisterCodeFix(
// CodeAction.Create(
// title: CodeFixResources.CodeFixTitle,
// createChangedSolution: c => MakeUppercaseAsync(context.Document, declaration, c),
// equivalenceKey: nameof(CodeFixResources.CodeFixTitle)),
// diagnostic);
// }
// private async Task<Solution> MakeUppercaseAsync(Document document, TypeDeclarationSyntax typeDecl, CancellationToken cancellationToken)
// {
// // Compute new uppercase name.
// var identifierToken = typeDecl.Identifier;
// var newName = identifierToken.Text.ToUpperInvariant();
// // Get the symbol representing the type to be renamed.
// var semanticModel = await document.GetSemanticModelAsync(cancellationToken);
// var typeSymbol = semanticModel.GetDeclaredSymbol(typeDecl, 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;
// }
// }
//}