diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java index 3557904c759..901bf858235 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/ir/Fir2IrTextTestGenerated.java @@ -515,6 +515,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("annotationOnClassWithInitializer.kt") + public void testAnnotationOnClassWithInitializer() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt"); + } + @Test @TestMetadata("annotationsInAnnotationArguments.kt") public void testAnnotationsInAnnotationArguments() throws Exception { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 333b3f0e278..c0ec3ed85c9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -302,6 +302,7 @@ open class DeepCopyIrTreeWithSymbols( mapDeclarationOrigin(declaration.origin), IrAnonymousInitializerSymbolImpl(declaration.descriptor) ).apply { + transformAnnotations(declaration) body = declaration.body.transform() } diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt new file mode 100644 index 00000000000..3bebae06d79 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt @@ -0,0 +1,18 @@ +annotation class SomeAnn : Annotation { + constructor() /* primary */ + +} + +@SomeAnn +class My { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + init { + val x: Int = 1 + } + +} diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.txt new file mode 100644 index 00000000000..4d1c71f3a9d --- /dev/null +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.txt @@ -0,0 +1,42 @@ +FILE fqName: fileName:/annotationOnClassWithInitializer.kt + CLASS ANNOTATION_CLASS name:SomeAnn modality:FINAL visibility:public superTypes:[kotlin.Annotation] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.SomeAnn + CONSTRUCTOR visibility:public <> () returnType:.SomeAnn [primary] + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String [fake_override] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:My modality:FINAL visibility:public superTypes:[kotlin.Any] + annotations: + SomeAnn + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.My + CONSTRUCTOR visibility:public <> () returnType:.My [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:My modality:FINAL visibility:public superTypes:[kotlin.Any]' + ANONYMOUS_INITIALIZER isStatic=false + BLOCK_BODY + VAR name:x type:kotlin.Int [val] + CONST Int type=kotlin.Int value=1 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt new file mode 100644 index 00000000000..2df0689cd01 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt @@ -0,0 +1,8 @@ +annotation class SomeAnn + +@SomeAnn +class My { + init { + val x = 1 + } +} diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt new file mode 100644 index 00000000000..72c8fc26c30 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt @@ -0,0 +1,19 @@ +annotation class SomeAnn : Annotation { + constructor() /* primary */ + +} + +@SomeAnn +class My { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @SomeAnn + init { + val x: Int = 1 + } + +} diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.txt new file mode 100644 index 00000000000..da92ae610a3 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.txt @@ -0,0 +1,44 @@ +FILE fqName: fileName:/annotationOnClassWithInitializer.kt + CLASS ANNOTATION_CLASS name:SomeAnn modality:FINAL visibility:public superTypes:[kotlin.Annotation] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.SomeAnn + CONSTRUCTOR visibility:public <> () returnType:.SomeAnn [primary] + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String [fake_override] declared in kotlin.Annotation + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:My modality:FINAL visibility:public superTypes:[kotlin.Any] + annotations: + SomeAnn + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.My + CONSTRUCTOR visibility:public <> () returnType:.My [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:My modality:FINAL visibility:public superTypes:[kotlin.Any]' + ANONYMOUS_INITIALIZER isStatic=false + annotations: + SomeAnn + BLOCK_BODY + VAR name:x type:kotlin.Int [val] + CONST Int type=kotlin.Int value=1 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java index 93ca3a9e445..661f0de3980 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/ir/IrTextTestGenerated.java @@ -515,6 +515,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("annotationOnClassWithInitializer.kt") + public void testAnnotationOnClassWithInitializer() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt"); + } + @Test @TestMetadata("annotationsInAnnotationArguments.kt") public void testAnnotationsInAnnotationArguments() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/ir/KlibTextTestCaseGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/ir/KlibTextTestCaseGenerated.java index 266b27f5ca0..79c6fc43e0e 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/ir/KlibTextTestCaseGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/ir/KlibTextTestCaseGenerated.java @@ -407,6 +407,11 @@ public class KlibTextTestCaseGenerated extends AbstractKlibTextTestCase { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } + @TestMetadata("annotationOnClassWithInitializer.kt") + public void testAnnotationOnClassWithInitializer() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt"); + } + @TestMetadata("annotationsInAnnotationArguments.kt") public void testAnnotationsInAnnotationArguments() throws Exception { runTest("compiler/testData/ir/irText/declarations/annotations/annotationsInAnnotationArguments.kt");