diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt index 21768a5dc1b..92dbf0b0dd9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -215,6 +215,15 @@ class DiagnosticReporterByTrackingStrategy( val argument = (position as? ArgumentConstraintPosition)?.argument ?: (position as? ReceiverConstraintPosition)?.argument argument?.let { + it.safeAs()?.let lambda@{ lambda -> + val parameterTypes = lambda.parametersTypes?.toList() ?: return@lambda + val index = parameterTypes.indexOf(constraintError.upperType) + val lambdaExpression = lambda.psiExpression as? KtLambdaExpression ?: return@lambda + val parameter = lambdaExpression.valueParameters.getOrNull(index) ?: return@lambda + trace.report(Errors.EXPECTED_PARAMETER_TYPE_MISMATCH.on(parameter, constraintError.upperKotlinType.unCapture())) + return + } + val expression = it.psiExpression ?: return val deparenthesized = KtPsiUtil.safeDeparenthesize(expression) if (reportConstantTypeMismatch(constraintError, deparenthesized)) return