diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/afterComparingMinMaxReversed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/afterComparingMinMaxReversed.java index 7c517e7ea670..eacef9476724 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/afterComparingMinMaxReversed.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/afterComparingMinMaxReversed.java @@ -8,6 +8,8 @@ class Test { list.stream().max(String.CASE_INSENSITIVE_ORDER); list.stream().min(String.CASE_INSENSITIVE_ORDER); list.stream().max(Comparator.naturalOrder()); + List list2 = Arrays.asList("a", "b", "c"); + list2.stream().min(Collections.reverseOrder()); Collector> c = Collectors.minBy(Comparator.comparing(String::length)); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/beforeComparingMinMaxReversed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/beforeComparingMinMaxReversed.java index 96465b0993a1..096c10ab7d87 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/beforeComparingMinMaxReversed.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/comparatorCanBeSimplified/beforeComparingMinMaxReversed.java @@ -8,6 +8,8 @@ class Test { list.stream().min(String.CASE_INSENSITIVE_ORDER.reversed()); list.stream().max(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER)); list.stream().min(Collections.reverseOrder()); + List list2 = Arrays.asList("a", "b", "c"); + list2.stream().min(Collections.reverseOrder()); Collector> c = Collectors.maxBy(Comparator.comparing(String::length, Comparator.reverseOrder())); } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/intellij/codeInspection/RedundantComparatorComparingInspection.java b/plugins/InspectionGadgets/src/com/intellij/codeInspection/RedundantComparatorComparingInspection.java index 5a023a06cf49..408ba1479959 100644 --- a/plugins/InspectionGadgets/src/com/intellij/codeInspection/RedundantComparatorComparingInspection.java +++ b/plugins/InspectionGadgets/src/com/intellij/codeInspection/RedundantComparatorComparingInspection.java @@ -3,6 +3,7 @@ package com.intellij.codeInspection; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.ArrayUtil; @@ -116,6 +117,10 @@ public class RedundantComparatorComparingInspection extends AbstractBaseJavaLoca } } if (REVERSE_ORDER_FOR_NATURAL.test(call)) { + if (!InheritanceUtil.isInheritor(PsiUtil.substituteTypeParameter(call.getType(), JAVA_UTIL_COMPARATOR, 0, false), + JAVA_LANG_COMPARABLE)) { + return null; + } PsiReferenceParameterList parameterList = call.getMethodExpression().getParameterList(); return JAVA_UTIL_COMPARATOR + "."+(parameterList == null ? "" : ct.text(parameterList))+"naturalOrder()"; }