summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-06-05 07:19:39 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-06-05 07:19:39 +0000
commitd6c60dbf6d42f411a31a1c2e768a5a986a270a8c (patch)
treee8848119511789017b7c0dbf29f8cd37376737e5 /parse.y
parent21524a3fc00d0e894d0ca0b8fcb7d9c7413c5917 (diff)
* variable.c (rb_mod_const_at): use hash table as internal
data. [new] * variable.c (rb_mod_const_of): ditto. * variable.c (rb_const_list): new function to convert internal data (hash table) to array of strings. * eval.c (rb_mod_s_constants): data handling scheme has changed. * eval.c (rb_add_method): should not call rb_secure(), for last_func may not be set. * io.c (rb_io_ctl): ioctl should accept any integer within C long range. * marshal.c (r_object): wrong type check for modules. * marshal.c (w_object): should not dump anonymous classes/modules. * io.c (rb_open_file): use rb_file_sysopen_internal() if the 3rd argument (permission flags) is given. [new, should be backported?] * io.c (rb_io_mode_binmode): mode string (e.g. "r+") to flags to open(2). * eval.c (rb_eval): NODE_REXPAND expand an array of 1 element as the element itself. [new, should be backported?] * parse.y (ret_args): should treat "*[a]" in rhs expression as "a", not "[a]". * regex.c (re_compile_pattern): should push option modifier at the right place. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y7
1 files changed, 5 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index e436153945..ed97518650 100644
--- a/parse.y
+++ b/parse.y
@@ -425,7 +425,7 @@ stmt : kALIAS fitem {lex_state = EXPR_FNAME;} fitem
}
| lhs '=' mrhs_basic
{
- $$ = node_assign($1, $3);
+ $$ = node_assign($1, ret_args($3));
}
| mlhs '=' mrhs
{
@@ -1146,7 +1146,7 @@ mrhs_basic : args ',' arg
| tSTAR arg
{
value_expr($2);
- $$ = $2;
+ $$ = NEW_RESTARGS($2);
}
primary : literal
@@ -4671,6 +4671,9 @@ ret_args(node)
rb_compile_error("block argument should not be given");
}
}
+ if (nd_type(node) == NODE_RESTARGS) {
+ nd_set_type(node, NODE_REXPAND);
+ }
return node;
}