diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | enum.c | 20 | ||||
-rw-r--r-- | test/ruby/test_array.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_enum.rb | 32 |
5 files changed, 8 insertions, 54 deletions
@@ -1,3 +1,9 @@ +Sat Mar 13 14:49:55 2010 Yukihiro Matsumoto <matz@ruby-lang.org> + + * enum.c (enum_join): remove Enumerable#join. [ruby-core:24786] + + * array.c (ary_join_1): use #to_ary to detect recursive array. + Sat Mar 13 12:26:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> * include/ruby/io.h (MakeOpenFile): finalize fptr get rid of @@ -1604,7 +1604,7 @@ ary_join_1(VALUE obj, VALUE ary, VALUE sep, long i, VALUE result) val = tmp; goto str_join; } - tmp = rb_check_convert_type(val, T_ARRAY, "Array", "to_a"); + tmp = rb_check_convert_type(val, T_ARRAY, "Array", "to_ary"); if (!NIL_P(tmp)) { obj = val; val = tmp; @@ -2523,25 +2523,6 @@ enum_slice_before(int argc, VALUE *argv, VALUE enumerable) } /* - * call-seq: - * enum.join(sep=$,) -> str - * - * Returns a string created by converting each element of the - * <i>enum</i> to a string, separated by <i>sep</i>. - */ - -static VALUE -enum_join(int argc, VALUE *argv, VALUE obj) -{ - VALUE sep; - - rb_scan_args(argc, argv, "01", &sep); - if (NIL_P(sep)) sep = rb_output_fs; - - return rb_ary_join(enum_to_a(0, 0, obj), sep); -} - -/* * The <code>Enumerable</code> mixin provides collection classes with * several traversal and searching methods, and with the ability to * sort. The class must provide a method <code>each</code>, which @@ -2606,7 +2587,6 @@ Init_Enumerable(void) rb_define_method(rb_mEnumerable, "drop", enum_drop, 1); rb_define_method(rb_mEnumerable, "drop_while", enum_drop_while, 0); rb_define_method(rb_mEnumerable, "cycle", enum_cycle, -1); - rb_define_method(rb_mEnumerable, "join", enum_join, -1); rb_define_method(rb_mEnumerable, "chunk", enum_chunk, -1); rb_define_method(rb_mEnumerable, "slice_before", enum_slice_before, -1); diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index 7101d33012..98acfe9d29 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1565,7 +1565,7 @@ class TestArray < Test::Unit::TestCase a << a assert_raise(ArgumentError){a.join} - def (a = Object.new).to_a + def (a = Object.new).to_ary [self] end assert_raise(ArgumentError, '[ruby-core:24150]'){[a].join} diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 7e490a1212..c500cee4c3 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -311,38 +311,6 @@ class TestEnumerable < Test::Unit::TestCase assert_equal([2,1,3,2,1], @obj.reverse_each.to_a) end - def test_join - ofs = $, - assert_equal("abc", ("a".."c").join("")) - assert_equal("a-b-c", ("a".."c").join("-")) - $, = "-" - assert_equal("a-b-c", ("a".."c").join()) - $, = nil - assert_equal("abc", ("a".."c").join()) - assert_equal("123", (1..3).join()) - assert_raise(TypeError, '[ruby-core:24172]') {("a".."c").join(1)} - class << (e = Object.new.extend(Enumerable)) - def each - yield self - end - end - assert_raise(ArgumentError){e.join("")} - assert_raise(ArgumentError){[e].join("")} - e = Class.new { - include Enumerable - def initialize(*args) - @e = args - end - def each - @e.each {|e| yield e} - end - } - e = e.new(1, e.new(2, e.new(3, e.new(4, 5)))) - assert_equal("1:2:3:4:5", e.join(':'), '[ruby-core:24196]') - ensure - $, = ofs - end - def test_chunk e = [].chunk {|elt| true } assert_equal([], e.to_a) |