| // TARGET_BACKEND: JS_IR, JS_IR_ES6 | |
| // IGNORE_BACKEND: JS_IR_ES6 | |
| // IGNORE_BACKEND: JS_IR | |
| // FILE: main.kt | |
| 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" | |
| } | |
| // FILE: lib.kt | |
| package foo | |
| // 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) |