Normalize local returns before other inlining transformations

Local returns normalization can generate POP instructions.
These POP instructions can drop functional parameters, as in KT-17590,
and should be processed in markPlacesForInlineAndRemoveInlinable just
as other POP instructions.

KT-17590 conditional return in inline function parameter argument causes compilation exception
This commit is contained in:
Dmitry Petrov
2017-04-25 16:43:21 +03:00
parent 996a08a3f7
commit fe571a7dfa
7 changed files with 113 additions and 43 deletions
@@ -0,0 +1,7 @@
fun zap(s: String): String? = s
inline fun tryZap(s: String, fn: (String) -> String): String {
return fn(zap(s) ?: return "null")
}
fun box() = tryZap("OK") { it }