diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt index 61fe0e8bf07..4e363161318 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments import org.jetbrains.kotlin.psi2ir.pureEndOffsetOrUndefined import org.jetbrains.kotlin.psi2ir.pureStartOffsetOrUndefined import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.hasBackingField class PropertyGenerator(declarationGenerator: DeclarationGenerator) : DeclarationGeneratorExtension(declarationGenerator) { @@ -76,8 +77,11 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio ): IrProperty { val irPropertyType = propertyDescriptor.type.toIrType() return generateSyntheticPropertyWithInitializer(ktDeclarationContainer, propertyDescriptor, generateSyntheticAccessors) { - if (irValueParameter == null || context.configuration.skipBodies) null - else { + if (irValueParameter == null) + null + else if (context.configuration.skipBodies && !DescriptorUtils.isAnnotationClass(propertyDescriptor.containingDeclaration)) + null + else context.irFactory.createExpressionBody( IrGetValueImpl( ktDeclarationContainer.startOffsetSkippingComments, ktDeclarationContainer.endOffset, @@ -86,7 +90,6 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER ) ) - } } } diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.kt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.kt index c1fc673aa6a..d4d169c5eab 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.kt @@ -1,5 +1,3 @@ -// IGNORE_BACKEND: JVM_IR - annotation class Anno1 enum class Colors { WHITE, BLACK } annotation class Anno2( diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations_ir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations_ir.txt index 1fb2c84c929..6dbd59a21aa 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations_ir.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations_ir.txt @@ -1,13 +1,13 @@ -@kotlin.Metadata() @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +@kotlin.Metadata() public abstract @interface Anno1 { } //////////////////// -@kotlin.Metadata() @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +@kotlin.Metadata() public abstract @interface Anno2 { public abstract int i() default 5; @@ -32,8 +32,8 @@ public abstract @interface Anno2 { //////////////////// -@kotlin.Metadata() @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +@kotlin.Metadata() public abstract @interface Anno3 { public abstract java.lang.String value(); @@ -67,10 +67,10 @@ public enum Enum1 { //////////////////// -@kotlin.Metadata() -@Anno3(value = "value") -@Anno2(a = @Anno1(), clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class}) @Anno1() +@Anno2(a = @Anno1(), clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class}) +@Anno3(value = "value") +@kotlin.Metadata() public final class TestAnno { public TestAnno() { @@ -81,12 +81,12 @@ public final class TestAnno { //////////////////// -@kotlin.Metadata() -@Anno2(i = 6, s = "BCD", ii = {4, 5, 6}, ss = {"Z", "X"}, a = @Anno1(), color = Colors.WHITE, colors = {Colors.WHITE}, clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class}) @Anno3(value = "value") +@Anno2(i = 6, s = "BCD", ii = {4, 5, 6}, ss = {"Z", "X"}, a = @Anno1(), color = Colors.WHITE, colors = {Colors.WHITE}, clazz = TestAnno.class, classes = {TestAnno.class, Anno1.class}) +@kotlin.Metadata() public final class TestAnno2 { - @org.jetbrains.annotations.NotNull() @Anno3(value = "field") + @org.jetbrains.annotations.NotNull() private java.lang.String b = "property initializer"; public TestAnno2() { @@ -94,20 +94,20 @@ public final class TestAnno2 { } @Anno1() - public final void a(@org.jetbrains.annotations.NotNull() - @Anno3(value = "param-pam-pam") + public final void a(@Anno3(value = "param-pam-pam") + @org.jetbrains.annotations.NotNull() java.lang.String param) { } - @org.jetbrains.annotations.NotNull() @Anno3(value = "getter") + @org.jetbrains.annotations.NotNull() public final java.lang.String getB() { return null; } @Anno3(value = "setter") - public final void setB(@org.jetbrains.annotations.NotNull() - @Anno3(value = "setparam") + public final void setB(@Anno3(value = "setparam") + @org.jetbrains.annotations.NotNull() java.lang.String p0) { }