KT-61728 [LL API] Use ContextCollector in AllCandidatesResolver
Fix testdata for builder inference test in resolve tests - now it's the same between K1 and K2
This commit is contained in:
committed by
Space Team
parent
ce371df5f6
commit
23363ef1bd
-43
@@ -1,43 +0,0 @@
|
|||||||
KtApplicableCallCandidateInfo:
|
|
||||||
candidate = KtSimpleFunctionCall:
|
|
||||||
isImplicitInvoke = false
|
|
||||||
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
|
|
||||||
dispatchReceiver = KtImplicitReceiverValue:
|
|
||||||
symbol = KtReceiverParameterSymbol:
|
|
||||||
annotationsList: []
|
|
||||||
origin: SOURCE
|
|
||||||
owningCallableSymbol: KtAnonymousFunctionSymbol(<local>/<no name provided>)
|
|
||||||
type: KtUsualClassType:
|
|
||||||
annotationsList: []
|
|
||||||
ownTypeArguments: [
|
|
||||||
KtUsualClassType:
|
|
||||||
annotationsList: []
|
|
||||||
ownTypeArguments: []
|
|
||||||
type: kotlin/String
|
|
||||||
]
|
|
||||||
type: test/Target<kotlin/String>
|
|
||||||
type = test.Target<kotlin.String>
|
|
||||||
extensionReceiver = null
|
|
||||||
signature = KtFunctionLikeSignature:
|
|
||||||
receiverType = null
|
|
||||||
returnType = kotlin.Unit
|
|
||||||
symbol = test/Target.add(<dispatch receiver>: test.Target<T>, t: T): kotlin.Unit
|
|
||||||
valueParameters = [
|
|
||||||
KtVariableLikeSignature:
|
|
||||||
name = t
|
|
||||||
receiverType = null
|
|
||||||
returnType = kotlin.String
|
|
||||||
symbol = t: T
|
|
||||||
callableIdIfNonLocal = null
|
|
||||||
]
|
|
||||||
callableIdIfNonLocal = test/Target.add
|
|
||||||
typeArgumentsMapping = {}
|
|
||||||
argumentMapping = {
|
|
||||||
s -> (KtVariableLikeSignature:
|
|
||||||
name = t
|
|
||||||
receiverType = null
|
|
||||||
returnType = kotlin.String
|
|
||||||
symbol = t: T
|
|
||||||
callableIdIfNonLocal = null)
|
|
||||||
}
|
|
||||||
isInBestCandidates = true
|
|
||||||
+3
-3
@@ -16,7 +16,7 @@ KtApplicableCallCandidateInfo:
|
|||||||
type: kotlin/String
|
type: kotlin/String
|
||||||
]
|
]
|
||||||
type: test/Target<kotlin/String>
|
type: test/Target<kotlin/String>
|
||||||
type = test.Target<Stub (chain inference): TypeVariable(T)>
|
type = test.Target<kotlin.String>
|
||||||
extensionReceiver = null
|
extensionReceiver = null
|
||||||
signature = KtFunctionLikeSignature:
|
signature = KtFunctionLikeSignature:
|
||||||
receiverType = null
|
receiverType = null
|
||||||
@@ -26,7 +26,7 @@ KtApplicableCallCandidateInfo:
|
|||||||
KtVariableLikeSignature:
|
KtVariableLikeSignature:
|
||||||
name = t
|
name = t
|
||||||
receiverType = null
|
receiverType = null
|
||||||
returnType = T
|
returnType = kotlin.String
|
||||||
symbol = t: T
|
symbol = t: T
|
||||||
callableIdIfNonLocal = null
|
callableIdIfNonLocal = null
|
||||||
]
|
]
|
||||||
@@ -36,7 +36,7 @@ KtApplicableCallCandidateInfo:
|
|||||||
s -> (KtVariableLikeSignature:
|
s -> (KtVariableLikeSignature:
|
||||||
name = t
|
name = t
|
||||||
receiverType = null
|
receiverType = null
|
||||||
returnType = T
|
returnType = kotlin.String
|
||||||
symbol = t: T
|
symbol = t: T
|
||||||
callableIdIfNonLocal = null)
|
callableIdIfNonLocal = null)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.resolver
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbol
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.resolveToFirSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.parentsOfType
|
import org.jetbrains.kotlin.analysis.utils.printer.parentsOfType
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.calleeReference
|
import org.jetbrains.kotlin.fir.expressions.calleeReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.InapplicableCandidate
|
import org.jetbrains.kotlin.fir.resolve.calls.InapplicableCandidate
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.tower.FirTowerResolver
|
import org.jetbrains.kotlin.fir.resolve.calls.tower.FirTowerResolver
|
||||||
@@ -95,8 +97,10 @@ class AllCandidatesResolver(private val firSession: FirSession) {
|
|||||||
|
|
||||||
@OptIn(PrivateForInline::class, SymbolInternals::class)
|
@OptIn(PrivateForInline::class, SymbolInternals::class)
|
||||||
private fun initializeBodyResolveContext(firResolveSession: LLFirResolveSession, element: KtElement) {
|
private fun initializeBodyResolveContext(firResolveSession: LLFirResolveSession, element: KtElement) {
|
||||||
|
val firFile = element.containingKtFile.getOrBuildFirFile(firResolveSession)
|
||||||
|
|
||||||
// Set up needed context to get all candidates.
|
// Set up needed context to get all candidates.
|
||||||
val towerContext = firResolveSession.getTowerContextProvider(element.containingKtFile).getClosestAvailableParentContext(element)
|
val towerContext = ContextCollector.process(firFile, bodyResolveComponents, element)?.towerDataContext
|
||||||
towerContext?.let { bodyResolveComponents.context.replaceTowerDataContext(it) }
|
towerContext?.let { bodyResolveComponents.context.replaceTowerDataContext(it) }
|
||||||
val containingDeclarations =
|
val containingDeclarations =
|
||||||
element.parentsOfType<KtDeclaration>().map { it.resolveToFirSymbol(firResolveSession).fir }.toList().asReversed()
|
element.parentsOfType<KtDeclaration>().map { it.resolveToFirSymbol(firResolveSession).fir }.toList().asReversed()
|
||||||
@@ -104,7 +108,6 @@ class AllCandidatesResolver(private val firSession: FirSession) {
|
|||||||
|
|
||||||
// `towerContext` from above should already contain all the scopes for the file,
|
// `towerContext` from above should already contain all the scopes for the file,
|
||||||
// so we just set it manually without calling `withFile`
|
// so we just set it manually without calling `withFile`
|
||||||
val firFile = element.containingKtFile.getOrBuildFirFile(firResolveSession)
|
|
||||||
bodyResolveComponents.context.file = firFile
|
bodyResolveComponents.context.file = firFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user