From 459dcb4f5770d26eaede9b38560d433bfb195473 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 23 May 2019 13:35:50 +0300 Subject: [PATCH] FIR resolve: set implicit Unit type for block without result expression This fixes most of "implicit error types" --- .../fir/resolve/transformers/FirBodyResolveTransformer.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 1fbe8237a78..f83db517cc0 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -776,7 +776,11 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn is FirExpression -> statement else -> null } - block.resultType = (resultExpression?.resultType as? FirResolvedTypeRef) ?: FirErrorTypeRefImpl(session, null, "No type for block") + block.resultType = if (resultExpression == null) { + FirImplicitUnitTypeRef(session, block.psi) + } else { + (resultExpression.resultType as? FirResolvedTypeRef) ?: FirErrorTypeRefImpl(session, null, "No type for block") + } return block.compose() }