From 20bf8cff5723a83b19075d4573d8734d778fb93d Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 17 Jul 2013 12:27:11 +0400 Subject: [PATCH] EA-47544 - IAE: GlobalInspectionTool.getHint --- .../CommonProblemDescriptorImpl.java | 8 +++++++- .../ui/DefaultInspectionToolPresentation.java | 18 +++++++++--------- .../DomElementProblemDescriptorImpl.java | 13 +++++++++---- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/CommonProblemDescriptorImpl.java b/platform/analysis-impl/src/com/intellij/codeInspection/CommonProblemDescriptorImpl.java index daa9e9ed61a4..432c76b1ab25 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/CommonProblemDescriptorImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/CommonProblemDescriptorImpl.java @@ -1,6 +1,10 @@ package com.intellij.codeInspection; +import com.intellij.util.ArrayUtil; +import com.intellij.util.FunctionUtil; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * User: anna @@ -18,7 +22,8 @@ public class CommonProblemDescriptorImpl implements CommonProblemDescriptor { myFixes = QuickFix.EMPTY_ARRAY; } else { - myFixes = fixes; + // no copy in most cases + myFixes = ArrayUtil.contains(null, fixes) ? ContainerUtil.mapNotNull(fixes, FunctionUtil.id(), QuickFix.EMPTY_ARRAY) : fixes; } myDescriptionTemplate = descriptionTemplate; } @@ -30,6 +35,7 @@ public class CommonProblemDescriptorImpl implements CommonProblemDescriptor { } @Override + @Nullable public QuickFix[] getFixes() { return myFixes; } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java index ba0e0dbf1a61..091d39266f7b 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java @@ -426,13 +426,13 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro } } - private void exportResults(@NotNull final CommonProblemDescriptor[] descriptions, @NotNull RefEntity refEntity, @NotNull Element parentNode) { - for (CommonProblemDescriptor description : descriptions) { - @NonNls final String template = description.getDescriptionTemplate(); - int line = description instanceof ProblemDescriptor ? ((ProblemDescriptor)description).getLineNumber() : -1; - final PsiElement psiElement = description instanceof ProblemDescriptor ? ((ProblemDescriptor)description).getPsiElement() : null; + private void exportResults(@NotNull final CommonProblemDescriptor[] descriptors, @NotNull RefEntity refEntity, @NotNull Element parentNode) { + for (CommonProblemDescriptor descriptor : descriptors) { + @NonNls final String template = descriptor.getDescriptionTemplate(); + int line = descriptor instanceof ProblemDescriptor ? ((ProblemDescriptor)descriptor).getLineNumber() : -1; + final PsiElement psiElement = descriptor instanceof ProblemDescriptor ? ((ProblemDescriptor)descriptor).getPsiElement() : null; @NonNls String problemText = StringUtil.replace(StringUtil.replace(template, "#ref", psiElement != null ? ProblemDescriptorUtil - .extractHighlightedText(description, psiElement) : ""), " #loc ", " "); + .extractHighlightedText(descriptor, psiElement) : ""), " #loc ", " "); Element element = refEntity.getRefManager().export(refEntity, parentNode, line); if (element == null) return; @@ -441,8 +441,8 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro if (refEntity instanceof RefElement){ final RefElement refElement = (RefElement)refEntity; final HighlightSeverity severity = getSeverity(refElement, getContext(), getToolWrapper()); - ProblemHighlightType problemHighlightType = description instanceof ProblemDescriptor - ? ((ProblemDescriptor)description).getHighlightType() + ProblemHighlightType problemHighlightType = descriptor instanceof ProblemDescriptor + ? ((ProblemDescriptor)descriptor).getHighlightType() : ProblemHighlightType.GENERIC_ERROR_OR_WARNING; final String attributeKey = getTextAttributeKey(refElement.getRefManager().getProject(), severity, problemHighlightType); problemClassElement.setAttribute("severity", severity.myName); @@ -451,7 +451,7 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro element.addContent(problemClassElement); if (myToolWrapper instanceof GlobalInspectionToolWrapper) { final GlobalInspectionTool globalInspectionTool = ((GlobalInspectionToolWrapper)myToolWrapper).getTool(); - final QuickFix[] fixes = description.getFixes(); + final QuickFix[] fixes = descriptor.getFixes(); if (fixes != null) { @NonNls Element hintsElement = new Element("hints"); for (QuickFix fix : fixes) { diff --git a/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementProblemDescriptorImpl.java b/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementProblemDescriptorImpl.java index d6b13e393e03..e6ef0e450433 100644 --- a/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementProblemDescriptorImpl.java +++ b/xml/dom-impl/src/com/intellij/util/xml/highlighting/DomElementProblemDescriptorImpl.java @@ -26,7 +26,12 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; -import com.intellij.psi.xml.*; +import com.intellij.psi.xml.XmlAttributeValue; +import com.intellij.psi.xml.XmlElement; +import com.intellij.psi.xml.XmlTag; +import com.intellij.psi.xml.XmlText; +import com.intellij.util.ArrayUtil; +import com.intellij.util.FunctionUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xml.*; import org.jetbrains.annotations.NotNull; @@ -59,7 +64,7 @@ public class DomElementProblemDescriptorImpl implements DomElementProblemDescrip public DomElementProblemDescriptorImpl(@NotNull final DomElement domElement, final String message, final HighlightSeverity type, - final LocalQuickFix... fixes) { + @NotNull LocalQuickFix... fixes) { this(domElement, message, type, null, null, fixes); } @@ -68,7 +73,7 @@ public class DomElementProblemDescriptorImpl implements DomElementProblemDescrip final HighlightSeverity type, @Nullable final TextRange textRange, ProblemHighlightType highlightType, - final LocalQuickFix... fixes) { + @NotNull LocalQuickFix... fixes) { myDomElement = domElement; final XmlElement element = domElement.getXmlElement(); if (element != null && !ApplicationManager.getApplication().isUnitTestMode()) { @@ -76,7 +81,7 @@ public class DomElementProblemDescriptorImpl implements DomElementProblemDescrip } mySeverity = type; myMessage = message; - myFixes = fixes; + myFixes = ArrayUtil.contains(null, fixes) ? ContainerUtil.mapNotNull(fixes, FunctionUtil.id(), LocalQuickFix.EMPTY_ARRAY) : fixes; if (textRange != null) { final PsiElement psiElement = getPsiElement();