Skip to content

Commit

Permalink
* enum.c (enum_join): remove Enumerable#join. [ruby-core:24786]
Browse files Browse the repository at this point in the history
* array.c (ary_join_1): use #to_ary to detect recursive array.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
matz committed Mar 13, 2010
1 parent b1bf026 commit 8b55878
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 54 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Sat Mar 13 14:49:55 2010 Yukihiro Matsumoto <[email protected]>

* 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 <[email protected]>

* include/ruby/io.h (MakeOpenFile): finalize fptr get rid of
Expand Down
2 changes: 1 addition & 1 deletion array.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
20 changes: 0 additions & 20 deletions enum.c
Original file line number Diff line number Diff line change
Expand Up @@ -2522,25 +2522,6 @@ enum_slice_before(int argc, VALUE *argv, VALUE enumerable)
return enumerator;
}

/*
* 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
Expand Down Expand Up @@ -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);

Expand Down
2 changes: 1 addition & 1 deletion test/ruby/test_array.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1565,7 +1565,7 @@ def test_join2
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}
Expand Down
32 changes: 0 additions & 32 deletions test/ruby/test_enum.rb
Original file line number Diff line number Diff line change
Expand Up @@ -311,38 +311,6 @@ def test_reverse_each
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)
Expand Down

0 comments on commit 8b55878

Please sign in to comment.