Files
kotlin-fork/js/js.translator/testData/box/closure/closureThisByUsingMethodFromParentClass.kt
T

42 lines
879 B
Kotlin
Vendored

// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// EXPECTED_REACHABLE_NODES: 1299
package foo
open class A {
fun foo() = "A::foo"
}
class B : A() {
fun boo() = "B::boo"
val far = { foo() }
val gar = { boo() }
}
fun box(): String {
val b = B()
val f = b.far
val g = b.gar
assertEquals("A::foo", f())
assertEquals("B::boo", g())
val fs: String = eval("B\$far\$lambda").toString()
val gs = (eval("B\$gar\$lambda").toString() as String).replaceAll("boo", "foo").replaceAll("gar", "far")
assertEquals(gs, fs)
return "OK"
}
// Helpers
inline fun String.replace(regexp: RegExp, replacement: String): String = asDynamic().replace(regexp, replacement)
fun String.replaceAll(regexp: String, replacement: String): String = replace(RegExp(regexp, "g"), replacement)
external class RegExp(regexp: String, flags: String)