From f397553e945ec4750dcd39f50772bd39d9c015e5 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 9 Sep 2021 16:04:52 +0300 Subject: [PATCH] PSI2IR: don't generate annotations on init block (related to KT-48687) --- .../psi2ir/generators/AnnotationGenerator.kt | 3 ++ ...nnotationOnClassWithInitializer.fir.kt.txt | 18 -------- .../annotationOnClassWithInitializer.fir.txt | 42 ------------------- .../annotationOnClassWithInitializer.kt | 1 + .../annotationOnClassWithInitializer.kt.txt | 1 - .../annotationOnClassWithInitializer.txt | 2 - 6 files changed, 4 insertions(+), 63 deletions(-) delete mode 100644 compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt delete mode 100644 compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.txt diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt index 665307b80db..81c01709553 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AnnotationGenerator.kt @@ -39,6 +39,9 @@ class AnnotationGenerator(context: GeneratorContext) : IrElementVisitorVoid { // front-end (incorrectly) copies annotations from corresponding interface members. if (declaration is IrProperty && declaration.origin == IrDeclarationOrigin.DELEGATED_MEMBER) return + // Don't generate annotations for anonymous initializers + if (declaration is IrAnonymousInitializer) return + // Delegate field is mapped to a new property descriptor with annotations of the original property delegate // (see IrPropertyDelegateDescriptorImpl), but annotations on backing fields should be processed manually here val annotatedDescriptor = diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt deleted file mode 100644 index 3bebae06d79..00000000000 --- a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.kt.txt +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 4d1c71f3a9d..00000000000 --- a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.fir.txt +++ /dev/null @@ -1,42 +0,0 @@ -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 index 2df0689cd01..48e5380a44c 100644 --- a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL annotation class SomeAnn @SomeAnn diff --git a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt index 72c8fc26c30..3bebae06d79 100644 --- a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt.txt @@ -11,7 +11,6 @@ class My { } - @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 index da92ae610a3..4d1c71f3a9d 100644 --- a/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.txt +++ b/compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.txt @@ -24,8 +24,6 @@ FILE fqName: fileName:/annotationOnClassWithInitializer.kt 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