From bc12fb0d6b281db1e47c04d3b87fdd5aabfa3cee Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Wed, 29 Apr 2020 14:29:50 +0300 Subject: [PATCH] [ULC] Enable UL for script classes --- .../kotlin/asJava/classes/KtLightClassForFacade.kt | 13 ++++--------- .../kotlin/asJava/classes/KtLightClassForScript.kt | 3 ++- .../classes/KtLightClassForSourceDeclaration.kt | 4 +++- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt index 3e2cf933a49..c849eca2fb5 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt @@ -263,21 +263,16 @@ open class KtLightClassForFacade constructor( if (sources.isEmpty()) return null - val ultraLightEnabled = - !KtUltraLightSupport.forceUsingOldLightClasses && Registry.`is`("kotlin.use.ultra.light.classes", true) - val stubProvider = LightClassDataProviderForFileFacade.ByProjectSource(project, fqName, searchScope) val stubValue = CachedValuesManager.getManager(project) .createCachedValue(stubProvider, false) val manager = PsiManager.getInstance(project) - val ultraLightClass = if (ultraLightEnabled) - LightClassGenerationSupport.getInstance(project) - .createUltraLightClassForFacade(manager, fqName, stubValue, sources) - else null - - return ultraLightClass ?: KtLightClassForFacade(manager, fqName, stubValue, sources) + return if (!KtUltraLightSupport.forceUsingOldLightClasses && Registry.`is`("kotlin.use.ultra.light.classes", true)) + LightClassGenerationSupport.getInstance(project).createUltraLightClassForFacade(manager, fqName, stubValue, sources) + ?: error { "Unable to create UL class for facade" } + else KtLightClassForFacade(manager, fqName, stubValue, sources) } fun createForFacade( diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForScript.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForScript.kt index 4cf66ee730a..162596fef10 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForScript.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForScript.kt @@ -209,7 +209,8 @@ open class KtLightClassForScript(val script: KtScript) : KtLazyLightClass(script } if (!forceUsingOldLightClasses && Registry.`is`("kotlin.use.ultra.light.classes", true)) { - LightClassGenerationSupport.getInstance(script.project).createUltraLightClassForScript(script)?.let { return it } + return LightClassGenerationSupport.getInstance(script.project).createUltraLightClassForScript(script) + ?: error("UL class cannot be created for script") } return KtLightClassForScript(script) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt index cadf88b7cba..c25470ba95a 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt @@ -55,6 +55,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub import org.jetbrains.kotlin.resolve.DescriptorUtils import java.util.* import javax.swing.Icon +import kotlin.jvm.Throws private class KtLightClassModifierList(containingClass: KtLightClassForSourceDeclaration, computeModifiers: () -> Set) : KtLightModifierList(containingClass) { @@ -356,7 +357,8 @@ abstract class KtLightClassForSourceDeclaration( } if (!forceUsingOldLightClasses && Registry.`is`("kotlin.use.ultra.light.classes", true)) { - LightClassGenerationSupport.getInstance(classOrObject.project).createUltraLightClass(classOrObject)?.let { return it } + return LightClassGenerationSupport.getInstance(classOrObject.project).createUltraLightClass(classOrObject) + ?: error { "Unable to create UL class for ${classOrObject::javaClass.name}" } } return when {