From abedcdedb793e5b4707dc25c39da4524c23e4bdd Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 8 Jun 2018 14:23:54 +0200 Subject: [PATCH] more diagnostics for EA-121352 - NPE: PsiClassImplUtil.isClassEquivalentTo --- .../src/com/intellij/psi/impl/PsiClassImplUtil.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java index f194ed0af840..2302a65c12bd 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java @@ -1148,8 +1148,8 @@ public class PsiClassImplUtil { return true; } - final PsiFile file1 = aClass.getContainingFile().getOriginalFile(); - final PsiFile file2 = another.getContainingFile().getOriginalFile(); + final PsiFile file1 = getOriginalFile(aClass); + final PsiFile file2 = getOriginalFile((PsiClass)another); //see com.intellij.openapi.vcs.changes.PsiChangeTracker //see com.intellij.psi.impl.PsiFileFactoryImpl#createFileFromText(CharSequence,PsiFile) @@ -1168,6 +1168,13 @@ public class PsiClassImplUtil { return (fileIndex.isInSource(vfile1) || lib1) && (fileIndex.isInSource(vfile2) || lib2); } + @NotNull + private static PsiFile getOriginalFile(@NotNull PsiClass aClass) { + PsiFile file = aClass.getContainingFile(); + if (file == null) throw new IllegalStateException("No containing file for " + aClass.getLanguage() + " " + aClass.getClass()); + return file.getOriginalFile(); + } + private static boolean compareClassSeqNumber(@NotNull PsiClass aClass, @NotNull PsiClass another) { // there may be several classes in one file, they must not be equal int index1 = getSeqNumber(aClass);