From 232eab2954a2aa395372ab0160e6446f146bc343 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 18 Mar 2021 10:20:17 +0700 Subject: [PATCH] [java-execution] ExceptionInfoCache: check if cached PSI is still valid Fixes EA-261426 - PIEAE: SubstrateRef$StubRef.reportError GitOrigin-RevId: cd7a6553850abbf103bee8c0b2c56610cbcbd12c --- .../com/intellij/execution/filters/ExceptionInfoCache.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/openapi/src/com/intellij/execution/filters/ExceptionInfoCache.java b/java/openapi/src/com/intellij/execution/filters/ExceptionInfoCache.java index 8095c24d8696..3435c7d92d84 100644 --- a/java/openapi/src/com/intellij/execution/filters/ExceptionInfoCache.java +++ b/java/openapi/src/com/intellij/execution/filters/ExceptionInfoCache.java @@ -67,7 +67,7 @@ public class ExceptionInfoCache { @NotNull ClassResolveInfo resolveClass(String className) { ClassResolveInfo cached = myCache.get(className); - if (cached != null) { + if (cached != null && cached.isValid()) { return cached; } @@ -114,6 +114,11 @@ public class ExceptionInfoCache { } return myExceptionClasses; } + + boolean isValid() { + return ContainerUtil.and(myClasses.values(), PsiElement::isValid) && + (myExceptionClasses == null || ContainerUtil.and(myExceptionClasses, PsiElement::isValid)); + } @NotNull static ExceptionInfoCache.ClassResolveInfo create(Project project, PsiElement[] elements) {