Get a callable reference expression to report an error on it properly, taking into account possible wrapping

^KT-42620 Fixed
This commit is contained in:
Victor Petukhov
2020-10-23 12:50:37 +03:00
parent cb020fb9f4
commit 4f06162446
12 changed files with 100 additions and 6 deletions
@@ -159,7 +159,11 @@ class DiagnosticReporterByTrackingStrategy(
CallableReferenceCandidatesAmbiguity::class.java -> {
val ambiguityDiagnostic = diagnostic as CallableReferenceCandidatesAmbiguity
val expression = ambiguityDiagnostic.argument.psiExpression.safeAs<KtCallableReferenceExpression>()
val expression = when (val psiExpression = ambiguityDiagnostic.argument.psiExpression) {
is KtPsiUtil.KtExpressionWrapper -> psiExpression.baseExpression
else -> psiExpression
}.safeAs<KtCallableReferenceExpression>()
val candidates = ambiguityDiagnostic.candidates.map { it.candidate }
if (expression != null) {
trace.reportDiagnosticOnce(CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY.on(expression.callableReference, candidates))