* 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:
ko1 2007-07-07 07:16:05 +00:00
parent 174b77b280
commit 0ec2b20d2f
4 changed files with 46 additions and 6 deletions

View File

@ -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

View File

@ -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
}

View File

@ -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;

View File

@ -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);
%*/