Make sure lateinit top-level properties work in JVM BE
This commit is contained in:
+27
@@ -0,0 +1,27 @@
|
||||
// WITH_REFLECT
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
// FILE: lateinit.kt
|
||||
private lateinit var s: String
|
||||
|
||||
object C {
|
||||
fun setS(value: String) { s = value }
|
||||
fun getS() = s
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
import kotlin.UninitializedPropertyAccessException
|
||||
|
||||
fun box(): String {
|
||||
var str2: String = ""
|
||||
try {
|
||||
str2 = C.getS()
|
||||
return "Should throw an exception"
|
||||
}
|
||||
catch (e: UninitializedPropertyAccessException) {
|
||||
return "OK"
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
return "Unexpected exception: ${e::class.qualifiedName}"
|
||||
}
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FILE: lateinit.kt
|
||||
private lateinit var s: String
|
||||
|
||||
object C {
|
||||
fun setS(value: String) { s = value }
|
||||
fun getS() = s
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
fun box(): String {
|
||||
C.setS("OK")
|
||||
return C.getS()
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
lateinit var ok: String
|
||||
|
||||
fun box(): String {
|
||||
run {
|
||||
ok = "OK"
|
||||
}
|
||||
return ok
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// WITH_REFLECT
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
import kotlin.UninitializedPropertyAccessException
|
||||
|
||||
lateinit var str: String
|
||||
|
||||
fun box(): String {
|
||||
var i: Int = 0
|
||||
try {
|
||||
i = str.length
|
||||
return "Should throw an exception"
|
||||
}
|
||||
catch (e: UninitializedPropertyAccessException) {
|
||||
return "OK"
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
return "Unexpected exception: ${e::class.qualifiedName}"
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// WITH_REFLECT
|
||||
// IGNORE_BACKEND: JS, NATIVE
|
||||
|
||||
import kotlin.UninitializedPropertyAccessException
|
||||
|
||||
lateinit var str: String
|
||||
|
||||
fun box(): String {
|
||||
var str2: String = ""
|
||||
try {
|
||||
str2 = str
|
||||
return "Should throw an exception"
|
||||
}
|
||||
catch (e: UninitializedPropertyAccessException) {
|
||||
return "OK"
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
return "Unexpected exception: ${e::class.qualifiedName}"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user