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 4942f8a1c2f..84e6d5dbc21 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 @@ -439,6 +439,10 @@ class BodyResolveContext( } } + inline fun forEnumEntry( + crossinline f: () -> T + ): T = withTowerDataMode(FirTowerDataMode.CONSTRUCTOR_HEADER, f) + inline fun withAnonymousInitializer( anonymousInitializer: FirAnonymousInitializer, crossinline f: () -> T 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 22427796762..9f36a8a7293 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 @@ -107,8 +107,8 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor override fun transformEnumEntry(enumEntry: FirEnumEntry, data: ResolutionMode): CompositeTransformResult { if (enumEntry.resolvePhase == transformerPhase) return enumEntry.compose() transformer.replaceDeclarationResolvePhaseIfNeeded(enumEntry, transformerPhase) - context.withTowerDataMode(FirTowerDataMode.CONSTRUCTOR_HEADER) { - return (enumEntry.transformChildren(this, data) as FirEnumEntry).compose() + return context.forEnumEntry { + (enumEntry.transformChildren(this, data) as FirEnumEntry).compose() } } @@ -127,7 +127,7 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor if (returnTypeRef !is FirImplicitTypeRef && implicitTypeOnly) return property.compose() if (property.resolvePhase == transformerPhase) return property.compose() if (property.resolvePhase == FirResolvePhase.BODY_RESOLVE || property.resolvePhase == transformerPhase) { - return@withTypeParametersOf property.compose() + return property.compose() } dataFlowAnalyzer.enterProperty(property)