Files
kotlin-fork/js/js.translator/testData/box/escapedIdentifiers/classLikeMemberFunctionMangling.kt
T

47 lines
1.2 KiB
Kotlin
Vendored

// IGNORE_BACKEND: JS
// !LANGUAGE: +JsAllowInvalidCharsIdentifiersEscaping
package foo
interface IA {
fun `run•invalid@test`(): Int
fun `run@invalid@test`(): Int
fun run_invalid_test(): Int
}
@JsExport()
class A : IA {
override fun `run•invalid@test`(): Int = 41
override fun `run@invalid@test`(): Int = 34
override fun run_invalid_test(): Int = 23
}
class B : IA {
override fun `run•invalid@test`(): Int = 42
override fun `run@invalid@test`(): Int = 35
override fun run_invalid_test(): Int = 24
}
fun box(): String {
val a: IA = A()
val b: IA = B()
assertEquals(23, a.run_invalid_test())
assertEquals(24, b.run_invalid_test())
assertEquals(34, a.`run@invalid@test`())
assertEquals(35, b.`run@invalid@test`())
assertEquals(41, a.`runinvalid@test`())
assertEquals(42, b.`runinvalid@test`())
assertEquals("function", js("typeof a['run•invalid@test']"))
assertEquals(41, js("a['run•invalid@test']()"))
assertEquals(js("undefined"), js("b['run•invalid@test']"))
assertEquals("function", js("typeof a['run@invalid@test']"))
assertEquals(34, js("a['run@invalid@test']()"))
assertEquals(js("undefined"), js("b['run@invalid@test']"))
return "OK"
}