diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt index 52a58bf8e53..f8040e813d4 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt @@ -7,9 +7,7 @@ package org.jetbrains.kotlin.idea.completion import com.intellij.codeInsight.completion.* import com.intellij.codeInsight.lookup.LookupElementBuilder -import com.intellij.openapi.project.Project import com.intellij.patterns.PlatformPatterns -import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.ProcessingContext import org.jetbrains.kotlin.idea.frontend.api.getAnalysisSessionFor import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol @@ -18,11 +16,6 @@ import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPossibleExtensionSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.isExtension import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionByPackageIndex -import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelPropertyByPackageIndex -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtCallableDeclaration import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression @@ -87,22 +80,4 @@ private fun KtCallableSymbol.canBeCalledWith(implicitReceivers: List): B val requiredReceiverType = receiverType ?: error("Receiver type should be present") return implicitReceivers.any { it.isSubTypeOf(requiredReceiverType) } -} - -class PackageIndexHelper(private val project: Project) { - //todo use more concrete scope - private val searchScope = GlobalSearchScope.allScope(project) - - private val functionByPackageIndex = KotlinTopLevelFunctionByPackageIndex.getInstance() - private val propertyByPackageIndex = KotlinTopLevelPropertyByPackageIndex.getInstance() - - fun getPackageTopLevelNames(packageFqName: FqName): Set { - return getTopLevelCallables(packageFqName).mapTo(mutableSetOf()) { it.nameAsSafeName } - } - - @OptIn(ExperimentalStdlibApi::class) - private fun getTopLevelCallables(packageFqName: FqName): List = buildList { - addAll(functionByPackageIndex.get(packageFqName.asString(), project, searchScope)) - addAll(propertyByPackageIndex.get(packageFqName.asString(), project, searchScope)) - } -} +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirStarImportingScope.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirStarImportingScope.kt index ad28a6c0f8f..df2bc2d994b 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirStarImportingScope.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirStarImportingScope.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.scopes import com.intellij.openapi.project.Project +import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractStarImportingScope import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultStarImportingScope -import org.jetbrains.kotlin.idea.completion.PackageIndexHelper import org.jetbrains.kotlin.idea.frontend.api.ValidityOwner import org.jetbrains.kotlin.idea.frontend.api.ValidityOwnerByValidityToken import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder @@ -17,7 +17,11 @@ import org.jetbrains.kotlin.idea.frontend.api.scopes.Import import org.jetbrains.kotlin.idea.frontend.api.scopes.KtStarImportingScope import org.jetbrains.kotlin.idea.frontend.api.scopes.StarImport import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion +import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionByPackageIndex +import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelPropertyByPackageIndex +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.KtCallableDeclaration internal class KtFirStarImportingScope( firScope: FirAbstractStarImportingScope, @@ -58,3 +62,20 @@ internal class KtFirStarImportingScope( } } + +private class PackageIndexHelper(private val project: Project) { + //todo use more concrete scope + private val searchScope = GlobalSearchScope.allScope(project) + + private val functionByPackageIndex = KotlinTopLevelFunctionByPackageIndex.getInstance() + private val propertyByPackageIndex = KotlinTopLevelPropertyByPackageIndex.getInstance() + + fun getPackageTopLevelNames(packageFqName: FqName): Set { + return getTopLevelCallables(packageFqName).mapTo(mutableSetOf()) { it.nameAsSafeName } + } + + private fun getTopLevelCallables(packageFqName: FqName): Sequence = sequence { + yieldAll(functionByPackageIndex.get(packageFqName.asString(), project, searchScope)) + yieldAll(propertyByPackageIndex.get(packageFqName.asString(), project, searchScope)) + } +} \ No newline at end of file