diff --git a/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.kt b/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.kt new file mode 100644 index 00000000000..0288e0d1201 --- /dev/null +++ b/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.kt @@ -0,0 +1,16 @@ +// IGNORE_BACKEND: JVM +// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS +// RENDER_ANNOTATIONS +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +package foo + + +@Target(AnnotationTarget.TYPE) +annotation class TypeAnn + +enum class Kotlin (s: @TypeAnn String) { + A("123") { + fun foo() {} + }; +} diff --git a/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.txt b/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.txt new file mode 100644 index 00000000000..342fc638079 --- /dev/null +++ b/compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.txt @@ -0,0 +1,31 @@ +final class foo/Kotlin$A : foo/Kotlin { + ()V + void (java.lang.String $enum$name, int $enum$ordinal) + + public final void foo() +} + +Ljava/lang/Enum; +public class foo/Kotlin : java/lang/Enum { + private final static foo.Kotlin[] $VALUES + + public final static foo.Kotlin A + + private final static foo.Kotlin[] $values() + + static void () + + (Ljava/lang/String;)V + private void (java.lang.String $enum$name, int $enum$ordinal, java.lang.String s) + @Lfoo/TypeAnn;([]) : METHOD_FORMAL_PARAMETER 0, null + + public void (java.lang.String $enum$name, int $enum$ordinal, java.lang.String s, kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker) + + public static foo.Kotlin valueOf(java.lang.String value) + + public static foo.Kotlin[] values() +} + +public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation { + +} \ No newline at end of file diff --git a/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.kt b/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.kt new file mode 100644 index 00000000000..0dc6667505d --- /dev/null +++ b/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.kt @@ -0,0 +1,29 @@ +// IGNORE_BACKEND: JVM +// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS +// RENDER_ANNOTATIONS +// TARGET_BACKEND: JVM +// JVM_TARGET: 1.8 +package foo + +@Target(AnnotationTarget.TYPE) +annotation class TypeAnn(val name: String) + +@Target(AnnotationTarget.TYPE) +@Retention(AnnotationRetention.BINARY) +annotation class TypeAnnBinary + +@Target(AnnotationTarget.TYPE) +@Retention(AnnotationRetention.SOURCE) +annotation class TypeAnnSource + +class Kotlin { + + fun foo2(): @TypeAnn("2") @TypeAnnBinary @TypeAnnSource String { + return "OK" + } + + fun foo3() = foo2() + + fun foo4() = { foo2() }() + +} diff --git a/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.txt b/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.txt new file mode 100644 index 00000000000..10cf8cb3e92 --- /dev/null +++ b/compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.txt @@ -0,0 +1,44 @@ +Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function0; +final class foo/Kotlin$foo4$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 { + final foo.Kotlin this$0 + + void (foo.Kotlin $receiver) + + public final java.lang.String invoke() + @Lorg/jetbrains/annotations/NotNull;([]) // invisible + @Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null + @Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible + + public java.lang.Object invoke() +} + +public final class foo/Kotlin : java/lang/Object { + public void () + + public final java.lang.String foo2() + @Lorg/jetbrains/annotations/NotNull;([]) // invisible + @Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null + @Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible + + public final java.lang.String foo3() + @Lorg/jetbrains/annotations/NotNull;([]) // invisible + @Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null + @Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible + + public final java.lang.String foo4() + @Lorg/jetbrains/annotations/NotNull;([]) // invisible + @Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null + @Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible +} + +public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation { + public abstract java.lang.String name() +} + +public abstract interface foo/TypeAnnBinary : java/lang/Object, java/lang/annotation/Annotation { + +} + +public abstract interface foo/TypeAnnSource : java/lang/Object, java/lang/annotation/Annotation { + +} diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/AsmLikeInstructionListingTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/AsmLikeInstructionListingTestGenerated.java index db5dace5e06..c0da01901ea 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/AsmLikeInstructionListingTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/AsmLikeInstructionListingTestGenerated.java @@ -135,6 +135,11 @@ public class AsmLikeInstructionListingTestGenerated extends AbstractAsmLikeInstr runTest("compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor.kt"); } + @TestMetadata("enumClassConstructor_ir.kt") + public void testEnumClassConstructor_ir() throws Exception { + runTest("compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.kt"); + } + @TestMetadata("extension.kt") public void testExtension() throws Exception { runTest("compiler/testData/codegen/asmLike/typeAnnotations/extension.kt"); @@ -145,6 +150,11 @@ public class AsmLikeInstructionListingTestGenerated extends AbstractAsmLikeInstr runTest("compiler/testData/codegen/asmLike/typeAnnotations/implicit.kt"); } + @TestMetadata("implicit_ir.kt") + public void testImplicit_ir() throws Exception { + runTest("compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.kt"); + } + @TestMetadata("innerClassConstructor.kt") public void testInnerClassConstructor() throws Exception { runTest("compiler/testData/codegen/asmLike/typeAnnotations/innerClassConstructor.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrAsmLikeInstructionListingTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrAsmLikeInstructionListingTestGenerated.java index 3faa7ce7d3d..4ad345be618 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrAsmLikeInstructionListingTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/ir/IrAsmLikeInstructionListingTestGenerated.java @@ -135,6 +135,11 @@ public class IrAsmLikeInstructionListingTestGenerated extends AbstractIrAsmLikeI runTest("compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor.kt"); } + @TestMetadata("enumClassConstructor_ir.kt") + public void testEnumClassConstructor_ir() throws Exception { + runTest("compiler/testData/codegen/asmLike/typeAnnotations/enumClassConstructor_ir.kt"); + } + @TestMetadata("extension.kt") public void testExtension() throws Exception { runTest("compiler/testData/codegen/asmLike/typeAnnotations/extension.kt"); @@ -145,6 +150,11 @@ public class IrAsmLikeInstructionListingTestGenerated extends AbstractIrAsmLikeI runTest("compiler/testData/codegen/asmLike/typeAnnotations/implicit.kt"); } + @TestMetadata("implicit_ir.kt") + public void testImplicit_ir() throws Exception { + runTest("compiler/testData/codegen/asmLike/typeAnnotations/implicit_ir.kt"); + } + @TestMetadata("innerClassConstructor.kt") public void testInnerClassConstructor() throws Exception { runTest("compiler/testData/codegen/asmLike/typeAnnotations/innerClassConstructor.kt");