From fa62d0c3256271b77cc61153ce89398b27a38f09 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Fri, 15 Nov 2019 13:16:01 +0100 Subject: [PATCH] Don't clear InBlockModifications on CanceledException #KT-34914 Fixed --- .../idea/caches/resolve/PerFileAnalysisCache.kt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 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 b689b70b145..c8ef35a0312 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 @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.google.common.collect.ImmutableMap +import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.ProgressIndicatorProvider import com.intellij.openapi.project.DumbService @@ -24,7 +25,7 @@ import com.intellij.openapi.project.IndexNotReadyException import com.intellij.openapi.project.Project import com.intellij.openapi.util.ModificationTracker import com.intellij.psi.PsiElement -import com.intellij.psi.util.* +import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.container.ComponentProvider import org.jetbrains.kotlin.container.get @@ -136,10 +137,16 @@ internal class PerFileAnalysisCache(val file: KtFile, componentProvider: Compone val newResult = analyze(inBlockModification, trace) analysisResult = wrapResult(result, newResult, trace) } + file.clearInBlockModifications() + analysisResult } - } finally { - file.clearInBlockModifications() + } catch (e: Throwable) { + if (e !is ControlFlowException) { + file.clearInBlockModifications() + fileResult = null + } + throw e } } return fileResult