diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt index c4c3ded65ca..9b2c783a8b4 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/FirLightClassBase.kt @@ -39,6 +39,8 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.cannotModify import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.idea.frontend.api.HackToForceAllowRunningAnalyzeOnEDT +import org.jetbrains.kotlin.idea.frontend.api.hackyAllowRunningOnEdt import java.util.concurrent.TimeUnit import java.util.concurrent.locks.ReentrantLock import org.jetbrains.kotlin.trackers.createProjectWideOutOfBlockModificationTracker @@ -51,9 +53,10 @@ abstract class FirLightClassBase protected constructor(manager: PsiManager) : Li get() = invalidAccess() private class FirLightClassesLazyCreator(private val project: Project) : KotlinClassInnerStuffCache.LazyCreator() { + @OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) override fun get(initializer: () -> T, dependencies: List): Lazy = lazyPub { PsiCachedValueImpl(PsiManager.getInstance(project)) { - CachedValueProvider.Result.create(initializer(), dependencies) + CachedValueProvider.Result.create(hackyAllowRunningOnEdt(initializer) , dependencies) }.value ?: error("initializer cannot return null") } } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt index 1ff14736eb8..fe59aca4c41 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/classes/firLightClassUtils.kt @@ -19,8 +19,10 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.idea.asJava.* +import org.jetbrains.kotlin.idea.frontend.api.HackToForceAllowRunningAnalyzeOnEDT import org.jetbrains.kotlin.idea.frontend.api.analyze import org.jetbrains.kotlin.idea.frontend.api.fir.analyzeWithSymbolAsContext +import org.jetbrains.kotlin.idea.frontend.api.hackyAllowRunningOnEdt import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtCommonSymbolModality import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSymbolVisibility @@ -44,7 +46,8 @@ fun getOrCreateFirLightClass(classOrObject: KtClassOrObject): KtLightClass? = ) } -fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? { +@OptIn(HackToForceAllowRunningAnalyzeOnEDT::class) +fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? = hackyAllowRunningOnEdt { val containingFile = classOrObject.containingFile if (containingFile is KtCodeFragment) {