FIR resolve: set implicit Unit type for block without result expression

This fixes most of "implicit error types"
This commit is contained in:
Mikhail Glukhikh
2019-05-23 13:35:50 +03:00
parent d2bdbd8978
commit 459dcb4f57
@@ -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()
}