From bb40c5cbe977de9f36a2a739e94e9b2fd4496b6e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 14 Jan 2021 16:13:26 +0900 Subject: Ensure symbol list node is either NODE_STR or NODE_DSTR --- parse.y | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/parse.y b/parse.y index 538153cc7a..29784f3c6a 100644 --- a/parse.y +++ b/parse.y @@ -10362,12 +10362,17 @@ new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc) static NODE* symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol) { - if (nd_type(symbol) == NODE_DSTR) { + enum node_type type = nd_type(symbol); + switch (type) { + case NODE_DSTR: nd_set_type(symbol, NODE_DSYM); - } - else { + break; + case NODE_STR: nd_set_type(symbol, NODE_LIT); RB_OBJ_WRITTEN(p->ast, Qnil, symbol->nd_lit = rb_str_intern(symbol->nd_lit)); + break; + default: + compile_error(p, "unexpected node as symbol: %s", ruby_node_name(type)); } return list_append(p, symbols, symbol); } -- cgit v1.2.3