FIR IDE: fix KtFirNonStarImportingScope
This commit is contained in:
committed by
Ilya Kirillov
parent
211544e790
commit
72a4687990
+1
-1
@@ -182,7 +182,7 @@ internal class KtFirScopeProvider(
|
|||||||
|
|
||||||
private fun convertToKtScope(firScope: FirScope): KtScope {
|
private fun convertToKtScope(firScope: FirScope): KtScope {
|
||||||
return when (firScope) {
|
return when (firScope) {
|
||||||
is FirAbstractSimpleImportingScope -> KtFirNonStarImportingScope(firScope, builder, token)
|
is FirAbstractSimpleImportingScope -> KtFirNonStarImportingScope(firScope, builder, token, analysisSession.rootModuleSession)
|
||||||
is FirAbstractStarImportingScope -> KtFirStarImportingScope(firScope, builder, project, token)
|
is FirAbstractStarImportingScope -> KtFirStarImportingScope(firScope, builder, project, token)
|
||||||
is FirPackageMemberScope -> KtFirPackageScope(
|
is FirPackageMemberScope -> KtFirPackageScope(
|
||||||
firScope.fqName,
|
firScope.fqName,
|
||||||
|
|||||||
+16
-8
@@ -5,26 +5,29 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.fir.scopes
|
package org.jetbrains.kotlin.analysis.api.fir.scopes
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractSimpleImportingScope
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultSimpleImportingScope
|
|
||||||
import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner
|
import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner
|
||||||
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
import org.jetbrains.kotlin.analysis.api.fir.utils.cached
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef
|
|
||||||
import org.jetbrains.kotlin.analysis.api.scopes.KtNonStarImportingScope
|
import org.jetbrains.kotlin.analysis.api.scopes.KtNonStarImportingScope
|
||||||
import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter
|
import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter
|
||||||
import org.jetbrains.kotlin.analysis.api.scopes.NonStarImport
|
import org.jetbrains.kotlin.analysis.api.scopes.NonStarImport
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
|
||||||
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractSimpleImportingScope
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultSimpleImportingScope
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal class KtFirNonStarImportingScope(
|
internal class KtFirNonStarImportingScope(
|
||||||
private val firScope : FirAbstractSimpleImportingScope,
|
private val firScope: FirAbstractSimpleImportingScope,
|
||||||
private val builder: KtSymbolByFirBuilder,
|
private val builder: KtSymbolByFirBuilder,
|
||||||
override val token: ValidityToken
|
override val token: ValidityToken,
|
||||||
|
private val firSession: FirSession
|
||||||
) : KtNonStarImportingScope, ValidityTokenOwner {
|
) : KtNonStarImportingScope, ValidityTokenOwner {
|
||||||
|
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
@@ -32,10 +35,15 @@ internal class KtFirNonStarImportingScope(
|
|||||||
buildList {
|
buildList {
|
||||||
firScope.simpleImports.values.forEach { imports ->
|
firScope.simpleImports.values.forEach { imports ->
|
||||||
imports.forEach { import ->
|
imports.forEach { import ->
|
||||||
|
val importedClassId = import.importedName?.let { importedName ->
|
||||||
|
val importedClassId =
|
||||||
|
import.resolvedParentClassId?.createNestedClassId(importedName) ?: ClassId(import.packageFqName, importedName)
|
||||||
|
importedClassId.takeIf { firSession.symbolProvider.getClassLikeSymbolByClassId(it) != null }
|
||||||
|
}
|
||||||
NonStarImport(
|
NonStarImport(
|
||||||
import.packageFqName,
|
import.packageFqName,
|
||||||
import.relativeParentClassName,
|
importedClassId?.relativeClassName,
|
||||||
import.resolvedParentClassId,
|
importedClassId,
|
||||||
import.importedName
|
import.importedName
|
||||||
).let(::add)
|
).let(::add)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user