[AA] createDeclarationProvider: Rename module to contextualModule

^KTIJ-27411
This commit is contained in:
Marco Pennekamp
2023-10-16 20:15:01 +02:00
committed by Space Team
parent a77349edb4
commit 2ec77822e2
3 changed files with 17 additions and 9 deletions
@@ -74,8 +74,16 @@ public abstract class KotlinDeclarationProviderMerger : KotlinComposableProvider
}
}
public fun Project.createDeclarationProvider(scope: GlobalSearchScope, module: KtModule?): KotlinDeclarationProvider =
KotlinDeclarationProviderFactory.getInstance(this).createDeclarationProvider(scope, module)
/**
* Creates a [KotlinDeclarationProvider] providing symbols within the given [scope] in the context of the given [contextualModule].
*
* The contextual module is the [KtModule]
*
* TODO (marco): Document that `contextualModule` may also be used as a base for calculating the "package name set", in addition to outsider
* module stuff. (Not sure how deep into detail we should go here, since it's an implementation detail.)
*/
public fun Project.createDeclarationProvider(scope: GlobalSearchScope, contextualModule: KtModule?): KotlinDeclarationProvider =
KotlinDeclarationProviderFactory.getInstance(this).createDeclarationProvider(scope, contextualModule)
public fun Project.mergeDeclarationProviders(declarationProviders: List<KotlinDeclarationProvider>): KotlinDeclarationProvider =
KotlinDeclarationProviderMerger.getInstance(this).merge(declarationProviders)
@@ -378,7 +378,7 @@ public class KotlinStaticDeclarationProviderMerger(private val project: Project)
override fun merge(providers: List<KotlinDeclarationProvider>): KotlinDeclarationProvider =
providers.mergeSpecificProviders<_, KotlinStaticDeclarationProvider>(CompositeKotlinDeclarationProvider.factory) { targetProviders ->
val combinedScope = GlobalSearchScope.union(targetProviders.map { it.scope })
project.createDeclarationProvider(combinedScope, module = null).apply {
project.createDeclarationProvider(combinedScope, contextualModule = null).apply {
check(this is KotlinStaticDeclarationProvider) {
"`KotlinStaticDeclarationProvider` can only be merged into a combined declaration provider of the same type."
}
@@ -47,25 +47,25 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun findClassOrObjectDeclarationsInPackage(
packageFqName: FqName,
searchScope: GlobalSearchScope
): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope, module = null).run {
): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope, contextualModule = 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, module = null).findFilesForFacadeByPackage(packageFqName))
addAll(project.createDeclarationProvider(searchScope, contextualModule = null).findFilesForFacadeByPackage(packageFqName))
findClassOrObjectDeclarationsInPackage(packageFqName, searchScope).mapTo(this) {
it.containingKtFile
}
}
override fun findFilesForFacadeByPackage(packageFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> {
return project.createDeclarationProvider(searchScope, module = null).findFilesForFacadeByPackage(packageFqName)
return project.createDeclarationProvider(searchScope, contextualModule = null).findFilesForFacadeByPackage(packageFqName)
}
override fun findFilesForScript(scriptFqName: FqName, searchScope: GlobalSearchScope): Collection<KtScript> {
return project.createDeclarationProvider(searchScope, module = null).findFilesForScript(scriptFqName)
return project.createDeclarationProvider(searchScope, contextualModule = null).findFilesForScript(scriptFqName)
}
private fun FqName.toClassIdSequence(): Sequence<ClassId> {
@@ -87,7 +87,7 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
override fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection<KtClassOrObject> =
fqName.toClassIdSequence().flatMap {
project.createDeclarationProvider(searchScope, module = null).getAllClassesByClassId(it)
project.createDeclarationProvider(searchScope, contextualModule = null).getAllClassesByClassId(it)
}
.filter { it.isFromSourceOrLibraryBinary() }
.toSet()
@@ -175,7 +175,7 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
}
override fun findFilesForFacade(facadeFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> {
return project.createDeclarationProvider(searchScope, module = null).findFilesForFacade(facadeFqName)
return project.createDeclarationProvider(searchScope, contextualModule = null).findFilesForFacade(facadeFqName)
}
override fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass = SymbolBasedFakeLightClass(classOrObject)