[前][次][番号順一覧][スレッド一覧]

ruby-changes:10169

From: usa <ko1@a...>
Date: Wed, 21 Jan 2009 14:43:19 +0900 (JST)
Subject: [ruby-changes:10169] Ruby:r21713 (trunk): * array.c (take_items): to_ary() raises ArgumentError if cannot to

usa	2009-01-21 14:43:04 +0900 (Wed, 21 Jan 2009)

  New Revision: 21713

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21713

  Log:
    * array.c (take_items): to_ary() raises ArgumentError if cannot to
      convert to Array. [ruby-dev:37797]

  Modified files:
    trunk/ChangeLog
    trunk/array.c
    trunk/test/ruby/test_array.rb
    trunk/test/ruby/test_enum.rb

Index: array.c
===================================================================
--- array.c	(revision 21712)
+++ array.c	(revision 21713)
@@ -2209,7 +2209,7 @@
 static VALUE
 take_items(VALUE obj, long n)
 {
-    VALUE result = to_ary(obj);
+    VALUE result = rb_check_array_type(obj);
     VALUE args[2];
 
     if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21712)
+++ ChangeLog	(revision 21713)
@@ -1,3 +1,8 @@
+Wed Jan 21 14:41:48 2009  NAKAMURA Usaku  <usa@r...>
+
+	* array.c (take_items): to_ary() raises ArgumentError if cannot to
+	  convert to Array. [ruby-dev:37797]
+
 Wed Jan 21 14:32:02 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* parse.y (debug_lines): calls rb_intern() once.
Index: test/ruby/test_array.rb
===================================================================
--- test/ruby/test_array.rb	(revision 21712)
+++ test/ruby/test_array.rb	(revision 21713)
@@ -1505,8 +1505,11 @@
 
     ary = Object.new
     def ary.to_a;   [1, 2]; end
-    def ary.to_ary; [3, 4]; end
-    assert_equal([[5, 3], [6, 4]], [5, 6].zip(ary))
+    assert_raise(NoMethodError){ %w(a b).zip(ary) }
+    def ary.each; [3, 4].each{|e|yield e}; end
+    assert_equal([['a', 3], ['b', 4]], %w(a b).zip(ary))
+    def ary.to_ary; [5, 6]; end
+    assert_equal([['a', 5], ['b', 6]], %w(a b).zip(ary))
   end
 
   def test_transpose
Index: test/ruby/test_enum.rb
===================================================================
--- test/ruby/test_enum.rb	(revision 21712)
+++ test/ruby/test_enum.rb	(revision 21713)
@@ -214,8 +214,11 @@
 
     ary = Object.new
     def ary.to_a;   [1, 2]; end
-    def ary.to_ary; [3, 4]; end
+    assert_raise(NoMethodError){ %w(a b).zip(ary) }
+    def ary.each; [3, 4].each{|e|yield e}; end
     assert_equal([[1, 3], [2, 4], [3, nil], [1, nil], [2, nil]], @obj.zip(ary))
+    def ary.to_ary; [5, 6]; end
+    assert_equal([[1, 5], [2, 6], [3, nil], [1, nil], [2, nil]], @obj.zip(ary))
   end
 
   def test_take

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]