diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-08 09:31:55 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-08 09:35:28 +0900 |
| commit | 9ab7c1111bf018ce7acd6ed05eb03843d5c91683 (patch) | |
| tree | cde6f089949024f5e8367f1958c7f83221e2d69c | |
| parent | 2650999092cac630e5bacb0a12c96bc642e939e6 (diff) | |
| download | mruby-9ab7c1111bf018ce7acd6ed05eb03843d5c91683.tar.gz mruby-9ab7c1111bf018ce7acd6ed05eb03843d5c91683.zip | |
Update #4265 patch.
* Update doc comment to clarify `Enumerator.new` without a block is
deprecated and left only for internal use.
* Fixed some cases `mruby` raise `ArgumentError` too eagerly compared
with `CRuby`.
| -rw-r--r-- | mrbgems/mruby-enumerator/mrblib/enumerator.rb | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index 143f2b74f..cecc424e6 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -109,14 +109,22 @@ class Enumerator # # p fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55] # + # In the second, deprecated, form, a generated Enumerator iterates over the + # given object using the given method with the given arguments passed. This + # form is left only for internal use. + # + # Use of this form is discouraged. Use Kernel#enum_for or Kernel#to_enum + # instead. def initialize(obj=NONE, meth=:each, *args, &block) if block obj = Generator.new(&block) - elsif obj == NONE - raise ArgumentError, "wrong number of arguments (given 0, expected 1+)" - end - if @obj and !self.respond_to?(meth) - raise NoMethodError, "undefined method #{meth}" + else + if obj == NONE + raise ArgumentError, "wrong number of arguments (given 0, expected 1+)" + end + if @obj && !self.respond_to?(meth) + raise NoMethodError, "undefined method #{meth}" + end end @obj = obj @@ -610,9 +618,6 @@ module Kernel # enum.first(4) # => [1, 1, 1, 2] # def to_enum(meth=:each, *args) - unless self.respond_to?(meth) - raise ArgumentError, "undefined method #{meth}" - end Enumerator.new self, meth, *args end alias enum_for to_enum |
