From 7a5b56677a075677439fbfc61025ddf93ca708f8 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 27 Apr 2016 06:47:56 +0000 Subject: stringio.c: warn block for new * ext/stringio/stringio.c (strio_s_new): warn if a block is given, as well as IO.new. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54792 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/stringio/stringio.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ext/stringio') diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index bd83ea207b..368dcfec4b 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -241,6 +241,19 @@ strio_s_open(int argc, VALUE *argv, VALUE klass) return rb_ensure(rb_yield, obj, strio_finalize, obj); } +/* :nodoc: */ +static VALUE +strio_s_new(int argc, VALUE *argv, VALUE klass) +{ + if (rb_block_given_p()) { + VALUE cname = rb_obj_as_string(klass); + + rb_warn("%"PRIsVALUE"::new() does not take block; use %"PRIsVALUE"::open() instead", + cname, cname); + } + return rb_class_new_instance(argc, argv, klass); +} + /* * Returns +false+. Just for compatibility to IO. */ @@ -1523,6 +1536,7 @@ Init_stringio(void) rb_include_module(StringIO, rb_mEnumerable); rb_define_alloc_func(StringIO, strio_s_allocate); + rb_define_singleton_method(StringIO, "new", strio_s_new, -1); rb_define_singleton_method(StringIO, "open", strio_s_open, -1); rb_define_method(StringIO, "initialize", strio_initialize, -1); rb_define_method(StringIO, "initialize_copy", strio_copy, 1); -- cgit v1.2.3