Files
kotlin-fork/compiler/testData/codegen/box/classes/kt8011a.kt
T
dnpetrov 36ae8790a1 KT-8011 Compiler crashes on attempt to create local class inside lambda
- use StackValue from upper-level context if local lookup fails

 #KT-8011 Fixed
2015-06-18 17:40:24 +03:00

53 lines
991 B
Kotlin
Vendored

fun testFun1(str: String): String {
val capture = str
class A {
val x = capture
}
return A().x
}
fun testFun2(str: String): String {
class A {
val x = str
}
fun bar() = A()
return bar().x
}
class TestClass(val str: String) {
var xx: String? = null
init {
class A {
val x = str
}
xx = A().x
}
}
fun testFun3(str: String): String = TestClass(str).xx!!
fun String.testFun4(): String {
class A {
val x = this@testFun4
}
return A().x
}
fun box(): String {
return when {
testFun1("test1") != "test1" -> "Fail #1 (local class with capture)"
testFun2("test2") != "test2" -> "Fail #2 (local class with capture ctor in another context)"
testFun3("test3") != "test3" -> "Fail #3 (local class with capture ctor in init{ ... })"
"test4".testFun4() != "test4" -> "Fail #4 (local class with extension receiver)"
else -> "OK"
}
}