Pass nd_value to NODE_REQUIRED_KEYWORD_P
This commit is contained in:
parent
b1a3c11c86
commit
f28d380374
2
ast.c
2
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));
|
||||
|
2
node.h
2
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)
|
||||
|
@ -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 {
|
||||
|
4
parse.y
4
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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user