Fixed bug when ctrl+click on ArrayList.add() and other stuff navigated to alt-headers.
#KT-1815 fixed
This commit is contained in:
@@ -34,6 +34,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public PsiElement getNavigationElement(@NotNull ClsClassImpl clsClass) {
|
public PsiElement getNavigationElement(@NotNull ClsClassImpl clsClass) {
|
||||||
|
if (clsClass.getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
JetClass jetClass = (JetClass) getJetDeclarationByClsElement(clsClass);
|
JetClass jetClass = (JetClass) getJetDeclarationByClsElement(clsClass);
|
||||||
if (jetClass != null) {
|
if (jetClass != null) {
|
||||||
JetClass sourceClass = JetSourceNavigationHelper.getSourceClass(jetClass);
|
JetClass sourceClass = JetSourceNavigationHelper.getSourceClass(jetClass);
|
||||||
@@ -47,6 +50,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public PsiElement getNavigationElement(@NotNull ClsMethodImpl clsMethod) {
|
public PsiElement getNavigationElement(@NotNull ClsMethodImpl clsMethod) {
|
||||||
|
if (clsMethod.getParent().getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
JetDeclaration jetDeclaration = getJetDeclarationByClsElement(clsMethod);
|
JetDeclaration jetDeclaration = getJetDeclarationByClsElement(clsMethod);
|
||||||
if (jetDeclaration instanceof JetProperty) {
|
if (jetDeclaration instanceof JetProperty) {
|
||||||
JetDeclaration sourceProperty = JetSourceNavigationHelper.getSourceProperty((JetProperty) jetDeclaration);
|
JetDeclaration sourceProperty = JetSourceNavigationHelper.getSourceProperty((JetProperty) jetDeclaration);
|
||||||
@@ -66,6 +72,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
|
|||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public PsiElement getNavigationElement(@NotNull ClsFieldImpl clsField) {
|
public PsiElement getNavigationElement(@NotNull ClsFieldImpl clsField) {
|
||||||
|
if (clsField.getParent().getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return getJetDeclarationByClsElement(clsField);
|
return getJetDeclarationByClsElement(clsField);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.libraries;
|
package org.jetbrains.jet.plugin.libraries;
|
||||||
|
|
||||||
|
import com.intellij.psi.JavaPsiFacade;
|
||||||
|
import com.intellij.psi.PsiClass;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiReference;
|
import com.intellij.psi.PsiReference;
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.intellij.testFramework.LightProjectDescriptor;
|
import com.intellij.testFramework.LightProjectDescriptor;
|
||||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -51,6 +55,20 @@ public class LibraryNavigationRegressionTest extends LightCodeInsightFixtureTest
|
|||||||
ref.resolve().getNavigationElement();
|
ref.resolve().getNavigationElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Regression test against KT-1815
|
||||||
|
*/
|
||||||
|
public void testRefToAltHeaders() {
|
||||||
|
String text = "fun foo(e : java.util.Map.Entry<String, String>) { e.getKey(); }";
|
||||||
|
myFixture.configureByText(JetFileType.INSTANCE, text);
|
||||||
|
PsiReference ref = myFixture.getFile().findReferenceAt(text.indexOf("getKey"));
|
||||||
|
PsiClass expectedClass =
|
||||||
|
JavaPsiFacade.getInstance(getProject()).findClass("java.util.Map.Entry", GlobalSearchScope.allScope(getProject()));
|
||||||
|
//noinspection ConstantConditions
|
||||||
|
PsiElement actualClass = ref.resolve().getNavigationElement().getParent();
|
||||||
|
assertSame(expectedClass, actualClass);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected LightProjectDescriptor getProjectDescriptor() {
|
protected LightProjectDescriptor getProjectDescriptor() {
|
||||||
|
|||||||
Reference in New Issue
Block a user