mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y: fix node construction (around f_margs).
[ruby-dev:31143] * bootstraptest/test_block.rb: add a test for above. * insnhelper.ci: fix indent. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
174b77b280
commit
0ec2b20d2f
4 changed files with 46 additions and 6 deletions
|
@ -1,3 +1,12 @@
|
|||
Sat Jul 7 16:12:48 2007 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* parse.y: fix node construction (around f_margs).
|
||||
[ruby-dev:31143]
|
||||
|
||||
* bootstraptest/test_block.rb: add a test for above.
|
||||
|
||||
* insnhelper.ci: fix indent.
|
||||
|
||||
Sat Jul 7 15:36:50 2007 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* lib/pp.rb (PP::PPMethods#pp_hash): sort if
|
||||
|
|
|
@ -336,6 +336,36 @@ assert_equal %q{[1, nil]}, %q{
|
|||
}
|
||||
}
|
||||
|
||||
# block parameter (shouldn't SEGV: [ruby-dev:31143])
|
||||
assert_equal '0', %q{
|
||||
def m()
|
||||
end
|
||||
m {|(v0,*,(*)),|}
|
||||
m {|(*v0,(*)),|}
|
||||
m {|(v0,*v1,(*)),|}
|
||||
m {|((v0,*v1,v2)),|}
|
||||
m {|(v0,*v1,v2),|}
|
||||
m {|(v0,*v1,(v2)),|}
|
||||
m {|((*),*v0,v1),|}
|
||||
m {|((v0),*v1,v2),|}
|
||||
m {|(v0,v1,*v2,v3),|}
|
||||
m {|v0,(v1,*v2,v3),|}
|
||||
m {|(v0,*v1,v2),v3,|}
|
||||
m {|(v0,*v1,v2)|}
|
||||
m {|(v0,*v1,v2),&v3|}
|
||||
m {|(v0,*v1,v2),*|}
|
||||
m {|(v0,*v1,v2),*,&v3|}
|
||||
m {|*,(v0,*v1,v2)|}
|
||||
m {|*,(v0,*v1,v2),&v3|}
|
||||
m {|v0,*,(v1,*v2,v3)|}
|
||||
m {|v0,*,(v1,*v2,v3),&v4|}
|
||||
m {|(v0,*v1,v2),*,v3|}
|
||||
m {|(v0,*v1,v2),*,v3,&v4|}
|
||||
m {|(v0, *v1, v2)|}
|
||||
m {|(*,v)|}
|
||||
0
|
||||
}
|
||||
|
||||
# [ruby-dev:31147]
|
||||
assert_equal 'nil', %q{
|
||||
def m
|
||||
|
@ -343,3 +373,4 @@ assert_equal 'nil', %q{
|
|||
end
|
||||
m{|&b| b}.inspect
|
||||
}
|
||||
|
||||
|
|
|
@ -620,8 +620,8 @@ vm_yield_setup_args(rb_thread_t *th, rb_iseq_t *iseq,
|
|||
|
||||
if (lambda) {
|
||||
/* call as method */
|
||||
return vm_callee_setup_arg(th, iseq, argc, argv, &blockptr);
|
||||
}
|
||||
return vm_callee_setup_arg(th, iseq, argc, argv, &blockptr);
|
||||
}
|
||||
else {
|
||||
int i;
|
||||
const int m = iseq->argc;
|
||||
|
|
8
parse.y
8
parse.y
|
@ -3003,7 +3003,7 @@ f_marg : f_norm_arg
|
|||
| tLPAREN f_margs rparen
|
||||
{
|
||||
/*%%%*/
|
||||
$$ = $2;
|
||||
$$ = NEW_LIST($2);
|
||||
/*%
|
||||
$$ = dispatch1(mlhs_paren, $2);
|
||||
%*/
|
||||
|
@ -3013,7 +3013,7 @@ f_marg : f_norm_arg
|
|||
f_marg_head : f_marg
|
||||
{
|
||||
/*%%%*/
|
||||
$$ = NEW_LIST($1);
|
||||
$$ = $1;
|
||||
/*%
|
||||
$$ = mlhs_add(mlhs_new(), $1);
|
||||
%*/
|
||||
|
@ -3047,7 +3047,7 @@ f_margs : f_marg_head
|
|||
| f_marg_head ',' tSTAR f_norm_arg ',' f_marg
|
||||
{
|
||||
/*%%%*/
|
||||
$$ = NEW_MASGN($1, NEW_POSTARG($4,$6));
|
||||
$$ = NEW_MASGN($1, NEW_POSTARG(assignable($4, 0), $6));
|
||||
/*%
|
||||
$$ = mlhs_add_star($1, $4);
|
||||
%*/
|
||||
|
@ -3063,7 +3063,7 @@ f_margs : f_marg_head
|
|||
| f_marg_head ',' tSTAR ',' f_marg
|
||||
{
|
||||
/*%%%*/
|
||||
$$ = NEW_MASGN($1, NEW_POSTARG(-1,$5));
|
||||
$$ = NEW_MASGN($1, NEW_POSTARG(-1, $5));
|
||||
/*%
|
||||
$$ = mlhs_add_star($1, $5);
|
||||
%*/
|
||||
|
|
Loading…
Add table
Reference in a new issue