Pass nd_value to NODE_REQUIRED_KEYWORD_P

This commit is contained in:
yui-knk 2023-10-07 09:52:06 +09:00 committed by Yuichiro Kaneko
parent b1a3c11c86
commit f28d380374
4 changed files with 6 additions and 6 deletions

2
ast.c
View File

@ -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));

2
node.h
View File

@ -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)

View File

@ -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 {

View File

@ -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 {