[NI] Fix reporting type mismatch on lambda parameters
This commit is contained in:
committed by
Mikhail Zarechenskiy
parent
f7091dd1e9
commit
d18c55a412
+9
@@ -215,6 +215,15 @@ class DiagnosticReporterByTrackingStrategy(
|
|||||||
val argument = (position as? ArgumentConstraintPosition)?.argument
|
val argument = (position as? ArgumentConstraintPosition)?.argument
|
||||||
?: (position as? ReceiverConstraintPosition)?.argument
|
?: (position as? ReceiverConstraintPosition)?.argument
|
||||||
argument?.let {
|
argument?.let {
|
||||||
|
it.safeAs<LambdaKotlinCallArgument>()?.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 expression = it.psiExpression ?: return
|
||||||
val deparenthesized = KtPsiUtil.safeDeparenthesize(expression)
|
val deparenthesized = KtPsiUtil.safeDeparenthesize(expression)
|
||||||
if (reportConstantTypeMismatch(constraintError, deparenthesized)) return
|
if (reportConstantTypeMismatch(constraintError, deparenthesized)) return
|
||||||
|
|||||||
Reference in New Issue
Block a user