From 42420cb6fce8e5623da324e7fe1ff45f90f0c467 Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Thu, 27 Feb 2020 16:57:48 +0100 Subject: [PATCH] JVM_IR: Generate inner classes for continuations Also, generate correct visibilities for constructors and continuation's fields. --- .../kotlin/backend/jvm/DeclarationOrigins.kt | 1 + .../backend/jvm/codegen/ClassCodegen.kt | 2 +- .../backend/jvm/codegen/FunctionCodegen.kt | 13 ++- .../jvm/lower/AddContinuationLowering.kt | 25 +++-- .../bridges/lambdaWithLongReceiver_ir.txt | 8 +- .../lambdaWithMultipleParameters_ir.txt | 8 +- .../tailCallOptimizations/crossinline_ir.txt | 98 +++++++++++++------ .../inlineWithoutStateMachine_ir.txt | 10 +- .../innerObjectRetransformation_ir.txt | 42 +++++--- .../unit/override5_ir.txt | 13 ++- .../coroutines/coroutineContextIntrinsic.kt | 1 + .../coroutines/coroutineFields.kt | 1 + .../coroutines/coroutineFields_ir.txt | 57 +++++++++++ .../coroutines/oomInReturnUnit.kt | 3 +- .../coroutines/oomInReturnUnit.txt | 60 ------------ .../coroutines/oomInReturnUnit_1_3.txt | 60 ------------ .../coroutines/privateAccessor.kt | 1 + .../coroutines/privateSuspendFun.kt | 1 + .../coroutines/suspendReifiedFun.kt | 1 + .../coroutines/tcoContinuation.kt | 2 +- .../coroutines/tcoContinuation.txt | 60 ------------ .../coroutines/tcoContinuation_1_3.txt | 60 ------------ .../codegen/AbstractBytecodeListingTest.kt | 9 +- 23 files changed, 216 insertions(+), 320 deletions(-) create mode 100644 compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields_ir.txt diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/DeclarationOrigins.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/DeclarationOrigins.kt index fdbc2ba37a1..7c5be4888ce 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/DeclarationOrigins.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/DeclarationOrigins.kt @@ -42,5 +42,6 @@ interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin { object SUSPEND_LAMBDA : IrDeclarationOriginImpl("SUSPEND_LAMBDA") object FOR_INLINE_STATE_MACHINE_TEMPLATE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE") object FOR_INLINE_STATE_MACHINE_TEMPLATE_CAPTURES_CROSSINLINE : IrDeclarationOriginImpl("FOR_INLINE_TEMPLATE_CROSSINLINE") + object CONTINUATION_CLASS_RESULT_FIELD: IrDeclarationOriginImpl("CONTINUATION_CLASS_RESULT_FIELD", isSynthetic = true) object COMPANION_PROPERTY_BACKING_FIELD : IrDeclarationOriginImpl("COMPANION_MOVED_PROPERTY_BACKING_FIELD") } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index e74309e5f2c..bae886627b9 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -291,7 +291,7 @@ open class ClassCodegen protected constructor( } } - private fun done() { + fun done() { writeInnerClasses() writeOuterClassAndEnclosingMethod() diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt index abe0d2c72e6..1f9f0ff9ec3 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt @@ -45,8 +45,10 @@ open class FunctionCodegen( val context = classCodegen.context val state = classCodegen.state - val continuationClassBuilder by lazy { - classCodegen.createLocalClassCodegen(irFunction.continuationClass(), irFunction).also { it.generate() }.visitor + var continuationClassHasBeenGenerated = false + val continuationClassCodegen by lazy { + continuationClassHasBeenGenerated = true + classCodegen.createLocalClassCodegen(irFunction.continuationClass(), irFunction).also { it.generate() } } fun generate(): JvmMethodGenericSignature = @@ -102,13 +104,13 @@ open class FunctionCodegen( } ) { // force generation of fake continuation for inliner. - continuationClassBuilder + continuationClassCodegen } generateStateMachineForNamedFunction( irFunction, classCodegen, methodVisitor, access = flags, signature = signature, - obtainContinuationClassBuilder = { continuationClassBuilder }, + obtainContinuationClassBuilder = { continuationClassCodegen.visitor }, element = psiElement() ) } @@ -121,6 +123,9 @@ open class FunctionCodegen( methodVisitor.visitMaxs(-1, -1) } methodVisitor.visitEnd() + if (continuationClassHasBeenGenerated) { + continuationClassCodegen.done() + } return signature } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt index f81aa078595..3295be2dd46 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt @@ -161,7 +161,7 @@ private class AddContinuationLowering(private val context: JvmBackendContext) : annotations = emptyList() ) - addField(COROUTINE_LABEL_FIELD_NAME, context.irBuiltIns.intType) + addField(COROUTINE_LABEL_FIELD_NAME, context.irBuiltIns.intType, JavaVisibilities.PACKAGE_VISIBILITY) val receiverField = info.function.extensionReceiverParameter?.let { assert(info.arity != 0) @@ -410,6 +410,7 @@ private class AddContinuationLowering(private val context: JvmBackendContext) : addConstructor { isPrimary = true returnType = defaultType + visibility = JavaVisibilities.PACKAGE_VISIBILITY }.also { constructor -> for ((param, arg) in reference.getArguments()) { constructor.addValueParameter(name = param.name.asString(), type = arg.type) @@ -446,12 +447,21 @@ private class AddContinuationLowering(private val context: JvmBackendContext) : .createContinuationClassFor(irFunction, JvmLoweredDeclarationOrigin.CONTINUATION_CLASS, JavaVisibilities.PACKAGE_VISIBILITY) .apply { copyTypeParametersFrom(irFunction) - val resultField = addField( - context.state.languageVersionSettings.dataFieldName(), - context.irBuiltIns.anyType, - JavaVisibilities.PACKAGE_VISIBILITY - ) - val capturedThisField = dispatchReceiverParameter?.let { addField("this\$0", it.type) } + val resultField = addField { + origin = JvmLoweredDeclarationOrigin.CONTINUATION_CLASS_RESULT_FIELD + name = Name.identifier(context.state.languageVersionSettings.dataFieldName()) + type = context.irBuiltIns.anyNType + visibility = JavaVisibilities.PACKAGE_VISIBILITY + } + val capturedThisField = dispatchReceiverParameter?.let { + addField { + name = Name.identifier("this$0") + type = it.type + origin = DeclarationFactory.FIELD_FOR_OUTER_THIS + visibility = JavaVisibilities.PACKAGE_VISIBILITY + isFinal = true + } + } val labelField = addField(COROUTINE_LABEL_FIELD_NAME, context.irBuiltIns.intType, JavaVisibilities.PACKAGE_VISIBILITY) addConstructorForNamedFunction(capturedThisField) addInvokeSuspendForNamedFunction( @@ -468,6 +478,7 @@ private class AddContinuationLowering(private val context: JvmBackendContext) : private fun IrClass.addConstructorForNamedFunction(capturedThisField: IrField?): IrConstructor = addConstructor { isPrimary = true returnType = defaultType + visibility = JavaVisibilities.PACKAGE_VISIBILITY }.also { constructor -> val capturedThisParameter = capturedThisField?.let { constructor.addValueParameter(it.name.asString(), it.type) } val completionParameterSymbol = constructor.addCompletionValueParameter() diff --git a/compiler/testData/codegen/box/coroutines/bridges/lambdaWithLongReceiver_ir.txt b/compiler/testData/codegen/box/coroutines/bridges/lambdaWithLongReceiver_ir.txt index 1436cf22b50..8a727181634 100644 --- a/compiler/testData/codegen/box/coroutines/bridges/lambdaWithLongReceiver_ir.txt +++ b/compiler/testData/codegen/box/coroutines/bridges/lambdaWithLongReceiver_ir.txt @@ -1,11 +1,11 @@ @kotlin.coroutines.jvm.internal.DebugMetadata @kotlin.Metadata final class LambdaWithLongReceiverKt$box$1$1 { - private field label: int + field label: int private field p$: long inner class LambdaWithLongReceiverKt$box$1 inner class LambdaWithLongReceiverKt$box$1$1 - public method (p0: kotlin.coroutines.Continuation): void + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object @@ -16,10 +16,10 @@ final class LambdaWithLongReceiverKt$box$1$1 { final class LambdaWithLongReceiverKt$box$1 { synthetic final @org.jetbrains.annotations.NotNull field $res: kotlin.jvm.internal.Ref$ObjectRef field L$0: java.lang.Object - private field label: int + field label: int inner class LambdaWithLongReceiverKt$box$1 inner class LambdaWithLongReceiverKt$box$1$1 - public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void + method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object diff --git a/compiler/testData/codegen/box/coroutines/bridges/lambdaWithMultipleParameters_ir.txt b/compiler/testData/codegen/box/coroutines/bridges/lambdaWithMultipleParameters_ir.txt index afdcd2e00ed..919fc41e1d9 100644 --- a/compiler/testData/codegen/box/coroutines/bridges/lambdaWithMultipleParameters_ir.txt +++ b/compiler/testData/codegen/box/coroutines/bridges/lambdaWithMultipleParameters_ir.txt @@ -7,10 +7,10 @@ final class LambdaWithMultipleParametersKt$box$1$1 { synthetic final field d: long synthetic final field e: long synthetic final field f: long - private field label: int + field label: int inner class LambdaWithMultipleParametersKt$box$1 inner class LambdaWithMultipleParametersKt$box$1$1 - public method (p0: kotlin.coroutines.Continuation): void + method (p0: kotlin.coroutines.Continuation): void public final method invoke(p0: java.lang.Object, p1: java.lang.Object, p2: java.lang.Object, p3: java.lang.Object, p4: java.lang.Object, p5: java.lang.Object, p6: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -20,10 +20,10 @@ final class LambdaWithMultipleParametersKt$box$1$1 { final class LambdaWithMultipleParametersKt$box$1 { synthetic final @org.jetbrains.annotations.NotNull field $res: kotlin.jvm.internal.Ref$ObjectRef field L$0: java.lang.Object - private field label: int + field label: int inner class LambdaWithMultipleParametersKt$box$1 inner class LambdaWithMultipleParametersKt$box$1$1 - public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void + method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt index b5cceed2b20..acd2d42cb04 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt @@ -8,9 +8,11 @@ final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 { field L$4: java.lang.Object field L$5: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 - public method (p0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 + method (p0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -21,9 +23,11 @@ final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 { field L$1: java.lang.Object field L$2: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 - public method (p0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 + method (p0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -31,6 +35,7 @@ final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 { public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 { synthetic final field $this$inlined: Sink inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 public method (p0: Sink): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -40,6 +45,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 { public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 { synthetic final field $this$inlined: SourceCrossinline inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 + inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 public method (p0: SourceCrossinline): void public @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object } @@ -62,9 +68,9 @@ final class CrossinlineKt$box$1 { field L$2: java.lang.Object field L$3: java.lang.Object field L$4: java.lang.Object - private field label: int + field label: int inner class CrossinlineKt$box$1 - public method (p0: kotlin.jvm.internal.Ref$IntRef, p1: kotlin.coroutines.Continuation): void + method (p0: kotlin.jvm.internal.Ref$IntRef, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object @@ -73,9 +79,11 @@ final class CrossinlineKt$box$1 { @kotlin.Metadata final class CrossinlineKt$consumeEach$2$send$1 { field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - private field this$0: CrossinlineKt$consumeEach$2 - public method (p0: CrossinlineKt$consumeEach$2, p1: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic final @org.jetbrains.annotations.NotNull field this$0: CrossinlineKt$consumeEach$2 + inner class CrossinlineKt$consumeEach$2 + inner class CrossinlineKt$consumeEach$2$send$1 + method (p0: CrossinlineKt$consumeEach$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -83,6 +91,7 @@ final class CrossinlineKt$consumeEach$2$send$1 { public final class CrossinlineKt$consumeEach$2 { private synthetic final field $action: kotlin.jvm.functions.Function2 inner class CrossinlineKt$consumeEach$2 + inner class CrossinlineKt$consumeEach$2$send$1 public method (p0: kotlin.jvm.functions.Function2): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -99,9 +108,11 @@ final class CrossinlineKt$filter$$inlined$source$1$1 { field L$4: java.lang.Object field L$5: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1 - public method (p0: CrossinlineKt$filter$$inlined$source$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$filter$$inlined$source$1 + inner class CrossinlineKt$filter$$inlined$source$1$1 + method (p0: CrossinlineKt$filter$$inlined$source$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -110,6 +121,7 @@ public final class CrossinlineKt$filter$$inlined$source$1 { synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1 synthetic final field $this$inlined: SourceCrossinline inner class CrossinlineKt$filter$$inlined$source$1 + inner class CrossinlineKt$filter$$inlined$source$1$1 public method (p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void public @org.jetbrains.annotations.Nullable method consume$$forInline(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -125,9 +137,11 @@ final class CrossinlineKt$filter$$inlined$source$2$1 { field L$4: java.lang.Object field L$5: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$$inlined$source$2 - public method (p0: CrossinlineKt$filter$$inlined$source$2, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$filter$$inlined$source$2 + inner class CrossinlineKt$filter$$inlined$source$2$1 + method (p0: CrossinlineKt$filter$$inlined$source$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -136,6 +150,7 @@ public final class CrossinlineKt$filter$$inlined$source$2 { synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1 synthetic final field $this$inlined: SourceCrossinline inner class CrossinlineKt$filter$$inlined$source$2 + inner class CrossinlineKt$filter$$inlined$source$2$1 public method (p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void public @org.jetbrains.annotations.Nullable method consume$$forInline(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -148,9 +163,11 @@ final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1 { field L$1: java.lang.Object field L$2: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 - public method (p0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1 + method (p0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -159,6 +176,7 @@ public final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 { synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1 synthetic final field $this$inlined: Sink inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1 public method (p0: kotlin.jvm.functions.Function1, p1: Sink): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -172,9 +190,11 @@ final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2$1 { field L$1: java.lang.Object field L$2: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 - public method (p0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2$1 + method (p0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -183,6 +203,7 @@ public final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 { synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1 synthetic final field $this$inlined: Sink inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 + inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2$1 public method (p0: kotlin.jvm.functions.Function1, p1: Sink): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -197,9 +218,11 @@ final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 - public method (p0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1$1 + method (p0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -208,6 +231,7 @@ public final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 { synthetic final field $acc$inlined: kotlin.jvm.internal.Ref$ObjectRef synthetic final field $operation$inlined: kotlin.jvm.functions.Function3 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1$1 public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function3): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -222,9 +246,11 @@ final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 - public method (p0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$2, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2$1 + method (p0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -233,6 +259,7 @@ public final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 { synthetic final field $acc$inlined: kotlin.jvm.internal.Ref$ObjectRef synthetic final field $operation$inlined: kotlin.jvm.functions.Function3 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 + inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2$1 public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function3): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -247,9 +274,11 @@ final class CrossinlineKt$fold$$inlined$consumeEach$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1 - public method (p0: CrossinlineKt$fold$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$fold$$inlined$consumeEach$1 + inner class CrossinlineKt$fold$$inlined$consumeEach$1$1 + method (p0: CrossinlineKt$fold$$inlined$consumeEach$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -258,6 +287,7 @@ public final class CrossinlineKt$fold$$inlined$consumeEach$1 { synthetic final field $acc$inlined: kotlin.jvm.internal.Ref$ObjectRef synthetic final field $operation$inlined: kotlin.jvm.functions.Function3 inner class CrossinlineKt$fold$$inlined$consumeEach$1 + inner class CrossinlineKt$fold$$inlined$consumeEach$1$1 public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function3): void public method close(@org.jetbrains.annotations.Nullable p0: java.lang.Throwable): void public @org.jetbrains.annotations.Nullable method send$$forInline(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -273,8 +303,9 @@ final class CrossinlineKt$fold$1 { field L$3: java.lang.Object field L$4: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - public method (p0: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + inner class CrossinlineKt$fold$1 + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -289,9 +320,11 @@ final class CrossinlineKt$range$$inlined$source$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: CrossinlineKt$range$$inlined$source$1 - public method (p0: CrossinlineKt$range$$inlined$source$1, p1: kotlin.coroutines.Continuation): void + inner class CrossinlineKt$range$$inlined$source$1 + inner class CrossinlineKt$range$$inlined$source$1$1 + method (p0: CrossinlineKt$range$$inlined$source$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -300,6 +333,7 @@ public final class CrossinlineKt$range$$inlined$source$1 { synthetic final field $count$inlined: int synthetic final field $start$inlined: int inner class CrossinlineKt$range$$inlined$source$1 + inner class CrossinlineKt$range$$inlined$source$1$1 public method (p0: int, p1: int): void public @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object } @@ -311,9 +345,11 @@ final class CrossinlineKt$source$1$consume$1 { field L$1: java.lang.Object field L$2: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - private field this$0: CrossinlineKt$source$1 - public method (p0: CrossinlineKt$source$1, p1: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic final @org.jetbrains.annotations.NotNull field this$0: CrossinlineKt$source$1 + inner class CrossinlineKt$source$1 + inner class CrossinlineKt$source$1$consume$1 + method (p0: CrossinlineKt$source$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -321,6 +357,7 @@ final class CrossinlineKt$source$1$consume$1 { public final class CrossinlineKt$source$1 { private synthetic final field $action: kotlin.jvm.functions.Function2 inner class CrossinlineKt$source$1 + inner class CrossinlineKt$source$1$consume$1 public method (p0: kotlin.jvm.functions.Function2): void public @org.jetbrains.annotations.Nullable method consume$$forInline(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -330,6 +367,7 @@ public final class CrossinlineKt$source$1 { public final class CrossinlineKt { inner class CrossinlineKt$box$1 inner class CrossinlineKt$consumeEach$2 + inner class CrossinlineKt$fold$1 inner class CrossinlineKt$source$1 public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): void diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt index bfdf78a1219..ba2879b85e1 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt @@ -4,9 +4,9 @@ final class InlineWithoutStateMachineKt$box$1 { 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 + field label: int inner class InlineWithoutStateMachineKt$box$1 - public method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void + method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object @@ -18,14 +18,16 @@ final class InlineWithoutStateMachineKt$complexSuspend$1 { field L$0: java.lang.Object field L$1: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - public method (p0: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + inner class InlineWithoutStateMachineKt$complexSuspend$1 + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @kotlin.Metadata public final class InlineWithoutStateMachineKt { inner class InlineWithoutStateMachineKt$box$1 + inner class InlineWithoutStateMachineKt$complexSuspend$1 public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): void public final static @org.jetbrains.annotations.Nullable method complexSuspend(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt index b0726cd12ab..cb4ce6eb4df 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt @@ -11,9 +11,9 @@ public interface flow/FlowCollector { @kotlin.coroutines.jvm.internal.DebugMetadata @kotlin.Metadata final class flow/InnerObjectRetransformationKt$box$1 { - private field label: int + field label: int inner class flow/InnerObjectRetransformationKt$box$1 - public method (p0: kotlin.coroutines.Continuation): void + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object @@ -46,17 +46,20 @@ public final class flow/InnerObjectRetransformationKt$check$$inlined$flowWith$1 final class flow/InnerObjectRetransformationKt$check$1 { field L$0: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - public method (p0: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + inner class flow/InnerObjectRetransformationKt$check$1 + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @kotlin.Metadata final class flow/InnerObjectRetransformationKt$collect$2$emit$1 { field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - private field this$0: flow.InnerObjectRetransformationKt$collect$2 - public method (p0: flow.InnerObjectRetransformationKt$collect$2, p1: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic final @org.jetbrains.annotations.NotNull field this$0: flow.InnerObjectRetransformationKt$collect$2 + inner class flow/InnerObjectRetransformationKt$collect$2 + inner class flow/InnerObjectRetransformationKt$collect$2$emit$1 + method (p0: flow.InnerObjectRetransformationKt$collect$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -64,6 +67,7 @@ final class flow/InnerObjectRetransformationKt$collect$2$emit$1 { public final class flow/InnerObjectRetransformationKt$collect$2 { private synthetic final field $action: kotlin.jvm.functions.Function2 inner class flow/InnerObjectRetransformationKt$collect$2 + inner class flow/InnerObjectRetransformationKt$collect$2$emit$1 public method (p0: kotlin.jvm.functions.Function2): void public @org.jetbrains.annotations.Nullable method emit$$forInline(@org.jetbrains.annotations.NotNull p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method emit(@org.jetbrains.annotations.NotNull p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -72,9 +76,11 @@ public final class flow/InnerObjectRetransformationKt$collect$2 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flow$1$collect$1 { field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - private field this$0: flow.InnerObjectRetransformationKt$flow$1 - public method (p0: flow.InnerObjectRetransformationKt$flow$1, p1: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic final @org.jetbrains.annotations.NotNull field this$0: flow.InnerObjectRetransformationKt$flow$1 + inner class flow/InnerObjectRetransformationKt$flow$1 + inner class flow/InnerObjectRetransformationKt$flow$1$collect$1 + method (p0: flow.InnerObjectRetransformationKt$flow$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -82,6 +88,7 @@ final class flow/InnerObjectRetransformationKt$flow$1$collect$1 { public final class flow/InnerObjectRetransformationKt$flow$1 { private synthetic final field $block: kotlin.jvm.functions.Function2 inner class flow/InnerObjectRetransformationKt$flow$1 + inner class flow/InnerObjectRetransformationKt$flow$1$collect$1 public method (p0: kotlin.jvm.functions.Function2): void public @org.jetbrains.annotations.Nullable method collect$$forInline(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -90,9 +97,11 @@ public final class flow/InnerObjectRetransformationKt$flow$1 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1 { field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$1 - public method (p0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$1, p1: kotlin.coroutines.Continuation): void + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1 + method (p0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -101,6 +110,7 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 { synthetic final field $builderBlock$inlined: kotlin.jvm.functions.Function2 synthetic final field $this$inlined: flow.Flow inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1 public method (p0: kotlin.jvm.functions.Function2, p1: flow.Flow): void public @org.jetbrains.annotations.Nullable method collect$$forInline(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -109,9 +119,11 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2$1 { field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object synthetic final field this$0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$2 - public method (p0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$2, p1: kotlin.coroutines.Continuation): void + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2 + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2$1 + method (p0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$2, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -120,6 +132,7 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2 { synthetic final field $builderBlock$inlined: kotlin.jvm.functions.Function2 synthetic final field $this$inlined: flow.Flow inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2 + inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2$1 public method (p0: kotlin.jvm.functions.Function2, p1: flow.Flow): void public @org.jetbrains.annotations.Nullable method collect$$forInline(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object @@ -128,6 +141,7 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2 { @kotlin.Metadata public final class flow/InnerObjectRetransformationKt { inner class flow/InnerObjectRetransformationKt$box$1 + inner class flow/InnerObjectRetransformationKt$check$1 inner class flow/InnerObjectRetransformationKt$collect$2 inner class flow/InnerObjectRetransformationKt$flow$1 public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt index f077ad44686..8e0da2fbb41 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt @@ -23,9 +23,9 @@ public final class Override5Kt$box$1$invokeSuspend$$inlined$inlineMe$1 { @kotlin.coroutines.jvm.internal.DebugMetadata @kotlin.Metadata final class Override5Kt$box$1 { - private field label: int + field label: int inner class Override5Kt$box$1 - public method (p0: kotlin.coroutines.Continuation): void + method (p0: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation public final method invoke(p0: java.lang.Object): java.lang.Object public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object @@ -36,9 +36,11 @@ final class Override5Kt$box$1 { final class Override5Kt$inlineMe$1$generic$1 { field L$0: java.lang.Object field label: int - @org.jetbrains.annotations.NotNull field result: java.lang.Object - private field this$0: Override5Kt$inlineMe$1 - public method (p0: Override5Kt$inlineMe$1, p1: kotlin.coroutines.Continuation): void + synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic final @org.jetbrains.annotations.NotNull field this$0: Override5Kt$inlineMe$1 + inner class Override5Kt$inlineMe$1 + inner class Override5Kt$inlineMe$1$generic$1 + method (p0: Override5Kt$inlineMe$1, p1: kotlin.coroutines.Continuation): void public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object } @@ -55,6 +57,7 @@ public final class Override5Kt$inlineMe$1$generic$2 { public final class Override5Kt$inlineMe$1 { private synthetic final field $c: kotlin.jvm.functions.Function1 inner class Override5Kt$inlineMe$1 + inner class Override5Kt$inlineMe$1$generic$1 inner class Override5Kt$inlineMe$1$generic$2 public method (p0: kotlin.jvm.functions.Function1): void public @org.jetbrains.annotations.Nullable method generic$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt index 12c45270b93..d22490573dc 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt @@ -1,4 +1,5 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37084 // WITH_RUNTIME // COMMON_COROUTINES_TEST import COROUTINES_PACKAGE.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields.kt b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields.kt index 02f4488ceaa..a99ccc0b514 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields.kt @@ -1,4 +1,5 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37010 KT-37084 KT-37085 // WITH_RUNTIME // COMMON_COROUTINES_TEST import COROUTINES_PACKAGE.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields_ir.txt b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields_ir.txt new file mode 100644 index 00000000000..b2500d9f9fd --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineFields_ir.txt @@ -0,0 +1,57 @@ +@kotlin.Metadata +@kotlin.coroutines.jvm.internal.DebugMetadata +final class Controller$multipleSuspensions$1 { + field L$0: java.lang.Object + field label: int + synthetic field result: java.lang.Object + synthetic final field this$0: Controller + inner class Controller$multipleSuspensions$1 + method (p0: Controller, p1: kotlin.coroutines.Continuation): void + public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object +} + +@kotlin.Metadata +@kotlin.coroutines.jvm.internal.DebugMetadata +final class Controller$nonTailCall$1 { + field L$0: java.lang.Object + field label: int + synthetic field result: java.lang.Object + synthetic final field this$0: Controller + inner class Controller$nonTailCall$1 + method (p0: Controller, p1: kotlin.coroutines.Continuation): void + public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object +} + +@kotlin.Metadata +public final class Controller { + inner class Controller$multipleSuspensions$1 + inner class Controller$nonTailCall$1 + public method (): void + public final @org.jetbrains.annotations.Nullable method multipleSuspensions(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object + public final @org.jetbrains.annotations.Nullable method nonTailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object + public final @org.jetbrains.annotations.Nullable method suspendHere(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object + public final @org.jetbrains.annotations.Nullable method tailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object +} + +@kotlin.coroutines.jvm.internal.DebugMetadata +@kotlin.Metadata +final class CoroutineFieldsKt$box$1 { + synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef + field J$0: long + field L$0: java.lang.Object + field L$1: java.lang.Object + field label: int + private field p$: Controller + inner class CoroutineFieldsKt$box$1 + method (p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void + public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation + public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object + public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object +} + +@kotlin.Metadata +public final class CoroutineFieldsKt { + inner class CoroutineFieldsKt$box$1 + public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String + public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function2): void +} diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt index ef7f2b817b2..9bea9349c7d 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt @@ -1,8 +1,7 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37084 // WITH_RUNTIME // COMMON_COROUTINES_TEST -// WITH_COROUTINES -import helpers.* import COROUTINES_PACKAGE.* import COROUTINES_PACKAGE.intrinsics.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.txt b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.txt index 842f47a97b2..289555eadd1 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.txt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.txt @@ -16,63 +16,3 @@ public final class OomInReturnUnitKt { public final static @org.jetbrains.annotations.Nullable method some(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object public final static @org.jetbrains.annotations.Nullable method test(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object } - -@kotlin.Metadata -public abstract class helpers/ContinuationAdapter { - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext - public method (): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext - public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleResultContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext - public method resume(p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt { - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation - public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation -} - -@kotlin.Metadata -public final class helpers/EmptyContinuation$Companion { - inner class helpers/EmptyContinuation$Companion - private method (): void - public synthetic method (p0: kotlin.jvm.internal.DefaultConstructorMarker): void -} - -@kotlin.Metadata -public class helpers/EmptyContinuation { - public final static field Companion: helpers.EmptyContinuation$Companion - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext - inner class helpers/EmptyContinuation$Companion - static method (): void - public method (): void - public method (@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.CoroutineContext): void - public synthetic method (p0: kotlin.coroutines.experimental.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext - public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit_1_3.txt b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit_1_3.txt index 48162e278bd..93c9b469cb2 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit_1_3.txt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit_1_3.txt @@ -15,63 +15,3 @@ public final class OomInReturnUnitKt { public final static @org.jetbrains.annotations.Nullable method some(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object public final static @org.jetbrains.annotations.Nullable method test(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object } - -@kotlin.Metadata -public abstract class helpers/ContinuationAdapter { - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext - public method (): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext - public abstract method resume(p0: java.lang.Object): void - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void - public abstract method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleResultContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt { - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation - public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation -} - -@kotlin.Metadata -public final class helpers/EmptyContinuation$Companion { - inner class helpers/EmptyContinuation$Companion - private method (): void - public synthetic method (p0: kotlin.jvm.internal.DefaultConstructorMarker): void -} - -@kotlin.Metadata -public class helpers/EmptyContinuation { - public final static field Companion: helpers.EmptyContinuation$Companion - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext - inner class helpers/EmptyContinuation$Companion - static method (): void - public method (): void - public method (@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.CoroutineContext): void - public synthetic method (p0: kotlin.coroutines.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/privateAccessor.kt b/compiler/testData/codegen/bytecodeListing/coroutines/privateAccessor.kt index e55883ab685..7e19ae57e05 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/privateAccessor.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/privateAccessor.kt @@ -1,4 +1,5 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37086 // WITH_RUNTIME // COMMON_COROUTINES_TEST import COROUTINES_PACKAGE.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/privateSuspendFun.kt b/compiler/testData/codegen/bytecodeListing/coroutines/privateSuspendFun.kt index 6a917105b85..b388d2d27cf 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/privateSuspendFun.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/privateSuspendFun.kt @@ -1,4 +1,5 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37086 private suspend fun foo() {} class A { diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt b/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt index a5dda618eac..c103bcf2c60 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt @@ -1,4 +1,5 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-37088 // COMMON_COROUTINES_TEST // WITH_RUNTIME diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.kt b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.kt index b650ee83e77..298094d1852 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.kt @@ -1,7 +1,7 @@ // IGNORE_BACKEND: JVM_IR +// TODO: KT-36987 KT-37084 KT-37093 // COMMON_COROUTINES_TEST // WITH_RUNTIME -// WITH_COROUTINES // There should be no $foo$$inlined$map$1$1 class diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.txt b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.txt index 87451c2c4b1..c57f0b37497 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.txt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation.txt @@ -336,63 +336,3 @@ public final class TcoContinuationKt { public final static @org.jetbrains.annotations.NotNull method map(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function2): Flow public final static @org.jetbrains.annotations.NotNull method transform(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function3): Flow } - -@kotlin.Metadata -public abstract class helpers/ContinuationAdapter { - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext - public method (): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext - public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleResultContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext - public method resume(p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt { - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation - public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation -} - -@kotlin.Metadata -public final class helpers/EmptyContinuation$Companion { - inner class helpers/EmptyContinuation$Companion - private method (): void - public synthetic method (p0: kotlin.jvm.internal.DefaultConstructorMarker): void -} - -@kotlin.Metadata -public class helpers/EmptyContinuation { - public final static field Companion: helpers.EmptyContinuation$Companion - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext - inner class helpers/EmptyContinuation$Companion - static method (): void - public method (): void - public method (@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.CoroutineContext): void - public synthetic method (p0: kotlin.coroutines.experimental.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext - public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void - public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation_1_3.txt b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation_1_3.txt index ba824c4fe01..2a11991a038 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation_1_3.txt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/tcoContinuation_1_3.txt @@ -312,63 +312,3 @@ public final class TcoContinuationKt { public final static @org.jetbrains.annotations.NotNull method map(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function2): Flow public final static @org.jetbrains.annotations.NotNull method transform(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function3): Flow } - -@kotlin.Metadata -public abstract class helpers/ContinuationAdapter { - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext - public method (): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext - public abstract method resume(p0: java.lang.Object): void - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void - public abstract method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt$handleResultContinuation$1 { - synthetic final field $x: kotlin.jvm.functions.Function1 - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - method (p0: kotlin.jvm.functions.Function1): void - public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} - -@kotlin.Metadata -public final class helpers/CoroutineUtilKt { - inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1 - inner class helpers/CoroutineUtilKt$handleResultContinuation$1 - public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation - public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation -} - -@kotlin.Metadata -public final class helpers/EmptyContinuation$Companion { - inner class helpers/EmptyContinuation$Companion - private method (): void - public synthetic method (p0: kotlin.jvm.internal.DefaultConstructorMarker): void -} - -@kotlin.Metadata -public class helpers/EmptyContinuation { - public final static field Companion: helpers.EmptyContinuation$Companion - private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext - inner class helpers/EmptyContinuation$Companion - static method (): void - public method (): void - public method (@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.CoroutineContext): void - public synthetic method (p0: kotlin.coroutines.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void - public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext - public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void -} diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt index 95151b9e120..b450d5befd1 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt @@ -18,10 +18,11 @@ abstract class AbstractBytecodeListingTest : CodegenTestCase() { compile(files) val actualTxt = BytecodeListingTextCollectingVisitor.getText(classFileFactory, withSignatures = isWithSignatures(wholeFile)) - val prefixes = - if (coroutinesPackage == DescriptorUtils.COROUTINES_PACKAGE_FQ_NAME_RELEASE.asString()) { - listOf("_1_3", "") - } else listOf("") + val prefixes = when { + backend.isIR -> listOf("_ir", "_1_3", "") + coroutinesPackage == DescriptorUtils.COROUTINES_PACKAGE_FQ_NAME_RELEASE.asString() -> listOf("_1_3", "") + else -> listOf("") + } val txtFile = prefixes.firstNotNullResult { File(wholeFile.parentFile, wholeFile.nameWithoutExtension + "$it.txt").takeIf(File::exists) }