From 2e80c8347e27f8ecedab56bab105d69efa35cbea Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sat, 19 Jan 2019 11:34:26 +0900 Subject: [PATCH] Deprecate iterator? method [Feature #15547] [Fix GH-2071] --- spec/ruby/core/kernel/iterator_spec.rb | 16 +++++++++------- vm_eval.c | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/spec/ruby/core/kernel/iterator_spec.rb b/spec/ruby/core/kernel/iterator_spec.rb index 7fbdade9dc..a2811dc569 100644 --- a/spec/ruby/core/kernel/iterator_spec.rb +++ b/spec/ruby/core/kernel/iterator_spec.rb @@ -1,12 +1,14 @@ require_relative '../../spec_helper' require_relative 'fixtures/classes' -describe "Kernel#iterator?" do - it "is a private method" do - Kernel.should have_private_instance_method(:iterator?) +ruby_version_is ""..."2.8" do + describe "Kernel#iterator?" do + it "is a private method" do + Kernel.should have_private_instance_method(:iterator?) + end + end + + describe "Kernel.iterator?" do + it "needs to be reviewed for spec completeness" end end - -describe "Kernel.iterator?" do - it "needs to be reviewed for spec completeness" -end diff --git a/vm_eval.c b/vm_eval.c index e086125989..3ada33e128 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -2312,7 +2312,6 @@ rb_f_local_variables(VALUE _) /* * call-seq: * block_given? -> true or false - * iterator? -> true or false * * Returns true if yield would execute a * block in the current context. The iterator? form @@ -2330,7 +2329,6 @@ rb_f_local_variables(VALUE _) * try do "hello" end #=> "hello" */ - static VALUE rb_f_block_given_p(VALUE _) { @@ -2346,6 +2344,20 @@ rb_f_block_given_p(VALUE _) } } +/* + * call-seq: + * iterator? -> true or false + * + * Deprecated. Use block_given? instead. + */ + +static VALUE +rb_f_iterator_p(VALUE self) +{ + rb_warn_deprecated("iterator?", "block_given?"); + return rb_f_block_given_p(self); +} + VALUE rb_current_realfilepath(void) { @@ -2361,7 +2373,7 @@ Init_vm_eval(void) { rb_define_global_function("eval", rb_f_eval, -1); rb_define_global_function("local_variables", rb_f_local_variables, 0); - rb_define_global_function("iterator?", rb_f_block_given_p, 0); + rb_define_global_function("iterator?", rb_f_iterator_p, 0); rb_define_global_function("block_given?", rb_f_block_given_p, 0); rb_define_global_function("catch", rb_f_catch, -1);