diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt index 38660494f2a..385022caaaa 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/ResolvedAtomCompleter.kt @@ -110,14 +110,18 @@ class ResolvedAtomCompleter( private val ResolvedLambdaAtom.isCoercedToUnit: Boolean get() { val returnTypes = - resultArguments.mapNotNull { - val type = it.safeAs()?.receiver?.receiverValue?.type ?: return@mapNotNull null + resultArguments.map { + val type = it.safeAs()?.receiver?.receiverValue?.type ?: return@map null val unwrappedType = when (type) { is WrappedType -> type.unwrap() is UnwrappedType -> type } resultSubstitutor.safeSubstitute(unwrappedType) } + if (returnTypes.isEmpty()) return true + val substitutedTypes = returnTypes.filterNotNull() + // we have some unsubstituted types + if (substitutedTypes.isEmpty()) return false val commonReturnType = CommonSupertypes.commonSupertype(returnTypes) return commonReturnType.isUnit() }