зеркало из https://github.com/github/ruby.git
io.c: warn old write
* io.c (rb_io_puts): warn if write method accepts just one argument. [ruby-core:83529] [Feature #14042] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ca9c9001dc
Коммит
237901a41b
7
io.c
7
io.c
|
@ -1690,6 +1690,13 @@ static VALUE
|
|||
rb_io_writev(VALUE io, int argc, VALUE *argv)
|
||||
{
|
||||
if (argc > 1 && rb_obj_method_arity(io, id_write) == 1) {
|
||||
if (io != rb_stderr && RTEST(ruby_verbose)) {
|
||||
VALUE klass = CLASS_OF(io);
|
||||
char sep = FL_TEST(klass, FL_SINGLETON) ? (klass = io, '.') : '#';
|
||||
rb_warning("%+"PRIsVALUE"%c""write is outdated interface"
|
||||
" which accepts just one argument",
|
||||
klass, sep);
|
||||
}
|
||||
do rb_io_write(io, *argv++); while (--argc);
|
||||
return argv[0]; /* unused right now */
|
||||
}
|
||||
|
|
|
@ -2458,6 +2458,22 @@ End
|
|||
end)
|
||||
end
|
||||
|
||||
def test_puts_old_write
|
||||
capture = String.new
|
||||
def capture.write(str)
|
||||
self << str
|
||||
end
|
||||
|
||||
capture.clear
|
||||
assert_warning(/[.#]write is outdated/) do
|
||||
stdout, $stdout = $stdout, capture
|
||||
puts "hey"
|
||||
ensure
|
||||
$stdout = stdout
|
||||
end
|
||||
assert_equal("hey\n", capture)
|
||||
end
|
||||
|
||||
def test_display
|
||||
pipe(proc do |w|
|
||||
"foo".display(w)
|
||||
|
|
Загрузка…
Ссылка в новой задаче