mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
600601c338
commit
fa9d53d00f
3 changed files with 2 additions and 45 deletions
12
ChangeLog
12
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.
|
||||
|
|
14
compile.c
14
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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue