From bb73681b6291b9d5c68ca6cbaa55106659ba4159 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 22 Apr 2020 13:24:32 +0300 Subject: [PATCH] [FIR] Avoid integer literal types in lambda analysis Partial fix of KT-38473 --- .../FirCallCompletionResultsWriterTransformer.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index 85fa5d1fcbc..1b0029cb50b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -345,7 +345,16 @@ class FirCallCompletionResultsWriterTransformer( anonymousFunction.constructFunctionalTypeRef(session, isSuspend = expectedType?.isSuspendFunctionType(session) == true) ) } - return transformElement(anonymousFunction, null) + val result = transformElement(anonymousFunction, null) + val resultFunction = result.single + if (resultFunction.returnTypeRef.coneTypeSafe() != null) { + val blockType = resultFunction.body?.typeRef?.coneTypeSafe() + resultFunction.replaceReturnTypeRef(resultFunction.returnTypeRef.withReplacedConeType(blockType)) + resultFunction.replaceTypeRef( + resultFunction.constructFunctionalTypeRef(session, isSuspend = expectedType?.isSuspendFunctionType(session) == true) + ) + } + return result } override fun transformBlock(block: FirBlock, data: ExpectedArgumentType?): CompositeTransformResult {