[Analysis API FIR] use narrower scope for KtFirStarImportingScope
This commit is contained in:
+5
@@ -19,6 +19,8 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LowLevelFirApiFacadeForResolveOnAir
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinDeclarationProvider
|
||||
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
@@ -138,6 +140,9 @@ private constructor(
|
||||
internal val firSymbolProvider: FirSymbolProvider get() = useSiteSession.symbolProvider
|
||||
internal val targetPlatform: TargetPlatform get() = useSiteSession.moduleData.platform
|
||||
|
||||
internal val useSiteScopeDeclarationProvider: KotlinDeclarationProvider =
|
||||
project.createDeclarationProvider(analysisScopeProviderImpl.getAnalysisScope())
|
||||
|
||||
fun getScopeSessionFor(session: FirSession): ScopeSession = withValidityAssertion { firResolveSession.getScopeSessionFor(session) }
|
||||
|
||||
companion object {
|
||||
|
||||
+1
-1
@@ -231,7 +231,7 @@ internal class KtFirScopeProvider(
|
||||
private fun convertToKtScope(firScope: FirScope): KtScope {
|
||||
return when (firScope) {
|
||||
is FirAbstractSimpleImportingScope -> KtFirNonStarImportingScope(firScope, builder, token)
|
||||
is FirAbstractStarImportingScope -> KtFirStarImportingScope(firScope, builder, project, token)
|
||||
is FirAbstractStarImportingScope -> KtFirStarImportingScope(firScope, builder, analysisSession.useSiteScopeDeclarationProvider, token)
|
||||
is FirPackageMemberScope -> KtFirPackageScope(
|
||||
firScope.fqName,
|
||||
project,
|
||||
|
||||
+4
-8
@@ -5,30 +5,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.scopes
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.api.scopes.KtScope
|
||||
import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinDeclarationProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractStarImportingScope
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
internal class KtFirStarImportingScope(
|
||||
private val firScope: FirAbstractStarImportingScope,
|
||||
private val builder: KtSymbolByFirBuilder,
|
||||
project: Project,
|
||||
private val declarationProvider: KotlinDeclarationProvider,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtScope {
|
||||
//todo use more concrete scope
|
||||
private val declarationProvider = project.createDeclarationProvider(GlobalSearchScope.allScope(project))
|
||||
|
||||
private val imports: List<StarImport> by cached {
|
||||
firScope.starImports.map { import ->
|
||||
|
||||
Reference in New Issue
Block a user