From e7f65f6ba796c5c88fd180193d0572ed02d4410e Mon Sep 17 00:00:00 2001 From: knu Date: Wed, 23 Apr 2008 02:58:46 +0000 Subject: [PATCH] * lib/set.rb (Set#each, SortedSet#each, TC_Set#test_each): Return an enumerator if no block is given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/set.rb | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index d6150a7eaa..a0735681ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 23 11:49:54 2008 Akinori MUSHA + + * lib/set.rb (Set#each, SortedSet#each, TC_Set#test_each): Return + an enumerator if no block is given. + Wed Apr 23 00:36:03 2008 Yusuke Endoh * test/openssl/test_ssl.rb (start_server): add timeout to server.join. diff --git a/lib/set.rb b/lib/set.rb index 3b30db0537..b925f8e586 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -2,7 +2,7 @@ #-- # set.rb - defines the Set class #++ -# Copyright (c) 2002 Akinori MUSHA +# Copyright (c) 2002-2008 Akinori MUSHA # # Documentation by Akinori MUSHA and Gavin Sinclair. # @@ -204,8 +204,10 @@ class Set end # Calls the given block once for each element in the set, passing - # the element as parameter. + # the element as parameter. Returns an enumerator if no block is + # given. def each + block_given? or return enum_for(__method__) @hash.each_key { |o| yield(o) } self end @@ -511,6 +513,7 @@ class SortedSet < Set end def each + block_given? or return enum_for(__method__) to_a.each { |o| yield(o) } end @@ -925,9 +928,8 @@ class TC_Set < Test::Unit::TestCase ary = [1,3,5,7,10,20] set = Set.new(ary) - assert_raises(LocalJumpError) { - set.each - } + e = set.each + assert_instance_of(Enumerable::Enumerator, e) assert_nothing_raised { set.each { |o|