FIR/LC: filter out scripts for facade creation
^KTIJ-22016 Fixed
This commit is contained in:
committed by
Ilya Kirillov
parent
cd80bddfcd
commit
b18999be82
+7
-4
@@ -61,16 +61,19 @@ abstract class LightClassGenerationSupport {
|
||||
|
||||
abstract val useUltraLightClasses: Boolean
|
||||
|
||||
internal fun canCreateUltraLightClassForFacade(
|
||||
files: Collection<KtFile>,
|
||||
): Boolean {
|
||||
return useUltraLightClasses && files.none { it.isScript() }
|
||||
}
|
||||
|
||||
fun createUltraLightClassForFacade(
|
||||
manager: PsiManager,
|
||||
facadeClassFqName: FqName,
|
||||
lightClassDataCache: CachedValue<LightClassDataHolder.ForFacade>,
|
||||
files: Collection<KtFile>,
|
||||
): KtUltraLightClassForFacade? {
|
||||
|
||||
if (!useUltraLightClasses) return null
|
||||
|
||||
if (files.any { it.isScript() }) return null
|
||||
if (!canCreateUltraLightClassForFacade(files)) return null
|
||||
|
||||
val filesToSupports: List<Pair<KtFile, KtUltraLightSupport>> = files.map {
|
||||
it to getUltraLightClassSupport(it)
|
||||
|
||||
+2
-2
@@ -233,7 +233,7 @@ open class KtLightClassForFacadeImpl constructor(
|
||||
fun createForFacadeNoCache(fqName: FqName, searchScope: GlobalSearchScope, project: Project): KtLightClassForFacade? {
|
||||
|
||||
val sources = KotlinAsJavaSupport.getInstance(project).findFilesForFacade(fqName, searchScope)
|
||||
.filterNot { it.isCompiled }
|
||||
.filterNot { it.isCompiled || it.isScript() }
|
||||
|
||||
if (sources.isEmpty()) return null
|
||||
|
||||
@@ -244,7 +244,7 @@ open class KtLightClassForFacadeImpl constructor(
|
||||
val manager = PsiManager.getInstance(project)
|
||||
|
||||
return LightClassGenerationSupport.getInstance(project).run {
|
||||
if (useUltraLightClasses) createUltraLightClassForFacade(manager, fqName, stubValue, sources)
|
||||
if (canCreateUltraLightClassForFacade(sources)) createUltraLightClassForFacade(manager, fqName, stubValue, sources)
|
||||
?: error("Unable to create UL class for facade: $fqName for ${sources.joinToString { it.virtualFilePath }}")
|
||||
else KtLightClassForFacadeImpl(manager, fqName, stubValue, sources)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user