Move PackageIndexHelper to KtFirStarImportingScope.kt
This commit is contained in:
committed by
Ilya Kirillov
parent
d2fbd8e338
commit
b90503decb
+1
-26
@@ -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<KtType>): 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<Name> {
|
||||
return getTopLevelCallables(packageFqName).mapTo(mutableSetOf()) { it.nameAsSafeName }
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun getTopLevelCallables(packageFqName: FqName): List<KtCallableDeclaration> = buildList {
|
||||
addAll(functionByPackageIndex.get(packageFqName.asString(), project, searchScope))
|
||||
addAll(propertyByPackageIndex.get(packageFqName.asString(), project, searchScope))
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
-1
@@ -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<Name> {
|
||||
return getTopLevelCallables(packageFqName).mapTo(mutableSetOf()) { it.nameAsSafeName }
|
||||
}
|
||||
|
||||
private fun getTopLevelCallables(packageFqName: FqName): Sequence<KtCallableDeclaration> = sequence<KtCallableDeclaration> {
|
||||
yieldAll(functionByPackageIndex.get(packageFqName.asString(), project, searchScope))
|
||||
yieldAll(propertyByPackageIndex.get(packageFqName.asString(), project, searchScope))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user