From 0a155bda7052b3ba4fe6525aa3f23e2bb1dab6c7 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 26 Nov 2015 14:37:00 +0100 Subject: [PATCH] fix invalid PSI access in debugger (EA-72005 - assert: EmptySubstitutorImpl.put) --- .../impl/src/com/intellij/debugger/engine/JVMNameUtil.java | 2 +- .../src/com/intellij/psi/impl/EmptySubstitutorImpl.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java b/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java index a9c0e92c48af..aeb64e7367d9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JVMNameUtil.java @@ -365,7 +365,7 @@ public class JVMNameUtil { return null; } final PsiElement element = position.getElementAt(); - return (element != null) ? PsiTreeUtil.getParentOfType(element, PsiClass.class, false) : null; + return element != null && element.isValid() ? PsiTreeUtil.getParentOfType(element, PsiClass.class, false) : null; } @Nullable diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/EmptySubstitutorImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/EmptySubstitutorImpl.java index c03bb1ce3821..27dba52172a1 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/EmptySubstitutorImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/EmptySubstitutorImpl.java @@ -17,6 +17,7 @@ package com.intellij.psi.impl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import java.util.Collections; @@ -45,8 +46,8 @@ public final class EmptySubstitutorImpl extends EmptySubstitutor { @NotNull @Override public PsiSubstitutor put(@NotNull PsiTypeParameter classParameter, PsiType mapping){ - if (mapping != null && !mapping.isValid()) { - LOG.error("Invalid type in substitutor: " + mapping); + if (mapping != null) { + PsiUtil.ensureValidType(mapping); } return new PsiSubstitutorImpl(classParameter, mapping); }