[FIR] Fix cfg for safe call inside elvis
This commit is contained in:
committed by
teamcityserver
parent
c160511244
commit
7e9f27436a
+20
-1
@@ -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")
|
||||
}
|
||||
|
||||
+19
@@ -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")
|
||||
}
|
||||
+5
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user