| // TARGET_BACKEND: JS_IR, JS_IR_ES6 | |
| // IGNORE_BACKEND: JS_IR_ES6 | |
| // FILE: lib.kt | |
| // CHECK_CONTAINS_NO_CALLS: box except=Foo$getInstance;Bar;Baz$getInstance;callLocal;callLocalExtension | |
| // CHECK_CONTAINS_NO_CALLS: callLocal | |
| // CHECK_CONTAINS_NO_CALLS: callLocalExtension | |
| object Foo { | |
| @JsName("call") | |
| inline fun call(a: Int) = "Foo.call($a)" | |
| } | |
| class Bar { | |
| @JsName("call") | |
| inline fun call(a: Int) = "Bar.call($a)" | |
| } | |
| inline fun call(a: Int) = "call($a)" | |
| fun callLocal(a: Int): String { | |
| inline fun call(a: Int) = "callLocal($a)" | |
| return call(a) | |
| } | |
| object Baz | |
| inline fun Baz.call(a: Int) = "Baz.call($a)" | |
| class Boo | |
| fun callLocalExtension(a: Int): String { | |
| inline fun Boo.call(a: Int) = "Boo.callLocal($a)" | |
| return Boo().call(a) | |
| } | |
| // FILE: main.kt | |
| // CHECK_CONTAINS_NO_CALLS: box except=Foo$getInstance;Bar;Baz$getInstance;callLocal;callLocalExtension | |
| // CHECK_CONTAINS_NO_CALLS: callLocal | |
| // CHECK_CONTAINS_NO_CALLS: callLocalExtension | |
| // CHECK_BREAKS_COUNT: function=box count=0 | |
| // CHECK_LABELS_COUNT: function=box name=$l$block count=0 | |
| fun box(): String { | |
| var result = call(1) | |
| if (result != "call(1)") return "fail1: $result" | |
| result = Foo.call(2) | |
| if (result != "Foo.call(2)") return "fail2: $result" | |
| result = Bar().call(3) | |
| if (result != "Bar.call(3)") return "fail3: $result" | |
| result = Baz.call(4) | |
| if (result != "Baz.call(4)") return "fail4: $result" | |
| result = callLocal(5) | |
| if (result != "callLocal(5)") return "fail5: $result" | |
| result = callLocalExtension(6) | |
| if (result != "Boo.callLocal(6)") return "fail6: $result" | |
| return "OK" | |
| } |