mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* parse.y (arg_concat_gen): concat target node should be NODE_ARRAY.
[ruby-core:19413] * bootstraptest/test_method.rb: add tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fa127bbb18
commit
3337185ed6
2 changed files with 18 additions and 3 deletions
|
@ -1069,3 +1069,18 @@ assert_equal 'ok', %q{
|
||||||
break :ok
|
break :ok
|
||||||
end
|
end
|
||||||
}, '[ruby-dev:36028]'
|
}, '[ruby-dev:36028]'
|
||||||
|
|
||||||
|
assert_equal '[1, 2, [3, 4]]', %q{
|
||||||
|
def regular(a, b, *c)
|
||||||
|
[a, b, c]
|
||||||
|
end
|
||||||
|
regular(*[], 1, *[], *[2, 3], *[], 4)
|
||||||
|
}, '[ruby-core:19413]'
|
||||||
|
|
||||||
|
assert_equal '[1, [:foo, 3, 4, :foo]]', %q{
|
||||||
|
def regular(a, *b)
|
||||||
|
[a, b]
|
||||||
|
end
|
||||||
|
a = b = [:foo]
|
||||||
|
regular(1, *a, *[3, 4], *b)
|
||||||
|
}
|
||||||
|
|
6
parse.y
6
parse.y
|
@ -2443,8 +2443,7 @@ args : arg_value
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
NODE *n1;
|
NODE *n1;
|
||||||
if (nd_type($4) == NODE_ARRAY &&
|
if ((nd_type($4) == NODE_ARRAY) && (n1 = splat_array($1)) != 0) {
|
||||||
(n1 = splat_array($1)) != 0) {
|
|
||||||
$$ = list_concat(n1, $4);
|
$$ = list_concat(n1, $4);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -8131,7 +8130,8 @@ arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
|
||||||
nd_set_type(node1, NODE_ARGSCAT);
|
nd_set_type(node1, NODE_ARGSCAT);
|
||||||
return node1;
|
return node1;
|
||||||
case NODE_ARGSCAT:
|
case NODE_ARGSCAT:
|
||||||
if (nd_type(node2) != NODE_ARRAY) break;
|
if (nd_type(node2) != NODE_ARRAY ||
|
||||||
|
nd_type(node1->nd_body) != NODE_ARRAY) break;
|
||||||
node1->nd_body = list_concat(node1->nd_body, node2);
|
node1->nd_body = list_concat(node1->nd_body, node2);
|
||||||
return node1;
|
return node1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue