e$B$J$+$@$G$9!#e(B
At Sat, 24 Jun 2006 23:53:27 +0900,
Yukihiro M. wrote in [ruby-dev:28829]:
|At Sat, 24 Jun 2006 14:14:15 +0900,
|Minero A. wrote in [ruby-dev:28822]:
|> e$B<!$N$h$&$K!"e(Bwhen *a e$B$,F0:n$7$J$/$J$C$F$$$^$9!#e(B
|
|e$B$3$s$J$H$3$G$7$g$&$+!#e(B
e$B%3%_%C%H$7$F$/$@$5$$!#e(B
e$B$3$l$@$He(B when /b/, *[/a/]
e$B$N$h$&$J>l9g$KF0:n$7$F$^$;$s$G$7$?!#e(B
e$B8=>u$G$Oe(Bargse$B$r$=$N$^$^;H$&$h$&$K$J$C$F$$$^$9$,!"!V$R$H$D$R$H$De(B
e$BI>2A$7$F$O%^%C%A$5$;$k!W$H$$$&F0:n$K$OIT8~$-$G$9!#e(Bwhen_argse$B$rI|e(B
e$B3h$5$;$?$[$&$,$$$$$h$&$J5$$,$7$^$9!#e(B
Index: eval.c
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.903
diff -p -U2 -r1.903 eval.c
— eval.c 23 Jun 2006 08:28:04 -0000 1.903
+++ eval.c 25 Jun 2006 08:01:46 -0000
@@ -2855,5 +2868,5 @@ rb_eval(VALUE self, NODE *n)
ruby_frame->this_func,
ruby_frame->this_class);
Index: parse.y
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.443
diff -p -U2 -r1.443 parse.y
— parse.y 21 Jun 2006 08:08:34 -0000 1.443
+++ parse.y 25 Jun 2006 07:56:00 -0000
@@ -533,5 +536,5 @@ static void ripper_compile_error(struct
%type expr_value arg_value primary_value
%type if_tail opt_else case_body cases opt_rescue exc_list
exc_var opt_ensure
-%type args call_args call_args2 opt_call_args
+%type args when_args call_args call_args2 opt_call_args
%type open_args paren_args opt_paren_args
%type command_args aref_args opt_block_arg block_arg var_ref
var_lhs
@@ -3377,5 +3385,5 @@ brace_block : ‘{’
;
-case_body : kWHEN args then
+case_body : kWHEN when_args then
compstmt
cases
@@ -3389,4 +3397,38 @@ case_body : kWHEN args then
;
+when_args : arg_value
-
{
-
/*%%%*/
-
$$ = NEW_LIST($1);
-
/*%
-
$$ = arg_add(arg_new(), $1);
-
%*/
-
}
-
| tSTAR arg_value
-
{
-
/*%%%*/
-
$$ = NEW_LIST(NEW_SPLAT($2));
-
/*%
-
$$ = arg_add_star(arg_new(), $2);
-
%*/
-
}
-
| when_args ',' arg_value
-
{
-
/*%%%*/
-
$$ = list_append($1, $3);
-
/*%
-
$$ = arg_add($1, $3);
-
%*/
-
}
-
| when_args ',' tSTAR arg_value
-
{
-
/*%%%*/
-
$$ = list_append($1, NEW_SPLAT($4));
-
/*%
-
$$ = arg_add_star($1, $4);
-
%*/
-
}
-
;
-
cases : opt_else
| case_body