mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prevent SOE when a non-xml language has HTML base language (EA-120937)
The following case is addressed: https://plugins.jetbrains.com/plugin/10253-illuminated-cloud-2 plugin has "com.illuminatedcloud.intellij.EmbeddedMarkupLanguage extends Language" with "HTML" base language. Also, there is "com.illuminatedcloud.intellij.editor.EmbeddedMarkupLineMarkerProvider extends HtmlLineMarkerProvider", which was probably added to prevent SOA previously.
This commit is contained in:
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.daemon.LineMarkerProvider;
|
||||
import com.intellij.codeInsight.daemon.LineMarkerProviders;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.xml.XMLLanguage;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -37,8 +36,6 @@ import java.util.Map;
|
||||
*/
|
||||
public class HtmlLineMarkerProvider implements LineMarkerProvider {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(HtmlLineMarkerProvider.class);
|
||||
|
||||
private final Map<Language, List<LineMarkerProvider>> embeddedLanguagesLineMarkerProviders = ContainerUtil.newConcurrentMap();
|
||||
|
||||
@Override
|
||||
@@ -49,10 +46,7 @@ public class HtmlLineMarkerProvider implements LineMarkerProvider {
|
||||
if (!(language instanceof XMLLanguage)) {
|
||||
List<LineMarkerProvider> markerProviders = getAllLineMarkerProvidersForLanguage(language, embeddedLanguagesLineMarkerProviders);
|
||||
for (LineMarkerProvider provider : markerProviders) {
|
||||
if (provider == this) {
|
||||
LOG.error("Found " + HtmlLineMarkerProvider.class.getName() + " in " + LineMarkerProviders.EP_NAME + " for " + language);
|
||||
continue;
|
||||
}
|
||||
if (provider instanceof HtmlLineMarkerProvider) continue;
|
||||
LineMarkerInfo info = provider.getLineMarkerInfo(element);
|
||||
if (info != null) {
|
||||
return info;
|
||||
@@ -92,6 +86,7 @@ public class HtmlLineMarkerProvider implements LineMarkerProvider {
|
||||
List<LineMarkerProvider> lineMarkerProviders = getAllLineMarkerProvidersForLanguage(language,
|
||||
localEmbeddedLanguagesLineMarkerProviders);
|
||||
for (LineMarkerProvider provider : lineMarkerProviders) {
|
||||
if (provider instanceof HtmlLineMarkerProvider) continue;
|
||||
if (embeddedLineMarkersWorkItems == null) embeddedLineMarkersWorkItems = new THashMap<>();
|
||||
List<PsiElement> elementList = embeddedLineMarkersWorkItems.computeIfAbsent(provider, k -> new ArrayList<>(5));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user