diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java index 784d0a03042a..b350b9817b48 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java @@ -673,11 +673,16 @@ public class ClsFileImpl extends ClsRepositoryPsiElement return p > 0 ? internalName.substring(0, p).replace('/', '.') : ""; } - private static class FileContentPair extends Pair { - public FileContentPair(VirtualFile file, byte[] content) { + static class FileContentPair extends Pair { + public FileContentPair(@NotNull VirtualFile file, @NotNull byte[] content) { super(file, content); } + @NotNull + public byte[] getContent() { + return second; + } + @Override public String toString() { return first.toString(); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java index 3ecf64d24ab1..02db4dcf2bfc 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/StubBuildingVisitor.java @@ -784,23 +784,23 @@ public class StubBuildingVisitor extends ClassVisitor { } private static Function createMapping(Object classSource) { - Function mapping = null; - - if (classSource instanceof Pair) { - Object second = ((Pair)classSource).second; - if (second instanceof byte[]) { - mapping = createMapping((byte[])second); - } + byte[] bytes = null; + if (classSource instanceof ClsFileImpl.FileContentPair) { + bytes = ((ClsFileImpl.FileContentPair)classSource).getContent(); } else if (classSource instanceof VirtualFile) { - try { - byte[] bytes = ((VirtualFile)classSource).contentsToByteArray(false); - mapping = createMapping(bytes); - } + try { bytes = ((VirtualFile)classSource).contentsToByteArray(false); } catch (IOException ignored) { } } - return mapping != null ? mapping : GUESSING_MAPPER; + if (bytes != null) { + Function mapping = createMapping(bytes); + if (mapping != null) { + return mapping; + } + } + + return GUESSING_MAPPER; } private static Function createMapping(byte[] classBytes) {