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,
|
JetProperty.class,
|
||||||
JetParameter.class,
|
JetParameter.class,
|
||||||
JetDelegationSpecifierList.class,
|
JetDelegationSpecifierList.class,
|
||||||
|
JetInitializerList.class,
|
||||||
JetImportDirective.class,
|
JetImportDirective.class,
|
||||||
JetAnnotationEntry.class,
|
JetAnnotationEntry.class,
|
||||||
JetTypeParameter.class,
|
JetTypeParameter.class,
|
||||||
JetTypeConstraint.class,
|
JetTypeConstraint.class,
|
||||||
JetPackageDirective.class,
|
JetPackageDirective.class,
|
||||||
JetCodeFragment.class);
|
JetCodeFragment.class
|
||||||
|
);
|
||||||
|
|
||||||
if (elementOfAdditionalResolve != null && !(elementOfAdditionalResolve instanceof JetParameter)) {
|
if (elementOfAdditionalResolve != null && !(elementOfAdditionalResolve instanceof JetParameter)) {
|
||||||
if (elementOfAdditionalResolve instanceof JetPackageDirective) {
|
if (elementOfAdditionalResolve instanceof JetPackageDirective) {
|
||||||
@@ -158,7 +160,10 @@ public abstract class ElementResolver {
|
|||||||
propertyAdditionalResolve(resolveSession, (JetProperty) resolveElement, trace, file, statementFilter);
|
propertyAdditionalResolve(resolveSession, (JetProperty) resolveElement, trace, file, statementFilter);
|
||||||
}
|
}
|
||||||
else if (resolveElement instanceof JetDelegationSpecifierList) {
|
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) {
|
else if (resolveElement instanceof JetImportDirective) {
|
||||||
JetImportDirective importDirective = (JetImportDirective) resolveElement;
|
JetImportDirective importDirective = (JetImportDirective) resolveElement;
|
||||||
@@ -341,9 +346,10 @@ public abstract class ElementResolver {
|
|||||||
|
|
||||||
private void delegationSpecifierAdditionalResolve(
|
private void delegationSpecifierAdditionalResolve(
|
||||||
ResolveSession resolveSession,
|
ResolveSession resolveSession,
|
||||||
JetDelegationSpecifierList specifier, BindingTrace trace, JetFile file) {
|
JetClassOrObject classOrObject,
|
||||||
|
BindingTrace trace,
|
||||||
JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent();
|
JetFile file
|
||||||
|
) {
|
||||||
LazyClassDescriptor descriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor descriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
||||||
|
|
||||||
// Activate resolving of supertypes
|
// 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);
|
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")
|
@TestMetadata("InFunctionParameterType.kt")
|
||||||
public void testInFunctionParameterType() throws Exception {
|
public void testInFunctionParameterType() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/InFunctionParameterType.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/InFunctionParameterType.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user