diff options
Diffstat (limited to 'mrblib/kernel.rb')
| -rw-r--r-- | mrblib/kernel.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/mrblib/kernel.rb b/mrblib/kernel.rb index 0277a1b83..fd4dc04ac 100644 --- a/mrblib/kernel.rb +++ b/mrblib/kernel.rb @@ -18,11 +18,12 @@ module Kernel # Calls the given block repetitively. # # ISO 15.3.1.2.8 - def self.loop #(&block) - while(true) - yield - end - end + # provided by Kernel#loop + # def self.loop #(&block) + # while(true) + # yield + # end + # end # 15.3.1.2.3 def self.eval(s) @@ -38,14 +39,22 @@ module Kernel # Alias for +Kernel.loop+. # # ISO 15.3.1.3.29 - def loop #(&block) + def loop + return to_enum :loop unless block_given? + while(true) yield end + rescue => StopIteration + nil end # 11.4.4 Step c) def !~(y) !(self =~ y) end + + def to_enum(*a) + raise NotImplementedError.new("fiber required for enumerator") + end end |
