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

View File

@@ -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) }
}

View File

@@ -317,7 +317,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor
}
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
context.storeClass(regularClass)
context.storeClassIfNotNested(regularClass)
if (regularClass.isLocal && regularClass !in context.targetedLocalClasses) {
return regularClass.runAllPhasesForLocalClass(transformer, components, data).compose()

View File

@@ -163,7 +163,7 @@ class FirContractResolveTransformer(
override fun transformRegularClass(regularClass: FirRegularClass, data: ResolutionMode): CompositeTransformResult<FirStatement> {
regularClass.updatePhase()
context.storeClass(regularClass)
context.storeClassIfNotNested(regularClass)
regularClass.transformCompanionObject(this, data)
withTypeParametersOf(regularClass) {
context.withContainer(regularClass) {