diff --git a/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java b/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java index 970bd06075f0..d319ab58b2f6 100644 --- a/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java +++ b/java/java-psi-impl/src/com/intellij/psi/ClassFileViewProvider.java @@ -83,19 +83,19 @@ public class ClassFileViewProvider extends SingleRootFileViewProvider { @Override public void visitOuterClass(String owner, String name, String desc) { ref.set(Boolean.TRUE); + throw new ProcessCanceledException(); } @Override public void visitInnerClass(String name, String outer, String inner, int access) { - if (inner == null || childName.equals(inner) && outer != null && parentName.equals(outer.substring(outer.lastIndexOf('/') + 1))) { + if ((inner == null || childName.equals(inner)) && outer != null && parentName.equals(outer.substring(outer.lastIndexOf('/') + 1))) { ref.set(Boolean.TRUE); + throw new ProcessCanceledException(); } } }, ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); } - catch (ProcessCanceledException e) { - throw e; - } + catch (ProcessCanceledException ignored) { } catch (Exception e) { Logger.getInstance(ClassFileViewProvider.class).warn(file.getPath(), e); } diff --git a/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class$1.class b/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class$1.class new file mode 100644 index 000000000000..18d442a2f9cc Binary files /dev/null and b/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class$1.class differ diff --git a/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class.class b/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class.class index ba7b88b931aa..f3f6bfe59b9a 100644 Binary files a/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class.class and b/java/java-tests/testData/psi/cls/mirror/pkg/KindaInner$Class.class differ diff --git a/java/java-tests/testData/psi/cls/mirror/src/pkg/KindaInner$Class.java b/java/java-tests/testData/psi/cls/mirror/src/pkg/KindaInner$Class.java index 84a0dde32da6..e3e1d14db3fc 100644 --- a/java/java-tests/testData/psi/cls/mirror/src/pkg/KindaInner$Class.java +++ b/java/java-tests/testData/psi/cls/mirror/src/pkg/KindaInner$Class.java @@ -1,3 +1,7 @@ package pkg; -class KindaInner$Class { } \ No newline at end of file +class KindaInner$Class { + void m() { + new KindaInner$Class() { }; + } +} \ No newline at end of file