From 7cf759cf580b15afb10ccbb73da816f0435008a6 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Thu, 18 Feb 2016 15:03:17 +0300 Subject: [PATCH] inspections tool window: NPEs refixed --- .../OfflineInspectionRVContentProvider.java | 11 +++++++---- .../ui/DefaultInspectionToolPresentation.java | 4 ---- .../codeInspection/ui/InspectionResultsView.java | 12 +++++++----- .../intellij/codeInspection/ui/InspectionTree.java | 5 ++++- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineInspectionRVContentProvider.java b/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineInspectionRVContentProvider.java index 7db298c8ddff..eef80b91ba6f 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineInspectionRVContentProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineInspectionRVContentProvider.java @@ -77,10 +77,13 @@ public class OfflineInspectionRVContentProvider extends InspectionRVContentProvi final OfflineProblemDescriptorNode descriptorNode = (OfflineProblemDescriptorNode)node; final RefEntity element = descriptorNode.getElement(); selectedElements.add(element); - CommonProblemDescriptor[] quickFixes = actions.get(element); - actions.put(element, quickFixes == null ? - new CommonProblemDescriptor[]{descriptorNode.getDescriptor()} : - DefaultInspectionToolPresentation.mergeDescriptors(quickFixes, new CommonProblemDescriptor[]{descriptorNode.getDescriptor()})); + CommonProblemDescriptor[] descriptors = actions.get(element); + final CommonProblemDescriptor descriptor = descriptorNode.getDescriptor(); + final CommonProblemDescriptor[] descriptorAsArray = descriptor == null ? CommonProblemDescriptor.EMPTY_ARRAY + : new CommonProblemDescriptor[]{descriptor}; + actions.put(element, descriptors == null ? + descriptorAsArray : + DefaultInspectionToolPresentation.mergeDescriptors(descriptors, descriptorAsArray)); } else if (node instanceof RefElementNode) { selectedElements.add(((RefElementNode)node).getElement()); 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 c35e8cbf8f15..cc87a9c5bd14 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java @@ -274,9 +274,6 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro Equality equality = new Equality() { @Override public boolean equals(CommonProblemDescriptor o1, CommonProblemDescriptor o2) { - if (o1 == o2) { - return true; - } if (o1 instanceof ProblemDescriptor) { ProblemDescriptorBase p1 = (ProblemDescriptorBase)o1; ProblemDescriptorBase p2 = (ProblemDescriptorBase)o2; @@ -663,7 +660,6 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro if (allowedDescriptorSet != null && !allowedDescriptorSet.contains(d)) { continue; } - if (d == null) continue; QuickFix[] fixes = d.getFixes(); if (fixes != null) { if (isFirst) { diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java index b30c73f99de7..240b9a482e9d 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java @@ -453,11 +453,13 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren PsiElement selectedElement = ((RefElement)selectedEntity).getElement(); if (problemCount == 1) { CommonProblemDescriptor[] descriptors = myTree.getSelectedDescriptors(); - final CommonProblemDescriptor descriptor = descriptors[0]; - if (descriptor instanceof ProblemDescriptorBase) { - final PsiElement element = ((ProblemDescriptorBase)descriptor).getPsiElement(); - if (element != null) { - selectedElement = element; + if (descriptors.length != 0) { + final CommonProblemDescriptor descriptor = descriptors[0]; + if (descriptor instanceof ProblemDescriptorBase) { + final PsiElement element = ((ProblemDescriptorBase)descriptor).getPsiElement(); + if (element != null) { + selectedElement = element; + } } } } diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java index d04353d63b93..0cbedfcd5a31 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java @@ -247,7 +247,10 @@ public class InspectionTree extends Tree { private static void traverseDescriptors(InspectionTreeNode node, LinkedHashSet descriptors){ if (node instanceof ProblemDescriptionNode) { if (node.isValid() && !node.isResolved()) { - descriptors.add(((ProblemDescriptionNode)node).getDescriptor()); + final CommonProblemDescriptor descriptor = ((ProblemDescriptionNode)node).getDescriptor(); + if (descriptor != null) { + descriptors.add(descriptor); + } } } for(int i = node.getChildCount() - 1; i >= 0; i--){