From 2ff5b253ae757b7974814695383c52b9718f2fdf Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Wed, 20 May 2020 21:33:39 +0300 Subject: [PATCH] [NI] Fix suspend conversions for subtypes of functional types Fix for recently added tests: - testIntersectionTypeToSubtypeConversion - testSubtypeOfFunctionalTypeToSuspendConversion --- .../resolve/calls/components/suspendConversionUtils.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/suspendConversionUtils.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/suspendConversionUtils.kt index 4adae8b3ec8..f76ad514c84 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/suspendConversionUtils.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/suspendConversionUtils.kt @@ -22,7 +22,6 @@ object SuspendTypeConversions : ParameterTypeConversion { if (argument !is SimpleKotlinCallArgument) return true val argumentType = argument.receiver.stableType - if (!argumentType.isFunctionType) return true if (argumentType.isSuspendFunctionType) return true if (!expectedParameterType.isSuspendFunctionType) return true @@ -30,7 +29,9 @@ object SuspendTypeConversions : ParameterTypeConversion { return false } - override fun conversionIsNeededBeforeSubtypingCheck(argument: KotlinCallArgument): Boolean = true + override fun conversionIsNeededBeforeSubtypingCheck(argument: KotlinCallArgument): Boolean = + argument is SimpleKotlinCallArgument && argument.receiver.stableType.isFunctionType + override fun conversionIsNeededAfterSubtypingCheck(argument: KotlinCallArgument): Boolean = argument is SimpleKotlinCallArgument && argument.receiver.stableType.isFunctionTypeOrSubtype