allow tokens as properties

This commit is contained in:
2026-02-08 00:34:15 -06:00
parent 27a9b72b07
commit 4de0659474

View File

@@ -29687,8 +29687,17 @@ static cJSON *ast_parse_primary (ASTParseState *s) {
cJSON *pair = cJSON_CreateObject ();
/* property name */
int is_ident = (s->token_val == TOK_IDENT);
if (s->token_val == TOK_IDENT || s->token_val == TOK_STRING || s->token_val == TOK_NUMBER) {
cJSON *left = ast_parse_primary (s);
int is_keyword = (s->token_val >= TOK_FIRST_KEYWORD && s->token_val <= TOK_LAST_KEYWORD);
if (is_ident || is_keyword || s->token_val == TOK_STRING || s->token_val == TOK_NUMBER) {
cJSON *left;
if (is_keyword) {
left = ast_node (s, "name", s->token_ptr);
cjson_add_strn (left, "name", s->token_u.ident.str, s->token_u.ident.len);
ast_node_end (s, left, s->buf_ptr);
ast_next_token (s);
} else {
left = ast_parse_primary (s);
}
cJSON_AddItemToObject (pair, "left", left);
} else if (s->token_val == '[') {
/* computed property */