Merging subsequent filtering checks even when index variable is used

This commit is contained in:
Valentin Kipyatkov
2016-04-22 13:22:42 +03:00
parent aa6240a0c5
commit 5ac2c48879
13 changed files with 113 additions and 96 deletions
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>for ((index, s) in list.withIndex()) {
if (s.length > index * 10) continue
if (s.length > index) {
return s
}
}
return null
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>return list
.filterIndexed { index, s -> s.length <= index * 10 && s.length > index }
.firstOrNull()
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>for ((index, s) in list.withIndex()) {
if (s.isBlank()) continue
if (s.length > index) {
return s
}
}
return null
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>return list
.filterIndexed { index, s -> !s.isBlank() && s.length > index }
.firstOrNull()
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>for ((index, s) in list.withIndex()) {
if (s.length > index) continue
if (s.isNotBlank()) {
return s
}
}
return null
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterIndexed{}.firstOrNull()'"
fun foo(list: List<String>): String? {
<caret>return list
.filterIndexed { index, s -> s.length <= index && s.isNotBlank() }
.firstOrNull()
}