From fa98945719add9c3d1416e350bfba92d2f7ec202 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 4 Sep 2023 22:20:28 +0900 Subject: [PATCH] [LL API] Remove KtCodeFragment-targeted conflict resolver from libraries Before, 'KtCodeFragment's were analyzed as a part of their context session. Now, a separate session is created for each code fragment, and the LLLibraryScopeAwareCallConflictResolverFactory registration moved there. --- .../LLLibraryScopeAwareConeCallConflictResolver.kt | 3 +-- .../level/api/fir/sessions/LLFirJvmSessionFactory.kt | 10 ---------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/resolver/LLLibraryScopeAwareConeCallConflictResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/resolver/LLLibraryScopeAwareConeCallConflictResolver.kt index 1d08b4e00ba..9d3c19daf65 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/resolver/LLLibraryScopeAwareConeCallConflictResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/resolver/LLLibraryScopeAwareConeCallConflictResolver.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.psi.KtCodeFragment import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator @@ -38,7 +37,7 @@ private class LLLibraryScopeAwareConeCallConflictResolver( ) : ConeCallConflictResolver() { override fun chooseMaximallySpecificCandidates(candidates: Set, discriminateAbstracts: Boolean): Set { val filteredCandidates = when { - candidates.size > 1 && bodyResolveComponents.file.psi is KtCodeFragment -> filterCodeFragmentCandidates(candidates) + candidates.size > 1 -> filterCodeFragmentCandidates(candidates) else -> candidates } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJvmSessionFactory.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJvmSessionFactory.kt index b9bd3dc3436..1c6a3987165 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJvmSessionFactory.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirJvmSessionFactory.kt @@ -9,18 +9,14 @@ import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.* import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.* -import org.jetbrains.kotlin.analysis.low.level.api.fir.resolver.LLLibraryScopeAwareCallConflictResolverFactory import org.jetbrains.kotlin.analysis.project.structure.* import org.jetbrains.kotlin.analysis.providers.createPackagePartProvider import org.jetbrains.kotlin.fir.BuiltinTypes -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.SessionConfiguration import org.jetbrains.kotlin.fir.backend.jvm.FirJvmTypeMapper import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider import org.jetbrains.kotlin.fir.java.JavaSymbolProvider import org.jetbrains.kotlin.fir.java.deserialization.OptionalAnnotationClassesProvider -import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory -import org.jetbrains.kotlin.fir.resolve.calls.callConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider @@ -73,7 +69,6 @@ internal class LLFirJvmSessionFactory(project: Project) : LLFirAbstractSessionFa ) register(JavaSymbolProvider::class, javaSymbolProvider) register(FirJvmTypeMapper::class, FirJvmTypeMapper(this)) - registerLibraryScopeAwareCallConflictResolverFactory() } } @@ -81,14 +76,9 @@ internal class LLFirJvmSessionFactory(project: Project) : LLFirAbstractSessionFa return doCreateBinaryLibrarySession(module) { registerJavaComponents(JavaModuleResolver.getInstance(project)) register(FirJvmTypeMapper::class, FirJvmTypeMapper(this)) - registerLibraryScopeAwareCallConflictResolverFactory() } } - private fun FirSession.registerLibraryScopeAwareCallConflictResolverFactory() { - register(ConeCallConflictResolverFactory::class, LLLibraryScopeAwareCallConflictResolverFactory(callConflictResolverFactory)) - } - override fun createProjectLibraryProvidersForScope( session: LLFirSession, moduleData: LLFirModuleData,