diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-12-17 17:17:07 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-12-19 09:52:17 +0900 |
commit | c6c67254fb17b3196a7b0d3fda4650f6b20a467d (patch) | |
tree | 8991858d6822ea27d9bc492080d2af00236c5ea5 | |
parent | 7aa8a786740fd84bd718b0c055f190b25a8f0277 (diff) | |
download | ruby-c6c67254fb17b3196a7b0d3fda4650f6b20a467d.tar.gz |
Added rb_warn_deprecated
-rw-r--r-- | enumerator.c | 2 | ||||
-rw-r--r-- | error.c | 16 | ||||
-rw-r--r-- | hash.c | 4 | ||||
-rw-r--r-- | internal.h | 1 | ||||
-rw-r--r-- | io.c | 16 | ||||
-rw-r--r-- | proc.c | 4 |
6 files changed, 30 insertions, 13 deletions
diff --git a/enumerator.c b/enumerator.c index e85c911e4a..73bca61df2 100644 --- a/enumerator.c +++ b/enumerator.c @@ -466,7 +466,7 @@ enumerator_initialize(int argc, VALUE *argv, VALUE obj) } else { rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS); - rb_warn("Enumerator.new without a block is deprecated; use Object#to_enum"); + rb_warn_deprecated("Enumerator.new without a block", "Object#to_enum"); recv = *argv++; if (--argc) { meth = *argv++; @@ -325,6 +325,22 @@ rb_enc_warning(rb_encoding *enc, const char *fmt, ...) } #endif +void +rb_warn_deprecated(const char *fmt, const char *suggest, ...) +{ + if (NIL_P(ruby_verbose)) return; + if (!rb_warning_category_enabled_p(RB_WARN_CATEGORY_DEPRECATED)) return; + va_list args; + va_start(args, suggest); + VALUE mesg = warning_string(0, fmt, args); + va_end(args); + rb_str_set_len(mesg, RSTRING_LEN(mesg) - 1); + rb_str_cat_cstr(mesg, " is deprecated"); + if (suggest) rb_str_catf(mesg, "; use %s instead", suggest); + rb_str_cat_cstr(mesg, "\n"); + rb_write_warning_str(mesg); +} + static inline int end_with_asciichar(VALUE str, int c) { @@ -2245,7 +2245,7 @@ rb_hash_key(VALUE hash, VALUE value) static VALUE rb_hash_index(VALUE hash, VALUE value) { - rb_warn("Hash#index is deprecated; use Hash#key"); + rb_warn_deprecated("Hash#index", "Hash#key"); return rb_hash_key(hash, value); } @@ -5861,7 +5861,7 @@ env_key(VALUE dmy, VALUE value) static VALUE env_index(VALUE dmy, VALUE value) { - rb_warn("ENV.index is deprecated; use ENV.key"); + rb_warn_deprecated("ENV.index", "ENV.key"); return env_key(dmy, value); } diff --git a/internal.h b/internal.h index fc2ff0eaff..2812b631be 100644 --- a/internal.h +++ b/internal.h @@ -1547,6 +1547,7 @@ void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args); NORETURN(void rb_async_bug_errno(const char *,int)); const char *rb_builtin_type_name(int t); const char *rb_builtin_class_name(VALUE x); +PRINTF_ARGS(void rb_warn_deprecated(const char *fmt, const char *suggest, ...), 1, 3); #ifdef RUBY_ENCODING_H VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list); PRINTF_ARGS(void rb_enc_warn(rb_encoding *enc, const char *fmt, ...), 2, 3); @@ -3810,7 +3810,7 @@ rb_io_each_line(int argc, VALUE *argv, VALUE io) static VALUE rb_io_lines(int argc, VALUE *argv, VALUE io) { - rb_warn("IO#lines is deprecated; use #each_line instead"); + rb_warn_deprecated("IO#lines", "#each_line"); if (!rb_block_given_p()) return rb_enumeratorize(io, ID2SYM(rb_intern("each_line")), argc, argv); return rb_io_each_line(argc, argv, io); @@ -3861,7 +3861,7 @@ rb_io_each_byte(VALUE io) static VALUE rb_io_bytes(VALUE io) { - rb_warn("IO#bytes is deprecated; use #each_byte instead"); + rb_warn_deprecated("IO#bytes", "#each_byte"); if (!rb_block_given_p()) return rb_enumeratorize(io, ID2SYM(rb_intern("each_byte")), 0, 0); return rb_io_each_byte(io); @@ -4015,7 +4015,7 @@ rb_io_each_char(VALUE io) static VALUE rb_io_chars(VALUE io) { - rb_warn("IO#chars is deprecated; use #each_char instead"); + rb_warn_deprecated("IO#chars", "#each_char"); if (!rb_block_given_p()) return rb_enumeratorize(io, ID2SYM(rb_intern("each_char")), 0, 0); return rb_io_each_char(io); @@ -4143,7 +4143,7 @@ rb_io_each_codepoint(VALUE io) static VALUE rb_io_codepoints(VALUE io) { - rb_warn("IO#codepoints is deprecated; use #each_codepoint instead"); + rb_warn_deprecated("IO#codepoints", "#each_codepoint"); if (!rb_block_given_p()) return rb_enumeratorize(io, ID2SYM(rb_intern("each_codepoint")), 0, 0); return rb_io_each_codepoint(io); @@ -12479,7 +12479,7 @@ argf_each_line(int argc, VALUE *argv, VALUE argf) static VALUE argf_lines(int argc, VALUE *argv, VALUE argf) { - rb_warn("ARGF#lines is deprecated; use #each_line instead"); + rb_warn_deprecated("ARGF#lines", "#each_line"); if (!rb_block_given_p()) return rb_enumeratorize(argf, ID2SYM(rb_intern("each_line")), argc, argv); return argf_each_line(argc, argv, argf); @@ -12526,7 +12526,7 @@ argf_each_byte(VALUE argf) static VALUE argf_bytes(VALUE argf) { - rb_warn("ARGF#bytes is deprecated; use #each_byte instead"); + rb_warn_deprecated("ARGF#bytes", "#each_byte"); if (!rb_block_given_p()) return rb_enumeratorize(argf, ID2SYM(rb_intern("each_byte")), 0, 0); return argf_each_byte(argf); @@ -12565,7 +12565,7 @@ argf_each_char(VALUE argf) static VALUE argf_chars(VALUE argf) { - rb_warn("ARGF#chars is deprecated; use #each_char instead"); + rb_warn_deprecated("ARGF#chars", "#each_char"); if (!rb_block_given_p()) return rb_enumeratorize(argf, ID2SYM(rb_intern("each_char")), 0, 0); return argf_each_char(argf); @@ -12604,7 +12604,7 @@ argf_each_codepoint(VALUE argf) static VALUE argf_codepoints(VALUE argf) { - rb_warn("ARGF#codepoints is deprecated; use #each_codepoint instead"); + rb_warn_deprecated("ARGF#codepoints", "#each_codepoint"); if (!rb_block_given_p()) return rb_enumeratorize(argf, ID2SYM(rb_intern("each_codepoint")), 0, 0); return argf_each_codepoint(argf); @@ -758,8 +758,8 @@ proc_new(VALUE klass, int8_t is_lambda, int8_t kernel) } else { const char *name = kernel ? "Kernel#proc" : "Proc.new"; - rb_warn("Capturing the given block using %s is deprecated; " - "use `&block` instead", name); + rb_warn_deprecated("Capturing the given block using %s", + "`&block`", name); } } #else |