unregister element types by both classloader & language

GitOrigin-RevId: d76e2c0459691be1a689a039a4c5f426cf806b7a
This commit is contained in:
Dennis Ushakov
2020-01-29 19:29:19 +03:00
committed by intellij-monorepo-bot
parent 17d1bed7ab
commit 4783b76af9
2 changed files with 10 additions and 0 deletions

View File

@@ -121,6 +121,7 @@ public abstract class Language extends UserDataHolderBase {
}
public static void unregisterLanguage(@NotNull Language language) {
IElementType.unregisterElementTypes(language);
ReferenceProvidersRegistry.getInstance().unloadProvidersFor(language);
ourRegisteredLanguages.remove(language.getClass());
ourRegisteredIDs.remove(language.getID());

View File

@@ -71,6 +71,15 @@ public class IElementType {
}
}
public static void unregisterElementTypes(@NotNull Language language) {
for (int i = 0; i < ourRegistry.length; i++) {
IElementType type = ourRegistry[i];
if (type != null && type.getLanguage().equals(language)) {
ourRegistry[i] = null;
}
}
}
private final short myIndex;
@NonNls
@NotNull