KT-5347 VerifyError on local data class with closure
- generated copy() should push captured fields on stack - refactor context lookup - handle vars in local classes using instance fields #KT-5347 Fixed
This commit is contained in:
+44
@@ -0,0 +1,44 @@
|
||||
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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user