From e8018a7ca800e053974786b72ed65fbdbb05e6a4 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 9 Oct 2019 17:19:40 +0200 Subject: [PATCH] Clear superclass cache in TypePresentationService when plugin is unloaded GitOrigin-RevId: f88b084d3383670f62cb88d4fb59ac95e2e84d54 --- .../com/intellij/ide/TypePresentationServiceImpl.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/TypePresentationServiceImpl.java b/platform/platform-impl/src/com/intellij/ide/TypePresentationServiceImpl.java index d5a0ac0f446a..bd3400f2f03b 100644 --- a/platform/platform-impl/src/com/intellij/ide/TypePresentationServiceImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/TypePresentationServiceImpl.java @@ -1,8 +1,11 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide; +import com.intellij.ide.plugins.DynamicPluginListener; +import com.intellij.ide.plugins.IdeaPluginDescriptor; import com.intellij.ide.presentation.Presentation; import com.intellij.ide.presentation.PresentationProvider; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.util.ClassExtension; import com.intellij.openapi.util.IconLoader; @@ -10,6 +13,7 @@ import com.intellij.openapi.util.NullableLazyValue; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ConcurrentFactoryMap; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -84,6 +88,13 @@ public class TypePresentationServiceImpl extends TypePresentationService { for (TypeNameEP ep : TypeNameEP.EP_NAME.getExtensionList()) { myNames.put(ep.className, ep.getTypeName()); } + + ApplicationManager.getApplication().getMessageBus().connect().subscribe(DynamicPluginListener.TOPIC, new DynamicPluginListener() { + @Override + public void beforePluginUnload(@NotNull IdeaPluginDescriptor pluginDescriptor) { + mySuperClasses.clear(); + } + }); } @Nullable