From 66064345e970c7f70154dcd4ad4715a736bf83f3 Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 15 Nov 2017 14:31:35 +0300 Subject: [PATCH] [NI] Support fallback resolution for refined sams priority feature --- .../kotlin/resolve/calls/KotlinCallResolver.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt index 3326fc6d30e..64a9b043105 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.resolve.calls +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.resolve.calls.components.KotlinCallCompleter import org.jetbrains.kotlin.resolve.calls.components.KotlinResolutionCallbacks import org.jetbrains.kotlin.resolve.calls.components.NewOverloadingConflictResolver @@ -98,8 +99,16 @@ class KotlinCallResolver( ): CallResolutionResult { val isDebuggerContext = candidateFactory.scopeTower.isDebuggerContext + var refinedCandidates = candidates + if (!callComponents.languageVersionSettings.supportsFeature(LanguageFeature.RefinedSamAdaptersPriority)) { + val nonSynthesized = candidates.filter { !it.resolvedCall.candidateDescriptor.isSynthesized } + if (!nonSynthesized.isEmpty()) { + refinedCandidates = nonSynthesized + } + } + val maximallySpecificCandidates = overloadingConflictResolver.chooseMaximallySpecificCandidates( - candidates, + refinedCandidates, CheckArgumentTypesMode.CHECK_VALUE_ARGUMENTS, discriminateGenerics = true, // todo isDebuggerContext = isDebuggerContext)