[LL API] Pass contextual modules to 'KotlinDeclarationProvider' factory

^KT-57559 Fixed
This commit is contained in:
Yan Zhulanow
2023-04-18 17:26:43 +09:00
committed by Space Team
parent e9c077220f
commit d3cb41cbab
8 changed files with 26 additions and 23 deletions
@@ -40,25 +40,25 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun findClassOrObjectDeclarationsInPackage(
packageFqName: FqName,
searchScope: GlobalSearchScope
): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope).run {
): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope, module = null).run {
getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName).flatMap {
getAllClassesByClassId(ClassId.topLevel(packageFqName.child(it)))
}
}
override fun findFilesForPackage(packageFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> = buildSet {
addAll(project.createDeclarationProvider(searchScope).findFilesForFacadeByPackage(packageFqName))
addAll(project.createDeclarationProvider(searchScope, module = null).findFilesForFacadeByPackage(packageFqName))
findClassOrObjectDeclarationsInPackage(packageFqName, searchScope).mapTo(this) {
it.containingKtFile
}
}
override fun findFilesForFacadeByPackage(packageFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> {
return project.createDeclarationProvider(searchScope).findFilesForFacadeByPackage(packageFqName)
return project.createDeclarationProvider(searchScope, module = null).findFilesForFacadeByPackage(packageFqName)
}
override fun findFilesForScript(scriptFqName: FqName, searchScope: GlobalSearchScope): Collection<KtScript> {
return project.createDeclarationProvider(searchScope).findFilesForScript(scriptFqName)
return project.createDeclarationProvider(searchScope, module = null).findFilesForScript(scriptFqName)
}
private fun FqName.toClassIdSequence(): Sequence<ClassId> {
@@ -80,9 +80,9 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection<KtClassOrObject> =
fqName.toClassIdSequence().flatMap {
project.createDeclarationProvider(searchScope).getAllClassesByClassId(it)
project.createDeclarationProvider(searchScope, module = null).getAllClassesByClassId(it)
}
.filter { it.isFromSourceOrLibraryBinary(project) }
.filter { it.isFromSourceOrLibraryBinary() }
.toSet()
override fun packageExists(fqName: FqName, scope: GlobalSearchScope): Boolean =
@@ -146,7 +146,7 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun facadeIsApplicable(module: KtModule, file: KtFile): Boolean = module.isFromSourceOrLibraryBinary()
override fun getKotlinInternalClasses(fqName: FqName, scope: GlobalSearchScope): Collection<PsiClass> {
val facadeKtFiles = project.createDeclarationProvider(scope).findInternalFilesForFacade(fqName)
val facadeKtFiles = project.createDeclarationProvider(scope, null).findInternalFilesForFacade(fqName)
if (facadeKtFiles.isEmpty()) return emptyList()
val partShortName = fqName.shortName().asString()
@@ -171,7 +171,7 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
}
override fun findFilesForFacade(facadeFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> {
return project.createDeclarationProvider(searchScope).findFilesForFacade(facadeFqName)
return project.createDeclarationProvider(searchScope, module = null).findFilesForFacade(facadeFqName)
}
override fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass = SymbolBasedFakeLightClass(classOrObject)