inspection optimization: reuse the meta-language matching languages cache

GitOrigin-RevId: 89e3c3a780cfb95d2ae0434d955b94ca1d5f443b
This commit is contained in:
Alexey Kudravtsev
2023-08-31 16:28:03 +00:00
committed by intellij-monorepo-bot
parent 2da4d92224
commit 4ba35f1c46
@@ -69,20 +69,19 @@ public final class ToolLanguageUtil {
return false;
}
public static boolean isToolLanguageOneOf(@NotNull Set<String> elementDialectIds, @NotNull String languageId, boolean applyToDialects) {
if (elementDialectIds.contains(languageId)) {
public static boolean isToolLanguageOneOf(@NotNull Set<String> elementDialectIds, @NotNull String toolLanguageId, boolean applyToDialects) {
if (elementDialectIds.contains(toolLanguageId)) {
return true;
}
Language language = Language.findLanguageByID(languageId);
Language language = Language.findLanguageByID(toolLanguageId);
if (language == null) {
// unknown language in plugin.xml, ignore
return false;
}
if (language instanceof MetaLanguage) {
return !ContainerUtil.process(Language.getRegisteredLanguages(), registeredLanguage ->
!((MetaLanguage)language).matchesLanguage(registeredLanguage)
|| !existsDialectOneOf(elementDialectIds, registeredLanguage, applyToDialects));
if (language instanceof MetaLanguage metaLanguage) {
return ContainerUtil.exists(metaLanguage.getMatchingLanguages(), registeredLanguage ->
existsDialectOneOf(elementDialectIds, registeredLanguage, applyToDialects));
}
return existsDialectOneOf(elementDialectIds, language, applyToDialects);
}