From 94e830613ca6d502fce01dafaaecfff5a9d1c2ed Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 11 Oct 2019 20:54:46 +0200 Subject: [PATCH] Attribute error in cloning annotator to correct plugin (EA-142807 - NSME: ReflectionUtil.newInstance) GitOrigin-RevId: f8a1dbe607309690bd203d51fb9aca46b80ac83f --- .../daemon/impl/DefaultHighlightVisitor.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java index dd0da07f971e..487379cffb2b 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java @@ -4,11 +4,13 @@ package com.intellij.codeInsight.daemon.impl; import com.intellij.codeInsight.daemon.impl.analysis.ErrorQuickFixProvider; import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder; import com.intellij.codeInsight.highlighting.HighlightErrorFilter; +import com.intellij.diagnostic.PluginException; import com.intellij.lang.Language; import com.intellij.lang.LanguageAnnotators; import com.intellij.lang.LanguageUtil; import com.intellij.lang.annotation.Annotation; import com.intellij.lang.annotation.Annotator; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.DumbService; @@ -33,6 +35,7 @@ import java.util.Map; * @author yole */ final class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { + private static final Logger LOG = Logger.getInstance(DefaultHighlightVisitor.class); private AnnotationHolderImpl myAnnotationHolder; private final Map> myAnnotators = FactoryMap.create((key) -> createAnnotators(key)); @@ -184,7 +187,15 @@ final class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { private static List cloneTemplates(@NotNull Collection templates) { List result = new ArrayList<>(templates.size()); for (Annotator template : templates) { - result.add(ReflectionUtil.newInstance(template.getClass())); + Annotator annotator; + try { + annotator = ReflectionUtil.newInstance(template.getClass()); + } + catch (Exception e) { + LOG.error(PluginException.createByClass(e, template.getClass())); + continue; + } + result.add(annotator); } return result; }