diff --git a/src/Workspaces/Core/Portable/Workspace/Solution/ProjectState.cs b/src/Workspaces/Core/Portable/Workspace/Solution/ProjectState.cs index 7a5267a07b71f3d073dcce2117e088517fcdaf61..44cb3de85849a0f2dcabf6f4321fd3fd6a4538ac 100644 --- a/src/Workspaces/Core/Portable/Workspace/Solution/ProjectState.cs +++ b/src/Workspaces/Core/Portable/Workspace/Solution/ProjectState.cs @@ -22,8 +22,8 @@ internal partial class ProjectState private readonly SolutionServices _solutionServices; private readonly ImmutableDictionary _documentStates; private readonly ImmutableDictionary _additionalDocumentStates; - private readonly IReadOnlyList _documentIds; - private readonly IReadOnlyList _additionalDocumentIds; + private readonly ImmutableList _documentIds; + private readonly ImmutableList _additionalDocumentIds; private readonly AsyncLazy _lazyLatestDocumentVersion; private readonly AsyncLazy _lazyLatestDocumentTopLevelChangeVersion; @@ -37,8 +37,8 @@ internal partial class ProjectState ProjectInfo projectInfo, HostLanguageServices languageServices, SolutionServices solutionServices, - IEnumerable documentIds, - IEnumerable additionalDocumentIds, + ImmutableList documentIds, + ImmutableList additionalDocumentIds, ImmutableDictionary documentStates, ImmutableDictionary additionalDocumentStates, AsyncLazy lazyLatestDocumentVersion, @@ -46,8 +46,8 @@ internal partial class ProjectState { _solutionServices = solutionServices; _languageServices = languageServices; - _documentIds = documentIds.ToImmutableReadOnlyListOrEmpty(); - _additionalDocumentIds = additionalDocumentIds.ToImmutableReadOnlyListOrEmpty(); + _documentIds = documentIds; + _additionalDocumentIds = additionalDocumentIds; _documentStates = documentStates; _additionalDocumentStates = additionalDocumentStates; _lazyLatestDocumentVersion = lazyLatestDocumentVersion; @@ -72,8 +72,8 @@ public ProjectState(ProjectInfo projectInfo, HostLanguageServices languageServic var projectInfoFixed = FixProjectInfo(projectInfo); - _documentIds = projectInfoFixed.Documents.Select(d => d.Id).ToImmutableArray(); - _additionalDocumentIds = projectInfoFixed.AdditionalDocuments.Select(d => d.Id).ToImmutableArray(); + _documentIds = projectInfoFixed.Documents.Select(d => d.Id).ToImmutableList(); + _additionalDocumentIds = projectInfoFixed.AdditionalDocuments.Select(d => d.Id).ToImmutableList(); var parseOptions = projectInfoFixed.ParseOptions; var docStates = ImmutableDictionary.CreateRange( @@ -341,8 +341,8 @@ public TextDocumentState GetAdditionalDocumentState(DocumentId documentId) private ProjectState With( ProjectInfo projectInfo = null, - ImmutableArray documentIds = default, - ImmutableArray additionalDocumentIds = default, + ImmutableList documentIds = default, + ImmutableList additionalDocumentIds = default, ImmutableDictionary documentStates = null, ImmutableDictionary additionalDocumentStates = null, AsyncLazy latestDocumentVersion = null, @@ -352,8 +352,8 @@ public TextDocumentState GetAdditionalDocumentState(DocumentId documentId) projectInfo ?? _projectInfo, _languageServices, _solutionServices, - documentIds.IsDefault ? _documentIds : documentIds, - additionalDocumentIds.IsDefault ? _additionalDocumentIds : additionalDocumentIds, + documentIds ?? _documentIds, + additionalDocumentIds ?? _additionalDocumentIds, documentStates ?? _documentStates, additionalDocumentStates ?? _additionalDocumentStates, latestDocumentVersion ?? _lazyLatestDocumentVersion, @@ -558,7 +558,7 @@ public ProjectState AddDocument(DocumentState document) return this.With( projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()), - documentIds: this.DocumentIds.ToImmutableArray().Add(document.Id), + documentIds: _documentIds.Add(document.Id), documentStates: this.DocumentStates.Add(document.Id, document)); } @@ -568,7 +568,7 @@ public ProjectState AddAdditionalDocument(TextDocumentState document) return this.With( projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()), - additionalDocumentIds: this.AdditionalDocumentIds.ToImmutableArray().Add(document.Id), + additionalDocumentIds: _additionalDocumentIds.Add(document.Id), additionalDocumentStates: this.AdditionalDocumentStates.Add(document.Id, document)); } @@ -578,7 +578,7 @@ public ProjectState RemoveDocument(DocumentId documentId) return this.With( projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()), - documentIds: this.DocumentIds.ToImmutableArray().Remove(documentId), + documentIds: _documentIds.Remove(documentId), documentStates: this.DocumentStates.Remove(documentId)); } @@ -588,7 +588,7 @@ public ProjectState RemoveAdditionalDocument(DocumentId documentId) return this.With( projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()), - additionalDocumentIds: this.AdditionalDocumentIds.ToImmutableArray().Remove(documentId), + additionalDocumentIds: _additionalDocumentIds.Remove(documentId), additionalDocumentStates: this.AdditionalDocumentStates.Remove(documentId)); } @@ -596,7 +596,7 @@ public ProjectState RemoveAllDocuments() { return this.With( projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()).WithDocuments(SpecializedCollections.EmptyEnumerable()), - documentIds: ImmutableArray.Create(), + documentIds: ImmutableList.Empty, documentStates: ImmutableDictionary.Empty); }