diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt index 1a923125c2d..11ca5949b30 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt @@ -36,11 +36,13 @@ class FirBuilderInferenceSession( val storage = system.getBuilder().currentStorage() - return !storage.notFixedTypeVariables.keys.any { + if (call.hasPostponed()) return true + + return storage.notFixedTypeVariables.keys.all { val variable = storage.allTypeVariables[it] val isPostponed = variable != null && variable in storage.postponedTypeVariables - !isPostponed && !components.callCompleter.completer.variableFixationFinder.isTypeVariableHasProperConstraint(system, it) - } || call.hasPostponed() + isPostponed || components.callCompleter.completer.variableFixationFinder.isTypeVariableHasProperConstraint(system, it) + } } private fun FirStatement.hasPostponed(): Boolean { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt index 2770be2db9a..5935ff9472b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.resolve.calls.inference import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.* @@ -79,10 +78,10 @@ class CoroutineInferenceSession( return true } - return !storage.notFixedTypeVariables.keys.any { + return storage.notFixedTypeVariables.keys.all { val variable = storage.allTypeVariables[it] val isPostponed = variable != null && variable in storage.postponedTypeVariables - !isPostponed && !kotlinConstraintSystemCompleter.variableFixationFinder.isTypeVariableHasProperConstraint( + isPostponed || kotlinConstraintSystemCompleter.variableFixationFinder.isTypeVariableHasProperConstraint( system, it, )