From a3596da1932dddba76723e42969f9699d03a68c0 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 30 Jun 2016 16:36:21 +0200 Subject: [PATCH] IDEA-158061 ("variable fileToViewProvider too broad" is wrong) --- .../dataflow/TooBroadScopeInspectionBase.java | 8 ++++---- .../igtest/dataflow/scope/TooBroadScope.java | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/dataflow/TooBroadScopeInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/dataflow/TooBroadScopeInspectionBase.java index 9e04de3d5f55..beff8651cacf 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/dataflow/TooBroadScopeInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/dataflow/TooBroadScopeInspectionBase.java @@ -26,11 +26,8 @@ import com.intellij.util.Query; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; -import com.siyeh.ig.psiutils.ExpressionUtils; +import com.siyeh.ig.psiutils.*; import com.intellij.psi.util.FileTypeUtils; -import com.siyeh.ig.psiutils.ParenthesesUtils; -import com.siyeh.ig.psiutils.VariableAccessUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -130,6 +127,9 @@ public class TooBroadScopeInspectionBase extends BaseInspection { return false; } final PsiVariable variable = (PsiVariable)target; + if (!ClassUtils.isImmutable(variable.getType()) && !CollectionUtils.isEmptyArray(variable)) { + return false; + } if (variable.hasModifierProperty(PsiModifier.FINAL)) { return true; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/dataflow/scope/TooBroadScope.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/dataflow/scope/TooBroadScope.java index eebef28cf208..abef000918f5 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/dataflow/scope/TooBroadScope.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/dataflow/scope/TooBroadScope.java @@ -1,7 +1,6 @@ package com.siyeh.igtest.dataflow.scope; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import java.util.*; public class TooBroadScope { @@ -141,4 +140,20 @@ public class TooBroadScope System.out.println(); System.out.println(yes); } + + private final Map important = new HashMap<>(); + public void processImportant() { + final HashMap copy = new HashMap(important); + important.clear(); + System.out.println(); + System.out.println(copy); + } + + private final String[] EMPTY = {}; + void abc() { + String[] strings = EMPTY; + System.out.println(); + System.out.println(); + System.out.println(strings); + } } \ No newline at end of file