From 5acb3e14fb811ab63b1a3ae2d090d7ace088c19a Mon Sep 17 00:00:00 2001 From: pyos Date: Thu, 6 Feb 2020 11:18:20 +0100 Subject: [PATCH] IR: mark parameters for captures of crossinline parameters --- .../kotlin/backend/common/lower/LocalDeclarationsLowering.kt | 3 ++- .../codegen/boxInline/suspend/nonSuspendCrossinline.kt | 2 -- .../boxInline/suspend/stateMachine/innerLambdaInsideLambda.kt | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index dd8d4425d68..a95cd98be25 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.ir.descriptors.WrappedValueParameterDescriptor import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol +import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol import org.jetbrains.kotlin.ir.symbols.IrValueSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrConstructorSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl @@ -653,7 +654,7 @@ class LocalDeclarationsLowering( i, localFunctionContext.remapType(p.type), null, - isCrossinline = false, + isCrossinline = (capturedValue as? IrValueParameterSymbol)?.owner?.isCrossinline == true, isNoinline = false ).also { parameterDescriptor.bind(it) diff --git a/compiler/testData/codegen/boxInline/suspend/nonSuspendCrossinline.kt b/compiler/testData/codegen/boxInline/suspend/nonSuspendCrossinline.kt index b93e24bcd64..cb66c494798 100644 --- a/compiler/testData/codegen/boxInline/suspend/nonSuspendCrossinline.kt +++ b/compiler/testData/codegen/boxInline/suspend/nonSuspendCrossinline.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // COMMON_COROUTINES_TEST // WITH_RUNTIME // WITH_COROUTINES diff --git a/compiler/testData/codegen/boxInline/suspend/stateMachine/innerLambdaInsideLambda.kt b/compiler/testData/codegen/boxInline/suspend/stateMachine/innerLambdaInsideLambda.kt index 815f6801686..8efc0ca46b6 100644 --- a/compiler/testData/codegen/boxInline/suspend/stateMachine/innerLambdaInsideLambda.kt +++ b/compiler/testData/codegen/boxInline/suspend/stateMachine/innerLambdaInsideLambda.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// IGNORE_BACKEND_MULTI_MODULE: JVM_IR // FILE: inlined.kt // COMMON_COROUTINES_TEST // WITH_RUNTIME