summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-05 12:31:55 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-05 12:31:55 +0000
commitfa9d53d00faa6fb038f6e61570adb51b201276df (patch)
treeb63e1b51b4e1e8584d1d74f816712f293bf475a6
parent600601c338006d9701ce3a8ee9922cdc47d9fed8 (diff)
* compile.c (NODE_ARGSCAT, NODE_ARGSPUSH): revert r28870 and r28873
which involuntarily changed semantics of type conversion. I'll re-commit a correct patch. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28876 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog12
-rw-r--r--compile.c14
-rw-r--r--test/ruby/test_primitive.rb21
3 files changed, 2 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index f5b6a09..5c12da4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,3 @@
-Thu Aug 5 20:30:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_compile_each): to_a method should be called.
- [Bug #3658]
-
- * compile.c (iseq_compile_each): ditto for ARGSPUSH.
-
Thu Aug 5 20:13:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* README.EXT, README.EXT.ja (String functions): mention
@@ -15,11 +8,6 @@ Thu Aug 5 19:59:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_set_len): bail out when buffer overflowed
probably.
-Thu Aug 5 19:51:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_compile_each): drop unused ARGSCAT results.
- fix [ruby-dev:41933], [Bug #3658]
-
Thu Aug 5 18:36:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* complex.c (nucomp_marshal_load): should check the argument.
diff --git a/compile.c b/compile.c
index 3ff91f5..fbd8e7c 100644
--- a/compile.c
+++ b/compile.c
@@ -4521,24 +4521,14 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
break;
}
case NODE_ARGSCAT:{
- COMPILE_(ret, "argscat head", node->nd_head, poped);
+ COMPILE(ret, "argscat head", node->nd_head);
COMPILE(ret, "argscat body", node->nd_body);
- if (poped) {
- ADD_INSN1(ret, nd_line(node), splatarray, Qfalse);
- ADD_INSN(ret, nd_line(node), pop);
- break;
- }
ADD_INSN(ret, nd_line(node), concatarray);
break;
}
case NODE_ARGSPUSH:{
- COMPILE_(ret, "arsgpush head", node->nd_head, poped);
+ COMPILE(ret, "arsgpush head", node->nd_head);
COMPILE(ret, "argspush body", node->nd_body);
- if (poped) {
- ADD_INSN1(ret, nd_line(node), splatarray, Qfalse);
- ADD_INSN(ret, nd_line(node), pop);
- break;
- }
ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(1));
ADD_INSN(ret, nd_line(node), concatarray);
break;
diff --git a/test/ruby/test_primitive.rb b/test/ruby/test_primitive.rb
index 448349f..d701348 100644
--- a/test/ruby/test_primitive.rb
+++ b/test/ruby/test_primitive.rb
@@ -273,7 +273,6 @@ class TestRubyPrimitive < Test::Unit::TestCase
assert_equal 'abcd', $&
assert_equal 'xyz', $`
assert_equal 'efgabcdefg', $'
- # '
assert_equal 'c', $+
/(?!)/ =~ 'xyzabcdefgabcdefg'
@@ -401,24 +400,4 @@ class TestRubyPrimitive < Test::Unit::TestCase
#assert_equal [0,1,2,3,4], [0, *a, 4]
end
- def test_concatarray_ruby_dev_41933
- bug3658 = '[ruby-dev:41933]'
- [0, *x=1]
- assert_equal(1, x, bug3658)
- [0, *x=1, 2]
- assert_equal(1, x, bug3658)
- class << (x = Object.new)
- attr_accessor :to_a_called
- def to_a
- @to_a_called = true
- [self]
- end
- end
- x.to_a_called = false
- [0, *x]
- assert(x.to_a_called, bug3658)
- x.to_a_called = false
- [0, *x, 2]
- assert(x.to_a_called, bug3658)
- end
end