From edb6b337dcf154837cf37c9b627a507249049fa5 Mon Sep 17 00:00:00 2001 From: Mark Punzalan Date: Tue, 20 Apr 2021 07:33:09 +0000 Subject: [PATCH] FIR: Resolve anonymous function bodies during IMPLICIT_TYPES_BODY_RESOLVE phase. This fixes an issue where some FirAnnotationCalls can be left with some implicit type refs if they have anonymous functions in the arguments. --- .../body/resolve/FirDeclarationsResolveTransformer.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 4f6b0567aca..110bf34f9a0 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 @@ -634,7 +634,9 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor } is ResolutionMode.LambdaResolution -> { context.withAnonymousFunction(anonymousFunction, components, data) { - transformAnonymousFunctionWithLambdaResolution(anonymousFunction, data).addReturn() + withFullBodyResolve { + transformAnonymousFunctionWithLambdaResolution(anonymousFunction, data).addReturn() + } } } is ResolutionMode.WithExpectedType, is ResolutionMode.ContextIndependent -> { @@ -696,7 +698,9 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor lambda = lambda.transformValueParameters(ImplicitToErrorTypeTransformer, null) val bodyExpectedType = returnTypeRefFromResolvedAtom ?: expectedTypeRef context.withAnonymousFunction(lambda, components, data) { - lambda = transformFunction(lambda, withExpectedType(bodyExpectedType)) as FirAnonymousFunction + withFullBodyResolve { + lambda = transformFunction(lambda, withExpectedType(bodyExpectedType)) as FirAnonymousFunction + } } // To separate function and separate commit val writer = FirCallCompletionResultsWriterTransformer(