summaryrefslogtreecommitdiff
path: root/kernel.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-02-17 23:28:00 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2024-02-17 23:28:00 +0900
commit3dccb716daaee74d2ae00a5766fe1779fe220a81 (patch)
tree00cd2aeea7706eebaff32c2729e83dba4c29376b /kernel.rb
parentdf63e5bef67ff74216834f61748aa6ea8b0de22e (diff)
Use `defined?(yield)` and `SIZED_ENUMERATOR`
Prefer built-in features over method calls that may be overridden.
Diffstat (limited to 'kernel.rb')
-rw-r--r--kernel.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel.rb b/kernel.rb
index 5fa8a0d826..9b853e9560 100644
--- a/kernel.rb
+++ b/kernel.rb
@@ -129,7 +129,7 @@ module Kernel
#
def then
Primitive.attr! :inline_block
- unless block_given?
+ unless defined?(yield)
return Primitive.cexpr! 'SIZED_ENUMERATOR(self, 0, 0, rb_obj_size)'
end
yield(self)
@@ -145,7 +145,7 @@ module Kernel
#
def yield_self
Primitive.attr! :inline_block
- unless block_given?
+ unless defined?(yield)
return Primitive.cexpr! 'SIZED_ENUMERATOR(self, 0, 0, rb_obj_size)'
end
yield(self)
@@ -182,8 +182,8 @@ module Kernel
# } #=> :ok
def loop
Primitive.attr! :inline_block
- unless block_given?
- return enum_for(:loop) { Float::INFINITY }
+ unless defined?(yield)
+ return Primitive.cexpr! 'SIZED_ENUMERATOR(self, 0, 0, rb_f_loop_size)'
end
begin