From f28d3803741f4e58b24154afbcead3726044ec4d Mon Sep 17 00:00:00 2001 From: yui-knk Date: Sat, 7 Oct 2023 09:52:06 +0900 Subject: Pass nd_value to NODE_REQUIRED_KEYWORD_P --- ast.c | 2 +- node.h | 2 +- node_dump.c | 4 ++-- parse.y | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ast.c b/ast.c index fd0920225f..2ce7a753f4 100644 --- a/ast.c +++ b/ast.c @@ -461,7 +461,7 @@ node_children(rb_ast_t *ast, const NODE *node) case NODE_IASGN: case NODE_CVASGN: case NODE_GASGN: - if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(node))) { + if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(node)->nd_value)) { return rb_ary_new_from_args(2, var_name(RNODE_LASGN(node)->nd_vid), ID2SYM(rb_intern("NODE_SPECIAL_REQUIRED_KEYWORD"))); } return rb_ary_new_from_args(2, var_name(RNODE_LASGN(node)->nd_vid), NEW_CHILD(ast, RNODE_LASGN(node)->nd_value)); diff --git a/node.h b/node.h index 79c0c67860..a25c4599eb 100644 --- a/node.h +++ b/node.h @@ -96,7 +96,7 @@ RUBY_SYMBOL_EXPORT_END #define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1) -#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD) +#define NODE_REQUIRED_KEYWORD_P(node) ((node) == NODE_SPECIAL_REQUIRED_KEYWORD) #define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1) #define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST) #define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1) diff --git a/node_dump.c b/node_dump.c index 3a5c74e986..7bfdcaf0c3 100644 --- a/node_dump.c +++ b/node_dump.c @@ -401,7 +401,7 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) ANN("format: [nd_vid](lvar) = [nd_value]"); ANN("example: x = foo"); F_ID(nd_vid, RNODE_LASGN, "local variable"); - if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(node))) { + if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(node)->nd_value)) { F_MSG(nd_value, "rvalue", "NODE_SPECIAL_REQUIRED_KEYWORD (required keyword argument)"); } else { @@ -415,7 +415,7 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) ANN("example: x = nil; 1.times { x = foo }"); ANN("example: 1.times { x = foo }"); F_ID(nd_vid, RNODE_DASGN, "local variable"); - if (NODE_REQUIRED_KEYWORD_P(RNODE_DASGN(node))) { + if (NODE_REQUIRED_KEYWORD_P(RNODE_DASGN(node)->nd_value)) { F_MSG(nd_value, "rvalue", "NODE_SPECIAL_REQUIRED_KEYWORD (required keyword argument)"); } else { diff --git a/parse.y b/parse.y index fd6fe14d49..e9028c308f 100644 --- a/parse.y +++ b/parse.y @@ -14279,7 +14279,7 @@ new_args_tail(struct parser_params *p, rb_node_kw_arg_t *kw_args, ID kw_rest_arg vtable_pop(vtargs, !!block + !!kw_rest_arg); required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos]; while (kwn) { - if (!NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(kwn->nd_body))) + if (!NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(kwn->nd_body)->nd_value)) --kw_vars; --required_kw_vars; kwn = kwn->nd_next; @@ -14287,7 +14287,7 @@ new_args_tail(struct parser_params *p, rb_node_kw_arg_t *kw_args, ID kw_rest_arg for (kwn = kw_args; kwn; kwn = kwn->nd_next) { ID vid = RNODE_LASGN(kwn->nd_body)->nd_vid; - if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(kwn->nd_body))) { + if (NODE_REQUIRED_KEYWORD_P(RNODE_LASGN(kwn->nd_body)->nd_value)) { *required_kw_vars++ = vid; } else { -- cgit v1.2.3