JVM IR: Mark Enum.$VALUES field as synthetic (#2957)

This commit is contained in:
Steven Schäfer
2020-01-08 13:17:58 +01:00
committed by Alexander Udalov
parent 6b5d92a693
commit 7f319c18de
5 changed files with 22 additions and 2 deletions
@@ -257,7 +257,6 @@ private class EnumClassLowering(val context: JvmBackendContext) : ClassLoweringP
val irValuesInitializer = createSyntheticValuesFieldInitializerExpression()
val descriptor = WrappedFieldDescriptor()
// TODO: mark ACC_SYNTHETIC
return IrFieldImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.FIELD_FOR_ENUM_VALUES,
IrFieldSymbolImpl(descriptor),
@@ -49,7 +49,7 @@ interface IrDeclarationOrigin {
object BRIDGE_SPECIAL: IrDeclarationOriginImpl("BRIDGE_SPECIAL")
object FIELD_FOR_ENUM_ENTRY : IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRY")
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES")
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES", isSynthetic = true)
object FIELD_FOR_OBJECT_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_OBJECT_INSTANCE")
val isSynthetic: Boolean get() = false
+11
View File
@@ -0,0 +1,11 @@
enum class Test {
A
}
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, $VALUES
// FLAGS: ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, A
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM
@@ -902,6 +902,11 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeFlags/property"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("enumFields.kt")
public void testEnumFields() throws Exception {
runTest("compiler/testData/writeFlags/property/enumFields.kt");
}
@TestMetadata("compiler/testData/writeFlags/property/classObject")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -902,6 +902,11 @@ public class IrWriteFlagsTestGenerated extends AbstractIrWriteFlagsTest {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/writeFlags/property"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("enumFields.kt")
public void testEnumFields() throws Exception {
runTest("compiler/testData/writeFlags/property/enumFields.kt");
}
@TestMetadata("compiler/testData/writeFlags/property/classObject")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)