Supported index++ pattern as non-last statement and even inside expressions

This commit is contained in:
Valentin Kipyatkov
2016-05-12 17:33:47 +03:00
parent 2c90114d28
commit ebdff775f3
22 changed files with 276 additions and 36 deletions
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index++
if (x > 0) return x
}
return null
}
@@ -0,0 +1,8 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
<caret>return list
.filterNot { it.isBlank() }
.mapIndexed { index, s -> s.length * index }
.firstOrNull { it > 0 }
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
//TODO: should not be available without "asSequence()"!
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index++
if (x * 100 > index * index) return x
}
return null
}
@@ -0,0 +1,9 @@
// WITH_RUNTIME
//TODO: should not be available without "asSequence()"!
fun foo(list: List<String>): Int? {
var index = 0
return list
.filterNot { it.isBlank() }
.map { it.length * index++ }
.firstOrNull { it * 100 > index * index }
}
@@ -0,0 +1,12 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with '...mapIndexed{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index
val y = x * index++
if (y > 1000) return y
}
return null
}
@@ -0,0 +1,9 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with '...mapIndexed{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
<caret>return list
.filterNot { it.isBlank() }
.mapIndexed { index, s -> s.length * index }
.mapIndexed { index, x -> x * index }
.firstOrNull { it > 1000 }
}
@@ -0,0 +1,12 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'mapIndexed{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
val x = s.length * index
val y = x * index++
if (y > 1000) continue
return y
}
return null
}
@@ -0,0 +1,8 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'mapIndexed{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
return list
.mapIndexed { index, s -> s.length * index }
.mapIndexed { index, x -> x * index }
.firstOrNull { it <= 1000 }
}
@@ -0,0 +1,12 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index
index++
if (x > 0) return x
}
return null
}
@@ -0,0 +1,8 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
<caret>return list
.filterNot { it.isBlank() }
.mapIndexed { index, s -> s.length * index }
.firstOrNull { it > 0 }
}
@@ -0,0 +1,12 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index
index++
if ((x + index) % 3 == 0) return x
}
return null
}
@@ -5,8 +5,8 @@ fun foo(list: List<String>): Int? {
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * index
if (x > 0) return x
index++
if (x > 0) return x
}
return null
}
@@ -0,0 +1,11 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
var index = 0
<caret>for (s in list) {
if (s.isBlank()) continue
val x = s.length * ++index
if (x > 0) return x
}
return null
}
@@ -0,0 +1,8 @@
// WITH_RUNTIME
// INTENTION_TEXT: "Replace with 'filterNot{}.mapIndexed{}.firstOrNull{}'"
fun foo(list: List<String>): Int? {
<caret>return list
.filterNot { it.isBlank() }
.mapIndexed { index, s -> s.length * (index + 1) }
.firstOrNull { it > 0 }
}