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 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> {
@@ -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)
} }
} }
} }
@@ -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)
) )