[FIR] Avoid integer literal types in lambda analysis

Partial fix of KT-38473
This commit is contained in:
Mikhail Glukhikh
2020-04-22 13:24:32 +03:00
parent 2805108061
commit bb73681b62
@@ -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<ConeIntegerLiteralType>() != null) {
val blockType = resultFunction.body?.typeRef?.coneTypeSafe<ConeKotlinType>()
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<FirStatement> {