From 881fe640e73c72ac31b48c5428db380292b2f665 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 21 Oct 2015 21:43:33 +0300 Subject: [PATCH] Create non-default getter for Enum.values property #KT-9687 Fixed --- .../codegen/box/builtinsProperties/valuesInsideEnum.kt | 8 ++++++++ .../codegen/generated/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../org/jetbrains/kotlin/resolve/DescriptorFactory.java | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/codegen/box/builtinsProperties/valuesInsideEnum.kt diff --git a/compiler/testData/codegen/box/builtinsProperties/valuesInsideEnum.kt b/compiler/testData/codegen/box/builtinsProperties/valuesInsideEnum.kt new file mode 100644 index 00000000000..b5b56f59145 --- /dev/null +++ b/compiler/testData/codegen/box/builtinsProperties/valuesInsideEnum.kt @@ -0,0 +1,8 @@ +enum class Variants { + O, K; + companion object { + val valueStr = values[0].name + Variants.values[1].name + } +} + +fun box() = Variants.valueStr diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index ef495e4a3ee..f6c8a2ea330 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -939,6 +939,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinsProperties/throwable.kt"); doTest(fileName); } + + @TestMetadata("valuesInsideEnum.kt") + public void testValuesInsideEnum() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/builtinsProperties/valuesInsideEnum.kt"); + doTest(fileName); + } } @TestMetadata("compiler/testData/codegen/box/casts") diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java index 14a08d30053..56fc580aabf 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorFactory.java @@ -145,7 +145,8 @@ public class DescriptorFactory { KotlinType type = getBuiltIns(enumClass).getArrayType(Variance.INVARIANT, enumClass.getDefaultType()); - PropertyGetterDescriptorImpl getter = createDefaultGetter(values, Annotations.Companion.getEMPTY()); + PropertyGetterDescriptorImpl getter = createGetter( + values, Annotations.Companion.getEMPTY(), /* isDefault = */ false, /* isExternal = */ false); values.initialize(getter, null); getter.initialize(type);