summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--array.c2
-rw-r--r--enum.c20
-rw-r--r--test/ruby/test_array.rb2
-rw-r--r--test/ruby/test_enum.rb32
5 files changed, 8 insertions, 54 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e79c734d5..d3ae580c53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/array.c b/array.c
index a4c7565290..138b3cfdb9 100644
--- a/array.c
+++ b/array.c
@@ -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;
diff --git a/enum.c b/enum.c
index 63b6b7dfd2..0732695650 100644
--- a/enum.c
+++ b/enum.c
@@ -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)