From 3d6eedc962891c9ede291f8b25cd73cf9d13a498 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 7 May 2020 17:52:51 +0300 Subject: [PATCH] FIR: Do not store nested local classes to local scopes --- .../body/resolve/FirAbstractBodyResolveTransformer.kt | 3 ++- .../body/resolve/FirDeclarationsResolveTransformer.kt | 2 +- .../transformers/contracts/FirContractResolveTransformer.kt | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt index 6a4d87d9d70..3c3351ca518 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt @@ -159,7 +159,8 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb localScopes = localScopes.add(localScope) } - fun storeClass(klass: FirRegularClass) { + fun storeClassIfNotNested(klass: FirRegularClass) { + if (containerIfAny is FirClass<*>) return updateLastScope { storeClass(klass) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 5a50161ff61..db16f293928 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -317,7 +317,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor } override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult { - context.storeClass(regularClass) + context.storeClassIfNotNested(regularClass) if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) { return regularClass.runAllPhasesForLocalClass(transformer, components, data).compose() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/FirContractResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/FirContractResolveTransformer.kt index 26c2f176444..72e2d37c9a6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/FirContractResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/FirContractResolveTransformer.kt @@ -163,7 +163,7 @@ class FirContractResolveTransformer( override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult { regularClass.updatePhase() - context.storeClass(regularClass) + context.storeClassIfNotNested(regularClass) regularClass.transformCompanionObject(this, data) withTypeParametersOf(regularClass) { context.withContainer(regularClass) {