42 lines
879 B
Kotlin
Vendored
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)
|