From 25bb220223fe10b5444148f2144bf95c567271be Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 9 Sep 2014 18:54:23 +0400 Subject: [PATCH] Fix navigation on values()/valueOf() of enum classes --- .../jet/lang/resolve/DescriptorFactory.java | 6 +++--- idea/testData/resolve/references/EnumValues.kt | 9 +++++++++ idea/testData/resolve/references/JavaEnumValueOf.kt | 5 +++++ .../jet/resolve/ReferenceResolveTestGenerated.java | 12 ++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 idea/testData/resolve/references/EnumValues.kt create mode 100644 idea/testData/resolve/references/JavaEnumValueOf.kt diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java index 6980b036e09..98c47598038 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorFactory.java @@ -86,7 +86,7 @@ public class DescriptorFactory { public static SimpleFunctionDescriptor createEnumValuesMethod(@NotNull ClassDescriptor enumClass) { SimpleFunctionDescriptorImpl values = SimpleFunctionDescriptorImpl.create(enumClass, Annotations.EMPTY, DescriptorUtils.ENUM_VALUES, - CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE); + CallableMemberDescriptor.Kind.SYNTHESIZED, enumClass.getSource()); return values.initialize(null, NO_RECEIVER_PARAMETER, Collections.emptyList(), Collections.emptyList(), KotlinBuiltIns.getInstance().getArrayType(enumClass.getDefaultType()), Modality.FINAL, @@ -97,10 +97,10 @@ public class DescriptorFactory { public static SimpleFunctionDescriptor createEnumValueOfMethod(@NotNull ClassDescriptor enumClass) { SimpleFunctionDescriptorImpl valueOf = SimpleFunctionDescriptorImpl.create(enumClass, Annotations.EMPTY, DescriptorUtils.ENUM_VALUE_OF, - CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE); + CallableMemberDescriptor.Kind.SYNTHESIZED, enumClass.getSource()); ValueParameterDescriptor parameterDescriptor = new ValueParameterDescriptorImpl( valueOf, null, 0, Annotations.EMPTY, Name.identifier("value"), KotlinBuiltIns.getInstance().getStringType(), false, null, - SourceElement.NO_SOURCE + enumClass.getSource() ); return valueOf.initialize(null, NO_RECEIVER_PARAMETER, Collections.emptyList(), Collections.singletonList(parameterDescriptor), enumClass.getDefaultType(), Modality.FINAL, diff --git a/idea/testData/resolve/references/EnumValues.kt b/idea/testData/resolve/references/EnumValues.kt new file mode 100644 index 00000000000..f9755b49b7e --- /dev/null +++ b/idea/testData/resolve/references/EnumValues.kt @@ -0,0 +1,9 @@ +package test + +enum class E { + LOL +} + +val values = E.values() + +// REF: (test).E diff --git a/idea/testData/resolve/references/JavaEnumValueOf.kt b/idea/testData/resolve/references/JavaEnumValueOf.kt new file mode 100644 index 00000000000..e7f24431a17 --- /dev/null +++ b/idea/testData/resolve/references/JavaEnumValueOf.kt @@ -0,0 +1,5 @@ +import java.lang.annotation.RetentionPolicy + +val values = RetentionPolicy.valueOf("") + +// REF: (java.lang.annotation).RetentionPolicy diff --git a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java index e53effd8523..5117c054f34 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java @@ -87,6 +87,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest doTest(fileName); } + @TestMetadata("EnumValues.kt") + public void testEnumValues() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/EnumValues.kt"); + doTest(fileName); + } + @TestMetadata("FakeJavaLang1.kt") public void testFakeJavaLang1() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/FakeJavaLang1.kt"); @@ -171,6 +177,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest doTest(fileName); } + @TestMetadata("JavaEnumValueOf.kt") + public void testJavaEnumValueOf() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/JavaEnumValueOf.kt"); + doTest(fileName); + } + @TestMetadata("JavaParameter.kt") public void testJavaParameter() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/JavaParameter.kt");