Mark enum entries that are deprecated in Kotlin as deprecated in bytecode
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
public enum E {
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
@kotlin.Deprecated(message = "a")
|
||||
Entry1, Entry2, /**
|
||||
* @deprecated
|
||||
*/
|
||||
@kotlin.Deprecated(message = "b")
|
||||
Entry3;
|
||||
|
||||
protected E() { /* compiled code */ }
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// p.E
|
||||
// test for KT-8874
|
||||
|
||||
package p
|
||||
|
||||
enum class E {
|
||||
@Deprecated("a")
|
||||
Entry1,
|
||||
Entry2,
|
||||
@Deprecated("b")
|
||||
Entry3
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
+6
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user