KT-7007 Go to declaration doesn't work inside enum class

#KT-7007 fixed
This commit is contained in:
Evgeny Gerashchenko
2015-03-16 21:00:17 +03:00
parent 94937a39be
commit 3ec6ffc906
4 changed files with 37 additions and 5 deletions
@@ -81,12 +81,14 @@ public abstract class ElementResolver {
JetProperty.class,
JetParameter.class,
JetDelegationSpecifierList.class,
JetInitializerList.class,
JetImportDirective.class,
JetAnnotationEntry.class,
JetTypeParameter.class,
JetTypeConstraint.class,
JetPackageDirective.class,
JetCodeFragment.class);
JetCodeFragment.class
);
if (elementOfAdditionalResolve != null && !(elementOfAdditionalResolve instanceof JetParameter)) {
if (elementOfAdditionalResolve instanceof JetPackageDirective) {
@@ -158,7 +160,10 @@ public abstract class ElementResolver {
propertyAdditionalResolve(resolveSession, (JetProperty) resolveElement, trace, file, statementFilter);
}
else if (resolveElement instanceof JetDelegationSpecifierList) {
delegationSpecifierAdditionalResolve(resolveSession, (JetDelegationSpecifierList) resolveElement, trace, file);
delegationSpecifierAdditionalResolve(resolveSession, (JetClassOrObject) resolveElement.getParent(), trace, file);
}
else if (resolveElement instanceof JetInitializerList) {
delegationSpecifierAdditionalResolve(resolveSession, (JetEnumEntry) resolveElement.getParent(), trace, file);
}
else if (resolveElement instanceof JetImportDirective) {
JetImportDirective importDirective = (JetImportDirective) resolveElement;
@@ -341,9 +346,10 @@ public abstract class ElementResolver {
private void delegationSpecifierAdditionalResolve(
ResolveSession resolveSession,
JetDelegationSpecifierList specifier, BindingTrace trace, JetFile file) {
JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent();
JetClassOrObject classOrObject,
BindingTrace trace,
JetFile file
) {
LazyClassDescriptor descriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
// Activate resolving of supertypes
@@ -0,0 +1,11 @@
// KT-7007 Go to declaration doesn't work inside enum class
val TOP_LEVEL = 5
enum class MyEnum(value: Int) {
VALUE : MyEnum(TOP_LEVEL)
}
fun main(args: Array<String>) {
MyEnum.VALUE
}
@@ -0,0 +1,9 @@
package test
val TOP_LEVEL = 5
enum class MyEnum(value: Int) {
VALUE : MyEnum(<caret>TOP_LEVEL)
}
// REF: (test).TOP_LEVEL
@@ -209,6 +209,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest
doTest(fileName);
}
@TestMetadata("InEnumEntry.kt")
public void testInEnumEntry() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/InEnumEntry.kt");
doTest(fileName);
}
@TestMetadata("InFunctionParameterType.kt")
public void testInFunctionParameterType() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/InFunctionParameterType.kt");