Navigation: Implement proper getOriginalElement() for Kotlin declarations.
Run find usages tests with library for both original and navigation elements. Drop duplicating tests. Simplify test class. TODO: Some usages are not found yet since light methods built from library files do not retain original declarations
This commit is contained in:
@@ -52,16 +52,16 @@ abstract class JetDeclarationStub<T extends StubElement> extends JetModifierList
|
||||
return super.getParent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiElement getOriginalElement() {
|
||||
KotlinDeclarationNavigationPolicy navigationPolicy = ServiceManager.getService(KotlinDeclarationNavigationPolicy.class);
|
||||
return navigationPolicy != null ? navigationPolicy.getOriginalElement(this) : this;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiElement getNavigationElement() {
|
||||
KotlinDeclarationNavigationPolicy navigationPolicy = ServiceManager.getService(KotlinDeclarationNavigationPolicy.class);
|
||||
if (navigationPolicy != null) {
|
||||
JetElement navigationElement = navigationPolicy.getNavigationElement(this);
|
||||
if (navigationElement != null) {
|
||||
return navigationElement;
|
||||
}
|
||||
}
|
||||
return this;
|
||||
return navigationPolicy != null ? navigationPolicy.getNavigationElement(this) : this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi
|
||||
|
||||
public trait KotlinDeclarationNavigationPolicy {
|
||||
public fun getNavigationElement(declaration: JetDeclaration): JetElement?
|
||||
public interface KotlinDeclarationNavigationPolicy {
|
||||
public fun getOriginalElement(declaration: JetDeclaration): JetElement
|
||||
public fun getNavigationElement(declaration: JetDeclaration): JetElement
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user