[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 = public fun Project.mergeDeclarationProviders(declarationProviders: List<KotlinDeclarationProvider>): KotlinDeclarationProvider =
KotlinDeclarationProviderMerger.getInstance(this).merge(declarationProviders) KotlinDeclarationProviderMerger.getInstance(this).merge(declarationProviders)
@@ -378,7 +378,7 @@ public class KotlinStaticDeclarationProviderMerger(private val project: Project)
override fun merge(providers: List<KotlinDeclarationProvider>): KotlinDeclarationProvider = override fun merge(providers: List<KotlinDeclarationProvider>): KotlinDeclarationProvider =
providers.mergeSpecificProviders<_, KotlinStaticDeclarationProvider>(CompositeKotlinDeclarationProvider.factory) { targetProviders -> providers.mergeSpecificProviders<_, KotlinStaticDeclarationProvider>(CompositeKotlinDeclarationProvider.factory) { targetProviders ->
val combinedScope = GlobalSearchScope.union(targetProviders.map { it.scope }) val combinedScope = GlobalSearchScope.union(targetProviders.map { it.scope })
project.createDeclarationProvider(combinedScope, module = null).apply { project.createDeclarationProvider(combinedScope, contextualModule = null).apply {
check(this is KotlinStaticDeclarationProvider) { check(this is KotlinStaticDeclarationProvider) {
"`KotlinStaticDeclarationProvider` can only be merged into a combined declaration provider of the same type." "`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( override fun findClassOrObjectDeclarationsInPackage(
packageFqName: FqName, packageFqName: FqName,
searchScope: GlobalSearchScope searchScope: GlobalSearchScope
): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope, module = null).run { ): Collection<KtClassOrObject> = project.createDeclarationProvider(searchScope, contextualModule = null).run {
getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName).flatMap { getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName).flatMap {
getAllClassesByClassId(ClassId.topLevel(packageFqName.child(it))) getAllClassesByClassId(ClassId.topLevel(packageFqName.child(it)))
} }
} }
override fun findFilesForPackage(packageFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> = buildSet { 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) { findClassOrObjectDeclarationsInPackage(packageFqName, searchScope).mapTo(this) {
it.containingKtFile it.containingKtFile
} }
} }
override fun findFilesForFacadeByPackage(packageFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> { 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> { 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> { 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> = override fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection<KtClassOrObject> =
fqName.toClassIdSequence().flatMap { fqName.toClassIdSequence().flatMap {
project.createDeclarationProvider(searchScope, module = null).getAllClassesByClassId(it) project.createDeclarationProvider(searchScope, contextualModule = null).getAllClassesByClassId(it)
} }
.filter { it.isFromSourceOrLibraryBinary() } .filter { it.isFromSourceOrLibraryBinary() }
.toSet() .toSet()
@@ -175,7 +175,7 @@ class SymbolKotlinAsJavaSupport(project: Project) : KotlinAsJavaSupportBase<KtMo
} }
override fun findFilesForFacade(facadeFqName: FqName, searchScope: GlobalSearchScope): Collection<KtFile> { 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) override fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass = SymbolBasedFakeLightClass(classOrObject)