From 1305a60e44bc4cea750cfa80582bab42434520f8 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 15 May 2017 13:21:05 +0700 Subject: [PATCH] IDEA-172798 "Immutable collection creation can be replaced" to remove temporary variable used for assignment --- .../java19api/Java9CollectionFactoryInspection.java | 4 ++++ .../java9CollectionFactory/afterHashSetExplicit.java | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java b/java/java-impl/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java index 967be0c901c1..d3e981b51d1a 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java @@ -23,6 +23,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.controlFlow.DefUseUtil; import com.intellij.psi.impl.PsiDiamondTypeUtil; +import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; @@ -312,8 +313,11 @@ public class Java9CollectionFactoryInspection extends BaseLocalInspectionTool { .prepend((PsiExpression)null) .pairMap((prev, next) -> (prev == null ? "" : CommentTracker.commentsBetween(prev, next)) + ct.text(next)) .joining(",", "java.util." + model.myType + "." + typeArgument + "of(", ")"); + List vars = + StreamEx.of(model.myElementsToDelete).map(PsiElement::getParent).select(PsiLocalVariable.class).toList(); model.myElementsToDelete.forEach(ct::delete); PsiElement replacement = ct.replaceAndRestoreComments(call, replacementText); + vars.stream().filter(var -> ReferencesSearch.search(var).findFirst() == null).forEach(PsiElement::delete); PsiDiamondTypeUtil.removeRedundantTypeArguments(replacement); } diff --git a/java/java-tests/testData/inspection/java9CollectionFactory/afterHashSetExplicit.java b/java/java-tests/testData/inspection/java9CollectionFactory/afterHashSetExplicit.java index 81b7dd158366..0a1050380cd7 100644 --- a/java/java-tests/testData/inspection/java9CollectionFactory/afterHashSetExplicit.java +++ b/java/java-tests/testData/inspection/java9CollectionFactory/afterHashSetExplicit.java @@ -5,7 +5,6 @@ public class Test { private static final Set MY_SET; static { - Set set; MY_SET = Set.of("foo", "bar", "xyz"); } } \ No newline at end of file