From 0666f374ff59f77ebe44e1c81426caf514e20c66 Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Sat, 31 Mar 2018 09:50:55 -0500 Subject: [PATCH] Use Create and GetOrCreate method prefixes as appropriate for clarity --- .../ChangeSignature/RemoveParametersTests.cs | 2 +- .../EncapsulateFieldCommandHandlerTests.cs | 2 +- .../EncapsulateFieldTestState.cs | 2 +- .../ExtractInterface/ExtractInterfaceTests.cs | 2 +- .../ExtractMethod/ExtractMethodTests.cs | 2 +- .../OrganizeTypeDeclarationTests.cs | 2 +- .../Test/Utilities/EditorServicesUtil.cs | 2 +- .../Classification/ClassificationTests.vb | 2 +- .../GoToDefinitionCommandHandlerTests.vb | 2 +- .../NavigableSymbols/NavigableSymbolsTest.vb | 2 +- .../Test2/Rename/RenameCommandHandlerTests.vb | 2 +- .../Test2/Rename/RenameTestHelpers.vb | 2 +- .../AbstractCommandHandlerTestState.cs | 2 +- .../ChangeSignatureTestState.cs | 2 +- .../GenerateType/GenerateTypeTestState.cs | 2 +- .../ExtractInterfaceTestState.cs | 2 +- .../ServiceTestExportProvider.cs | 2 +- .../TestUtilities/TestExportProvider.cs | 10 ++--- .../Utilities/GoToHelpers/GoToTestHelpers.vb | 2 +- .../ChangeSignature/RemoveParametersTests.vb | 2 +- .../EncapsulateFieldCommandHandlerTests.vb | 2 +- .../EncapsulateFieldTestState.vb | 2 +- .../ExtractInterface/ExtractInterfaceTests.vb | 2 +- .../ExtractMethodTests.LanguageInteraction.vb | 2 +- .../OrganizeTypeDeclarationTests.vb | 2 +- .../VisualStudioTestExportProvider.cs | 4 +- .../Interactive/InteractiveWindowTestHost.cs | 4 +- .../Core/Test.Next/Mocks/TestHostServices.cs | 4 +- .../Core/Test/Preview/PreviewChangesTests.vb | 2 +- .../Progression/ProgressionTestHelpers.vb | 2 +- .../CallHierarchy/CallHierarchyTestState.vb | 4 +- .../VisualStudioTestExportProvider.vb | 2 +- src/Workspaces/CoreTest/Host/TestHost.cs | 2 +- .../CoreTestUtilities/ExportProviderCache.cs | 41 ++++++++++++------- .../UseExportProviderAttribute.cs | 6 +-- 35 files changed, 70 insertions(+), 59 deletions(-) diff --git a/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs b/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs index 203cddb1113..0fa60e13eda 100644 --- a/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs +++ b/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs @@ -272,7 +272,7 @@ void M() public void ChangeSignatureCommandDisabledInSubmission() { var exportProvider = ExportProviderCache - .CreateExportProviderFactory( + .GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) .CreateExportProvider(); diff --git a/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.cs b/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.cs index 5fab8bb10b6..32f1446d63d 100644 --- a/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.cs +++ b/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.cs @@ -193,7 +193,7 @@ static void Main(string[] args) public void EncapsulateFieldCommandDisabledInSubmission() { var exportProvider = ExportProviderCache - .CreateExportProviderFactory( + .GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) .CreateExportProvider(); diff --git a/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldTestState.cs b/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldTestState.cs index 4a5eba4569e..55401bad858 100644 --- a/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldTestState.cs +++ b/src/EditorFeatures/CSharpTest/EncapsulateField/EncapsulateFieldTestState.cs @@ -28,7 +28,7 @@ internal class EncapsulateFieldTestState : IDisposable public string NotificationMessage { get; private set; } private static readonly IExportProviderFactory s_exportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic.WithParts( typeof(CSharpEncapsulateFieldService), typeof(EditorNotificationServiceFactory), diff --git a/src/EditorFeatures/CSharpTest/ExtractInterface/ExtractInterfaceTests.cs b/src/EditorFeatures/CSharpTest/ExtractInterface/ExtractInterfaceTests.cs index 5d6a687aaef..5a39fe212de 100644 --- a/src/EditorFeatures/CSharpTest/ExtractInterface/ExtractInterfaceTests.cs +++ b/src/EditorFeatures/CSharpTest/ExtractInterface/ExtractInterfaceTests.cs @@ -1061,7 +1061,7 @@ class $$Test public void ExtractInterfaceCommandDisabledInSubmission() { var exportProvider = ExportProviderCache - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) .CreateExportProvider(); using (var workspace = TestWorkspace.Create(XElement.Parse(@" diff --git a/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs b/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs index a9d36ba1c24..df87782f9b3 100644 --- a/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs +++ b/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs @@ -10353,7 +10353,7 @@ public async Task ExtractMethod_Argument2() public void ExtractMethodCommandDisabledInSubmission() { var exportProvider = ExportProviderCache - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) .CreateExportProvider(); using (var workspace = TestWorkspace.Create(XElement.Parse(@" diff --git a/src/EditorFeatures/CSharpTest/Organizing/OrganizeTypeDeclarationTests.cs b/src/EditorFeatures/CSharpTest/Organizing/OrganizeTypeDeclarationTests.cs index bd1b5a3d767..37682a7d125 100644 --- a/src/EditorFeatures/CSharpTest/Organizing/OrganizeTypeDeclarationTests.cs +++ b/src/EditorFeatures/CSharpTest/Organizing/OrganizeTypeDeclarationTests.cs @@ -1077,7 +1077,7 @@ void B() public void OrganizingCommandsDisabledInSubmission() { var exportProvider = ExportProviderCache - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(typeof(InteractiveDocumentSupportsFeatureService))) .CreateExportProvider(); using (var workspace = TestWorkspace.Create(XElement.Parse(@" diff --git a/src/EditorFeatures/Test/Utilities/EditorServicesUtil.cs b/src/EditorFeatures/Test/Utilities/EditorServicesUtil.cs index 864a2dab238..5d1a567947b 100644 --- a/src/EditorFeatures/Test/Utilities/EditorServicesUtil.cs +++ b/src/EditorFeatures/Test/Utilities/EditorServicesUtil.cs @@ -19,7 +19,7 @@ private static IExportProviderFactory CreateExportProviderFactory() var assemblies = TestExportProvider .GetCSharpAndVisualBasicAssemblies() .Concat(new[] { typeof(EditorServicesUtil).Assembly }); - return ExportProviderCache.CreateExportProviderFactory(ExportProviderCache.CreateAssemblyCatalog(assemblies, ExportProviderCache.CreateResolver())); + return ExportProviderCache.GetOrCreateExportProviderFactory(ExportProviderCache.GetOrCreateAssemblyCatalog(assemblies, ExportProviderCache.CreateResolver())); } } } diff --git a/src/EditorFeatures/Test2/Classification/ClassificationTests.vb b/src/EditorFeatures/Test2/Classification/ClassificationTests.vb index 39ee5d4d53d..bbc9140a5bf 100644 --- a/src/EditorFeatures/Test2/Classification/ClassificationTests.vb +++ b/src/EditorFeatures/Test2/Classification/ClassificationTests.vb @@ -30,7 +30,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Classification Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic().WithParts(GetType(NoCompilationEditorClassificationService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic().WithParts(GetType(NoCompilationEditorClassificationService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create(workspaceDefinition, exportProvider:=exportProvider) diff --git a/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionCommandHandlerTests.vb b/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionCommandHandlerTests.vb index db6da380f15..a8b89fd6204 100644 --- a/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionCommandHandlerTests.vb +++ b/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionCommandHandlerTests.vb @@ -56,7 +56,7 @@ class C Using workspace = TestWorkspace.Create( definition, - exportProvider:=ExportProviderCache.CreateExportProviderFactory(GoToTestHelpers.Catalog.WithPart(GetType(CSharpGoToDefinitionService))).CreateExportProvider()) + exportProvider:=ExportProviderCache.GetOrCreateExportProviderFactory(GoToTestHelpers.Catalog.WithPart(GetType(CSharpGoToDefinitionService))).CreateExportProvider()) Dim baseDocument = workspace.Documents.First(Function(d) Not d.IsLinkFile) Dim linkDocument = workspace.Documents.First(Function(d) d.IsLinkFile) diff --git a/src/EditorFeatures/Test2/NavigableSymbols/NavigableSymbolsTest.vb b/src/EditorFeatures/Test2/NavigableSymbols/NavigableSymbolsTest.vb index d4269e25c67..47b0977b401 100644 --- a/src/EditorFeatures/Test2/NavigableSymbols/NavigableSymbolsTest.vb +++ b/src/EditorFeatures/Test2/NavigableSymbols/NavigableSymbolsTest.vb @@ -20,7 +20,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.NavigableSymbols Public Class NavigableSymbolsTest Private Shared ReadOnly s_exportProviderFactory As IExportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts( GetType(MockDocumentNavigationServiceProvider), GetType(MockSymbolNavigationServiceProvider))) diff --git a/src/EditorFeatures/Test2/Rename/RenameCommandHandlerTests.vb b/src/EditorFeatures/Test2/Rename/RenameCommandHandlerTests.vb index 7b7542cec63..17d23a86959 100644 --- a/src/EditorFeatures/Test2/Rename/RenameCommandHandlerTests.vb +++ b/src/EditorFeatures/Test2/Rename/RenameCommandHandlerTests.vb @@ -51,7 +51,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Rename Public Sub RenameCommandDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/EditorFeatures/Test2/Rename/RenameTestHelpers.vb b/src/EditorFeatures/Test2/Rename/RenameTestHelpers.vb index de0fadceca0..7968cfd6e79 100644 --- a/src/EditorFeatures/Test2/Rename/RenameTestHelpers.vb +++ b/src/EditorFeatures/Test2/Rename/RenameTestHelpers.vb @@ -21,7 +21,7 @@ Imports Roslyn.Utilities Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Rename Friend Module RenameTestHelpers - Friend _exportProviderFactory As IExportProviderFactory = ExportProviderCache.CreateExportProviderFactory( + Friend _exportProviderFactory As IExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(MockDocumentNavigationServiceFactory))) Friend ReadOnly Property ExportProviderFactory As IExportProviderFactory diff --git a/src/EditorFeatures/TestUtilities/AbstractCommandHandlerTestState.cs b/src/EditorFeatures/TestUtilities/AbstractCommandHandlerTestState.cs index 5d72cdf91fb..bddd6c33839 100644 --- a/src/EditorFeatures/TestUtilities/AbstractCommandHandlerTestState.cs +++ b/src/EditorFeatures/TestUtilities/AbstractCommandHandlerTestState.cs @@ -143,7 +143,7 @@ private static ExportProvider GetExportProvider(bool useMinimumCatalog, Composab ? TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic : TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic; - return ExportProviderCache.CreateExportProviderFactory(baseCatalog.WithParts(extraParts)).CreateExportProvider(); + return ExportProviderCache.GetOrCreateExportProviderFactory(baseCatalog.WithParts(extraParts)).CreateExportProvider(); } public virtual ITextView TextView diff --git a/src/EditorFeatures/TestUtilities/ChangeSignature/ChangeSignatureTestState.cs b/src/EditorFeatures/TestUtilities/ChangeSignature/ChangeSignatureTestState.cs index 81882730d7a..b3f1f47d6d4 100644 --- a/src/EditorFeatures/TestUtilities/ChangeSignature/ChangeSignatureTestState.cs +++ b/src/EditorFeatures/TestUtilities/ChangeSignature/ChangeSignatureTestState.cs @@ -80,7 +80,7 @@ public ChangeSignatureResult ChangeSignature() } private static readonly IExportProviderFactory s_exportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic .WithPart(typeof(TestChangeSignatureOptionsService)) .WithPart(typeof(CSharpChangeSignatureService)) diff --git a/src/EditorFeatures/TestUtilities/Diagnostics/GenerateType/GenerateTypeTestState.cs b/src/EditorFeatures/TestUtilities/Diagnostics/GenerateType/GenerateTypeTestState.cs index b69d5e0d292..f79e79a9a9a 100644 --- a/src/EditorFeatures/TestUtilities/Diagnostics/GenerateType/GenerateTypeTestState.cs +++ b/src/EditorFeatures/TestUtilities/Diagnostics/GenerateType/GenerateTypeTestState.cs @@ -105,7 +105,7 @@ public TestProjectManagementService TestProjectManagementService } private static readonly IExportProviderFactory s_exportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic.WithParts( typeof(TestGenerateTypeOptionsService), typeof(TestProjectManagementService), diff --git a/src/EditorFeatures/TestUtilities/ExtractInterface/ExtractInterfaceTestState.cs b/src/EditorFeatures/TestUtilities/ExtractInterface/ExtractInterfaceTestState.cs index 8134f198dce..15ddb60747c 100644 --- a/src/EditorFeatures/TestUtilities/ExtractInterface/ExtractInterfaceTestState.cs +++ b/src/EditorFeatures/TestUtilities/ExtractInterface/ExtractInterfaceTestState.cs @@ -52,7 +52,7 @@ public ExtractInterfaceTestState(TestWorkspace workspace) } public static readonly IExportProviderFactory ExportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic .WithPart(typeof(TestExtractInterfaceOptionsService)) .WithPart(typeof(CSharpExtractInterfaceService)) diff --git a/src/EditorFeatures/TestUtilities/ServiceTestExportProvider.cs b/src/EditorFeatures/TestUtilities/ServiceTestExportProvider.cs index fc1456b2bf4..61215c680c1 100644 --- a/src/EditorFeatures/TestUtilities/ServiceTestExportProvider.cs +++ b/src/EditorFeatures/TestUtilities/ServiceTestExportProvider.cs @@ -20,7 +20,7 @@ public static class ServiceTestExportProvider { public static ComposableCatalog CreateAssemblyCatalog() { - return ExportProviderCache.CreateAssemblyCatalog( + return ExportProviderCache.GetOrCreateAssemblyCatalog( GetLanguageNeutralTypes().Select(t => t.Assembly).Distinct().Concat(MinimalTestExportProvider.GetEditorAssemblies()), ExportProviderCache.CreateResolver()); } diff --git a/src/EditorFeatures/TestUtilities/TestExportProvider.cs b/src/EditorFeatures/TestUtilities/TestExportProvider.cs index 7bfdd5edc9f..1baa0226a82 100644 --- a/src/EditorFeatures/TestUtilities/TestExportProvider.cs +++ b/src/EditorFeatures/TestUtilities/TestExportProvider.cs @@ -23,7 +23,7 @@ public static class TestExportProvider new Lazy(() => CreateAssemblyCatalogWithCSharpAndVisualBasic()); private static Lazy s_lazyExportProviderFactoryWithCSharpAndVisualBasic = - new Lazy(() => ExportProviderCache.CreateExportProviderFactory(EntireAssemblyCatalogWithCSharpAndVisualBasic)); + new Lazy(() => ExportProviderCache.GetOrCreateExportProviderFactory(EntireAssemblyCatalogWithCSharpAndVisualBasic)); public static ComposableCatalog EntireAssemblyCatalogWithCSharpAndVisualBasic => s_lazyEntireAssemblyCatalogWithCSharpAndVisualBasic.Value; @@ -36,10 +36,10 @@ public static ExportProvider ExportProviderWithCSharpAndVisualBasic private static Lazy s_lazyMinimumCatalogWithCSharpAndVisualBasic = new Lazy(() => ExportProviderCache.CreateTypeCatalog(GetNeutralAndCSharpAndVisualBasicTypes()) - .WithParts(ExportProviderCache.CreateAssemblyCatalog(MinimalTestExportProvider.GetEditorAssemblies()))); + .WithParts(ExportProviderCache.GetOrCreateAssemblyCatalog(MinimalTestExportProvider.GetEditorAssemblies()))); private static Lazy s_lazyMinimumExportProviderFactoryWithCSharpAndVisualBasic = - new Lazy(() => ExportProviderCache.CreateExportProviderFactory(MinimumCatalogWithCSharpAndVisualBasic)); + new Lazy(() => ExportProviderCache.GetOrCreateExportProviderFactory(MinimumCatalogWithCSharpAndVisualBasic)); public static ComposableCatalog MinimumCatalogWithCSharpAndVisualBasic => s_lazyMinimumCatalogWithCSharpAndVisualBasic.Value; @@ -116,13 +116,13 @@ private static Type[] GetNeutralAndCSharpAndVisualBasicTypes() private static IExportProviderFactory CreateExportProviderFactoryWithCSharpAndVisualBasic() { - return ExportProviderCache.CreateExportProviderFactory(EntireAssemblyCatalogWithCSharpAndVisualBasic); + return ExportProviderCache.GetOrCreateExportProviderFactory(EntireAssemblyCatalogWithCSharpAndVisualBasic); } private static ComposableCatalog CreateAssemblyCatalogWithCSharpAndVisualBasic() { return ExportProviderCache - .CreateAssemblyCatalog(GetCSharpAndVisualBasicAssemblies(), ExportProviderCache.CreateResolver()) + .GetOrCreateAssemblyCatalog(GetCSharpAndVisualBasicAssemblies(), ExportProviderCache.CreateResolver()) .WithCompositionService(); } diff --git a/src/EditorFeatures/TestUtilities2/Utilities/GoToHelpers/GoToTestHelpers.vb b/src/EditorFeatures/TestUtilities2/Utilities/GoToHelpers/GoToTestHelpers.vb index 9883257da9b..e26a72794fd 100644 --- a/src/EditorFeatures/TestUtilities2/Utilities/GoToHelpers/GoToTestHelpers.vb +++ b/src/EditorFeatures/TestUtilities2/Utilities/GoToHelpers/GoToTestHelpers.vb @@ -19,7 +19,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Utilities.GoToHelpers GetType(CSharpGeneratedCodeRecognitionService), GetType(VisualBasicGeneratedCodeRecognitionService)) - Public ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.CreateExportProviderFactory(Catalog) + Public ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory(Catalog) End Module Friend Structure FilePathAndSpan diff --git a/src/EditorFeatures/VisualBasicTest/ChangeSignature/RemoveParametersTests.vb b/src/EditorFeatures/VisualBasicTest/ChangeSignature/RemoveParametersTests.vb index 183d50222bb..799c5fda444 100644 --- a/src/EditorFeatures/VisualBasicTest/ChangeSignature/RemoveParametersTests.vb +++ b/src/EditorFeatures/VisualBasicTest/ChangeSignature/RemoveParametersTests.vb @@ -96,7 +96,7 @@ End Module Public Sub TestChangeSignatureCommandDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.vb b/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.vb index 8df8b38c670..fb36b087450 100644 --- a/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.vb +++ b/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldCommandHandlerTests.vb @@ -134,7 +134,7 @@ End Class Public Sub EncapsulateFieldCommandDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldTestState.vb b/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldTestState.vb index afafc92d023..89793ad0818 100644 --- a/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldTestState.vb +++ b/src/EditorFeatures/VisualBasicTest/EncapsulateField/EncapsulateFieldTestState.vb @@ -20,7 +20,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.EncapsulateField Public TargetDocument As Document Private Shared ReadOnly s_exportProviderFactory As IExportProviderFactory = - ExportProviderCache.CreateExportProviderFactory( + ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic.WithParts( GetType(VisualBasicEncapsulateFieldService), GetType(DefaultDocumentSupportsFeatureService))) diff --git a/src/EditorFeatures/VisualBasicTest/ExtractInterface/ExtractInterfaceTests.vb b/src/EditorFeatures/VisualBasicTest/ExtractInterface/ExtractInterfaceTests.vb index 22ce037a966..f30900dc621 100644 --- a/src/EditorFeatures/VisualBasicTest/ExtractInterface/ExtractInterfaceTests.vb +++ b/src/EditorFeatures/VisualBasicTest/ExtractInterface/ExtractInterfaceTests.vb @@ -1262,7 +1262,7 @@ End Namespace Public Sub TestExtractInterfaceCommandDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.LanguageInteraction.vb b/src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.LanguageInteraction.vb index d56c8af7f47..033e6f00c27 100644 --- a/src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.LanguageInteraction.vb +++ b/src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.LanguageInteraction.vb @@ -3367,7 +3367,7 @@ End Namespace" Public Sub TestExtractMethodCommandDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/EditorFeatures/VisualBasicTest/Organizing/OrganizeTypeDeclarationTests.vb b/src/EditorFeatures/VisualBasicTest/Organizing/OrganizeTypeDeclarationTests.vb index 9284943e4ae..266243fb5ee 100644 --- a/src/EditorFeatures/VisualBasicTest/Organizing/OrganizeTypeDeclarationTests.vb +++ b/src/EditorFeatures/VisualBasicTest/Organizing/OrganizeTypeDeclarationTests.vb @@ -939,7 +939,7 @@ End Namespace Public Sub TestOrganizingCommandsDisabledInSubmission() Dim exportProvider = ExportProviderCache _ - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(GetType(InteractiveDocumentSupportsFeatureService))) _ .CreateExportProvider() Using workspace = TestWorkspace.Create( diff --git a/src/VisualStudio/CSharp/Test/CodeModel/VisualStudioTestExportProvider.cs b/src/VisualStudio/CSharp/Test/CodeModel/VisualStudioTestExportProvider.cs index 62f6ee392bb..f3279938bd9 100644 --- a/src/VisualStudio/CSharp/Test/CodeModel/VisualStudioTestExportProvider.cs +++ b/src/VisualStudio/CSharp/Test/CodeModel/VisualStudioTestExportProvider.cs @@ -13,9 +13,9 @@ public static class VisualStudioTestExportProvider static VisualStudioTestExportProvider() { - Factory = ExportProviderCache.CreateExportProviderFactory( + Factory = ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts( - ExportProviderCache.CreateAssemblyCatalog(typeof(CSharpCodeModelService).Assembly))); + ExportProviderCache.GetOrCreateAssemblyCatalog(typeof(CSharpCodeModelService).Assembly))); } } } diff --git a/src/VisualStudio/CSharp/Test/Interactive/InteractiveWindowTestHost.cs b/src/VisualStudio/CSharp/Test/Interactive/InteractiveWindowTestHost.cs index a96103eb6f9..534683296ab 100644 --- a/src/VisualStudio/CSharp/Test/Interactive/InteractiveWindowTestHost.cs +++ b/src/VisualStudio/CSharp/Test/Interactive/InteractiveWindowTestHost.cs @@ -21,8 +21,8 @@ public sealed class InteractiveWindowTestHost : IDisposable private readonly System.ComponentModel.Composition.Hosting.ExportProvider _exportProvider; - internal static readonly IExportProviderFactory ExportProviderFactory = ExportProviderCache.CreateExportProviderFactory( - ExportProviderCache.CreateAssemblyCatalog( + internal static readonly IExportProviderFactory ExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory( + ExportProviderCache.GetOrCreateAssemblyCatalog( new[] { typeof(TestWaitIndicator).Assembly, diff --git a/src/VisualStudio/Core/Test.Next/Mocks/TestHostServices.cs b/src/VisualStudio/Core/Test.Next/Mocks/TestHostServices.cs index a362646d40f..4ef13e9e932 100644 --- a/src/VisualStudio/Core/Test.Next/Mocks/TestHostServices.cs +++ b/src/VisualStudio/Core/Test.Next/Mocks/TestHostServices.cs @@ -19,14 +19,14 @@ public static HostServices CreateHostServices(ExportProvider exportProvider = nu public static ExportProvider CreateMinimalExportProvider() { return ExportProviderCache - .CreateExportProviderFactory(ServiceTestExportProvider.CreateAssemblyCatalog().WithPart(typeof(InProcRemoteHostClientFactory))) + .GetOrCreateExportProviderFactory(ServiceTestExportProvider.CreateAssemblyCatalog().WithPart(typeof(InProcRemoteHostClientFactory))) .CreateExportProvider(); } public static ExportProvider CreateExportProvider() { return ExportProviderCache - .CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithPart(typeof(InProcRemoteHostClientFactory))) + .GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithPart(typeof(InProcRemoteHostClientFactory))) .CreateExportProvider(); } } diff --git a/src/VisualStudio/Core/Test/Preview/PreviewChangesTests.vb b/src/VisualStudio/Core/Test/Preview/PreviewChangesTests.vb index 94885e9eac3..eed316e8d6e 100644 --- a/src/VisualStudio/Core/Test/Preview/PreviewChangesTests.vb +++ b/src/VisualStudio/Core/Test/Preview/PreviewChangesTests.vb @@ -14,7 +14,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Preview <[UseExportProvider]> Public Class PreviewChangesTests - Private _exportProviderFactory As IExportProviderFactory = ExportProviderCache.CreateExportProviderFactory( + Private _exportProviderFactory As IExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.MinimumCatalogWithCSharpAndVisualBasic.WithPart(GetType(StubVsEditorAdaptersFactoryService))) diff --git a/src/VisualStudio/Core/Test/Progression/ProgressionTestHelpers.vb b/src/VisualStudio/Core/Test/Progression/ProgressionTestHelpers.vb index bd3f89e4722..83742e7a284 100644 --- a/src/VisualStudio/Core/Test/Progression/ProgressionTestHelpers.vb +++ b/src/VisualStudio/Core/Test/Progression/ProgressionTestHelpers.vb @@ -11,7 +11,7 @@ Imports Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.Progression Friend Module ProgressionTestHelpers - Public ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.CreateExportProviderFactory( + Public ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory( TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts( GetType(CSharpProgressionLanguageService), GetType(VisualBasicProgressionLanguageService))) diff --git a/src/VisualStudio/TestUtilities2/CallHierarchy/CallHierarchyTestState.vb b/src/VisualStudio/TestUtilities2/CallHierarchy/CallHierarchyTestState.vb index abf89586441..955cc4bf909 100644 --- a/src/VisualStudio/TestUtilities2/CallHierarchy/CallHierarchyTestState.vb +++ b/src/VisualStudio/TestUtilities2/CallHierarchy/CallHierarchyTestState.vb @@ -24,7 +24,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.CallHierarchy .WithPart(GetType(CallHierarchyProvider)) _ .WithPart(GetType(DefaultSymbolMappingService)) _ .WithPart(GetType(EditorNotificationServiceFactory)) - Private Shared ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.CreateExportProviderFactory(DefaultCatalog) + Private Shared ReadOnly ExportProviderFactory As IExportProviderFactory = ExportProviderCache.GetOrCreateExportProviderFactory(DefaultCatalog) Private ReadOnly _commandHandler As CallHierarchyCommandHandler Private ReadOnly _presenter As MockCallHierarchyPresenter @@ -113,7 +113,7 @@ Namespace Microsoft.CodeAnalysis.Editor.UnitTests.CallHierarchy End If Dim catalog = DefaultCatalog.WithParts(additionalTypes) - Return ExportProviderCache.CreateExportProviderFactory(catalog).CreateExportProvider() + Return ExportProviderCache.GetOrCreateExportProviderFactory(catalog).CreateExportProvider() End Function Public Shared Function Create(markup As String, ParamArray additionalTypes As Type()) As CallHierarchyTestState diff --git a/src/VisualStudio/TestUtilities2/VisualStudioTestExportProvider.vb b/src/VisualStudio/TestUtilities2/VisualStudioTestExportProvider.vb index 6712618f5ac..7b0885979a2 100644 --- a/src/VisualStudio/TestUtilities2/VisualStudioTestExportProvider.vb +++ b/src/VisualStudio/TestUtilities2/VisualStudioTestExportProvider.vb @@ -12,7 +12,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests Dim additionalAssemblies = {GetType(CSharpCodeModelService).Assembly, GetType(VisualBasicCodeModelService).Assembly} - Factory = ExportProviderCache.CreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(ExportProviderCache.CreateAssemblyCatalog(additionalAssemblies))) + Factory = ExportProviderCache.GetOrCreateExportProviderFactory(TestExportProvider.EntireAssemblyCatalogWithCSharpAndVisualBasic.WithParts(ExportProviderCache.GetOrCreateAssemblyCatalog(additionalAssemblies))) End Sub Public ReadOnly Property Factory As IExportProviderFactory diff --git a/src/Workspaces/CoreTest/Host/TestHost.cs b/src/Workspaces/CoreTest/Host/TestHost.cs index 79350772d09..ae8db73de6c 100644 --- a/src/Workspaces/CoreTest/Host/TestHost.cs +++ b/src/Workspaces/CoreTest/Host/TestHost.cs @@ -22,7 +22,7 @@ public static ComposableCatalog Catalog { if (s_catalog == null) { - var tmp = ExportProviderCache.CreateAssemblyCatalog(Assemblies); + var tmp = ExportProviderCache.GetOrCreateAssemblyCatalog(Assemblies); System.Threading.Interlocked.CompareExchange(ref s_catalog, tmp, null); } diff --git a/src/Workspaces/CoreTestUtilities/ExportProviderCache.cs b/src/Workspaces/CoreTestUtilities/ExportProviderCache.cs index b4c4c42082c..57526c031b5 100644 --- a/src/Workspaces/CoreTestUtilities/ExportProviderCache.cs +++ b/src/Workspaces/CoreTestUtilities/ExportProviderCache.cs @@ -19,24 +19,24 @@ public static class ExportProviderCache // Cache the catalog and export provider factory for MefHostServices.DefaultAssemblies private static readonly ComposableCatalog s_defaultHostCatalog = - CreateAssemblyCatalogNoCache(MefHostServices.DefaultAssemblies); + CreateAssemblyCatalog(MefHostServices.DefaultAssemblies); private static readonly IExportProviderFactory s_defaultHostExportProviderFactory = - CreateExportProviderFactoryNoCache(s_defaultHostCatalog); + CreateExportProviderFactory(s_defaultHostCatalog); // Cache the catalog and export provider factory for DesktopMefHostServices.DefaultAssemblies private static readonly ComposableCatalog s_desktopHostCatalog = - CreateAssemblyCatalogNoCache(DesktopMefHostServices.DefaultAssemblies); + CreateAssemblyCatalog(DesktopMefHostServices.DefaultAssemblies); private static readonly IExportProviderFactory s_desktopHostExportProviderFactory = - CreateExportProviderFactoryNoCache(s_desktopHostCatalog); + CreateExportProviderFactory(s_desktopHostCatalog); // Cache the catalog and export provider factory for RoslynServices.RemoteHostAssemblies private static readonly ComposableCatalog s_remoteHostCatalog = - CreateAssemblyCatalogNoCache(RoslynServices.RemoteHostAssemblies); + CreateAssemblyCatalog(RoslynServices.RemoteHostAssemblies); private static readonly IExportProviderFactory s_remoteHostExportProviderFactory = - CreateExportProviderFactoryNoCache(s_remoteHostCatalog); + CreateExportProviderFactory(s_remoteHostCatalog); private static bool _enabled; @@ -59,12 +59,12 @@ internal static void SetEnabled_OnlyUseExportProviderAttributeCanCall(bool value } } - public static ComposableCatalog CreateAssemblyCatalog(Assembly assembly) + public static ComposableCatalog GetOrCreateAssemblyCatalog(Assembly assembly) { - return CreateAssemblyCatalog(SpecializedCollections.SingletonEnumerable(assembly)); + return GetOrCreateAssemblyCatalog(SpecializedCollections.SingletonEnumerable(assembly)); } - public static ComposableCatalog CreateAssemblyCatalog(IEnumerable assemblies, Resolver resolver = null) + public static ComposableCatalog GetOrCreateAssemblyCatalog(IEnumerable assemblies, Resolver resolver = null) { if (assemblies is ImmutableArray assembliesArray) { @@ -82,10 +82,10 @@ public static ComposableCatalog CreateAssemblyCatalog(IEnumerable asse } } - return CreateAssemblyCatalogNoCache(assemblies, resolver); + return CreateAssemblyCatalog(assemblies, resolver); } - private static ComposableCatalog CreateAssemblyCatalogNoCache(IEnumerable assemblies, Resolver resolver = null) + private static ComposableCatalog CreateAssemblyCatalog(IEnumerable assemblies, Resolver resolver = null) { var discovery = resolver == null ? s_partDiscovery : CreatePartDiscovery(resolver); @@ -138,7 +138,7 @@ public static ComposableCatalog WithPart(this ComposableCatalog catalog, Type t) return catalog.WithParts(CreateTypeCatalog(SpecializedCollections.SingletonEnumerable(t))); } - public static IExportProviderFactory CreateExportProviderFactory(ComposableCatalog catalog) + public static IExportProviderFactory GetOrCreateExportProviderFactory(ComposableCatalog catalog) { if (s_defaultHostExportProviderFactory != null && catalog == s_defaultHostCatalog) { @@ -153,10 +153,10 @@ public static IExportProviderFactory CreateExportProviderFactory(ComposableCatal return s_remoteHostExportProviderFactory; } - return CreateExportProviderFactoryNoCache(catalog); + return CreateExportProviderFactory(catalog); } - private static IExportProviderFactory CreateExportProviderFactoryNoCache(ComposableCatalog catalog) + private static IExportProviderFactory CreateExportProviderFactory(ComposableCatalog catalog) { var configuration = CompositionConfiguration.Create(catalog.WithCompositionService()); var runtimeComposition = RuntimeComposition.CreateRuntimeComposition(configuration); @@ -175,7 +175,7 @@ public SingleExportProviderFactory(ComposableCatalog catalog, IExportProviderFac _exportProviderFactory = exportProviderFactory; } - public ExportProvider CreateExportProvider() + public ExportProvider GetOrCreateExportProvider() { if (!Enabled) { @@ -201,6 +201,17 @@ public ExportProvider CreateExportProvider() return exportProvider; } + ExportProvider IExportProviderFactory.CreateExportProvider() + { + // Currently this implementation deviates from the typical behavior of IExportProviderFactory. For the + // duration of a single test, an instance of SingleExportProviderFactory will continue returning the + // same ExportProvider instance each time this method is called. + // + // It may be clearer to refactor the implementation to only allow one call to CreateExportProvider in + // the context of a single test. https://github.com/dotnet/roslyn/issues/25863 + return GetOrCreateExportProvider(); + } + private static void RequireForSingleExportProvider(bool condition) { if (!condition) diff --git a/src/Workspaces/CoreTestUtilities/UseExportProviderAttribute.cs b/src/Workspaces/CoreTestUtilities/UseExportProviderAttribute.cs index ba2c250d13c..d6f375114ce 100644 --- a/src/Workspaces/CoreTestUtilities/UseExportProviderAttribute.cs +++ b/src/Workspaces/CoreTestUtilities/UseExportProviderAttribute.cs @@ -152,10 +152,10 @@ private MefHostServices CreateMefHostServices(IEnumerable assemblies, return _hostServices; } - var catalog = ExportProviderCache.CreateAssemblyCatalog(assemblies); + var catalog = ExportProviderCache.GetOrCreateAssemblyCatalog(assemblies); Interlocked.CompareExchange( ref _hostServices, - new ExportProviderMefHostServices(ExportProviderCache.CreateExportProviderFactory(catalog).CreateExportProvider()), + new ExportProviderMefHostServices(ExportProviderCache.GetOrCreateExportProviderFactory(catalog).CreateExportProvider()), null); return _hostServices; @@ -174,7 +174,7 @@ private HostServices GetOrCreateRemoteHostServices() { if (s_remoteHostExportProviderFactory == null) { - var configuration = CompositionConfiguration.Create(ExportProviderCache.CreateAssemblyCatalog(RoslynServices.RemoteHostAssemblies).WithCompositionService()); + var configuration = CompositionConfiguration.Create(ExportProviderCache.GetOrCreateAssemblyCatalog(RoslynServices.RemoteHostAssemblies).WithCompositionService()); var runtimeComposition = RuntimeComposition.CreateRuntimeComposition(configuration); s_remoteHostExportProviderFactory = runtimeComposition.CreateExportProviderFactory(); } -- GitLab