LL API: fix KtPackageProvider package existent checks for tests

Before it was not able to check nested packages for existence

Also, implement unimplemented getKotlinSubPackageFqNames
This commit is contained in:
Ilya Kirillov
2021-07-21 17:09:50 +02:00
committed by teamcityserver
parent 4fe240d1b4
commit 7ba8e7d1d3
@@ -15,13 +15,26 @@ internal class KtPackageProviderTestImpl(
scope: GlobalSearchScope,
files: Collection<KtFile>
) : KtPackageProvider() {
private val filesInScope = files.filter { scope.contains(it.virtualFile) }
private val packageToSubPackageNames: Map<FqName, Set<Name>> = run {
val filesInScope = files.filter { scope.contains(it.virtualFile) }
val packages = mutableMapOf<FqName, MutableSet<Name>>()
filesInScope.forEach { file ->
var currentPackage = FqName.ROOT
for (subPackage in file.packageFqName.pathSegments()) {
packages.getOrPut(currentPackage) { mutableSetOf() } += subPackage
currentPackage = currentPackage.child(subPackage)
}
packages.computeIfAbsent(currentPackage) { mutableSetOf() }
}
packages
}
override fun isPackageExists(packageFqName: FqName): Boolean {
return filesInScope.any { it.packageFqName == packageFqName }
return packageFqName in packageToSubPackageNames
}
override fun getKotlinSubPackageFqNames(packageFqName: FqName): Set<Name> {
TODO("Not yet implemented")
return packageToSubPackageNames[packageFqName] ?: emptySet()
}
}