aboutsummaryrefslogtreecommitdiffstats
path: root/insns.def
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-05 17:11:45 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-05 17:11:45 +0000
commitb9171a73c4f0d212b723e0160859ab69b89b3339 (patch)
tree2b42887f15e4f43afc9ee9c6e40f6b3606b9a14c /insns.def
parent0d0ef6eccc50ed95d8babcf5381426c70c4d4b30 (diff)
downloadruby-b9171a73c4f0d212b723e0160859ab69b89b3339.tar.gz
* insns.def: fix to invoke nil.to_splat on NODE_ARGSCAT.
[ruby-dev:31138]. * bootstraptest/test_literal.rb: add tests for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def26
1 files changed, 10 insertions, 16 deletions
diff --git a/insns.def b/insns.def
index 63f1ca1153..51e5272ee9 100644
--- a/insns.def
+++ b/insns.def
@@ -555,27 +555,21 @@ concatarray
(VALUE ary)
{
VALUE ary2 = ary2st;
+ VALUE tmp1 = rb_check_convert_type(ary1, T_ARRAY, "Array", "to_splat");
+ VALUE tmp2 = rb_check_convert_type(ary2, T_ARRAY, "Array", "to_splat");
- if (ary2 == Qnil) {
- ary = ary1;
+ if (NIL_P(tmp1)) {
+ tmp1 = rb_ary_new3(1, ary1);
}
- else {
- VALUE tmp1 = rb_check_convert_type(ary1, T_ARRAY, "Array", "to_splat");
- VALUE tmp2 = rb_check_convert_type(ary2, T_ARRAY, "Array", "to_splat");
- if (NIL_P(tmp1)) {
- tmp1 = rb_ary_new3(1, ary1);
- }
-
- if (NIL_P(tmp2)) {
- tmp2 = rb_ary_new3(1, ary2);
- }
+ if (NIL_P(tmp2)) {
+ tmp2 = rb_ary_new3(1, ary2);
+ }
- if (tmp1 == ary1) {
- tmp1 = rb_ary_dup(ary1);
- }
- ary = rb_ary_concat(tmp1, tmp2);
+ if (tmp1 == ary1) {
+ tmp1 = rb_ary_dup(ary1);
}
+ ary = rb_ary_concat(tmp1, tmp2);
}
/**