diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt index 1a12e4bbb54..9c8d8e6a6e2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt @@ -72,6 +72,14 @@ class SimplifiableCallChainInspection : AbstractCallChainChecker() { Conversion("kotlin.collections.filter", "kotlin.collections.singleOrNull", "singleOrNull"), Conversion("kotlin.collections.filter", "kotlin.collections.isNotEmpty", "any"), Conversion("kotlin.collections.filter", "kotlin.collections.List.isEmpty", "none"), + Conversion("kotlin.collections.sorted", "kotlin.collections.firstOrNull", "min"), + Conversion("kotlin.collections.sorted", "kotlin.collections.lastOrNull", "max"), + Conversion("kotlin.collections.sortedDescending", "kotlin.collections.firstOrNull", "max"), + Conversion("kotlin.collections.sortedDescending", "kotlin.collections.lastOrNull", "min"), + Conversion("kotlin.collections.sortedBy", "kotlin.collections.firstOrNull", "minBy"), + Conversion("kotlin.collections.sortedBy", "kotlin.collections.lastOrNull", "maxBy"), + Conversion("kotlin.collections.sortedByDescending", "kotlin.collections.firstOrNull", "maxBy"), + Conversion("kotlin.collections.sortedByDescending", "kotlin.collections.lastOrNull", "minBy"), Conversion("kotlin.text.filter", "kotlin.text.first", "first"), Conversion("kotlin.text.filter", "kotlin.text.firstOrNull", "firstOrNull"), diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt new file mode 100644 index 00000000000..b03652621b6 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).sortedByDescending { it.second }.firstOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt.after new file mode 100644 index 00000000000..cf047f41d98 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).maxBy { it.second } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt new file mode 100644 index 00000000000..0c5e06056a8 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).sortedByDescending { it.second }.lastOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt.after new file mode 100644 index 00000000000..288cb1cbc05 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).minBy { it.second } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt new file mode 100644 index 00000000000..c1b708dfff7 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).sortedBy { it.second }.firstOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt.after new file mode 100644 index 00000000000..288cb1cbc05 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).minBy { it.second } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt new file mode 100644 index 00000000000..54da85a40f7 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).sortedBy { it.second }.lastOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt.after new file mode 100644 index 00000000000..cf047f41d98 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf("a" to 1, ,"c" to 3, "b" to 2).maxBy { it.second } \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt new file mode 100644 index 00000000000..e724ec620c3 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).sortedDescending().firstOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt.after new file mode 100644 index 00000000000..b38730ac958 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).max() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt new file mode 100644 index 00000000000..2a7b6922e10 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).sortedDescending().lastOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt.after new file mode 100644 index 00000000000..9570199e3d1 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).min() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt new file mode 100644 index 00000000000..829ce98986e --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).sorted().firstOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt.after new file mode 100644 index 00000000000..9570199e3d1 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).min() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt new file mode 100644 index 00000000000..caaea0de66d --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).sorted().lastOrNull() \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt.after new file mode 100644 index 00000000000..b38730ac958 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt.after @@ -0,0 +1,2 @@ +// WITH_RUNTIME +val x = listOf(1, 3, 2).max() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 22cb822bab8..1be95b90d3e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -1291,6 +1291,46 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/saveComment3.kt"); } + @TestMetadata("sortedByDescendingFirstOrNull.kt") + public void testSortedByDescendingFirstOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingFirstOrNull.kt"); + } + + @TestMetadata("sortedByDescendingLastOrNull.kt") + public void testSortedByDescendingLastOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByDescendingLastOrNull.kt"); + } + + @TestMetadata("sortedByFirstOrNull.kt") + public void testSortedByFirstOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByFirstOrNull.kt"); + } + + @TestMetadata("sortedByLastOrNull.kt") + public void testSortedByLastOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedByLastOrNull.kt"); + } + + @TestMetadata("sortedDescendingFirstOrNull.kt") + public void testSortedDescendingFirstOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingFirstOrNull.kt"); + } + + @TestMetadata("sortedDescendingLastOrNull.kt") + public void testSortedDescendingLastOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedDescendingLastOrNull.kt"); + } + + @TestMetadata("sortedFirstOrNull.kt") + public void testSortedFirstOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedFirstOrNull.kt"); + } + + @TestMetadata("sortedLastOrNull.kt") + public void testSortedLastOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/sortedLastOrNull.kt"); + } + @TestMetadata("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)