[NI] Don't loose diagnostic after type variable fixation

#KT-24488 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2019-08-19 01:51:04 +03:00
parent ca8da22569
commit e0fb586aaf
15 changed files with 77 additions and 22 deletions
@@ -317,6 +317,24 @@ class DiagnosticReporterByTrackingStrategy(
)
)
}
(position as? FixVariableConstraintPosition)?.let {
val morePreciseDiagnosticExists = allDiagnostics.any { other ->
other is NewConstraintError && other.position.from !is FixVariableConstraintPosition
}
if (morePreciseDiagnosticExists) return
val call = it.resolvedAtom?.atom?.safeAs<PSIKotlinCall>()?.psiCall ?: call
val expression = call.calleeExpression ?: return
trace.reportDiagnosticOnce(
TYPE_MISMATCH.on(
expression,
constraintError.upperKotlinType,
constraintError.lowerKotlinType
)
)
}
}
CapturedTypeFromSubtyping::class.java -> {