diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index ea663600cb1..c0a97f8e6f9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -1571,7 +1571,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { for (KtEnumEntry enumEntry : enumEntries) { ClassDescriptor descriptor = getNotNull(bindingContext, BindingContext.CLASS, enumEntry); - FieldVisitor fv = v.newField(JvmDeclarationOriginKt.OtherOrigin(enumEntry, descriptor), ACC_PUBLIC | ACC_ENUM | ACC_STATIC | ACC_FINAL, + int isDeprecated = KotlinBuiltIns.isDeprecated(descriptor) ? ACC_DEPRECATED : 0; + FieldVisitor fv = v.newField(JvmDeclarationOriginKt.OtherOrigin(enumEntry, descriptor), ACC_PUBLIC | ACC_ENUM | ACC_STATIC | ACC_FINAL | isDeprecated, descriptor.getName().asString(), classAsmType.getDescriptor(), null, null); AnnotationCodegen.forField(fv, typeMapper).genAnnotations(descriptor, null); } diff --git a/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java new file mode 100644 index 00000000000..59b6ae766ff --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.java @@ -0,0 +1,13 @@ +public enum E { + /** + * @deprecated + */ + @kotlin.Deprecated(message = "a") + Entry1, Entry2, /** + * @deprecated + */ + @kotlin.Deprecated(message = "b") + Entry3; + + protected E() { /* compiled code */ } +} diff --git a/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt new file mode 100644 index 00000000000..0accee6b2f8 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt @@ -0,0 +1,12 @@ +// p.E +// test for KT-8874 + +package p + +enum class E { + @Deprecated("a") + Entry1, + Entry2, + @Deprecated("b") + Entry3 +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index 07b18741528..4531d8b132e 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -41,6 +41,12 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT doTest(fileName); } + @TestMetadata("DeprecatedEnumEntry.kt") + public void testDeprecatedEnumEntry() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt"); + doTest(fileName); + } + @TestMetadata("compiler/testData/asJava/lightClasses/delegation") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java index 4d6921d6d0b..ef9231d8576 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java @@ -41,6 +41,12 @@ public class IdeCompiledLightClassTestGenerated extends AbstractIdeCompiledLight doTest(fileName); } + @TestMetadata("DeprecatedEnumEntry.kt") + public void testDeprecatedEnumEntry() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt"); + doTest(fileName); + } + public String getTestsRoot() { return "compiler/testData/asJava/lightClasses"; } diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java index 775bf9e8ddd..64a9b29d514 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java @@ -41,6 +41,12 @@ public class IdeLightClassTestGenerated extends AbstractIdeLightClassTest { doTest(fileName); } + @TestMetadata("DeprecatedEnumEntry.kt") + public void testDeprecatedEnumEntry() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/DeprecatedEnumEntry.kt"); + doTest(fileName); + } + @TestMetadata("compiler/testData/asJava/lightClasses/facades") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)