KT-11960: add test for case of instantiating inner class of a local class

This commit is contained in:
Alexey Andreev
2016-05-30 11:13:39 +03:00
parent acc5303731
commit 2bd807bb4e
7 changed files with 174 additions and 0 deletions
@@ -0,0 +1,28 @@
// Enable for JVM backend when KT-8120 gets fixed
// TARGET_BACKEND: JS
fun box(): String {
var log = ""
var s: Any? = null
for (t in arrayOf("1", "2", "3")) {
class C() {
val y = t
inner class D() {
fun copyOuter() = C()
}
}
if (s == null) {
s = C()
}
val c = (s as C).D().copyOuter()
log += c.y
}
if (log != "111") return "fail: ${log}"
return "OK"
}
@@ -0,0 +1,38 @@
fun box(): String {
var log = ""
var s: Any? = null
for (t in arrayOf("1", "2", "3")) {
class A() {
fun foo() = { t }
}
if (s == null) {
s = A()
}
log += (s as A).foo()()
}
if (log != "111") return "fail1: ${log}"
s = null
log = ""
for (t in arrayOf("1", "2", "3")) {
class B() {
val y = t
fun foo() = { y }
}
if (s == null) {
s = B()
}
log += (s as B).foo()()
}
if (log != "111") return "fail2: ${log}"
return "OK"
}
@@ -0,0 +1,27 @@
// TARGET_BACKEND: JVM
// Enable when KT-12566 gets fixed
fun box(): String {
var log = ""
var s: Any? = null
for (t in arrayOf("1", "2", "3")) {
class C() {
val y = t
inner class D() {
fun foo() = "($y;$t)"
}
}
if (s == null) {
s = C()
}
log += (s as C).D().foo()
}
if (log != "(1;1)(1;1)(1;1)") return "fail: ${log}"
return "OK"
}