diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java index 471d2301e39a..5b286a1ea898 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8CollectionsApiInspection.java @@ -34,6 +34,7 @@ import com.intellij.util.containers.ContainerUtil; import com.siyeh.ig.psiutils.ControlFlowUtils; import com.siyeh.ig.psiutils.EquivalenceChecker; import com.siyeh.ig.psiutils.ExpressionUtils; +import com.siyeh.ig.psiutils.ParenthesesUtils; import one.util.streamex.StreamEx; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nls; @@ -443,7 +444,8 @@ public class Java8CollectionsApiInspection extends BaseJavaBatchLocalInspectionT if(args.length == 2) { PsiExpression list = args[0]; PsiExpression comparator = args[1]; - String replacement = list.getText()+".sort("+comparator.getText()+")"; + String replacement = + ParenthesesUtils.getText(list, ParenthesesUtils.METHOD_CALL_PRECEDENCE) + ".sort(" + comparator.getText() + ")"; if (!FileModificationService.getInstance().preparePsiElementForWrite(element.getContainingFile())) return; methodCallExpression .replace(JavaPsiFacade.getElementFactory(project).createExpressionFromText(replacement, methodCallExpression)); diff --git a/java/java-tests/testData/inspection/java8CollectionsApi/afterSortExpression.java b/java/java-tests/testData/inspection/java8CollectionsApi/afterSortExpression.java new file mode 100644 index 000000000000..38e486ee3d5b --- /dev/null +++ b/java/java-tests/testData/inspection/java8CollectionsApi/afterSortExpression.java @@ -0,0 +1,9 @@ +// "Replace with List.sort" "true" +import java.util.Collections; +import java.util.List; + +public class Main { + public static void doSort(List list1, List list2, boolean b) { + (b ? list1 : list2).sort(String.CASE_INSENSITIVE_ORDER); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/java8CollectionsApi/beforeSortExpression.java b/java/java-tests/testData/inspection/java8CollectionsApi/beforeSortExpression.java new file mode 100644 index 000000000000..8d7339a70305 --- /dev/null +++ b/java/java-tests/testData/inspection/java8CollectionsApi/beforeSortExpression.java @@ -0,0 +1,9 @@ +// "Replace with List.sort" "true" +import java.util.Collections; +import java.util.List; + +public class Main { + public static void doSort(List list1, List list2, boolean b) { + Collections.sort(b ? list1 : list2, String.CASE_INSENSITIVE_ORDER); + } +} \ No newline at end of file