aiscript
aiscript copied to clipboard
キーにJSON5における識別子を使えるようにする
目的
オブジェクトリテラルのプロパティ名に予約語も書けるようにしたい
現状
Misskeyの拡張APIにおいて、Ui:C:textInput関数などの引数のプロパティにdefaultがあるが、
AiScriptがバージョン1.0.0になるとdefaultが予約語となるため、既存のコードが動かなくなってしまう懸念がある。
例えば、Misskey Playだとこういうコードが動くが、
1.0.0になるとSyntax: unexpected token: DefaultKeywordのエラーになる。
/// @ 0.19.0
Ui:render([
Ui:C:textInput({
default: 'text',
})
])
解決策
オブジェクトリテラルのキー名に予約語を使えるようになる。 JSON5の識別子(=ECMAScriptにおけるIdentifierName)では、一部の非ASCII文字・$・Unicodeエスケープシーケンス・予約語も使えるため、それに準拠してみる。 JSON5Identifier: https://spec.json5.org/#prod-JSON5Identifier