From f178c4ddeea35c37bca8c030faa7d88cb4624fec Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 24 Jun 2010 16:40:47 +0400 Subject: [PATCH] ClsMethod.getNavigationElement() may be not a method anymore --- .../intellij/psi/impl/compiled/ClsMethodImpl.java | 15 ++++++++++----- .../psi/impl/compiled/ClsParameterImpl.java | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java index 81b7dc25baf5..4dd8694e3f57 100644 --- a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java @@ -336,18 +336,23 @@ public class ClsMethodImpl extends ClsRepositoryPsiElement implem } @NotNull - public PsiElement getNavigationElement() { + public PsiMethod getSourceMirrorMethod() { PsiClass sourceClassMirror = ((ClsClassImpl)getParent()).getSourceMirrorClass(); if (sourceClassMirror == null) return this; - final PsiMethod[] methodsByName = sourceClassMirror.findMethodsByName(getName(), false); - for (PsiMethod sourceMethod : methodsByName) { - if (MethodSignatureUtil.areParametersErasureEqual(this, sourceMethod) && sourceMethod != this) { - return sourceMethod.getNavigationElement(); + for (PsiMethod sourceMethod : sourceClassMirror.findMethodsByName(getName(), false)) { + if (MethodSignatureUtil.areParametersErasureEqual(this, sourceMethod)) { + return sourceMethod; } } return this; } + @NotNull + public PsiElement getNavigationElement() { + final PsiMethod method = getSourceMirrorMethod(); + return method != this ? method.getNavigationElement() : this; + } + public PsiTypeParameterList getTypeParameterList() { return getStub().findChildStubByType(JavaStubElementTypes.TYPE_PARAMETER_LIST).getPsi(); } diff --git a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java index da8235e5e427..63dbd4fbd8f3 100644 --- a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java @@ -63,7 +63,7 @@ public class ClsParameterImpl extends ClsRepositoryPsiElement } ClsMethodImpl method = (ClsMethodImpl)getDeclarationScope(); - PsiMethod sourceMethod = (PsiMethod)method.getNavigationElement(); + PsiMethod sourceMethod = method.getSourceMirrorMethod(); if (sourceMethod == method) { final PsiParameterStubImpl parameterStub = (PsiParameterStubImpl) getStub(); if (!parameterStub.isAutoGeneratedName()) {