From afdd7e615c1443b0279e8dcbcfa65a448e99492b Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Tue, 27 Nov 2018 17:04:42 -0800 Subject: [PATCH] Fix up VisualStudioWorkspace.GetFileCodeModel The implementation was commented out and not restored prior to merging the project system refactoring. --- .../Core/Impl/RoslynVisualStudioWorkspace.cs | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs b/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs index 886f3d1c830..edfb46f7d7c 100644 --- a/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs +++ b/src/VisualStudio/Core/Impl/RoslynVisualStudioWorkspace.cs @@ -29,15 +29,18 @@ namespace Microsoft.VisualStudio.LanguageServices internal class RoslynVisualStudioWorkspace : VisualStudioWorkspaceImpl { private readonly IEnumerable> _streamingPresenters; + private readonly Lazy _projectCodeModelFactory; [ImportingConstructor] private RoslynVisualStudioWorkspace( ExportProvider exportProvider, [ImportMany] IEnumerable> streamingPresenters, - [ImportMany] IEnumerable documentOptionsProviderFactories) + [ImportMany] IEnumerable documentOptionsProviderFactories, + Lazy projectCodeModelFactory) : base(exportProvider, AsyncServiceProvider.GlobalProvider) // TODO: switch to the cleaner MEF import { _streamingPresenters = streamingPresenters; + _projectCodeModelFactory = projectCodeModelFactory; foreach (var providerFactory in documentOptionsProviderFactories) { @@ -52,28 +55,21 @@ public override EnvDTE.FileCodeModel GetFileCodeModel(DocumentId documentId) throw new ArgumentNullException(nameof(documentId)); } -/* - - var project = DeferredState.ProjectTracker.GetProject(documentId.ProjectId); + var project = CurrentSolution.GetProject(documentId.ProjectId); if (project == null) { throw new ArgumentException(ServicesVSResources.The_given_DocumentId_did_not_come_from_the_Visual_Studio_workspace, nameof(documentId)); } - var document = project.GetDocumentOrAdditionalDocument(documentId); - if (document == null) + var documentFilePath = GetFilePath(documentId); + if (documentFilePath == null) { throw new ArgumentException(ServicesVSResources.The_given_DocumentId_did_not_come_from_the_Visual_Studio_workspace, nameof(documentId)); } - if (project.ProjectCodeModel != null) - { - return project.ProjectCodeModel.GetOrCreateFileCodeModel(document.FilePath); - } + IProjectCodeModel projectCodeModel = _projectCodeModelFactory.Value.GetProjectCodeModel(project.Id); - */ - - return null; + return projectCodeModel.GetOrCreateFileCodeModel(documentFilePath); } internal override IInvisibleEditor OpenInvisibleEditor(DocumentId documentId) -- GitLab