RedundantUnitExpressionInspection: support lambdas

#KT-39772 Fixed
This commit is contained in:
Dmitry Gridin
2020-06-22 22:07:29 +07:00
parent 4ac7dc0744
commit af24ce5e03
19 changed files with 260 additions and 7 deletions
@@ -1,4 +1,3 @@
// PROBLEM: none
fun test(b: Boolean): Unit = if (b) {
fun a() = 1
<caret>Unit
@@ -0,0 +1,4 @@
fun test(b: Boolean): Unit = if (b) {
fun a() = 1
} else {
}
@@ -1,4 +1,3 @@
// PROBLEM: none
fun test(b: Boolean): Unit = when (b) {
true -> {
fun a() {}
@@ -0,0 +1,7 @@
fun test(b: Boolean): Unit = when (b) {
true -> {
fun a() {}
}
else -> {
}
}
@@ -0,0 +1,28 @@
// PROBLEM: none
// WITH_RUNTIME
fun nonUnit(p: Int): Int = p
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
println(1)
nonUnit(2)
p?.let {
println(3)
nonUnit(4)
Unit<caret>
}
}
fun h() {
println(5)
nonUnit(6)
}
fun x() = doIt {
println(7)
nonUnit(8)
Unit
}
@@ -0,0 +1,28 @@
// PROBLEM: none
// WITH_RUNTIME
fun nonUnit(p: Int): Int = p
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
println(1)
nonUnit(2)
p?.let {
println(3)
nonUnit(4)
Unit
}
}
fun h() {
println(5)
nonUnit(6)
}
fun x() = doIt {
println(7)
nonUnit(8)
Unit<caret>
}
@@ -0,0 +1,16 @@
// PROBLEM: none
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
null?.doDo()
Unit<caret>
}
}
@@ -0,0 +1,17 @@
// PROBLEM: none
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
1.let { it.let { it.let { it.let { null?.doDo() } } } }
Unit<caret>
}
}
@@ -0,0 +1,12 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
p?.let { Unit<caret> }
}
fun h() = Unit
fun x() = doIt { Unit }
@@ -0,0 +1,12 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
p?.let { <caret>}
}
fun h() = Unit
fun x() = doIt { Unit }
@@ -0,0 +1,12 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
p?.let { Unit }
}
fun h() = Unit
fun x() = doIt { Unit<caret> }
@@ -0,0 +1,12 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = TODO()
fun g(p: String?) {
p?.let { Unit }
}
fun h() = Unit
fun x() = doIt { <caret>}
@@ -0,0 +1,9 @@
// WITH_RUNTIME
// PROBLEM: none
// not yet supported
fun <T> doIt(p: () -> T): T = TODO()
fun x() = doIt<Unit> {
4
Unit<caret>
}
@@ -0,0 +1,14 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
1.let { it.let { it.let { it.let { it.doDo() } } } }
Unit<caret>
}
}
@@ -0,0 +1,13 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
1.let { it.let { it.let { it.let { it.doDo() } } } }
}
}
@@ -0,0 +1,15 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
1.let { it.let { it.let { it.let { it?.doDo() } } } }
Unit<caret>
}
}
@@ -0,0 +1,14 @@
// WITH_RUNTIME
fun <T> doIt(p: () -> T): T = p()
fun Any.doDo() = Unit
abstract class A {
abstract fun a()
}
class B : A() {
override fun a() = doIt {
1.let { it.let { it.let { it.let { it?.doDo() } } } }
}
}