From e321c9e4e7beb71be34bcaa55bc090fd5a94f857 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Sat, 23 Nov 2019 23:36:49 +0100 Subject: [PATCH] Fix diagnostics calculations for incremental analysis --- .../idea/caches/resolve/PerFileAnalysisCache.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt index c8ef35a0312..f42226fb844 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt @@ -261,9 +261,9 @@ private class StackedCompositeBindingContextTrace( /** * All diagnostics from parentContext apart those diagnostics those belongs to the element or its descendants */ - val parentDiagnosticsApartElement: List = parentContext.diagnostics.all().filter { d -> + val parentDiagnosticsApartElement: Collection = parentContext.diagnostics.all().filter { d -> d.psiElement.parentsWithSelf.none { it == element } - }.toList() + } inner class StackedCompositeBindingContext : BindingContext { var cachedDiagnostics: Diagnostics? = null @@ -279,9 +279,12 @@ private class StackedCompositeBindingContextTrace( override fun getDiagnostics(): Diagnostics { if (cachedDiagnostics == null) { - val diagnosticList = - parentDiagnosticsApartElement + (this@StackedCompositeBindingContextTrace.mutableDiagnostics?.all() ?: emptyList()) - cachedDiagnostics = MergedDiagnostics(diagnosticList, parentContext.diagnostics.modificationTracker) + val mergedDiagnostics = mutableSetOf() + mergedDiagnostics.addAll(parentDiagnosticsApartElement) + this@StackedCompositeBindingContextTrace.mutableDiagnostics?.all()?.let { + mergedDiagnostics.addAll(it) + } + cachedDiagnostics = MergedDiagnostics(mergedDiagnostics, parentContext.diagnostics.modificationTracker) } return cachedDiagnostics!! }