diff --git a/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs b/src/EditorFeatures/CSharpTest/ChangeSignature/RemoveParametersTests.cs index 203cddb111362314de9123163a366df060910c7a..0fa60e13eda9537b2c045aed3687ec9c843daee8 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 5fab8bb10b626743fbedb7b61d84bb11d8484992..32f1446d63d37323eda1d8c890600810a81d6bb5 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 4a5eba4569e1a263808351a1f99ea298148f9200..55401bad85864c7d12700156b93291a67e1b99fa 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 5d6a687aaef6d5cf1838b9af99ec0add2113d645..5a39fe212dea56ead9e3b7abe7c950c0bee8fbf5 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 a9d36ba1c2499952a3f9f381e67ef1eb1005cc80..df87782f9b370c4a2e1014f12db1c5e636268514 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 bd1b5a3d767b2f409f9607b24b79e523a3a17777..37682a7d1259d7f957cdba8834f247ce78252756 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 864a2dab238599040ce150f36ca8b8f3a7c8f76f..5d1a567947b2be59ff1a08533aa6fa390ef86f67 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 39ee5d4d53df83ca2299251a34a366cc4438a955..bbc9140a5bfad8142ba4b72d2b25b6852c35ce7c 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 db6da380f15e8ad57703c0711fb34dfbdad533b3..a8b89fd6204b81e311b9f54f8f57a5ee0cc19d11 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 d4269e25c6792ea90d270f8a29a679e2e1182731..47b0977b401d442ad8c2bd817fc1741b40e121be 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 7b7542cec63d936eae08c2fd626e76058b6ca774..17d23a86959debd743f6a35662af8bd143a372ce 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 de0fadceca0ddc3cc71b2cbf045227a122116840..7968cfd6e79a2408a9bdcd374dd222b28406ec64 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 5d72cdf91fb7fd658da44961358719242a0c49cd..bddd6c33839ffba8bedc2a9d558334455f02cd02 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 81882730d7a9a6855d1a61b77546038ae3f3c9a6..b3f1f47d6d4f49163efa880ad561d03a0da4fc80 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 b69d5e0d292ade4f28e8e01d68f032a79707e362..f79e79a9a9a7978a48e41da51c26ff6a0828c376 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 8134f198dce7a01a80b4bcc03b41b4ab4c05ca50..15ddb60747c2f12e39ff78854d34b98aaff477ec 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 fc1456b2bf48afa1d5214969b63a7ef3e29f278e..61215c680c1ffafd9d51bf902ac5e26554d77fe9 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 7bfdd5edc9f825811081456c581a1dcb88812c1e..1baa0226a82480e37fadb0a078c4b0f3f0bbf2e8 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 9883257da9be4ad7d6e45af9b2e37cd612954c67..e26a72794fdce2c03f2676557af0b9f06a87fdd5 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 183d50222bb83dacb23ab773349c3dc19d680b4b..799c5fda44491006c8380873547f4b4e5cf9d363 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 8df8b38c6707767b56bfe158aa750ca14af51134..fb36b08745020e3eda73912851d25b2d4857c841 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 afafc92d023dd1f799d3abce3b2a75943017ad4c..89793ad081860203ad057866a68f19061e14c413 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 22ce037a966442c3c9236d1b21d5ed7f1cfc52e7..f30900dc6214e881bc3b85ba8d6710811300271f 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 d56c8af7f47810d5505d78cc1b7bc7c070762191..033e6f00c2740adee7ba06b9d7879e6315c479bf 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 9284943e4aed2d4aab05faa1e79bc60cdf615c53..266243fb5eeac09e5214674618bd0fa45788ac59 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 62f6ee392bb869ae480ee449e89e08109d92eef5..f3279938bd9ab252712b08fcee6d80e8b1f7924a 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 a96103eb6f9bb16b5870bb5821d7426bf08ae26d..534683296ab9526fa6cb8496d19455cb72006e9a 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 a362646d40f50da2850618c0325801852e1b726e..4ef13e9e93250a5aec24ad7e01a7ff74d21fce78 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 94885e9eac33106e7b8bf382fda10ce01d56528a..eed316e8d6e319a1eb38169ff8a459f983dd1f06 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 bd3f89e4722b04e60eeff15deb600c6e0eeeeaa4..83742e7a2840b1c7ddf1901a3893107553f7b286 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 abf89586441d68af5d72b74042d22cb556f88e4a..955cc4bf909c94f2767a71033ef5e88a54149c35 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 6712618f5ac065b2c3d08d28803df6c5c215afbc..7b0885979a2c8e2cf9d88eb1274ebcf53ecfff07 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 79350772d092c2f4272972bd90daa3fac8d5175d..ae8db73de6c6f4c8bd327039ba5d4874d5d6ec81 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 b4c4c42082c923d03bfca04f3e5df88ef93bc508..57526c031b5dfa1b2875b90bf344c63586cc7580 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 ba2c250d13c3d5aba7e837bfb3b57d4f989eba8b..d6f375114ce8634f4165595b5d15b347f2c137d5 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(); }