mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y (stmt): rhs of multiple assignment should not be
expanded using "to_a". [ruby-dev:21527] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0dd4fde745
commit
8a4abe47ca
5 changed files with 44 additions and 35 deletions
|
@ -1,3 +1,8 @@
|
|||
Tue Oct 7 02:57:53 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||
|
||||
* parse.y (stmt): rhs of multiple assignment should not be
|
||||
expanded using "to_a". [ruby-dev:21527]
|
||||
|
||||
Tue Oct 7 01:42:34 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
||||
|
||||
* ext/openssl/ossl_asn1.c (ossl_asn1_get_asn1type): use appropriate
|
||||
|
|
67
eval.c
67
eval.c
|
@ -2774,6 +2774,10 @@ rb_eval(self, n)
|
|||
result = splat_value(rb_eval(self, node->nd_head));
|
||||
break;
|
||||
|
||||
case NODE_TO_ARY:
|
||||
result = rb_ary_to_ary(rb_eval(self, node->nd_head));
|
||||
break;
|
||||
|
||||
case NODE_SVALUE:
|
||||
result = avalue_splat(rb_eval(self, node->nd_head));
|
||||
if (result == Qundef) result = Qnil;
|
||||
|
@ -6483,45 +6487,42 @@ rb_f_at_exit()
|
|||
void
|
||||
rb_exec_end_proc()
|
||||
{
|
||||
struct end_proc_data *link, *save;
|
||||
struct end_proc_data *link, *tmp;
|
||||
int status;
|
||||
|
||||
save = link = end_procs;
|
||||
while (link) {
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((status = EXEC_TAG()) == 0) {
|
||||
(*link->func)(link->data);
|
||||
}
|
||||
POP_TAG();
|
||||
if (status) {
|
||||
error_handle(status);
|
||||
}
|
||||
link = link->next;
|
||||
}
|
||||
link = end_procs;
|
||||
while (link != save) {
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((status = EXEC_TAG()) == 0) {
|
||||
(*link->func)(link->data);
|
||||
}
|
||||
POP_TAG();
|
||||
if (status) {
|
||||
error_handle(status);
|
||||
}
|
||||
link = link->next;
|
||||
}
|
||||
while (ephemeral_end_procs) {
|
||||
link = ephemeral_end_procs;
|
||||
ephemeral_end_procs = link->next;
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((status = EXEC_TAG()) == 0) {
|
||||
(*link->func)(link->data);
|
||||
ephemeral_end_procs = 0;
|
||||
while (link) {
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((status = EXEC_TAG()) == 0) {
|
||||
(*link->func)(link->data);
|
||||
}
|
||||
POP_TAG();
|
||||
if (status) {
|
||||
error_handle(status);
|
||||
}
|
||||
tmp = link;
|
||||
link = link->next;
|
||||
free(tmp);
|
||||
}
|
||||
POP_TAG();
|
||||
if (status) {
|
||||
error_handle(status);
|
||||
}
|
||||
while (end_procs) {
|
||||
link = end_procs;
|
||||
end_procs = 0;
|
||||
while (link) {
|
||||
PUSH_TAG(PROT_NONE);
|
||||
if ((status = EXEC_TAG()) == 0) {
|
||||
(*link->func)(link->data);
|
||||
}
|
||||
POP_TAG();
|
||||
if (status) {
|
||||
error_handle(status);
|
||||
}
|
||||
tmp = link;
|
||||
link = link->next;
|
||||
free(tmp);
|
||||
}
|
||||
free(link);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
1
gc.c
1
gc.c
|
@ -755,6 +755,7 @@ rb_gc_mark_children(ptr)
|
|||
case NODE_COLON2:
|
||||
case NODE_ARGS:
|
||||
case NODE_SPLAT:
|
||||
case NODE_TO_ARY:
|
||||
case NODE_SVALUE:
|
||||
ptr = (VALUE)obj->as.node.u1.node;
|
||||
goto again;
|
||||
|
|
2
node.h
2
node.h
|
@ -88,6 +88,7 @@ enum node_type {
|
|||
NODE_ARGSCAT,
|
||||
NODE_ARGSPUSH,
|
||||
NODE_SPLAT,
|
||||
NODE_TO_ARY,
|
||||
NODE_SVALUE,
|
||||
NODE_BLOCK_ARG,
|
||||
NODE_BLOCK_PASS,
|
||||
|
@ -308,6 +309,7 @@ typedef struct RNode {
|
|||
#define NEW_ARGSCAT(a,b) NEW_NODE(NODE_ARGSCAT,a,b,0)
|
||||
#define NEW_ARGSPUSH(a,b) NEW_NODE(NODE_ARGSPUSH,a,b,0)
|
||||
#define NEW_SPLAT(a) NEW_NODE(NODE_SPLAT,a,0,0)
|
||||
#define NEW_TO_ARY(a) NEW_NODE(NODE_TO_ARY,a,0,0)
|
||||
#define NEW_SVALUE(a) NEW_NODE(NODE_SVALUE,a,0,0)
|
||||
#define NEW_BLOCK_ARG(v) NEW_NODE(NODE_BLOCK_ARG,v,0,local_cnt(v))
|
||||
#define NEW_BLOCK_PASS(b) NEW_NODE(NODE_BLOCK_PASS,0,b,0)
|
||||
|
|
4
parse.y
4
parse.y
|
@ -486,7 +486,7 @@ stmt : kALIAS fitem {lex_state = EXPR_FNAME;} fitem
|
|||
| mlhs '=' command_call
|
||||
{
|
||||
value_expr($3);
|
||||
$1->nd_value = ($1->nd_head) ? NEW_SPLAT($3) : NEW_ARRAY($3);
|
||||
$1->nd_value = NEW_TO_ARY($3);
|
||||
$$ = $1;
|
||||
}
|
||||
| var_lhs tOP_ASGN command_call
|
||||
|
@ -578,7 +578,7 @@ stmt : kALIAS fitem {lex_state = EXPR_FNAME;} fitem
|
|||
}
|
||||
| mlhs '=' arg_value
|
||||
{
|
||||
$1->nd_value = ($1->nd_head) ? NEW_SPLAT($3) : NEW_ARRAY($3);
|
||||
$1->nd_value = NEW_TO_ARY($3);
|
||||
$$ = $1;
|
||||
}
|
||||
| mlhs '=' mrhs
|
||||
|
|
Loading…
Reference in a new issue