Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove fallbacks and providers (4) #74336

Merged
merged 19 commits into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.

using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeActions;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.CodeStyle;
using Microsoft.CodeAnalysis.CSharp.ImplementInterface;
Expand Down Expand Up @@ -8006,7 +8007,7 @@ void M() { }
public int Prop => throw new System.NotImplementedException();
}
""",
CodeActionOptions = (CSharpCodeActionOptions.Default with
CodeActionOptions = (CodeActionOptions.Default with
{
ImplementTypeOptions = new() { InsertionBehavior = ImplementTypeInsertionBehavior.AtTheEnd }
}).CreateProvider()
Expand Down Expand Up @@ -8188,7 +8189,7 @@ class Class : IInterface
public int WriteOnlyProp { set => throw new System.NotImplementedException(); }
}
""",
CodeActionOptions = (CSharpCodeActionOptions.Default with
CodeActionOptions = (CodeActionOptions.Default with
{
ImplementTypeOptions = new() { PropertyGenerationBehavior = ImplementTypePropertyGenerationBehavior.PreferAutoProperties }
}).CreateProvider()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1183,7 +1183,6 @@ class C

var handler = new OrganizeDocumentCommandHandler(
workspace.GetService<IThreadingContext>(),
workspace.GlobalOptions,
workspace.ExportProvider.GetExportedValue<IAsynchronousOperationListenerProvider>());

var state = handler.GetCommandState(new SortAndRemoveUnnecessaryImportsCommandArgs(textView, textView.TextBuffer));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.UnitTestGenerator.Api;
[Shared]
[method: ImportingConstructor]
[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
internal class UnitTestGeneratorOrganizeImportsAccessor(IGlobalOptionService globalOptions)
internal class UnitTestGeneratorOrganizeImportsAccessor()
{
private readonly IGlobalOptionService _globalOptions = globalOptions;

#pragma warning disable CA1822 // Mark members as static
public async Task<Document> OrganizeImportsAsync(Document document, CancellationToken cancellationToken)
#pragma warning restore CA1822 // Mark members as static
{
var organizeImportsService = document.GetRequiredLanguageService<IOrganizeImportsService>();
var options = await document.GetOrganizeImportsOptionsAsync(_globalOptions, cancellationToken).ConfigureAwait(false);
var options = await document.GetOrganizeImportsOptionsAsync(cancellationToken).ConfigureAwait(false);
return await organizeImportsService.OrganizeImportsAsync(document, options, cancellationToken).ConfigureAwait(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,12 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.Organizing;
[SuppressMessage("RoslynDiagnosticsReliability", "RS0033:Importing constructor should be [Obsolete]", Justification = "Used in test code: https://github.com/dotnet/roslyn/issues/42814")]
internal class OrganizeDocumentCommandHandler(
IThreadingContext threadingContext,
IGlobalOptionService globalOptions,
IAsynchronousOperationListenerProvider listenerProvider) :
ICommandHandler<OrganizeDocumentCommandArgs>,
ICommandHandler<SortImportsCommandArgs>,
ICommandHandler<SortAndRemoveUnnecessaryImportsCommandArgs>
{
private readonly IThreadingContext _threadingContext = threadingContext;
private readonly IGlobalOptionService _globalOptions = globalOptions;
private readonly IAsynchronousOperationListener _listener = listenerProvider.GetListener(FeatureAttribute.OrganizeDocument);

public string DisplayName => EditorFeaturesResources.Organize_Document;
Expand Down Expand Up @@ -175,7 +173,7 @@ public bool ExecuteCommand(SortImportsCommandArgs args, CommandExecutionContext
async (document, cancellationToken) =>
{
var organizeImportsService = document.GetRequiredLanguageService<IOrganizeImportsService>();
var options = await document.GetOrganizeImportsOptionsAsync(_globalOptions, cancellationToken).ConfigureAwait(false);
var options = await document.GetOrganizeImportsOptionsAsync(cancellationToken).ConfigureAwait(false);
return await organizeImportsService.OrganizeImportsAsync(document, options, cancellationToken).ConfigureAwait(false);
});

Expand All @@ -194,7 +192,7 @@ public bool ExecuteCommand(SortAndRemoveUnnecessaryImportsCommandArgs args, Comm
var organizeImportsService = document.GetRequiredLanguageService<IOrganizeImportsService>();

var newDocument = await removeImportsService.RemoveUnnecessaryImportsAsync(document, formattingOptions, cancellationToken).ConfigureAwait(false);
var options = await document.GetOrganizeImportsOptionsAsync(_globalOptions, cancellationToken).ConfigureAwait(false);
var options = await document.GetOrganizeImportsOptionsAsync(cancellationToken).ConfigureAwait(false);
return await organizeImportsService.OrganizeImportsAsync(newDocument, options, cancellationToken).ConfigureAwait(false);
});
}
2 changes: 1 addition & 1 deletion src/EditorFeatures/Test/Options/GlobalOptionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ public void ReadingOptionsFromGlobalOptions(string language)
using var workspace = CreateWorkspace(out var globalOptions);
var languageServices = workspace.Services.SolutionServices.GetLanguageServices(language);

VerifyDataMembersHaveNonDefaultValues(globalOptions.GetCodeActionOptions(languageServices), CodeActionOptions.GetDefault(languageServices), language);
VerifyDataMembersHaveNonDefaultValues(globalOptions.GetCodeActionOptions(languageServices), CodeActionOptions.Default, language);
VerifyDataMembersHaveNonDefaultValues(globalOptions.GetBraceMatchingOptions(language), BraceMatchingOptions.Default, language);
VerifyDataMembersHaveNonDefaultValues(globalOptions.GetFindUsagesOptions(language), FindUsagesOptions.Default, language);
VerifyDataMembersHaveNonDefaultValues(globalOptions.GetInlineHintsOptions(language), InlineHintsOptions.Default, language);
Expand Down
3 changes: 1 addition & 2 deletions src/EditorFeatures/Test2/NavigationBar/TestHelpers.vb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Editor.Extensibility.NavigationBar
Imports Microsoft.CodeAnalysis.Editor.Implementation.NavigationBar
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Extensions
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
Imports Microsoft.CodeAnalysis.LanguageService
Imports Microsoft.CodeAnalysis.NavigationBar
Expand Down Expand Up @@ -99,7 +98,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.NavigationBar

Dim contextLocation = (Await document.GetSyntaxTreeAsync()).GetLocation(New TextSpan(0, 0))
Dim generateCodeItem = DirectCast(rightItem, WrappedNavigationBarItem).UnderlyingItem
Dim newDocument = Await VisualBasicEditorNavigationBarItemService.GetGeneratedDocumentAsync(document, generateCodeItem, workspace.GlobalOptions, CancellationToken.None)
Dim newDocument = Await VisualBasicEditorNavigationBarItemService.GetGeneratedDocumentAsync(document, generateCodeItem, CancellationToken.None)

Dim actual = (Await newDocument.GetSyntaxRootAsync()).ToFullString().TrimEnd()
Dim expected = expectedText.NormalizedValue.TrimEnd()
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ Imports Microsoft.CodeAnalysis.Editor.Shared.Utilities
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Utilities
Imports Microsoft.CodeAnalysis.Host.Mef
Imports Microsoft.CodeAnalysis.NavigationBar.RoslynNavigationBarItem
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.VisualStudio.Text
Imports Microsoft.VisualStudio.Text.Editor
Expand All @@ -24,19 +23,16 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar

Private ReadOnly _editorOperationsFactoryService As IEditorOperationsFactoryService
Private ReadOnly _textUndoHistoryRegistry As ITextUndoHistoryRegistry
Private ReadOnly _globalOptions As IGlobalOptionService

<ImportingConstructor>
<Obsolete(MefConstruction.ImportingConstructorMessage, True)>
Public Sub New(
threadingContext As IThreadingContext,
editorOperationsFactoryService As IEditorOperationsFactoryService,
textUndoHistoryRegistry As ITextUndoHistoryRegistry,
globalOptions As IGlobalOptionService)
textUndoHistoryRegistry As ITextUndoHistoryRegistry)
MyBase.New(threadingContext)
_editorOperationsFactoryService = editorOperationsFactoryService
_textUndoHistoryRegistry = textUndoHistoryRegistry
_globalOptions = globalOptions
End Sub

Friend Overrides Async Function GetNavigationLocationAsync(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ Imports Microsoft.CodeAnalysis.Formatting
Imports Microsoft.CodeAnalysis.Formatting.Rules
Imports Microsoft.CodeAnalysis.NavigationBar
Imports Microsoft.CodeAnalysis.NavigationBar.RoslynNavigationBarItem
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.PooledObjects
Imports Microsoft.CodeAnalysis.Simplification
Imports Microsoft.CodeAnalysis.Text
Expand All @@ -25,7 +24,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
Private Async Function GenerateCodeForItemAsync(document As Document, generateCodeItem As AbstractGenerateCodeItem, textView As ITextView, cancellationToken As CancellationToken) As Task
' We'll compute everything up front before we go mutate state
Dim text = Await document.GetValueTextAsync(cancellationToken).ConfigureAwait(False)
Dim newDocument = Await GetGeneratedDocumentAsync(document, generateCodeItem, _globalOptions, cancellationToken).ConfigureAwait(False)
Dim newDocument = Await GetGeneratedDocumentAsync(document, generateCodeItem, cancellationToken).ConfigureAwait(False)
Dim generatedTree = Await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(False)

Dim generatedNode = generatedTree.GetAnnotatedNodes(GeneratedSymbolAnnotation).Single().FirstAncestorOrSelf(Of MethodBlockBaseSyntax)
Expand All @@ -49,13 +48,13 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
End Using
End Function

Public Shared Async Function GetGeneratedDocumentAsync(document As Document, generateCodeItem As RoslynNavigationBarItem, globalOptions As IGlobalOptionService, cancellationToken As CancellationToken) As Task(Of Document)
Public Shared Async Function GetGeneratedDocumentAsync(document As Document, generateCodeItem As RoslynNavigationBarItem, cancellationToken As CancellationToken) As Task(Of Document)
Dim syntaxTree = Await document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(False)
Dim contextLocation = syntaxTree.GetLocation(New TextSpan(0, 0))

Dim codeGenerationContext = New CodeGenerationContext(contextLocation, generateMethodBodies:=True)

Dim newDocument = Await GetGeneratedDocumentCoreAsync(document, generateCodeItem, codeGenerationContext, globalOptions.CreateProvider(), cancellationToken).ConfigureAwait(False)
Dim newDocument = Await GetGeneratedDocumentCoreAsync(document, generateCodeItem, codeGenerationContext, cancellationToken).ConfigureAwait(False)
If newDocument Is Nothing Then
Return document
End If
Expand Down Expand Up @@ -86,21 +85,20 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
document As Document,
generateCodeItem As RoslynNavigationBarItem,
codeGenerationContext As CodeGenerationContext,
fallbackOptions As CodeAndImportGenerationOptionsProvider,
cancellationToken As CancellationToken) As Task(Of Document)

Select Case generateCodeItem.Kind
Case RoslynNavigationBarItemKind.GenerateDefaultConstructor
Return GenerateDefaultConstructorAsync(document, DirectCast(generateCodeItem, GenerateDefaultConstructor), codeGenerationContext, fallbackOptions, cancellationToken)
Return GenerateDefaultConstructorAsync(document, DirectCast(generateCodeItem, GenerateDefaultConstructor), codeGenerationContext, cancellationToken)

Case RoslynNavigationBarItemKind.GenerateEventHandler
Return GenerateEventHandlerAsync(document, DirectCast(generateCodeItem, GenerateEventHandler), codeGenerationContext, fallbackOptions, cancellationToken)
Return GenerateEventHandlerAsync(document, DirectCast(generateCodeItem, GenerateEventHandler), codeGenerationContext, cancellationToken)

Case RoslynNavigationBarItemKind.GenerateFinalizer
Return GenerateFinalizerAsync(document, DirectCast(generateCodeItem, GenerateFinalizer), codeGenerationContext, fallbackOptions, cancellationToken)
Return GenerateFinalizerAsync(document, DirectCast(generateCodeItem, GenerateFinalizer), codeGenerationContext, cancellationToken)

Case RoslynNavigationBarItemKind.GenerateMethod
Return GenerateMethodAsync(document, DirectCast(generateCodeItem, GenerateMethod), codeGenerationContext, fallbackOptions, cancellationToken)
Return GenerateMethodAsync(document, DirectCast(generateCodeItem, GenerateMethod), codeGenerationContext, cancellationToken)

Case Else
Throw ExceptionUtilities.UnexpectedValue(generateCodeItem.Kind)
Expand All @@ -111,7 +109,6 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
document As Document,
generateCodeItem As GenerateDefaultConstructor,
codeGenerationContext As CodeGenerationContext,
fallbackOptions As CodeAndImportGenerationOptionsProvider,
cancellationToken As CancellationToken) As Task(Of Document)

Dim compilation = Await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(False)
Expand Down Expand Up @@ -156,7 +153,6 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
document As Document,
generateCodeItem As GenerateEventHandler,
codeGenerationContext As CodeGenerationContext,
fallbackOptions As CodeAndImportGenerationOptionsProvider,
cancellationToken As CancellationToken) As Task(Of Document)

Dim compilation = Await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(False)
Expand Down Expand Up @@ -212,7 +208,6 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
document As Document,
generateCodeItem As GenerateFinalizer,
codeGenerationContext As CodeGenerationContext,
fallbackOptions As CodeAndImportGenerationOptionsProvider,
cancellationToken As CancellationToken) As Task(Of Document)

Dim compilation = Await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(False)
Expand Down Expand Up @@ -257,7 +252,6 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.NavigationBar
document As Document,
generateCodeItem As GenerateMethod,
codeGenerationContext As CodeGenerationContext,
fallbackOptions As CodeAndImportGenerationOptionsProvider,
cancellationToken As CancellationToken) As Task(Of Document)

Dim compilation = Await document.Project.GetCompilationAsync(cancellationToken).ConfigureAwait(False)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Imports Microsoft.CodeAnalysis.VisualBasic.Formatting
Imports Microsoft.CodeAnalysis.VisualBasic.Simplification
Imports Microsoft.CodeAnalysis.VisualBasic.MakeFieldReadonly
Imports Microsoft.CodeAnalysis.AddFileBanner
Imports Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions

Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Formatting
<UseExportProvider>
Expand Down Expand Up @@ -562,10 +563,10 @@ End Class
Optional separateImportsGroups As Boolean = False) As Task
Using workspace = TestWorkspace.CreateVisualBasic(code, composition:=EditorTestCompositions.EditorFeaturesWpf)

' must set global options since incremental analyzer infra reads from global options
Dim globalOptions = workspace.GlobalOptions
globalOptions.SetGlobalOption(GenerationOptions.SeparateImportDirectiveGroups, LanguageNames.VisualBasic, separateImportsGroups)
globalOptions.SetGlobalOption(GenerationOptions.PlaceSystemNamespaceFirst, LanguageNames.VisualBasic, systemImportsFirst)
workspace.SetAnalyzerFallbackOptions(New OptionsCollection(LanguageNames.VisualBasic) From {
{GenerationOptions.SeparateImportDirectiveGroups, separateImportsGroups},
{GenerationOptions.PlaceSystemNamespaceFirst, systemImportsFirst}
})

Dim solution = workspace.CurrentSolution.WithAnalyzerReferences(
{
Expand All @@ -587,7 +588,7 @@ End Class
document,
enabledDiagnostics,
CodeAnalysisProgress.None,
globalOptions.CreateProvider(),
workspace.GlobalOptions.CreateProvider(),
CancellationToken.None)

Dim actual = Await newDoc.GetTextAsync()
Expand Down
Loading
Loading