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 bae886627b9..7997ed73c2a 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 @@ -360,15 +360,17 @@ open class ClassCodegen protected constructor( jvmSignatureClashDetector.trackField(field, RawSignature(fieldName, fieldType.descriptor, MemberKind.FIELD)) - object : AnnotationCodegen(this@ClassCodegen, context) { - override fun visitAnnotation(descr: String?, visible: Boolean): AnnotationVisitor { - return fv.visitAnnotation(descr, visible) - } + if (field.origin != JvmLoweredDeclarationOrigin.CONTINUATION_CLASS_RESULT_FIELD) { + object : AnnotationCodegen(this@ClassCodegen, context) { + override fun visitAnnotation(descr: String?, visible: Boolean): AnnotationVisitor { + return fv.visitAnnotation(descr, visible) + } - override fun visitTypeAnnotation(descr: String?, path: TypePath?, visible: Boolean): AnnotationVisitor { - return fv.visitTypeAnnotation(TypeReference.newTypeReference(TypeReference.FIELD).value,path, descr, visible) - } - }.genAnnotations(field, fieldType, field.type) + override fun visitTypeAnnotation(descr: String?, path: TypePath?, visible: Boolean): AnnotationVisitor { + return fv.visitTypeAnnotation(TypeReference.newTypeReference(TypeReference.FIELD).value,path, descr, visible) + } + }.genAnnotations(field, fieldType, field.type) + } val descriptor = field.metadata?.descriptor if (descriptor != null) { diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt index 8ebd5b23f73..02552b52bf1 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/crossinline_ir.txt @@ -8,7 +8,7 @@ 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 - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1 @@ -23,7 +23,7 @@ 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 - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 inner class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 @@ -79,7 +79,7 @@ final class CrossinlineKt$box$1 { @kotlin.Metadata final class CrossinlineKt$consumeEach$2$send$1 { field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 @@ -108,7 +108,7 @@ final class CrossinlineKt$filter$$inlined$source$1$1 { field L$4: java.lang.Object field L$5: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$$inlined$source$1 inner class CrossinlineKt$filter$$inlined$source$1 inner class CrossinlineKt$filter$$inlined$source$1$1 @@ -137,7 +137,7 @@ final class CrossinlineKt$filter$$inlined$source$2$1 { field L$4: java.lang.Object field L$5: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$$inlined$source$2 inner class CrossinlineKt$filter$$inlined$source$2 inner class CrossinlineKt$filter$$inlined$source$2$1 @@ -163,7 +163,7 @@ 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 - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1 @@ -190,7 +190,7 @@ 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 - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2 inner class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$2$1 @@ -218,7 +218,7 @@ final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$1$1 @@ -246,7 +246,7 @@ final class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2 inner class CrossinlineKt$fold$$forInline$$inlined$consumeEach$2$1 @@ -274,7 +274,7 @@ final class CrossinlineKt$fold$$inlined$consumeEach$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$fold$$inlined$consumeEach$1 inner class CrossinlineKt$fold$$inlined$consumeEach$1 inner class CrossinlineKt$fold$$inlined$consumeEach$1$1 @@ -303,7 +303,7 @@ final class CrossinlineKt$fold$1 { field L$3: java.lang.Object field L$4: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 @@ -320,7 +320,7 @@ final class CrossinlineKt$range$$inlined$source$1$1 { field L$2: java.lang.Object field L$3: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: CrossinlineKt$range$$inlined$source$1 inner class CrossinlineKt$range$$inlined$source$1 inner class CrossinlineKt$range$$inlined$source$1$1 @@ -345,7 +345,7 @@ final class CrossinlineKt$source$1$consume$1 { field L$1: java.lang.Object field L$2: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt index 268ffbd8eb2..a92a4027c51 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/inlineWithoutStateMachine_ir.txt @@ -18,7 +18,7 @@ final class InlineWithoutStateMachineKt$complexSuspend$1 { field L$0: java.lang.Object field L$1: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 diff --git a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt index 21a9eeab621..1db44d5441f 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/innerObjectRetransformation_ir.txt @@ -46,7 +46,7 @@ public final class flow/InnerObjectRetransformationKt$check$$inlined$flowWith$1 final class flow/InnerObjectRetransformationKt$check$1 { field L$0: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 @@ -55,7 +55,7 @@ final class flow/InnerObjectRetransformationKt$check$1 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$collect$2$emit$1 { field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 @@ -76,7 +76,7 @@ public final class flow/InnerObjectRetransformationKt$collect$2 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flow$1$collect$1 { field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 @@ -97,7 +97,7 @@ public final class flow/InnerObjectRetransformationKt$flow$1 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1 { field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$1 inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1 @@ -119,7 +119,7 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 { @kotlin.Metadata final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2$1 { field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic field result: java.lang.Object synthetic final field this$0: flow.InnerObjectRetransformationKt$flowWith$$inlined$flow$2 inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2 inner class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$2$1 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 8e0da2fbb41..77d11e48b0c 100644 --- a/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt +++ b/compiler/testData/codegen/box/coroutines/tailCallOptimizations/unit/override5_ir.txt @@ -36,7 +36,7 @@ final class Override5Kt$box$1 { final class Override5Kt$inlineMe$1$generic$1 { field L$0: java.lang.Object field label: int - synthetic @org.jetbrains.annotations.Nullable field result: java.lang.Object + synthetic 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 diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt index d22490573dc..3c406d64a77 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/coroutineContextIntrinsic.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// TODO: KT-37084 // WITH_RUNTIME // COMMON_COROUTINES_TEST import COROUTINES_PACKAGE.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt index 9bea9349c7d..9fea21bb17a 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/oomInReturnUnit.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// TODO: KT-37084 // WITH_RUNTIME // COMMON_COROUTINES_TEST import COROUTINES_PACKAGE.* diff --git a/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt b/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt index c103bcf2c60..89e4f357fe4 100644 --- a/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt +++ b/compiler/testData/codegen/bytecodeListing/coroutines/suspendReifiedFun.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR -// TODO: KT-37088 // COMMON_COROUTINES_TEST // WITH_RUNTIME