From fa89aa0b495a9222073b26186cca04868059ca88 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 9 Dec 2019 16:41:44 +0300 Subject: [PATCH] Do not use member scope provider from FIR resolution API In this commit we build self importing scope from scratch. Using member scope provider is probably incorrect because of possible changes. At any invalidation we should rebuild it. --- .../src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt index 95befbd781a..8ec0835d823 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.resolve.ResolutionMode import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.runResolve import org.jetbrains.kotlin.fir.scopes.ProcessorAction -import org.jetbrains.kotlin.fir.scopes.impl.selfImportingScope +import org.jetbrains.kotlin.fir.scopes.impl.FirSelfImportingScope import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.types.FirErrorTypeRef @@ -43,8 +43,9 @@ private fun FirFile.findCallableMember( provider: FirProvider, callableMember: KtCallableDeclaration, packageFqName: FqName, klassFqName: FqName?, declName: Name ): FirCallableDeclaration<*> { + // NB: not sure it's correct to use member scope provider from here (because of possible changes) val memberScope = - if (klassFqName == null) selfImportingScope(this.packageFqName, session) + if (klassFqName == null) FirSelfImportingScope(this.packageFqName, session) else provider.getClassDeclaredMemberScope(ClassId(packageFqName, klassFqName, false))!! var result: FirCallableDeclaration<*>? = null val processor = { symbol: FirCallableSymbol<*> -> @@ -66,7 +67,6 @@ private fun FirFile.findCallableMember( ?: error("Cannot find FIR callable declaration ${CallableId(packageFqName, klassFqName, declName)}") } -// NB: at this moment it crashes with ISE when called on local declaration fun KtCallableDeclaration.getOrBuildFir( state: FirResolveState, phase: FirResolvePhase = FirResolvePhase.DECLARATIONS