[ULC] Enable UL for script classes

This commit is contained in:
Igor Yakovlev
2020-04-29 14:29:50 +03:00
parent 1d248f1a00
commit bc12fb0d6b
3 changed files with 9 additions and 11 deletions
@@ -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(
@@ -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)
@@ -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<String>) :
KtLightModifierList<KtLightClassForSourceDeclaration>(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 {