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/