diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 97f6daff8b2..35809f00c4e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.caches.lightClasses.LazyLightClassDataHolder import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.resolve.frontendService import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasShortNameIndex +import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -139,25 +140,27 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG } override fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? { - if (element.shouldNotBeVisibleAsLightClass() || - element is KtEnumEntry || - element.containingKtFile.isScript() - ) { - return null - } + return runReadAction { + if (element.shouldNotBeVisibleAsLightClass() || + element is KtEnumEntry || + element.containingKtFile.isScript() + ) { + return@runReadAction null + } - return KtUltraLightSupportImpl(element).let { support -> - when { - element is KtObjectDeclaration && element.isObjectLiteral() -> - KtUltraLightClassForAnonymousDeclaration(element, support) + KtUltraLightSupportImpl(element).let { support -> + when { + element is KtObjectDeclaration && element.isObjectLiteral() -> + KtUltraLightClassForAnonymousDeclaration(element, support) - element.isLocal -> - KtUltraLightClassForLocalDeclaration(element, support) + element.isLocal -> + KtUltraLightClassForLocalDeclaration(element, support) - (element.hasModifier(KtTokens.INLINE_KEYWORD)) -> - KtUltraLightInlineClass(element, support) + (element.hasModifier(KtTokens.INLINE_KEYWORD)) -> + KtUltraLightInlineClass(element, support) - else -> KtUltraLightClass(element, support) + else -> KtUltraLightClass(element, support) + } } } }