feat(Escaped Identifiers): add ability to use any symbol wrapped in back ticks.

This commit is contained in:
Artem Kobzar
2021-10-29 17:55:59 +00:00
committed by Space
parent ea10b4a781
commit 979e9f94ef
59 changed files with 1260 additions and 159 deletions
@@ -0,0 +1,39 @@
// IGNORE_BACKEND: JS
// !LANGUAGE: +JsAllowInvalidCharsIdentifiersEscaping
package foo
external class A {
val `@invalid @ val@`: Int = definedExternally
var `--invalid-var`: String = definedExternally
fun `get something$weird`(): String = definedExternally
companion object {
val `static val`: Int = definedExternally
var `static var`: String = definedExternally
fun `get 🦄`(): String = definedExternally
}
}
fun box(): String {
val a = A()
assertEquals(23, a.`@invalid @ val@`)
assertEquals("A: before", a.`--invalid-var`)
assertEquals("something weird", a.`get something$weird`())
a.`--invalid-var` = "A: after"
assertEquals("A: after", a.`--invalid-var`)
assertEquals(42, A.Companion.`static val`)
assertEquals("Companion: before", A.Companion.`static var`)
assertEquals("\uD83E\uDD84", A.Companion.`get 🦄`())
A.`static var` = "Companion: after"
assertEquals("Companion: after", A.Companion.`static var`)
return "OK"
}