From cbf38b119c976097a0856fdab91e911845a88215 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 10 Mar 2021 19:09:49 +0300 Subject: [PATCH] FIR: introduce BodyResolveContext.storeCallableReferenceContext --- .../resolve/inference/PostponedArgumentsAnalyzer.kt | 2 +- .../transformers/body/resolve/BodyResolveContext.kt | 10 +++++++++- .../body/resolve/FirExpressionsResolveTransformer.kt | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt index 1e5395e994e..6b1ad430c3b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt @@ -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) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt index 2b8efaf2a52..3670b752a12 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt @@ -66,7 +66,7 @@ class BodyResolveContext( val towerDataContextForAnonymousFunctions: MutableMap get() = towerDataContextsForClassParts.towerDataContextForAnonymousFunctions - val towerDataContextForCallableReferences: MutableMap + private val towerDataContextForCallableReferences: MutableMap 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) + } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index eb2e2389f48..4909646d56c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -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()