Introduce "Useless call on collection type" inspection

Related to KT-12165
Supported functions: filterNotNull, filterIsInstance,
mapNotNull, mapNotNullTo, mapIndexedNotNull, mapIndexedNotNullTo

Also, "Useless cal on not-null" improved a bit
This commit is contained in:
Mikhail Glukhikh
2017-06-19 16:00:30 +03:00
parent f80f41d254
commit bdb9f00c75
32 changed files with 411 additions and 73 deletions
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.collections.UselessCallOnCollectionInspection
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>filterIsInstance<String>()
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1")
@@ -0,0 +1,4 @@
// PROBLEM: none
// WITH_RUNTIME
val x = listOf(true, "1").<caret>filterIsInstance<String>()
@@ -0,0 +1,4 @@
// PROBLEM: none
// WITH_RUNTIME
val x = listOf(System.getProperty("")).<caret>filterIsInstance<String>()
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>filterIsInstance<Any>()
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1")
@@ -0,0 +1,4 @@
// PROBLEM: none
// WITH_RUNTIME
val x = listOf("1", null).<caret>filterIsInstance<Any>()
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>filterNotNull()
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1")
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val someList = listOf("alpha", "beta").<caret>mapIndexedNotNullTo(destination = hashSetOf()) { index, value -> index + value.length }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val someList = listOf("alpha", "beta").mapIndexedTo(destination = hashSetOf()) { index, value -> index + value.length }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>mapNotNullTo(mutableSetOf()) { it.toInt() }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").mapTo(mutableSetOf()) { it.toInt() }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>mapNotNull { it.toInt() }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").map { it.toInt() }
@@ -0,0 +1,4 @@
// PROBLEM: none
// WITH_RUNTIME
val x = listOf("1").<caret>mapNotNull { if (it.isNotEmpty()) it.toInt() else null }
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").<caret>mapNotNull(String::toInt)
@@ -0,0 +1,3 @@
// WITH_RUNTIME
val x = listOf("1").map(String::toInt)
@@ -0,0 +1,6 @@
// PROBLEM: none
// WITH_RUNTIME
fun String.toNullableInt(): Int? = null
val x = listOf("1").<caret>mapNotNull(String::toNullableInt)
@@ -0,0 +1,4 @@
// PROBLEM: none
// WITH_RUNTIME
val x = listOf("1", null).<caret>filterNotNull()
@@ -1,4 +1,5 @@
// WITH_RUNTIME
// FIX: Rename useless call to 'isBlank'
val s: String? = ""
val blank = s<caret>?.isNullOrBlank()
@@ -1,4 +1,5 @@
// WITH_RUNTIME
// FIX: Rename useless call to 'isBlank'
val s: String? = ""
val blank = s?.isBlank()
@@ -0,0 +1,5 @@
// WITH_RUNTIME
// FIX: Replace with dot call
val s: String? = ""
val empty = s<caret>?.isNullOrEmpty()
@@ -0,0 +1,5 @@
// WITH_RUNTIME
// FIX: Replace with dot call
val s: String? = ""
val empty = s.isNullOrEmpty()