From bde9a57c9e22d70960cb496844c83da0dafa04fa Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 14 May 2018 06:38:58 +0300 Subject: [PATCH] Don't suggest `map{}.filterNotNull() -> mapNotNull{}` on primitive array So #KT-21556 Fixed --- .../SimplifiableCallChainInspection.kt | 14 ++-- .../primitiveArray/filterFirst.kt | 6 ++ .../primitiveArray/filterFirst.kt.after | 6 ++ .../primitiveArray/filterFirstOrNull.kt | 6 ++ .../primitiveArray/filterFirstOrNull.kt.after | 6 ++ .../primitiveArray/filterIsEmpty.kt | 6 ++ .../primitiveArray/filterIsEmpty.kt.after | 6 ++ .../primitiveArray/filterIsNotEmpty.kt | 6 ++ .../primitiveArray/filterIsNotEmpty.kt.after | 6 ++ .../primitiveArray/filterLast.kt | 6 ++ .../primitiveArray/filterLast.kt.after | 6 ++ .../primitiveArray/filterLastOrNull.kt | 6 ++ .../primitiveArray/filterLastOrNull.kt.after | 6 ++ .../primitiveArray/filterSingle.kt | 6 ++ .../primitiveArray/filterSingle.kt.after | 6 ++ .../primitiveArray/filterSingleOrNull.kt | 6 ++ .../filterSingleOrNull.kt.after | 6 ++ .../primitiveArray/mapFilterNotNull.kt | 7 ++ .../primitiveArray/mapJoinTo.kt | 7 ++ .../primitiveArray/mapJoinTo.kt.after | 7 ++ .../primitiveArray/mapJoinToString.kt | 6 ++ .../primitiveArray/mapJoinToString.kt.after | 6 ++ .../LocalInspectionTestGenerated.java | 68 +++++++++++++++++++ 23 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapFilterNotNull.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt.after create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt create mode 100644 idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt.after 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 faf85044436..a2dbfd800c2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallChainInspection.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.inspections.collections import com.intellij.codeInspection.ProblemHighlightType import com.intellij.codeInspection.ProblemsHolder +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.psi.qualifiedExpressionVisitor @@ -21,11 +22,14 @@ class SimplifiableCallChainInspection : AbstractCallChainChecker() { // Do not apply on maps due to lack of relevant stdlib functions val builtIns = context[BindingContext.EXPRESSION_TYPE_INFO, expression]?.type?.builtIns ?: return@check false val firstReceiverType = firstResolvedCall.extensionReceiver?.type - val firstReceiverRawType = firstReceiverType?.constructor?.declarationDescriptor?.defaultType - if (firstReceiverRawType != null) { - if (firstReceiverRawType.isSubtypeOf(builtIns.map.defaultType) || - firstReceiverRawType.isSubtypeOf(builtIns.mutableMap.defaultType) - ) return@check false + if (firstReceiverType != null) { + if (conversion.replacement == "mapNotNull" && KotlinBuiltIns.isPrimitiveArray(firstReceiverType)) return@check false + val firstReceiverRawType = firstReceiverType.constructor.declarationDescriptor?.defaultType + if (firstReceiverRawType != null) { + if (firstReceiverRawType.isSubtypeOf(builtIns.map.defaultType) || + firstReceiverRawType.isSubtypeOf(builtIns.mutableMap.defaultType) + ) return@check false + } } if (conversion.replacement.startsWith("joinTo")) { // Function parameter in map must have String result type diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt new file mode 100644 index 00000000000..388472b7593 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.first() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt.after new file mode 100644 index 00000000000..be9e23b393d --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.first { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt new file mode 100644 index 00000000000..78777670d48 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.firstOrNull() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt.after new file mode 100644 index 00000000000..a89a57cf2fe --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.firstOrNull { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt new file mode 100644 index 00000000000..aaed4e30a55 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.isEmpty() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt.after new file mode 100644 index 00000000000..ad50e8370bf --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.none { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt new file mode 100644 index 00000000000..c34c4abb00a --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.isNotEmpty() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt.after new file mode 100644 index 00000000000..c30e7cd2798 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.any { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt new file mode 100644 index 00000000000..d607e8bd4d9 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.last() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt.after new file mode 100644 index 00000000000..7a4c521f4f8 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.last { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt new file mode 100644 index 00000000000..7034f85b99a --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.lastOrNull() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt.after new file mode 100644 index 00000000000..11d6717f534 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.lastOrNull { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt new file mode 100644 index 00000000000..7b30d5220a3 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.single() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt.after new file mode 100644 index 00000000000..f4dbbeca51d --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.single { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt new file mode 100644 index 00000000000..78b98ebd9fe --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.filter { it > 0 }.singleOrNull() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt.after new file mode 100644 index 00000000000..04318b6c096 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.singleOrNull { it > 0 } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapFilterNotNull.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapFilterNotNull.kt new file mode 100644 index 00000000000..b36cd718318 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapFilterNotNull.kt @@ -0,0 +1,7 @@ +// PROBLEM: none +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.map { if (it > 0) it else null }.filterNotNull() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt new file mode 100644 index 00000000000..a8db5e3aa4c --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt @@ -0,0 +1,7 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + val sb = StringBuilder() + array.map { "$it-$it" }.joinTo(sb) +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt.after new file mode 100644 index 00000000000..05f3fa6ce73 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt.after @@ -0,0 +1,7 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + val sb = StringBuilder() + array.joinTo(sb) { "$it-$it" } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt new file mode 100644 index 00000000000..a1e0ab187da --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.map { "$it-$it" }.joinToString() +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt.after new file mode 100644 index 00000000000..97392eee3e9 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val array: IntArray = intArrayOf(0, 1, 2, 3) + array.joinToString { "$it-$it" } +} \ 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 62b5d34f65e..fa328b3f935 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -613,6 +613,74 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { public void testMapWithReturn() throws Exception { runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/mapWithReturn.kt"); } + + @TestMetadata("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class PrimitiveArray extends AbstractLocalInspectionTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); + } + + public void testAllFilesPresentInPrimitiveArray() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true); + } + + @TestMetadata("filterFirst.kt") + public void testFilterFirst() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirst.kt"); + } + + @TestMetadata("filterFirstOrNull.kt") + public void testFilterFirstOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterFirstOrNull.kt"); + } + + @TestMetadata("filterIsEmpty.kt") + public void testFilterIsEmpty() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsEmpty.kt"); + } + + @TestMetadata("filterIsNotEmpty.kt") + public void testFilterIsNotEmpty() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterIsNotEmpty.kt"); + } + + @TestMetadata("filterLast.kt") + public void testFilterLast() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLast.kt"); + } + + @TestMetadata("filterLastOrNull.kt") + public void testFilterLastOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterLastOrNull.kt"); + } + + @TestMetadata("filterSingle.kt") + public void testFilterSingle() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingle.kt"); + } + + @TestMetadata("filterSingleOrNull.kt") + public void testFilterSingleOrNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/filterSingleOrNull.kt"); + } + + @TestMetadata("mapFilterNotNull.kt") + public void testMapFilterNotNull() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapFilterNotNull.kt"); + } + + @TestMetadata("mapJoinTo.kt") + public void testMapJoinTo() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinTo.kt"); + } + + @TestMetadata("mapJoinToString.kt") + public void testMapJoinToString() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCallChain/primitiveArray/mapJoinToString.kt"); + } + } } @TestMetadata("idea/testData/inspectionsLocal/collections/uselessCallOnCollection")