From 974dad571c709e5fdd7f0af8af19d933aac3cd25 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 9 Aug 2017 16:24:12 +0300 Subject: [PATCH] [NI] Report errors about inapplicable wrong receiver Now it's possible because we don't commit trace with inapplicable `provideDelegate` operator (20e105c2744fc2fb4ac4f4d4d4e4a0fd20ea34dc) --- .../kotlin/resolve/calls/tower/PSICallResolver.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index 16041a2fadc..96b73621220 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -194,9 +194,13 @@ class PSICallResolver( 1 -> { val singleCandidate = result.single() - val reportToTrace = singleCandidate.currentStatus.resultingApplicability != ResolutionCandidateApplicability.INAPPLICABLE_WRONG_RECEIVER + val isInapplicableReceiver = singleCandidate.currentStatus.resultingApplicability == ResolutionCandidateApplicability.INAPPLICABLE_WRONG_RECEIVER - val resolvedCall = kotlinToResolvedCallTransformer.transformAndReport(singleCandidate, context, trace.takeIf { reportToTrace }) + val resolvedCall = kotlinToResolvedCallTransformer.transformAndReport(singleCandidate, context, trace.takeUnless { isInapplicableReceiver }) + + if (isInapplicableReceiver) { + tracingStrategy.unresolvedReferenceWrongReceiver(trace, listOf(resolvedCall)) + } return SingleOverloadResolutionResult(resolvedCall) } else -> {