| // TARGET_BACKEND: JS_IR, JS_IR_ES6 | |
| // FILE: lib.kt | |
| fun `+`(a: Int, b: Int) = a + b | |
| @JsName("minus") | |
| fun `-`(a: Int, b: Int) = a - b | |
| inline fun <reified `-`> test5(): String = `-`::class.simpleName!! | |
| inline fun <reified `-`> test6(x: Any): Boolean = x is `-` | |
| class OK | |
| // FILE: main.kt | |
| fun test1(): Int { | |
| val ` x ` = 23 | |
| val `*` = 3 | |
| return `-`(` x `, `*`) | |
| } | |
| fun test2(`p 1`: Int, `.p 2`: Int) = `+`(`p 1`, `.p 2`) | |
| fun test3(): String { | |
| val `#` = "K" | |
| class ` `(private val `::`: String) { | |
| private fun `@`() = `::` + `#` | |
| operator fun invoke() = `@`() | |
| } | |
| return ` `("O")() | |
| } | |
| fun test4(): String { | |
| val `1(¢)` = "OK" | |
| fun `[£]`() = `1(¢)` | |
| return `[£]`() | |
| } | |
| fun box(): String { | |
| if (test1() != 20) return "fail1" | |
| if (test2(10, 13) != 23) return "fail2" | |
| if (test3() != "OK") return "fail3" | |
| if (test4() != "OK") return "fail4" | |
| if (test5<OK>() != "OK") return "fail5" | |
| if (!test6<String>("foo")) return "fail6" | |
| return "OK" | |
| } |