FIR: Do not store nested local classes to local scopes

This commit is contained in:
Denis Zharkov
2020-05-07 17:52:51 +03:00
parent 07be2ae5c7
commit 3d6eedc962
3 changed files with 4 additions and 3 deletions
@@ -159,7 +159,8 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb
localScopes = localScopes.add(localScope) localScopes = localScopes.add(localScope)
} }
fun storeClass(klass: FirRegularClass) { fun storeClassIfNotNested(klass: FirRegularClass) {
if (containerIfAny is FirClass<*>) return
updateLastScope { storeClass(klass) } updateLastScope { storeClass(klass) }
} }
@@ -317,7 +317,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
} }
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
context.storeClass(regularClass) context.storeClassIfNotNested(regularClass)
if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) { if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) {
return regularClass.runAllPhasesForLocalClass(transformer, components, data).compose() return regularClass.runAllPhasesForLocalClass(transformer, components, data).compose()
@@ -163,7 +163,7 @@ class FirContractResolveTransformer(
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> { override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
regularClass.updatePhase() regularClass.updatePhase()
context.storeClass(regularClass) context.storeClassIfNotNested(regularClass)
regularClass.transformCompanionObject(this, data) regularClass.transformCompanionObject(this, data)
withTypeParametersOf(regularClass) { withTypeParametersOf(regularClass) {
context.withContainer(regularClass) { context.withContainer(regularClass) {