Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
            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);
            }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 8
0
 public bool TryGetStateChecksums(out DocumentStateChecksums stateChecksums)
 {
     return(_lazyChecksums.TryGetValue(out stateChecksums));
 }
Ejemplo n.º 9
0
 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);
 }