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 edd51c2d23c..f41d9225393 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 @@ -298,6 +298,16 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) } override fun transformSimpleFunction(simpleFunction: FirSimpleFunction, data: ResolutionMode): CompositeTransformResult { + if (simpleFunction.resolvePhase == transformerPhase) return simpleFunction.compose() + if (simpleFunction.resolvePhase == FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE && transformerPhase == FirResolvePhase.BODY_RESOLVE) { + simpleFunction.replaceResolvePhase(transformerPhase) + return simpleFunction.compose() + } + val returnTypeRef = simpleFunction.returnTypeRef + if ((returnTypeRef !is FirImplicitTypeRef) && implicitTypeOnly) { + return simpleFunction.compose() + } + return withScopeCleanup(topLevelScopes) { prepareTypeParameterOwnerForBodyResolve(simpleFunction) val containingDeclaration = components.containerIfAny @@ -306,10 +316,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) prepareSignatureForBodyResolve(simpleFunction) simpleFunction.transformStatus(this, simpleFunction.resolveStatus(simpleFunction.status).mode()) } - val returnTypeRef = simpleFunction.returnTypeRef - if ((returnTypeRef !is FirImplicitTypeRef) && implicitTypeOnly) { - return@withScopeCleanup simpleFunction.compose() - } + withFullBodyResolve { if (returnTypeRef is FirImplicitTypeRef) { simpleFunction.transformReturnTypeRef(StoreType, FirComputingImplicitTypeRef)