383e273fed
When a test is marked as ignored in JVM BE (i.e. IGNORE_BACKEND: JVM) it's ignored in LightAnalysisModeTestGenerated. This means that this tests is expected to fail. However, often tests that fail in JVM blackbox tests, don't fail in LAMTG, therefore it's reasonable to skip these tests in LAMTG at all.
78 lines
1.7 KiB
Kotlin
Vendored
78 lines
1.7 KiB
Kotlin
Vendored
// Enable for JVM backend when KT-8120 gets fixed
|
|
// IGNORE_BACKEND: JVM
|
|
|
|
fun box(): String {
|
|
val capturedInConstructor = 1
|
|
val capturedInBody = 10
|
|
var log = ""
|
|
|
|
class A(var x: Int) {
|
|
var y = 0
|
|
|
|
fun copy(): A {
|
|
log += "A.copy;"
|
|
val result = A(x)
|
|
result.y += capturedInBody
|
|
return result
|
|
}
|
|
|
|
init {
|
|
log += "A.<init>;"
|
|
y += x + capturedInConstructor
|
|
}
|
|
}
|
|
|
|
val a = A(100).copy()
|
|
if (a.y != 111) return "fail1a: ${a.y}"
|
|
if (a.x != 100) return "fail1b: ${a.x}"
|
|
|
|
|
|
class B(var x: Int) {
|
|
var y = 0
|
|
|
|
fun copier(): () -> B {
|
|
log += "B.copier;"
|
|
return {
|
|
log += "B.copy;"
|
|
val result = B(x)
|
|
result.y += capturedInBody
|
|
result
|
|
}
|
|
}
|
|
|
|
init {
|
|
y += x + capturedInConstructor
|
|
log += "B.<init>;"
|
|
}
|
|
}
|
|
|
|
val b = B(100).copier()()
|
|
if (b.y != 111) return "fail2a: ${b.y}"
|
|
if (b.x != 100) return "fail2b: ${b.x}"
|
|
|
|
class C(var x: Int) {
|
|
var y = 0
|
|
|
|
inner class D() {
|
|
fun copyOuter(): C {
|
|
log += "D.copyOuter;"
|
|
val result = C(x)
|
|
result.y += capturedInBody
|
|
return result
|
|
}
|
|
}
|
|
|
|
init {
|
|
log += "C.<init>;"
|
|
y += x + capturedInConstructor
|
|
}
|
|
}
|
|
|
|
val c = C(100).D().copyOuter()
|
|
if (c.y != 111) return "fail3a: ${c.y}"
|
|
if (c.x != 100) return "fail3b: ${c.x}"
|
|
|
|
if (log != "A.<init>;A.copy;A.<init>;B.<init>;B.copier;B.copy;B.<init>;C.<init>;D.copyOuter;C.<init>;") return "fail_log: $log"
|
|
|
|
return "OK"
|
|
} |