FIR: introduce BodyResolveContext.storeCallableReferenceContext

This commit is contained in:
Mikhail Glukhikh
2021-03-10 19:09:49 +03:00
parent 8b7b15f02b
commit cbf38b119c
3 changed files with 11 additions and 3 deletions
@@ -74,7 +74,7 @@ class PostponedArgumentsAnalyzer(
val callableReferenceAccess = atom.reference
atom.analyzed = true
resolutionContext.bodyResolveContext.towerDataContextForCallableReferences.remove(callableReferenceAccess)
resolutionContext.bodyResolveContext.dropCallableReferenceContext(callableReferenceAccess)
val (resultingCandidate, applicability) = atom.resultingCandidate
?: Pair(null, CandidateApplicability.INAPPLICABLE)
@@ -66,7 +66,7 @@ class BodyResolveContext(
val towerDataContextForAnonymousFunctions: MutableMap<FirAnonymousFunctionSymbol, FirTowerDataContext>
get() = towerDataContextsForClassParts.towerDataContextForAnonymousFunctions
val towerDataContextForCallableReferences: MutableMap<FirCallableReferenceAccess, FirTowerDataContext>
private val towerDataContextForCallableReferences: MutableMap<FirCallableReferenceAccess, FirTowerDataContext>
get() = towerDataContextsForClassParts.towerDataContextForCallableReferences
@set:PrivateForInline
@@ -651,4 +651,12 @@ class BodyResolveContext(
fun buildSecondaryConstructorParametersScope(constructor: FirConstructor): FirLocalScope =
constructor.valueParameters.fold(FirLocalScope()) { acc, param -> acc.storeVariable(param) }
fun storeCallableReferenceContext(callableReferenceAccess: FirCallableReferenceAccess) {
towerDataContextForCallableReferences[callableReferenceAccess] = towerDataContext
}
fun dropCallableReferenceContext(callableReferenceAccess: FirCallableReferenceAccess) {
towerDataContextForCallableReferences.remove(callableReferenceAccess)
}
}
@@ -688,7 +688,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
return resolvedReference.compose()
}
context.towerDataContextForCallableReferences[callableReferenceAccess] = context.towerDataContext
context.storeCallableReferenceContext(callableReferenceAccess)
dataFlowAnalyzer.exitCallableReference(callableReferenceAccessWithTransformedLHS)
return callableReferenceAccessWithTransformedLHS.compose()