Skip to content

キーにJSON5における識別子を使えるようにする #889

Open
@takejohn

Description

@takejohn

目的

オブジェクトリテラルのプロパティ名に予約語も書けるようにしたい

現状

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions