提交 a2a5fb16 编写于 作者: J Jason Malinowski

Add a Solution.AddAdditionalDocuments method

We only allowed adding one-at-at-time. This aligns us with
regular documents and AnalyzerConfig documents.
上级 b28eec5d
*REMOVED*Microsoft.CodeAnalysis.Workspace.ClearOpenDocument(Microsoft.CodeAnalysis.DocumentId documentId, bool isSolutionClosing = false) -> void
Microsoft.CodeAnalysis.Solution.AddAdditionalDocuments(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.DocumentInfo> documentInfos) -> Microsoft.CodeAnalysis.Solution
Microsoft.CodeAnalysis.Solution.AddAnalyzerConfigDocuments(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.DocumentInfo> documentInfos) -> Microsoft.CodeAnalysis.Solution
Microsoft.CodeAnalysis.Solution.ContainsAnalyzerConfigDocument(Microsoft.CodeAnalysis.DocumentId documentId) -> bool
Microsoft.CodeAnalysis.Solution.RemoveAnalyzerConfigDocument(Microsoft.CodeAnalysis.DocumentId documentId) -> Microsoft.CodeAnalysis.Solution
......
......@@ -675,14 +675,14 @@ public ProjectState AddDocuments(ImmutableArray<DocumentState> documents)
documentStates: _documentStates.AddRange(documents.Select(d => KeyValuePairUtil.Create(d.Id, d))));
}
public ProjectState AddAdditionalDocument(TextDocumentState document)
public ProjectState AddAdditionalDocuments(ImmutableArray<TextDocumentState> documents)
{
Debug.Assert(!this.AdditionalDocumentStates.ContainsKey(document.Id));
Debug.Assert(!documents.Any(d => this.AdditionalDocumentStates.ContainsKey(d.Id)));
return this.With(
projectInfo: this.ProjectInfo.WithVersion(this.Version.GetNewerVersion()),
additionalDocumentIds: _additionalDocumentIds.Add(document.Id),
additionalDocumentStates: _additionalDocumentStates.Add(document.Id, document));
additionalDocumentIds: _additionalDocumentIds.AddRange(documents.Select(d => d.Id)),
additionalDocumentStates: _additionalDocumentStates.AddRange(documents.Select(d => KeyValuePairUtil.Create(d.Id, d))));
}
public ProjectState AddAnalyzerConfigDocuments(ImmutableArray<AnalyzerConfigDocumentState> documents)
......
......@@ -776,7 +776,12 @@ public Solution AddAdditionalDocument(DocumentId documentId, string name, Source
public Solution AddAdditionalDocument(DocumentInfo documentInfo)
{
var newState = _state.AddAdditionalDocument(documentInfo);
return AddAdditionalDocuments(ImmutableArray.Create(documentInfo));
}
public Solution AddAdditionalDocuments(ImmutableArray<DocumentInfo> documentInfos)
{
var newState = _state.AddAdditionalDocuments(documentInfos);
if (newState == _state)
{
return this;
......
......@@ -1196,27 +1196,11 @@ public SolutionState AddDocuments(ImmutableArray<DocumentInfo> documentInfos)
return newSolutionState;
}
public SolutionState AddAdditionalDocument(DocumentInfo documentInfo)
public SolutionState AddAdditionalDocuments(ImmutableArray<DocumentInfo> documentInfos)
{
if (documentInfo == null)
{
throw new ArgumentNullException(nameof(documentInfo));
}
CheckContainsProject(documentInfo.Id.ProjectId);
CheckNotContainsAdditionalDocument(documentInfo.Id);
var oldProject = this.GetProjectState(documentInfo.Id.ProjectId);
var state = new TextDocumentState(
documentInfo,
_solutionServices);
var newProject = oldProject.AddAdditionalDocument(state);
var documentStates = SpecializedCollections.SingletonEnumerable(newProject.GetAdditionalDocumentState(documentInfo.Id));
return this.ForkProject(newProject,
newFilePathToDocumentIdsMap: CreateFilePathToDocumentIdsMapWithAddedDocuments(documentStates));
return AddDocumentsToMultipleProjects(documentInfos,
(documentInfo, project) => new TextDocumentState(documentInfo, _solutionServices),
(projectState, documents) => (projectState.AddAdditionalDocuments(documents), translationAction: null));
}
public SolutionState AddAnalyzerConfigDocuments(ImmutableArray<DocumentInfo> documentInfos)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册