From 220a8e47f49b76ad910259ce508392e5806fce8b Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 19 Jul 2022 15:29:13 +0200 Subject: [PATCH] K2: de-prioritize invoke on dynamic receiver --- .../jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt index 24f7d9dc939..62955ada93e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt @@ -639,8 +639,11 @@ internal object CheckDeprecatedSinceKotlin : ResolutionStage() { internal object LowerPriorityIfDynamic : ResolutionStage() { override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) { - if (candidate.symbol.origin is FirDeclarationOrigin.DynamicScope) { - candidate.addDiagnostic(LowerPriorityForDynamic) + when { + candidate.symbol.origin is FirDeclarationOrigin.DynamicScope -> + candidate.addDiagnostic(LowerPriorityForDynamic) + candidate.callInfo.isImplicitInvoke && candidate.callInfo.explicitReceiver?.typeRef?.coneTypeSafe() != null -> + candidate.addDiagnostic(LowerPriorityForDynamic) } } }