Support default property reference inlining

This commit is contained in:
Mikhael Bogdanov
2017-05-15 18:21:10 +02:00
parent a96fada230
commit 05d2aa700b
9 changed files with 151 additions and 9 deletions

View File

@@ -3,8 +3,6 @@
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
fun ok() = "OK"
class A(val value: String) {
fun ok() = value
}

View File

@@ -0,0 +1,22 @@
// FILE: 1.kt
// LANGUAGE_VERSION: 1.2
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
fun ok() = "OK"
object A {
fun ok() = "OK"
}
inline fun inlineFun(lambda: () -> String = A::ok): String {
return lambda()
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun()
}

View File

@@ -0,0 +1,18 @@
// FILE: 1.kt
// LANGUAGE_VERSION: 1.2
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
val ok = "OK"
inline fun inlineFun(lambda: () -> String = ::ok): String {
return lambda()
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun()
}

View File

@@ -0,0 +1,18 @@
// FILE: 1.kt
// LANGUAGE_VERSION: 1.2
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
class A(val ok: String)
inline fun inlineFun(a: A, lambda: (A) -> String = A::ok): String {
return lambda(a)
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun(A("OK"))
}

View File

@@ -0,0 +1,20 @@
// FILE: 1.kt
// LANGUAGE_VERSION: 1.2
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
object A {
val ok = "OK"
}
inline fun inlineFun(lambda: () -> String = A::ok): String {
return lambda()
}
// FILE: 2.kt
import test.*
fun box(): String {
return inlineFun()
}