diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/JvmSamConversionOracle.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/JvmSamConversionOracle.kt index 705620cee2b..87ed4afce00 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/JvmSamConversionOracle.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/sam/JvmSamConversionOracle.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassConstructorDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor -import org.jetbrains.kotlin.resolve.calls.components.SamConversionOracle +import org.jetbrains.kotlin.resolve.sam.SamConversionOracle import org.jetbrains.kotlin.synthetic.hasJavaOriginInHierarchy import org.jetbrains.kotlin.types.KotlinType diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt index 45507f7db41..0f66758a7a0 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ExternalComponents.kt @@ -76,20 +76,3 @@ interface KotlinResolutionCallbacks { fun disableContractsIfNecessary(resolvedAtom: ResolvedCallAtom) } - -@DefaultImplementation(impl = SamConversionOracleDefault::class) -interface SamConversionOracle { - fun shouldRunSamConversionForFunction(candidate: CallableDescriptor): Boolean - fun isPossibleSamType(samType: KotlinType): Boolean -} - -class SamConversionOracleDefault(private val languageVersionSettings: LanguageVersionSettings) : SamConversionOracle { - override fun shouldRunSamConversionForFunction(candidate: CallableDescriptor): Boolean { - return languageVersionSettings.supportsFeature(LanguageFeature.SamConversionForKotlinFunctions) - } - - override fun isPossibleSamType(samType: KotlinType): Boolean { - val descriptor = samType.constructor.declarationDescriptor - return descriptor is ClassDescriptor && descriptor.isFun - } -} \ No newline at end of file diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinResolverContext.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinResolverContext.kt index 4bb1910e746..e35c7bdc1f4 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinResolverContext.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinResolverContext.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind import org.jetbrains.kotlin.resolve.calls.tower.* import org.jetbrains.kotlin.resolve.descriptorUtil.hasDynamicExtensionAnnotation +import org.jetbrains.kotlin.resolve.sam.SamConversionOracle import org.jetbrains.kotlin.resolve.sam.SamConversionResolver import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValueWithSmartCastInfo import org.jetbrains.kotlin.types.ErrorUtils diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/sam/SamConversionOracle.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/sam/SamConversionOracle.kt new file mode 100644 index 00000000000..4a21f5ca8fb --- /dev/null +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/sam/SamConversionOracle.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.resolve.sam + +import org.jetbrains.kotlin.container.DefaultImplementation +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.types.KotlinType + +@DefaultImplementation(impl = SamConversionOracleDefault::class) +interface SamConversionOracle { + fun shouldRunSamConversionForFunction(candidate: CallableDescriptor): Boolean + fun isPossibleSamType(samType: KotlinType): Boolean +} + +class SamConversionOracleDefault : SamConversionOracle { + override fun shouldRunSamConversionForFunction(candidate: CallableDescriptor): Boolean = true + + override fun isPossibleSamType(samType: KotlinType): Boolean { + val descriptor = samType.constructor.declarationDescriptor + return descriptor is ClassDescriptor && descriptor.isFun + } +} \ No newline at end of file