diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeDesignatedBodyResolveTransformerForReturnTypeCalculator.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeDesignatedBodyResolveTransformerForReturnTypeCalculator.kt index 977b4d6111d..949e1939613 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeDesignatedBodyResolveTransformerForReturnTypeCalculator.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeDesignatedBodyResolveTransformerForReturnTypeCalculator.kt @@ -62,6 +62,7 @@ private class FirIdeDesignatedBodyResolveTransformerForReturnTypeCalculatorImpl( private inline fun D.processCallable(body: (FirDeclarationDesignation) -> Unit) { if (this !== targetDeclaration) return + if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return ensureResolved(FirResolvePhase.TYPES) if (returnTypeRef is FirImplicitTypeRef) { val declarationList = designation.filterIsInstance() diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeEnsureBasedTransformerForReturnTypeCalculator.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeEnsureBasedTransformerForReturnTypeCalculator.kt index f0bf1b934db..0ad99f3ed8f 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeEnsureBasedTransformerForReturnTypeCalculator.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/element/builder/FirIdeEnsureBasedTransformerForReturnTypeCalculator.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedB import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession import org.jetbrains.kotlin.fir.symbols.ensureResolved import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef +import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef fun FirIdeEnsureBasedTransformerForReturnTypeCalculator( designation: Iterator, @@ -60,6 +61,7 @@ private class FirIdeEnsureBasedTransformerForReturnTypeCalculatorImpl( private fun T.ensureReturnType() { if (this !== targetDeclaration) return + if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return ensureResolved(FirResolvePhase.TYPES) if (returnTypeRef is FirImplicitTypeRef) { ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt index 9a166ec21bf..be280b1a68d 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/lazy/resolve/FirLazyDeclarationResolveToType.kt @@ -43,6 +43,7 @@ internal fun FirLazyDeclarationResolver.lazyResolveDeclaration( } if (firDeclaration.resolvePhase < FirResolvePhase.TYPES) { + if (firDeclaration.returnTypeRef is FirResolvedTypeRef) return lazyResolveDeclaration( firDeclarationToResolve = firDeclaration, moduleFileCache = moduleFileCache,