private async Task <Project> UpdateDocumentAsync(TextDocument document, DocumentStateChecksums oldDocumentChecksums, DocumentStateChecksums newDocumentChecksums, bool additionalText) { // changed info if (oldDocumentChecksums.Info != newDocumentChecksums.Info) { document = await UpdateDocumentInfoAsync(document, newDocumentChecksums.Info, additionalText).ConfigureAwait(false); } // changed text if (oldDocumentChecksums.Text != newDocumentChecksums.Text) { var sourceText = await _assetService.GetAssetAsync <SourceText>(newDocumentChecksums.Text, _cancellationToken).ConfigureAwait(false); if (additionalText) { document = document.Project.Solution.WithAdditionalDocumentText(document.Id, sourceText).GetAdditionalDocument(document.Id); } else { document = document.Project.Solution.WithDocumentText(document.Id, sourceText).GetDocument(document.Id); } } return(document.Project); }
private async Task <Project> UpdateDocumentAsync(TextDocument document, DocumentStateChecksums oldDocumentChecksums, DocumentStateChecksums newDocumentChecksums) { // changed info if (oldDocumentChecksums.Info != newDocumentChecksums.Info) { document = await UpdateDocumentInfoAsync(document, newDocumentChecksums.Info).ConfigureAwait(false); } // changed text if (oldDocumentChecksums.Text != newDocumentChecksums.Text) { var serializableSourceText = await _assetProvider.GetAssetAsync <SerializableSourceText>(newDocumentChecksums.Text, _cancellationToken).ConfigureAwait(false); var sourceText = await serializableSourceText.GetTextAsync(_cancellationToken).ConfigureAwait(false); document = document.Kind switch { TextDocumentKind.Document => document.Project.Solution.WithDocumentText(document.Id, sourceText).GetDocument(document.Id) !, TextDocumentKind.AnalyzerConfigDocument => document.Project.Solution.WithAnalyzerConfigDocumentText(document.Id, sourceText).GetAnalyzerConfigDocument(document.Id) !, TextDocumentKind.AdditionalDocument => document.Project.Solution.WithAdditionalDocumentText(document.Id, sourceText).GetAdditionalDocument(document.Id) !, _ => throw ExceptionUtilities.UnexpectedValue(document.Kind), }; } return(document.Project); }
private async Task <Project> UpdateDocumentAsync(TextDocument document, DocumentStateChecksums oldDocumentChecksums, DocumentStateChecksums newDocumentChecksums) { // changed info if (oldDocumentChecksums.Info != newDocumentChecksums.Info) { document = await UpdateDocumentInfoAsync(document, newDocumentChecksums.Info).ConfigureAwait(false); } // changed text if (oldDocumentChecksums.Text != newDocumentChecksums.Text) { var sourceText = await _assetService.GetAssetAsync <SourceText>(newDocumentChecksums.Text, _cancellationToken).ConfigureAwait(false); switch (document.Kind) { case TextDocumentKind.Document: document = document.Project.Solution.WithDocumentText(document.Id, sourceText).GetDocument(document.Id); break; case TextDocumentKind.AnalyzerConfigDocument: document = document.Project.Solution.WithAnalyzerConfigDocumentText(document.Id, sourceText).GetAnalyzerConfigDocument(document.Id); break; case TextDocumentKind.AdditionalDocument: document = document.Project.Solution.WithAdditionalDocumentText(document.Id, sourceText).GetAdditionalDocument(document.Id); break; default: throw ExceptionUtilities.UnexpectedValue(document.Kind); } } return(document.Project); }
internal static async Task VerifyAssetAsync(IRemotableDataService service, DocumentStateChecksums documentObject) { var info = await VerifyAssetSerializationAsync <DocumentInfo.DocumentAttributes>( service, documentObject.Info, WellKnownSynchronizationKind.DocumentAttributes, (v, k, s) => SolutionAsset.Create(s.CreateChecksum(v, CancellationToken.None), v, s)).ConfigureAwait(false); await VerifyAssetSerializationAsync <SourceText>( service, documentObject.Text, WellKnownSynchronizationKind.SourceText, (v, k, s) => SolutionAsset.Create(s.CreateChecksum(v, CancellationToken.None), v, s)); }
internal static void VerifySnapshotInService(IRemotableDataService snapshotService, DocumentStateChecksums documentObject) { VerifyChecksumInService(snapshotService, documentObject.Checksum, documentObject.GetWellKnownSynchronizationKind()); VerifyChecksumInService(snapshotService, documentObject.Info, WellKnownSynchronizationKind.DocumentAttributes); VerifyChecksumInService(snapshotService, documentObject.Text, WellKnownSynchronizationKind.SourceText); }
internal static async Task VerifySnapshotInServiceAsync(IRemotableDataService snapshotService, DocumentStateChecksums documentObject) { await VerifyChecksumInServiceAsync(snapshotService, documentObject.Checksum, documentObject.GetWellKnownSynchronizationKind()).ConfigureAwait(false); await VerifyChecksumInServiceAsync(snapshotService, documentObject.Info, WellKnownSynchronizationKind.DocumentAttributes).ConfigureAwait(false); await VerifyChecksumInServiceAsync(snapshotService, documentObject.Text, WellKnownSynchronizationKind.SourceText).ConfigureAwait(false); }
public bool TryGetStateChecksums(out DocumentStateChecksums stateChecksums) { return _lazyChecksums.TryGetValue(out stateChecksums); }
public bool TryGetStateChecksums(out DocumentStateChecksums stateChecksums) { return(_lazyChecksums.TryGetValue(out stateChecksums)); }
internal static void VerifySnapshotInService(ISolutionSynchronizationService snapshotService, DocumentStateChecksums documentObject) { VerifyChecksumInService(snapshotService, documentObject.Checksum, documentObject.GetWellKnownSynchronizationKind()); VerifyChecksumInService(snapshotService, documentObject.Info, WellKnownSynchronizationKinds.DocumentInfo); VerifyChecksumInService(snapshotService, documentObject.Text, WellKnownSynchronizationKinds.SourceText); }