Merge NODE_DEF_TEMP and NODE_DEF_TEMP2
This commit is contained in:
parent
8d9e114f19
commit
68ae87546e
1
ast.c
1
ast.c
@ -681,7 +681,6 @@ node_children(rb_ast_t *ast, const NODE *node)
|
|||||||
return rb_ary_new_from_node_args(ast, 0);
|
return rb_ary_new_from_node_args(ast, 0);
|
||||||
case NODE_ARGS_AUX:
|
case NODE_ARGS_AUX:
|
||||||
case NODE_DEF_TEMP:
|
case NODE_DEF_TEMP:
|
||||||
case NODE_DEF_TEMP2:
|
|
||||||
case NODE_RIPPER:
|
case NODE_RIPPER:
|
||||||
case NODE_RIPPER_VALUES:
|
case NODE_RIPPER_VALUES:
|
||||||
case NODE_LAST:
|
case NODE_LAST:
|
||||||
|
@ -494,7 +494,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
|
|||||||
COUNT_NODE(NODE_FNDPTN);
|
COUNT_NODE(NODE_FNDPTN);
|
||||||
COUNT_NODE(NODE_HSHPTN);
|
COUNT_NODE(NODE_HSHPTN);
|
||||||
COUNT_NODE(NODE_DEF_TEMP);
|
COUNT_NODE(NODE_DEF_TEMP);
|
||||||
COUNT_NODE(NODE_DEF_TEMP2);
|
|
||||||
COUNT_NODE(NODE_RIPPER);
|
COUNT_NODE(NODE_RIPPER);
|
||||||
COUNT_NODE(NODE_RIPPER_VALUES);
|
COUNT_NODE(NODE_RIPPER_VALUES);
|
||||||
COUNT_NODE(NODE_ERROR);
|
COUNT_NODE(NODE_ERROR);
|
||||||
|
@ -1105,7 +1105,6 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node)
|
|||||||
|
|
||||||
case NODE_ARGS_AUX:
|
case NODE_ARGS_AUX:
|
||||||
case NODE_DEF_TEMP:
|
case NODE_DEF_TEMP:
|
||||||
case NODE_DEF_TEMP2:
|
|
||||||
case NODE_RIPPER:
|
case NODE_RIPPER:
|
||||||
case NODE_RIPPER_VALUES:
|
case NODE_RIPPER_VALUES:
|
||||||
case NODE_LAST:
|
case NODE_LAST:
|
||||||
|
34
parse.y
34
parse.y
@ -1091,14 +1091,12 @@ static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE
|
|||||||
static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
|
static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
|
||||||
static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
|
static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
|
||||||
static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc);
|
static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc);
|
||||||
static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, rb_node_def_temp2_t *nd_next, const YYLTYPE *loc);
|
static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, NODE *nd_head, long nd_nth, VALUE nd_cval, const YYLTYPE *loc);
|
||||||
static rb_node_def_temp2_t *rb_node_def_temp2_new(struct parser_params *p, NODE *nd_head, long nd_nth, VALUE nd_cval);
|
|
||||||
|
|
||||||
#define NEW_BREAK(s,loc) (NODE *)rb_node_break_new(p,s,loc)
|
#define NEW_BREAK(s,loc) (NODE *)rb_node_break_new(p,s,loc)
|
||||||
#define NEW_NEXT(s,loc) (NODE *)rb_node_next_new(p,s,loc)
|
#define NEW_NEXT(s,loc) (NODE *)rb_node_next_new(p,s,loc)
|
||||||
#define NEW_REDO(loc) (NODE *)rb_node_redo_new(p,loc)
|
#define NEW_REDO(loc) (NODE *)rb_node_redo_new(p,loc)
|
||||||
#define NEW_DEF_TEMP(v,m,n,loc) (NODE *)rb_node_def_temp_new(p,v,m,n,loc)
|
#define NEW_DEF_TEMP(v,m,h,n,c,loc) (NODE *)rb_node_def_temp_new(p,v,m,h,n,c,loc)
|
||||||
#define NEW_DEF_TEMP2(h,n,c) rb_node_def_temp2_new(p,h,n,c)
|
|
||||||
|
|
||||||
/* Make a new internal node, which should not be appeared in the
|
/* Make a new internal node, which should not be appeared in the
|
||||||
* result AST and does not have node_id and location. */
|
* result AST and does not have node_id and location. */
|
||||||
@ -1579,14 +1577,14 @@ static void
|
|||||||
restore_defun(struct parser_params *p, NODE *name)
|
restore_defun(struct parser_params *p, NODE *name)
|
||||||
{
|
{
|
||||||
/* See: def_name action */
|
/* See: def_name action */
|
||||||
struct RNode_DEF_TEMP2 *save = RNODE_DEF_TEMP(name)->nd_next;
|
rb_node_def_temp_t *temp = RNODE_DEF_TEMP(name);
|
||||||
YYSTYPE c = {.val = save->nd_cval};
|
YYSTYPE c = {.val = temp->nd_cval};
|
||||||
p->cur_arg = RNODE_DEF_TEMP(name)->nd_vid;
|
p->cur_arg = temp->nd_vid;
|
||||||
p->ctxt.in_def = c.ctxt.in_def;
|
p->ctxt.in_def = c.ctxt.in_def;
|
||||||
p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value;
|
p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value;
|
||||||
p->ctxt.in_rescue = c.ctxt.in_rescue;
|
p->ctxt.in_rescue = c.ctxt.in_rescue;
|
||||||
p->max_numparam = (int)save->nd_nth;
|
p->max_numparam = (int)temp->nd_nth;
|
||||||
numparam_pop(p, save->nd_head);
|
numparam_pop(p, temp->nd_head);
|
||||||
clear_block_exit(p, true);
|
clear_block_exit(p, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2549,15 +2547,12 @@ def_name : fname
|
|||||||
ID cur_arg = p->cur_arg;
|
ID cur_arg = p->cur_arg;
|
||||||
YYSTYPE c = {.ctxt = p->ctxt};
|
YYSTYPE c = {.ctxt = p->ctxt};
|
||||||
numparam_name(p, fname);
|
numparam_name(p, fname);
|
||||||
rb_node_def_temp2_t *save =
|
NODE *save = numparam_push(p);
|
||||||
NEW_DEF_TEMP2(/*head*/numparam_push(p),
|
|
||||||
/*nth*/p->max_numparam,
|
|
||||||
/*cval*/c.val);
|
|
||||||
local_push(p, 0);
|
local_push(p, 0);
|
||||||
p->cur_arg = 0;
|
p->cur_arg = 0;
|
||||||
p->ctxt.in_def = 1;
|
p->ctxt.in_def = 1;
|
||||||
p->ctxt.in_rescue = before_rescue;
|
p->ctxt.in_rescue = before_rescue;
|
||||||
$<node>$ = NEW_DEF_TEMP(/*vid*/cur_arg, /*mid*/fname, /*next*/save, &@$);
|
$<node>$ = NEW_DEF_TEMP(cur_arg, fname, save, p->max_numparam, c.val, &@$);
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
/*%
|
/*%
|
||||||
$$ = NEW_RIPPER(fname, get_value($1), $$, &NULL_LOC);
|
$$ = NEW_RIPPER(fname, get_value($1), $$, &NULL_LOC);
|
||||||
@ -12182,20 +12177,11 @@ rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static rb_node_def_temp_t *
|
static rb_node_def_temp_t *
|
||||||
rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, rb_node_def_temp2_t *nd_next, const YYLTYPE *loc)
|
rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, NODE *nd_head, long nd_nth, VALUE nd_cval, const YYLTYPE *loc)
|
||||||
{
|
{
|
||||||
rb_node_def_temp_t *n = NODE_NEWNODE(NODE_DEF_TEMP, rb_node_def_temp_t, loc);
|
rb_node_def_temp_t *n = NODE_NEWNODE(NODE_DEF_TEMP, rb_node_def_temp_t, loc);
|
||||||
n->nd_vid = nd_vid;
|
n->nd_vid = nd_vid;
|
||||||
n->nd_mid = nd_mid;
|
n->nd_mid = nd_mid;
|
||||||
n->nd_next = nd_next;
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
static rb_node_def_temp2_t *
|
|
||||||
rb_node_def_temp2_new(struct parser_params *p, NODE *nd_head, long nd_nth, VALUE nd_cval)
|
|
||||||
{
|
|
||||||
rb_node_def_temp2_t *n = NODE_NEW_INTERNAL(NODE_DEF_TEMP2, rb_node_def_temp2_t);
|
|
||||||
n->nd_head = nd_head;
|
n->nd_head = nd_head;
|
||||||
n->nd_nth = nd_nth;
|
n->nd_nth = nd_nth;
|
||||||
n->nd_cval = nd_cval;
|
n->nd_cval = nd_cval;
|
||||||
|
10
rubyparser.h
10
rubyparser.h
@ -132,7 +132,6 @@ enum node_type {
|
|||||||
NODE_FNDPTN,
|
NODE_FNDPTN,
|
||||||
NODE_ERROR,
|
NODE_ERROR,
|
||||||
NODE_DEF_TEMP,
|
NODE_DEF_TEMP,
|
||||||
NODE_DEF_TEMP2,
|
|
||||||
NODE_RIPPER,
|
NODE_RIPPER,
|
||||||
NODE_RIPPER_VALUES,
|
NODE_RIPPER_VALUES,
|
||||||
NODE_LAST
|
NODE_LAST
|
||||||
@ -836,16 +835,10 @@ typedef struct RNode_DEF_TEMP {
|
|||||||
|
|
||||||
ID nd_vid;
|
ID nd_vid;
|
||||||
ID nd_mid;
|
ID nd_mid;
|
||||||
struct RNode_DEF_TEMP2 *nd_next;
|
|
||||||
} rb_node_def_temp_t;
|
|
||||||
|
|
||||||
typedef struct RNode_DEF_TEMP2 {
|
|
||||||
NODE node;
|
|
||||||
|
|
||||||
struct RNode *nd_head;
|
struct RNode *nd_head;
|
||||||
long nd_nth;
|
long nd_nth;
|
||||||
VALUE nd_cval;
|
VALUE nd_cval;
|
||||||
} rb_node_def_temp2_t;
|
} rb_node_def_temp_t;
|
||||||
|
|
||||||
typedef struct RNode_ALIAS {
|
typedef struct RNode_ALIAS {
|
||||||
NODE node;
|
NODE node;
|
||||||
@ -1117,7 +1110,6 @@ typedef struct RNode_ERROR {
|
|||||||
#define RNODE_DEFN(node) ((struct RNode_DEFN *)(node))
|
#define RNODE_DEFN(node) ((struct RNode_DEFN *)(node))
|
||||||
#define RNODE_DEFS(node) ((struct RNode_DEFS *)(node))
|
#define RNODE_DEFS(node) ((struct RNode_DEFS *)(node))
|
||||||
#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
|
#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
|
||||||
#define RNODE_DEF_TEMP2(node) ((struct RNode_DEF_TEMP2 *)(node))
|
|
||||||
#define RNODE_ALIAS(node) ((struct RNode_ALIAS *)(node))
|
#define RNODE_ALIAS(node) ((struct RNode_ALIAS *)(node))
|
||||||
#define RNODE_VALIAS(node) ((struct RNode_VALIAS *)(node))
|
#define RNODE_VALIAS(node) ((struct RNode_VALIAS *)(node))
|
||||||
#define RNODE_UNDEF(node) ((struct RNode_UNDEF *)(node))
|
#define RNODE_UNDEF(node) ((struct RNode_UNDEF *)(node))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user