JVM_IR: Box generic Result parameter in suspend lambda

#KT-44527 Fixed
This commit is contained in:
Ilmir Usmanov
2021-02-02 18:36:28 +01:00
parent a30a961cf5
commit 02f845636e
9 changed files with 55 additions and 1 deletions
@@ -39,7 +39,8 @@ abstract class PromisedValue(val codegen: ExpressionCodegen, val type: Type, val
// Boxing and unboxing kotlin.Result leads to CCE in generated code
val doNotCoerceKotlinResultInContinuation =
(codegen.irFunction.parentAsClass.origin == JvmLoweredDeclarationOrigin.CONTINUATION_CLASS ||
codegen.irFunction.parentAsClass.origin == JvmLoweredDeclarationOrigin.SUSPEND_LAMBDA)
(codegen.irFunction.parentAsClass.origin == JvmLoweredDeclarationOrigin.SUSPEND_LAMBDA &&
!codegen.irFunction.isInvokeSuspendOfLambda()))
&& (irType.isKotlinResult() || irTarget.isKotlinResult())
// Coerce inline classes