KT-7007 Go to declaration doesn't work inside enum class
#KT-7007 fixed
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user