Create non-default getter for Enum.values property

#KT-9687 Fixed
This commit is contained in:
Denis Zharkov
2015-10-21 21:43:33 +03:00
parent 234360a471
commit 881fe640e7
3 changed files with 16 additions and 1 deletions
@@ -0,0 +1,8 @@
enum class Variants {
O, K;
companion object {
val valueStr = values[0].name + Variants.values[1].name
}
}
fun box() = Variants.valueStr
@@ -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")
@@ -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);