EA-47544 - IAE: GlobalInspectionTool.getHint

This commit is contained in:
Alexey Kudravtsev
2013-07-17 13:54:45 +04:00
parent 0bc7b1e69b
commit 20bf8cff57
3 changed files with 25 additions and 14 deletions
@@ -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.<QuickFix>id(), QuickFix.EMPTY_ARRAY) : fixes;
}
myDescriptionTemplate = descriptionTemplate;
}
@@ -30,6 +35,7 @@ public class CommonProblemDescriptorImpl implements CommonProblemDescriptor {
}
@Override
@Nullable
public QuickFix[] getFixes() {
return myFixes;
}
@@ -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) {
@@ -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.<LocalQuickFix>id(), LocalQuickFix.EMPTY_ARRAY) : fixes;
if (textRange != null) {
final PsiElement psiElement = getPsiElement();