diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/KtPackageProviderTestImpl.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/KtPackageProviderTestImpl.kt index 59d9bab569d..48caefb97b5 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/KtPackageProviderTestImpl.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/test/base/KtPackageProviderTestImpl.kt @@ -15,13 +15,26 @@ internal class KtPackageProviderTestImpl( scope: GlobalSearchScope, files: Collection ) : KtPackageProvider() { - private val filesInScope = files.filter { scope.contains(it.virtualFile) } + + private val packageToSubPackageNames: Map> = run { + val filesInScope = files.filter { scope.contains(it.virtualFile) } + val packages = mutableMapOf>() + 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 { - TODO("Not yet implemented") + return packageToSubPackageNames[packageFqName] ?: emptySet() } } \ No newline at end of file