[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.
This commit is contained in:
+1
-2
@@ -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<Candidate>, discriminateAbstracts: Boolean): Set<Candidate> {
|
||||
val filteredCandidates = when {
|
||||
candidates.size > 1 && bodyResolveComponents.file.psi is KtCodeFragment -> filterCodeFragmentCandidates(candidates)
|
||||
candidates.size > 1 -> filterCodeFragmentCandidates(candidates)
|
||||
else -> candidates
|
||||
}
|
||||
|
||||
|
||||
-10
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user