Don't clear InBlockModifications on CanceledException

#KT-34914 Fixed
This commit is contained in:
Vladimir Dolzhenko
2019-11-15 13:16:01 +01:00
parent 92dae5d8a9
commit fa62d0c325
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.idea.caches.resolve package org.jetbrains.kotlin.idea.caches.resolve
import com.google.common.collect.ImmutableMap import com.google.common.collect.ImmutableMap
import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.ProcessCanceledException
import com.intellij.openapi.progress.ProgressIndicatorProvider import com.intellij.openapi.progress.ProgressIndicatorProvider
import com.intellij.openapi.project.DumbService 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.project.Project
import com.intellij.openapi.util.ModificationTracker import com.intellij.openapi.util.ModificationTracker
import com.intellij.psi.PsiElement 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.analyzer.AnalysisResult
import org.jetbrains.kotlin.container.ComponentProvider import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.container.get
@@ -136,10 +137,16 @@ internal class PerFileAnalysisCache(val file: KtFile, componentProvider: Compone
val newResult = analyze(inBlockModification, trace) val newResult = analyze(inBlockModification, trace)
analysisResult = wrapResult(result, newResult, trace) analysisResult = wrapResult(result, newResult, trace)
} }
file.clearInBlockModifications()
analysisResult analysisResult
} }
} finally { } catch (e: Throwable) {
file.clearInBlockModifications() if (e !is ControlFlowException) {
file.clearInBlockModifications()
fileResult = null
}
throw e
} }
} }
return fileResult return fileResult