From b7bdbd270f71634f9c55f0ff738eca1a22e6db1f Mon Sep 17 00:00:00 2001 From: Kirill Rakhman Date: Wed, 13 Dec 2023 14:40:52 +0100 Subject: [PATCH] [FIR] Add comment for keeping the two places where class scopes are build in sync. --- .../fir/resolve/transformers/FirTypeResolveTransformer.kt | 5 +++++ .../resolve/transformers/body/resolve/BodyResolveContext.kt | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index f7c6e7c7019..81795e3e6fa 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -461,6 +461,11 @@ open class FirTypeResolveTransformer( fun removeOuterTypeParameterScope(firClass: FirClass): Boolean = !firClass.isInner && !firClass.isLocal + /** + * Changes to the order of scopes should also be reflected in + * [org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext.withScopesForClass]. + * Otherwise, we get different behavior between type resolve and body resolve phases. + */ inline fun withClassScopes( firClass: FirClass, crossinline actionInsideStaticScope: () -> Unit = {}, 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 d41363be6f4..0b465f4b43f 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 @@ -440,6 +440,11 @@ class BodyResolveContext( } } + /** + * Changes to the order of scopes should also be reflected in + * [org.jetbrains.kotlin.fir.resolve.transformers.FirTypeResolveTransformer.withClassScopes]. + * Otherwise, we get different behavior between type resolve and body resolve phases. + */ fun withScopesForClass( owner: FirClass, holder: SessionHolder,