Fix readAccess in IDELightClassGenerationSupport on obtaining script

#EA-211576 Fixed
This commit is contained in:
Vladimir Dolzhenko
2019-10-15 08:46:17 +02:00
parent 10ea8abc2b
commit ba01678abb
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.caches.lightClasses.LazyLightClassDataHolder
import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.resolve.frontendService import org.jetbrains.kotlin.idea.resolve.frontendService
import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasShortNameIndex 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.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -139,25 +140,27 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
} }
override fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? { override fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? {
if (element.shouldNotBeVisibleAsLightClass() || return runReadAction {
element is KtEnumEntry || if (element.shouldNotBeVisibleAsLightClass() ||
element.containingKtFile.isScript() element is KtEnumEntry ||
) { element.containingKtFile.isScript()
return null ) {
} return@runReadAction null
}
return KtUltraLightSupportImpl(element).let { support -> KtUltraLightSupportImpl(element).let { support ->
when { when {
element is KtObjectDeclaration && element.isObjectLiteral() -> element is KtObjectDeclaration && element.isObjectLiteral() ->
KtUltraLightClassForAnonymousDeclaration(element, support) KtUltraLightClassForAnonymousDeclaration(element, support)
element.isLocal -> element.isLocal ->
KtUltraLightClassForLocalDeclaration(element, support) KtUltraLightClassForLocalDeclaration(element, support)
(element.hasModifier(KtTokens.INLINE_KEYWORD)) -> (element.hasModifier(KtTokens.INLINE_KEYWORD)) ->
KtUltraLightInlineClass(element, support) KtUltraLightInlineClass(element, support)
else -> KtUltraLightClass(element, support) else -> KtUltraLightClass(element, support)
}
} }
} }
} }