From 2f2a17f570dfe6c0918747af7d6ecb396bd267b6 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 11 Mar 2024 19:52:49 +0100 Subject: [PATCH] [SLC] inject `checkCanceled` into declarations creation to improve responsiveness ^KTIJ-28688 --- .../classes/symbol/classes/symbolLightClassUtils.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt index e5e66b9dd5d..44779bcb24a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/symbolLightClassUtils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.light.classes.symbol.classes +import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.util.ModificationTracker import com.intellij.psi.PsiElement import com.intellij.psi.PsiManager @@ -129,6 +130,8 @@ internal fun SymbolLightClassBase.createConstructors( } for (constructor in constructors) { + ProgressManager.checkCanceled() + if (constructor.isHiddenOrSynthetic()) continue result.add( @@ -212,6 +215,8 @@ internal fun SymbolLightClassBase.createMethods( fun KtAnalysisSession.handleDeclaration(declaration: KtCallableSymbol) { when (declaration) { is KtFunctionSymbol -> { + ProgressManager.checkCanceled() + if (declaration.hasReifiedParameters || declaration.isHiddenOrSynthetic()) return if (declaration.name.isSpecial) return @@ -290,6 +295,8 @@ internal fun SymbolLightClassBase.createPropertyAccessors( onlyJvmStatic: Boolean = false, suppressStatic: Boolean = false, ) { + ProgressManager.checkCanceled() + if (declaration is KtKotlinPropertySymbol && declaration.isConst) return if (declaration.name.isSpecial) return @@ -405,6 +412,8 @@ internal fun SymbolLightClassBase.createField( isStatic: Boolean, result: MutableList ) { + ProgressManager.checkCanceled() + if (declaration.name.isSpecial) return if (!hasBackingField(declaration)) return