Drop obsolete logic related to obsolete package parts
Filtering out obsolete package parts in incremental compilation was necessary before the big refactoring of package parts, when package parts had been compiled together into a package class
This commit is contained in:
+2
-9
@@ -49,17 +49,10 @@ class IncrementalPackageFragmentProvider(
|
|||||||
val incrementalCache: IncrementalCache,
|
val incrementalCache: IncrementalCache,
|
||||||
val target: TargetId
|
val target: TargetId
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProvider {
|
||||||
|
|
||||||
companion object {
|
|
||||||
fun fqNamesToLoad(obsoletePackageParts: Collection<String>, sourceFiles: Collection<KtFile>): Set<FqName> =
|
|
||||||
(obsoletePackageParts.map { JvmClassName.byInternalName(it).packageFqName }
|
|
||||||
+ PackagePartClassUtils.getFilesWithCallables(sourceFiles).map { it.packageFqName }).toSet()
|
|
||||||
}
|
|
||||||
|
|
||||||
val obsoletePackageParts = incrementalCache.getObsoletePackageParts().toSet()
|
val obsoletePackageParts = incrementalCache.getObsoletePackageParts().toSet()
|
||||||
val fqNameToSubFqNames = MultiMap<FqName, FqName>()
|
val fqNameToSubFqNames = MultiMap<FqName, FqName>()
|
||||||
val fqNameToPackageFragment = HashMap<FqName, PackageFragmentDescriptor>()
|
val fqNameToPackageFragment = HashMap<FqName, PackageFragmentDescriptor>()
|
||||||
val fqNamesToLoad: Set<FqName> = fqNamesToLoad(obsoletePackageParts, sourceFiles)
|
val fqNamesToLoad: Set<FqName> = PackagePartClassUtils.getFilesWithCallables(sourceFiles).map { it.packageFqName }.toSet()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
fun createPackageFragment(fqName: FqName) {
|
fun createPackageFragment(fqName: FqName) {
|
||||||
@@ -76,7 +69,7 @@ class IncrementalPackageFragmentProvider(
|
|||||||
fqNameToPackageFragment[fqName] = IncrementalPackageFragment(fqName)
|
fqNameToPackageFragment[fqName] = IncrementalPackageFragment(fqName)
|
||||||
}
|
}
|
||||||
|
|
||||||
fqNamesToLoad.forEach { createPackageFragment(it) }
|
fqNamesToLoad.forEach(::createPackageFragment)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
|
|||||||
+5
-12
@@ -21,31 +21,24 @@ import org.jetbrains.kotlin.load.kotlin.ModuleMapping
|
|||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
||||||
import org.jetbrains.kotlin.modules.TargetId
|
import org.jetbrains.kotlin.modules.TargetId
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
|
|
||||||
internal class IncrementalPackagePartProvider private constructor(
|
internal class IncrementalPackagePartProvider private constructor(
|
||||||
private val parent: PackagePartProvider,
|
private val parent: PackagePartProvider,
|
||||||
sourceFiles: Collection<KtFile>,
|
|
||||||
incrementalCaches: List<IncrementalCache>,
|
incrementalCaches: List<IncrementalCache>,
|
||||||
storageManager: StorageManager
|
storageManager: StorageManager
|
||||||
) : PackagePartProvider {
|
) : PackagePartProvider {
|
||||||
private val moduleMappings = storageManager.createLazyValue { incrementalCaches.map { ModuleMapping.create(it.getModuleMappingData()) } }
|
private val moduleMappings = storageManager.createLazyValue { incrementalCaches.map { ModuleMapping.create(it.getModuleMappingData()) } }
|
||||||
private val fqNamesToIgnore =
|
|
||||||
incrementalCaches.flatMap { IncrementalPackageFragmentProvider.fqNamesToLoad(it.getObsoletePackageParts(), sourceFiles).map { it.asString() } }
|
|
||||||
|
|
||||||
override fun findPackageParts(packageFqName: String): List<String> {
|
override fun findPackageParts(packageFqName: String): List<String> {
|
||||||
val packagePartsFromParent = parent.findPackageParts(packageFqName)
|
return (moduleMappings().mapNotNull { it.findPackageParts(packageFqName) }.flatMap { it.parts } +
|
||||||
if (packageFqName in fqNamesToIgnore) return packagePartsFromParent
|
parent.findPackageParts(packageFqName)).distinct()
|
||||||
|
|
||||||
val packagePartsFromCompiled = moduleMappings().mapNotNull { it.findPackageParts(packageFqName) }.flatMap { it.parts }
|
|
||||||
return (packagePartsFromCompiled + packagePartsFromParent).distinct()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic fun create(
|
@JvmStatic
|
||||||
|
fun create(
|
||||||
parent: PackagePartProvider,
|
parent: PackagePartProvider,
|
||||||
sourceFiles: Collection<KtFile>,
|
|
||||||
targets: List<TargetId>?,
|
targets: List<TargetId>?,
|
||||||
incrementalCompilationComponents: IncrementalCompilationComponents?,
|
incrementalCompilationComponents: IncrementalCompilationComponents?,
|
||||||
storageManager: StorageManager
|
storageManager: StorageManager
|
||||||
@@ -53,7 +46,7 @@ internal class IncrementalPackagePartProvider private constructor(
|
|||||||
if (targets == null || incrementalCompilationComponents == null) return parent
|
if (targets == null || incrementalCompilationComponents == null) return parent
|
||||||
|
|
||||||
val incrementalCaches = targets.map { incrementalCompilationComponents.getIncrementalCache(it) }
|
val incrementalCaches = targets.map { incrementalCompilationComponents.getIncrementalCache(it) }
|
||||||
return IncrementalPackagePartProvider(parent, sourceFiles, incrementalCaches, storageManager)
|
return IncrementalPackagePartProvider(parent, incrementalCaches, storageManager)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -82,7 +82,7 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
FileBasedDeclarationProviderFactory(storageManager, files),
|
FileBasedDeclarationProviderFactory(storageManager, files),
|
||||||
GlobalSearchScope.allScope(project),
|
GlobalSearchScope.allScope(project),
|
||||||
lookupTracker,
|
lookupTracker,
|
||||||
IncrementalPackagePartProvider.create(packagePartProvider, files, targetIds, incrementalComponents, storageManager),
|
IncrementalPackagePartProvider.create(packagePartProvider, targetIds, incrementalComponents, storageManager),
|
||||||
configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT),
|
configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT),
|
||||||
ModuleClassResolverImpl(resolverByClass)
|
ModuleClassResolverImpl(resolverByClass)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user