Resolve anonymous functions in block as expression

#KT-7265 Fixed
This commit is contained in:
Denis Zharkov
2016-03-18 18:34:37 +03:00
parent 77e37ff75d
commit 16736e3a0e
13 changed files with 171 additions and 15 deletions
@@ -0,0 +1,43 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// !CHECK_TYPE
fun foo(block: () -> (() -> Int)) {}
fun test() {
foo { fun(): Int {return 1} }
foo({ fun() = 1 })
val x1 =
if (1 == 1)
fun(): Int {return 1}
else
fun() = 1
val x2 =
if (1 == 1) {
fun(): Int {
return 1
}
}
else
fun() = 1
val x3 = when (1) {
0 -> fun(): Int {return 1}
else -> fun() = 1
}
val x31 = when (1) {
0 -> {
fun(): Int {return 1}
}
else -> fun() = 1
}
val x4 = {
y: Int -> fun(): Int {return 1}
}
x4 checkType { _<Function1<Int, Function0<Int>>>() }
<!UNUSED_LAMBDA_EXPRESSION!>{ y: Int -> fun(): Int {return 1} }<!>
}