private void GetLatestDependentVersions( ImmutableDictionary <DocumentId, DocumentState> newDocumentStates, DocumentState oldDocument, DocumentState newDocument, bool recalculateDependentVersions, bool textChanged, out AsyncLazy <VersionStamp> dependentDocumentVersion, out AsyncLazy <VersionStamp> dependentSemanticVersion) { var recalculateDocumentVersion = false; var recalculateSemanticVersion = false; if (recalculateDependentVersions) { VersionStamp oldVersion; if (oldDocument.TryGetTextVersion(out oldVersion)) { VersionStamp documentVersion; if (!this.lazyLatestDocumentVersion.TryGetValue(out documentVersion) || documentVersion == oldVersion) { recalculateDocumentVersion = true; } VersionStamp semanticVersion; if (!this.lazyLatestDocumentTopLevelChangeVersion.TryGetValue(out semanticVersion) || semanticVersion == oldVersion) { recalculateSemanticVersion = true; } } } dependentDocumentVersion = recalculateDocumentVersion ? new AsyncLazy <VersionStamp>(this.ComputeLatestDocumentVersionAsync, cacheResult: true) : textChanged ? new AsyncLazy <VersionStamp>(newDocument.GetTextVersionAsync, cacheResult: true) : this.lazyLatestDocumentVersion; dependentSemanticVersion = recalculateSemanticVersion ? new AsyncLazy <VersionStamp>(c => ComputeLatestDocumentTopLevelChangeVersionAsync(newDocumentStates, c), cacheResult: true) : textChanged? CreateLazyLatestDocumentTopLevelChangeVersion(newDocument, newDocumentStates) : this.lazyLatestDocumentTopLevelChangeVersion; }
private void GetLatestDependentVersions( ImmutableDictionary<DocumentId, DocumentState> newDocumentStates, DocumentState oldDocument, DocumentState newDocument, bool recalculateDependentVersions, bool textChanged, out AsyncLazy<VersionStamp> dependentDocumentVersion, out AsyncLazy<VersionStamp> dependentSemanticVersion) { var recalculateDocumentVersion = false; var recalculateSemanticVersion = false; if (recalculateDependentVersions) { VersionStamp oldVersion; if (oldDocument.TryGetTextVersion(out oldVersion)) { VersionStamp documentVersion; if (!this.lazyLatestDocumentVersion.TryGetValue(out documentVersion) || documentVersion == oldVersion) { recalculateDocumentVersion = true; } VersionStamp semanticVersion; if (!this.lazyLatestDocumentTopLevelChangeVersion.TryGetValue(out semanticVersion) || semanticVersion == oldVersion) { recalculateSemanticVersion = true; } } } dependentDocumentVersion = recalculateDocumentVersion ? new AsyncLazy<VersionStamp>(this.ComputeLatestDocumentVersionAsync, cacheResult: true) : textChanged ? new AsyncLazy<VersionStamp>(newDocument.GetTextVersionAsync, cacheResult: true) : this.lazyLatestDocumentVersion; dependentSemanticVersion = recalculateSemanticVersion ? new AsyncLazy<VersionStamp>(c => ComputeLatestDocumentTopLevelChangeVersionAsync(newDocumentStates, c), cacheResult: true) : textChanged ? CreateLazyLatestDocumentTopLevelChangeVersion(newDocument, newDocumentStates) : this.lazyLatestDocumentTopLevelChangeVersion; }