[NI] Fix diagnostic reporting and unveil problem wrt captured types

This commit is contained in:
Mikhail Zarechenskiy
2019-04-22 14:43:22 +03:00
parent 6826d2f193
commit abd1c3df26
12 changed files with 56 additions and 12 deletions
@@ -230,9 +230,14 @@ class DiagnosticReporterByTrackingStrategy(
}
CapturedTypeFromSubtyping::class.java -> {
val capturedError = diagnostic as CapturedTypeFromSubtyping
(capturedError.position as? ArgumentConstraintPosition)?.let {
val position = capturedError.position
val argumentPosition =
position.safeAs<ArgumentConstraintPosition>()
?: position.safeAs<IncorporationConstraintPosition>()?.from.safeAs<ArgumentConstraintPosition>()
argumentPosition?.let {
val expression = it.argument.psiExpression ?: return
trace.report(
trace.reportDiagnosticOnce(
NEW_INFERENCE_ERROR.on(
expression,
"Capture type from subtyping ${capturedError.constraintType} for variable ${capturedError.typeVariable}"