diff --git a/java/java-impl/src/com/intellij/codeEditor/JavaEditorFileSwapper.java b/java/java-impl/src/com/intellij/codeEditor/JavaEditorFileSwapper.java index 0847c5412e54..89d8201e8bf8 100644 --- a/java/java-impl/src/com/intellij/codeEditor/JavaEditorFileSwapper.java +++ b/java/java-impl/src/com/intellij/codeEditor/JavaEditorFileSwapper.java @@ -88,7 +88,7 @@ public class JavaEditorFileSwapper extends EditorFileSwapper { if (!(clsClass instanceof ClsClassImpl)) return null; PsiClass sourceClass = ((ClsClassImpl)clsClass).getSourceMirrorClass(); - if (sourceClass == null || sourceClass == clsClass) return null; + if (sourceClass == null) return null; VirtualFile result = sourceClass.getContainingFile().getVirtualFile(); assert result != null; diff --git a/java/java-psi-api/src/com/intellij/psi/util/MethodSignatureUtil.java b/java/java-psi-api/src/com/intellij/psi/util/MethodSignatureUtil.java index 986956ccbc97..8c692900f997 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/MethodSignatureUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/MethodSignatureUtil.java @@ -271,6 +271,7 @@ public class MethodSignatureUtil { } public static boolean areParametersErasureEqual(PsiMethod method1, PsiMethod method2) { + if (method1.getParameterList().getParametersCount() != method2.getParameterList().getParametersCount()) return false; return areSignaturesErasureEqual(method1.getSignature(PsiSubstitutor.EMPTY), method2.getSignature(PsiSubstitutor.EMPTY)); } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsClassImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsClassImpl.java index 69512eb5d2bd..9b87f97bf064 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsClassImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsClassImpl.java @@ -571,6 +571,8 @@ public class ClsClassImpl extends ClsRepositoryPsiElement> imple if (!(parent instanceof PsiClassOwner)) return null; PsiClassOwner fileNavigationElement = (PsiClassOwner)parent.getNavigationElement(); + if (fileNavigationElement == parent) return null; + for (PsiClass aClass : fileNavigationElement.getClasses()) { if (name.equals(aClass.getName())) return aClass; } @@ -602,19 +604,19 @@ public class ClsClassImpl extends ClsRepositoryPsiElement> imple } PsiClass aClass = getSourceMirrorClass(); - return aClass != null && aClass != this ? aClass.getNavigationElement() : this; + return aClass != null ? aClass.getNavigationElement() : this; } @Override public ItemPresentation getPresentation() { PsiClass aClass = getSourceMirrorClass(); - return aClass != null && aClass != this ? aClass.getPresentation() : ItemPresentationProviders.getItemPresentation(this); + return aClass != null ? aClass.getPresentation() : ItemPresentationProviders.getItemPresentation(this); } @Override public Icon getElementIcon(final int flags) { PsiClass aClass = getSourceMirrorClass(); - return aClass != null && aClass != this ? aClass.getIcon(flags) : PsiClassImplUtil.getClassIcon(flags, this); + return aClass != null ? aClass.getIcon(flags) : PsiClassImplUtil.getClassIcon(flags, this); } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFieldImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFieldImpl.java index a472439236a3..6aa5ef371d19 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFieldImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFieldImpl.java @@ -257,7 +257,7 @@ public class ClsFieldImpl extends ClsRepositoryPsiElement implemen PsiClass sourceClassMirror = ((ClsClassImpl)getParent()).getSourceMirrorClass(); PsiElement sourceFieldMirror = sourceClassMirror != null ? sourceClassMirror.findFieldByName(getName(), false) : null; - return sourceFieldMirror != null && sourceFieldMirror != this ? sourceFieldMirror.getNavigationElement() : this; + return sourceFieldMirror != null ? sourceFieldMirror.getNavigationElement() : this; } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java index 0491d84c1789..729ff5860fa5 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsMethodImpl.java @@ -42,6 +42,7 @@ import com.intellij.util.IncorrectOperationException; import com.intellij.util.PlatformIcons; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.List; @@ -363,16 +364,16 @@ public class ClsMethodImpl extends ClsRepositoryPsiElement implem return true; } - @NotNull + @Nullable public PsiMethod getSourceMirrorMethod() { PsiClass sourceClassMirror = ((ClsClassImpl)getParent()).getSourceMirrorClass(); - if (sourceClassMirror == null) return this; + if (sourceClassMirror == null) return null; for (PsiMethod sourceMethod : sourceClassMirror.findMethodsByName(getName(), false)) { if (MethodSignatureUtil.areParametersErasureEqual(this, sourceMethod)) { return sourceMethod; } } - return this; + return null; } @Override @@ -386,7 +387,7 @@ public class ClsMethodImpl extends ClsRepositoryPsiElement implem } final PsiMethod method = getSourceMirrorMethod(); - return method != this ? method.getNavigationElement() : this; + return method != null ? method.getNavigationElement() : this; } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java index 6e2856937e46..96d6e794a481 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java @@ -66,13 +66,14 @@ public class ClsParameterImpl extends ClsRepositoryPsiElement ClsMethodImpl method = (ClsMethodImpl)getDeclarationScope(); PsiMethod sourceMethod = method.getSourceMirrorMethod(); - if (sourceMethod == method) { + if (sourceMethod == null) { final PsiParameterStubImpl parameterStub = (PsiParameterStubImpl) getStub(); if (!parameterStub.isAutoGeneratedName()) { return parameterStub.getName(); } return null; } + assert sourceMethod != method; myName = sourceMethod.getParameterList().getParameters()[getIndex()].getName(); } return myName;