mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
44 lines
1.1 KiB
Kotlin
Vendored
44 lines
1.1 KiB
Kotlin
Vendored
fun test1(str: String): String {
|
|
data class A(val x: Int) {
|
|
fun foo() = str
|
|
}
|
|
return A(0).copy().foo()
|
|
}
|
|
|
|
class TestClass(val x: String) {
|
|
fun foo(): String {
|
|
data class A(val x: Int) {
|
|
fun foo() = this@TestClass.x
|
|
}
|
|
return A(0).copy().foo()
|
|
}
|
|
}
|
|
|
|
fun test2(str: String): String = TestClass(str).foo()
|
|
|
|
fun test3(str: String): String {
|
|
var xx = ""
|
|
data class A(val x: Int) {
|
|
fun foo(): String { xx = str; return xx }
|
|
}
|
|
return A(0).copy().foo()
|
|
}
|
|
|
|
fun test4(str: String): String {
|
|
var xx = ""
|
|
fun bar(s: String): String { xx = s; return xx }
|
|
data class A(val x: Int) {
|
|
fun foo(): String = bar(str)
|
|
}
|
|
return A(0).copy().foo()
|
|
}
|
|
|
|
fun box(): String {
|
|
return when {
|
|
test1("test1") != "test1" -> "Failed #1 (parameter capture)"
|
|
test2("test2") != "test2" -> "Failed #2 ('this' capture)"
|
|
test3("test3") != "test3" -> "Failed #3 ('var' capture)"
|
|
test4("test4") != "test4" -> "Failed #4 (local function capture)"
|
|
else -> "OK"
|
|
}
|
|
} |