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,14 +140,15 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
} }
override fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? { override fun createUltraLightClass(element: KtClassOrObject): KtUltraLightClass? {
return runReadAction {
if (element.shouldNotBeVisibleAsLightClass() || if (element.shouldNotBeVisibleAsLightClass() ||
element is KtEnumEntry || element is KtEnumEntry ||
element.containingKtFile.isScript() 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)
@@ -161,6 +163,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
} }
} }
} }
}
private fun KtFile.hasAlias(shortName: Name?): Boolean { private fun KtFile.hasAlias(shortName: Name?): Boolean {
if (shortName == null) return false if (shortName == null) return false