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)
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
|
||||
// NOT_GENERATED
|
||||
@@ -0,0 +1 @@
|
||||
// NOT_GENERATED
|
||||
@@ -0,0 +1 @@
|
||||
println("Hello, I'm in <root> package")
|
||||
@@ -14,7 +14,7 @@ import java.util.regex.Pattern
|
||||
|
||||
object LightClassTestCommon {
|
||||
private val SUBJECT_FQ_NAME_PATTERN = Pattern.compile("^//\\s*(.*)$", Pattern.MULTILINE)
|
||||
private const val NOT_GENERATED_DIRECTIVE = "// NOT_GENERATED"
|
||||
const val NOT_GENERATED_DIRECTIVE = "// NOT_GENERATED"
|
||||
|
||||
fun getActualLightClassText(
|
||||
testDataFile: File,
|
||||
|
||||
Reference in New Issue
Block a user