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:
Alexander Udalov
2016-09-29 12:57:40 +03:00
parent 610c549225
commit 74ad6b1410
3 changed files with 8 additions and 22 deletions
@@ -49,17 +49,10 @@ class IncrementalPackageFragmentProvider(
val incrementalCache: IncrementalCache,
val target: TargetId
) : 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 fqNameToSubFqNames = MultiMap<FqName, FqName>()
val fqNameToPackageFragment = HashMap<FqName, PackageFragmentDescriptor>()
val fqNamesToLoad: Set<FqName> = fqNamesToLoad(obsoletePackageParts, sourceFiles)
val fqNamesToLoad: Set<FqName> = PackagePartClassUtils.getFilesWithCallables(sourceFiles).map { it.packageFqName }.toSet()
init {
fun createPackageFragment(fqName: FqName) {
@@ -76,7 +69,7 @@ class IncrementalPackageFragmentProvider(
fqNameToPackageFragment[fqName] = IncrementalPackageFragment(fqName)
}
fqNamesToLoad.forEach { createPackageFragment(it) }
fqNamesToLoad.forEach(::createPackageFragment)
}
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
@@ -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.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.storage.StorageManager
internal class IncrementalPackagePartProvider private constructor(
private val parent: PackagePartProvider,
sourceFiles: Collection<KtFile>,
incrementalCaches: List<IncrementalCache>,
storageManager: StorageManager
) : PackagePartProvider {
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> {
val packagePartsFromParent = parent.findPackageParts(packageFqName)
if (packageFqName in fqNamesToIgnore) return packagePartsFromParent
val packagePartsFromCompiled = moduleMappings().mapNotNull { it.findPackageParts(packageFqName) }.flatMap { it.parts }
return (packagePartsFromCompiled + packagePartsFromParent).distinct()
return (moduleMappings().mapNotNull { it.findPackageParts(packageFqName) }.flatMap { it.parts } +
parent.findPackageParts(packageFqName)).distinct()
}
companion object {
@JvmStatic fun create(
@JvmStatic
fun create(
parent: PackagePartProvider,
sourceFiles: Collection<KtFile>,
targets: List<TargetId>?,
incrementalCompilationComponents: IncrementalCompilationComponents?,
storageManager: StorageManager
@@ -53,7 +46,7 @@ internal class IncrementalPackagePartProvider private constructor(
if (targets == null || incrementalCompilationComponents == null) return parent
val incrementalCaches = targets.map { incrementalCompilationComponents.getIncrementalCache(it) }
return IncrementalPackagePartProvider(parent, sourceFiles, incrementalCaches, storageManager)
return IncrementalPackagePartProvider(parent, incrementalCaches, storageManager)
}
}
}
@@ -82,7 +82,7 @@ object TopDownAnalyzerFacadeForJVM {
FileBasedDeclarationProviderFactory(storageManager, files),
GlobalSearchScope.allScope(project),
lookupTracker,
IncrementalPackagePartProvider.create(packagePartProvider, files, targetIds, incrementalComponents, storageManager),
IncrementalPackagePartProvider.create(packagePartProvider, targetIds, incrementalComponents, storageManager),
configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT),
ModuleClassResolverImpl(resolverByClass)
)