Fixed bug when ctrl+click on ArrayList.add() and other stuff navigated to alt-headers.

#KT-1815 fixed
This commit is contained in:
Evgeny Gerashchenko
2012-04-23 23:08:43 +04:00
parent 423920d4c0
commit 8c2457195e
2 changed files with 27 additions and 0 deletions
@@ -34,6 +34,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
@Override
@Nullable
public PsiElement getNavigationElement(@NotNull ClsClassImpl clsClass) {
if (clsClass.getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
return null;
}
JetClass jetClass = (JetClass) getJetDeclarationByClsElement(clsClass);
if (jetClass != null) {
JetClass sourceClass = JetSourceNavigationHelper.getSourceClass(jetClass);
@@ -47,6 +50,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
@Override
@Nullable
public PsiElement getNavigationElement(@NotNull ClsMethodImpl clsMethod) {
if (clsMethod.getParent().getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
return null;
}
JetDeclaration jetDeclaration = getJetDeclarationByClsElement(clsMethod);
if (jetDeclaration instanceof JetProperty) {
JetDeclaration sourceProperty = JetSourceNavigationHelper.getSourceProperty((JetProperty) jetDeclaration);
@@ -66,6 +72,9 @@ public class JetClsNavigationPolicy implements ClsCustomNavigationPolicy {
@Override
@Nullable
public PsiElement getNavigationElement(@NotNull ClsFieldImpl clsField) {
if (clsField.getParent().getUserData(ClsClassImpl.DELEGATE_KEY) != null) {
return null;
}
return getJetDeclarationByClsElement(clsField);
}
@@ -16,7 +16,11 @@
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.search.GlobalSearchScope;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
@@ -51,6 +55,20 @@ public class LibraryNavigationRegressionTest extends LightCodeInsightFixtureTest
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
@Override
protected LightProjectDescriptor getProjectDescriptor() {