Add compatibility warning for chained sam->suspend-conversion

This commit is contained in:
Mikhail Zarechenskiy
2020-06-01 02:45:29 +03:00
parent a5203428a4
commit 599f520fd8
8 changed files with 126 additions and 9 deletions
@@ -38,17 +38,16 @@ object TypeConversions {
val samConversionData = performConversionBeforeSubtyping(
candidate, argument, candidateParameter, candidateExpectedType, SamTypeConversions
)
val suspendConversionData = if (samConversionData.convertedType == null) {
performConversionBeforeSubtyping(candidate, argument, candidateParameter, candidateExpectedType, SuspendTypeConversions)
} else {
null
}
val suspendConversionData = performConversionBeforeSubtyping(
candidate, argument, candidateParameter, samConversionData.convertedType ?: candidateExpectedType, SuspendTypeConversions
)
return ConversionData(
convertedType = samConversionData.convertedType ?: suspendConversionData?.convertedType,
wasConversion = samConversionData.wasConversion || suspendConversionData?.wasConversion == true,
convertedType = suspendConversionData.convertedType ?: samConversionData.convertedType,
wasConversion = samConversionData.wasConversion || suspendConversionData.wasConversion,
conversionDefinitelyNotNeeded = samConversionData.conversionDefinitelyNotNeeded &&
(suspendConversionData == null || suspendConversionData.conversionDefinitelyNotNeeded)
suspendConversionData.conversionDefinitelyNotNeeded
)
}