From 6f0d52f9911a10e588f36633ec1e946dd86f45c4 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 1 Dec 2023 12:35:34 +0100 Subject: [PATCH] [FIR] runAllPhasesForLocalClass: drop redundant annotations transformation Such annotations will be transformed as usual in `FirDeclarationsResolveTransformer.transformRegularClass`. Also, this transformation doesn't have a corresponding class as a container ^KT-63042 --- .../body/resolve/FirDeclarationsResolveTransformer.kt | 7 ++++--- .../transformers/body/resolve/LocalClassesResolution.kt | 7 +++---- 2 files changed, 7 insertions(+), 7 deletions(-) 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 ecaeeb0d99a..c31fe080de4 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 @@ -660,7 +660,7 @@ open class FirDeclarationsResolveTransformer( context.withContainingClass(regularClass) { val isLocal = regularClass.isLocal if (isLocal && regularClass !in context.targetedLocalClasses) { - return regularClass.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector) + return regularClass.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector) } if (isLocal || !implicitTypeOnly) { @@ -700,7 +700,7 @@ open class FirDeclarationsResolveTransformer( override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias = whileAnalysing(session, typeAlias) { if (implicitTypeOnly) return typeAlias if (typeAlias.isLocal && typeAlias !in context.targetedLocalClasses) { - return typeAlias.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector) + return typeAlias.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector) } @OptIn(PrivateForInline::class) @@ -772,8 +772,9 @@ open class FirDeclarationsResolveTransformer( data: ResolutionMode ): FirAnonymousObject = whileAnalysing(session, anonymousObject) { if (anonymousObject !in context.targetedLocalClasses) { - return anonymousObject.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector) + return anonymousObject.runAllPhasesForLocalClass(components, data, transformer.firResolveContextCollector) } + require(anonymousObject.controlFlowGraphReference == null) val buildGraph = !implicitTypeOnly dataFlowAnalyzer.enterClass(anonymousObject, buildGraph) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/LocalClassesResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/LocalClassesResolution.kt index 9bf4a32d61a..18bb834cdcc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/LocalClassesResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/LocalClassesResolution.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -8,14 +8,13 @@ package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.resolve.ResolutionMode import org.jetbrains.kotlin.fir.resolve.createCurrentScopeList -import org.jetbrains.kotlin.fir.resolve.transformers.plugin.runCompilerRequiredAnnotationsResolvePhaseForLocalClass import org.jetbrains.kotlin.fir.resolve.transformers.plugin.runCompanionGenerationPhaseForLocalClass +import org.jetbrains.kotlin.fir.resolve.transformers.plugin.runCompilerRequiredAnnotationsResolvePhaseForLocalClass import org.jetbrains.kotlin.fir.resolve.transformers.runStatusResolveForLocalClass import org.jetbrains.kotlin.fir.resolve.transformers.runSupertypeResolvePhaseForLocalClass import org.jetbrains.kotlin.fir.resolve.transformers.runTypeResolvePhaseForLocalClass fun F.runAllPhasesForLocalClass( - transformer: FirAbstractBodyResolveTransformer, components: FirAbstractBodyResolveTransformer.BodyResolveTransformerComponents, resolutionMode: ResolutionMode, firResolveContextCollector: FirResolveContextCollector? @@ -24,7 +23,7 @@ fun F.runAllPhasesForLocalClass( if (this is FirRegularClass) { components.context.storeClassIfNotNested(this, components.session) } - this.transformAnnotations(transformer, ResolutionMode.ContextIndependent) + val localClassesNavigationInfo = collectLocalClassesNavigationInfo() for ((nested, outer) in localClassesNavigationInfo.parentForClass) {