[FIR] Fix cfg for safe call inside elvis

This commit is contained in:
Andrey Zinovyev
2021-07-13 18:31:39 +03:00
committed by teamcityserver
parent c160511244
commit 7e9f27436a
10 changed files with 76 additions and 7 deletions
@@ -10,6 +10,13 @@ inline fun <T> Any?.myRun(block: () -> T): T {
return block()
}
inline fun <T> directRun(block: () -> T): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block()
}
fun bad(): String {
val x: String? = null
@@ -20,4 +27,16 @@ fun ok(): String {
val x: String? = null
x?.run { return "non-null" } ?: return "null"
<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
}
fun ok2(): String {
directRun {
return "nonNull"
}
}
fun ok3(arg: Any?): String {
arg?.myRun {
return "nonNull"
} ?: error("null")
}
@@ -10,6 +10,13 @@ inline fun <T> Any?.myRun(block: () -> T): T {
return block()
}
inline fun <T> directRun(block: () -> T): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block()
}
fun bad(): String {
val x: String? = null
@@ -20,4 +27,16 @@ fun ok(): String {
val x: String? = null
x?.run { return "non-null" } ?: return "null"
}
fun ok2(): String {
directRun {
return "nonNull"
}
}
fun ok3(arg: Any?): String {
arg?.myRun {
return "nonNull"
} ?: error("null")
}
@@ -1,7 +1,12 @@
package
public fun bad(): kotlin.String
public inline fun </*0*/ T> directRun(/*0*/ block: () -> T): T
CallsInPlace(block, EXACTLY_ONCE)
public fun ok(): kotlin.String
public fun ok2(): kotlin.String
public fun ok3(/*0*/ arg: kotlin.Any?): kotlin.String
public inline fun </*0*/ T> kotlin.Any?.myRun(/*0*/ block: () -> T): T
CallsInPlace(block, EXACTLY_ONCE)