JVM_IR: mark origins of capture fields in suspend lambdas
This commit is contained in:
+12
-1
@@ -178,7 +178,18 @@ private class AddContinuationLowering(private val context: JvmBackendContext) :
|
||||
addField("p\$", it.type)
|
||||
}
|
||||
|
||||
val parametersFields = info.function.valueParameters.map { addField(it.name, it.type) }
|
||||
val parametersFields = info.function.valueParameters.map {
|
||||
addField {
|
||||
name = it.name
|
||||
type = it.type
|
||||
origin = if (it.isCrossinline)
|
||||
LocalDeclarationsLowering.DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE
|
||||
else
|
||||
LocalDeclarationsLowering.DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE
|
||||
isFinal = true
|
||||
visibility = JavaVisibilities.PACKAGE_VISIBILITY
|
||||
}
|
||||
}
|
||||
val parametersWithoutArguments = parametersFields.withIndex()
|
||||
.mapNotNull { (i, field) -> if (info.reference.getValueArgument(i) == null) field else null }
|
||||
val parametersWithArguments = parametersFields.withIndex()
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ final class LambdaWithLongReceiverKt$box$1$1 {
|
||||
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||
@kotlin.Metadata
|
||||
final class LambdaWithLongReceiverKt$box$1 {
|
||||
private field $res: kotlin.jvm.internal.Ref$ObjectRef
|
||||
synthetic final @org.jetbrains.annotations.NotNull field $res: kotlin.jvm.internal.Ref$ObjectRef
|
||||
field L$0: java.lang.Object
|
||||
private field label: int
|
||||
inner class LambdaWithLongReceiverKt$box$1
|
||||
|
||||
+7
-7
@@ -1,12 +1,12 @@
|
||||
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||
@kotlin.Metadata
|
||||
final class LambdaWithMultipleParametersKt$box$1$1 {
|
||||
private field a: java.lang.String
|
||||
private field b: long
|
||||
private field c: long
|
||||
private field d: long
|
||||
private field e: long
|
||||
private field f: long
|
||||
synthetic final @org.jetbrains.annotations.NotNull field a: java.lang.String
|
||||
synthetic final field b: long
|
||||
synthetic final field c: long
|
||||
synthetic final field d: long
|
||||
synthetic final field e: long
|
||||
synthetic final field f: long
|
||||
private field label: int
|
||||
inner class LambdaWithMultipleParametersKt$box$1
|
||||
inner class LambdaWithMultipleParametersKt$box$1$1
|
||||
@@ -18,7 +18,7 @@ final class LambdaWithMultipleParametersKt$box$1$1 {
|
||||
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||
@kotlin.Metadata
|
||||
final class LambdaWithMultipleParametersKt$box$1 {
|
||||
private field $res: kotlin.jvm.internal.Ref$ObjectRef
|
||||
synthetic final @org.jetbrains.annotations.NotNull field $res: kotlin.jvm.internal.Ref$ObjectRef
|
||||
field L$0: java.lang.Object
|
||||
private field label: int
|
||||
inner class LambdaWithMultipleParametersKt$box$1
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$fold$1 {
|
||||
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||
@kotlin.Metadata
|
||||
final class CrossinlineKt$box$1 {
|
||||
private field $res: kotlin.jvm.internal.Ref$IntRef
|
||||
synthetic final @org.jetbrains.annotations.NotNull field $res: kotlin.jvm.internal.Ref$IntRef
|
||||
field L$0: java.lang.Object
|
||||
field L$1: java.lang.Object
|
||||
field L$2: java.lang.Object
|
||||
|
||||
Vendored
+1
-1
@@ -1,7 +1,7 @@
|
||||
@kotlin.coroutines.jvm.internal.DebugMetadata
|
||||
@kotlin.Metadata
|
||||
final class InlineWithoutStateMachineKt$box$1 {
|
||||
private field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||
synthetic final @org.jetbrains.annotations.NotNull field $result: kotlin.jvm.internal.Ref$ObjectRef
|
||||
field L$0: java.lang.Object
|
||||
field L$1: java.lang.Object
|
||||
private field label: int
|
||||
|
||||
-2
@@ -2,8 +2,6 @@
|
||||
// COMMON_COROUTINES_TEST
|
||||
// WITH_RUNTIME
|
||||
// WITH_COROUTINES
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// IGNORE_BACKEND_MULTI_MODULE: JVM_IR
|
||||
|
||||
import COROUTINES_PACKAGE.*
|
||||
import helpers.*
|
||||
|
||||
Reference in New Issue
Block a user