ruby-changes:64296
From: Jeremy <ko1@a...>
Date: Sat, 19 Dec 2020 02:54:33 +0900 (JST)
Subject: [ruby-changes:64296] 05313c914b (master): Use category: :deprecated in warnings that are related to deprecation
https://git.ruby-lang.org/ruby.git/commit/?id=05313c914b From 05313c914b29f7027b27a91021ae2662f0149e54 Mon Sep 17 00:00:00 2001 From: Jeremy Evans <code@j...> Date: Mon, 28 Sep 2020 10:10:31 -0700 Subject: Use category: :deprecated in warnings that are related to deprecation Also document that both :deprecated and :experimental are supported :category option values. The locations where warnings were marked as deprecation warnings was previously reviewed by shyouhei. Comment a couple locations where deprecation warnings should probably be used but are not currently used because deprecation warning enablement has not occurred at the time they are called (RUBY_FREE_MIN, RUBY_HEAP_MIN_SLOTS, -K). Add assert_deprecated_warn to test assertions. Use this to simplify some tests, and fix failing tests after marking some warnings with deprecated category. diff --git a/array.c b/array.c index 207d5a3..f4c3e27 100644 --- a/array.c +++ b/array.c @@ -2835,7 +2835,7 @@ rb_ary_join_m(int argc, VALUE *argv, VALUE ary) https://github.com/ruby/ruby/blob/trunk/array.c#L2835 if (rb_check_arity(argc, 0, 1) == 0 || NIL_P(sep = argv[0])) { sep = rb_output_fs; if (!NIL_P(sep)) { - rb_warn("$, is set to non-nil value"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$, is set to non-nil value"); } } diff --git a/io.c b/io.c index 15032d7..e42c2dc 100644 --- a/io.c +++ b/io.c @@ -1956,7 +1956,7 @@ rb_io_writev(VALUE io, int argc, const VALUE *argv) https://github.com/ruby/ruby/blob/trunk/io.c#L1956 if (io != rb_ractor_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" + rb_category_warning(RB_WARN_CATEGORY_DEPRECATED, "%+"PRIsVALUE"%c""write is outdated interface" " which accepts just one argument", klass, sep); } @@ -7717,7 +7717,7 @@ rb_io_print(int argc, const VALUE *argv, VALUE out) https://github.com/ruby/ruby/blob/trunk/io.c#L7717 argv = &line; } if (argc > 1 && !NIL_P(rb_output_fs)) { - rb_warn("$, is set to non-nil value"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$, is set to non-nil value"); } for (i=0; i<argc; i++) { if (!NIL_P(rb_output_fs) && i>0) { @@ -10238,7 +10238,8 @@ rb_f_syscall(int argc, VALUE *argv, VALUE _) https://github.com/ruby/ruby/blob/trunk/io.c#L10238 int i; if (RTEST(ruby_verbose)) { - rb_warning("We plan to remove a syscall function at future release. DL(Fiddle) provides safer alternative."); + rb_category_warning(RB_WARN_CATEGORY_DEPRECATED, + "We plan to remove a syscall function at future release. DL(Fiddle) provides safer alternative."); } if (argc == 0) diff --git a/object.c b/object.c index 552b10b..b987e13 100644 --- a/object.c +++ b/object.c @@ -1590,7 +1590,7 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/object.c#L1590 rb_obj_match(VALUE obj1, VALUE obj2) { if (rb_warning_category_enabled_p(RB_WARN_CATEGORY_DEPRECATED)) { - rb_warn("deprecated Object#=~ is called on %"PRIsVALUE + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "deprecated Object#=~ is called on %"PRIsVALUE "; it always returns nil", rb_obj_class(obj1)); } return Qnil; @@ -2295,7 +2295,7 @@ VALUE https://github.com/ruby/ruby/blob/trunk/object.c#L2295 rb_mod_attr(int argc, VALUE *argv, VALUE klass) { if (argc == 2 && (argv[1] == Qtrue || argv[1] == Qfalse)) { - rb_warning("optional boolean argument is obsoleted"); + rb_category_warning(RB_WARN_CATEGORY_DEPRECATED, "optional boolean argument is obsoleted"); rb_attr(klass, id_for_attr(klass, argv[0]), 1, RTEST(argv[1]), TRUE); return Qnil; } diff --git a/re.c b/re.c index 2af617e..a56b483 100644 --- a/re.c +++ b/re.c @@ -3467,7 +3467,7 @@ rb_reg_initialize_m(int argc, VALUE *argv, VALUE self) https://github.com/ruby/ruby/blob/trunk/re.c#L3467 flags |= ARG_ENCODING_NONE; } else { - rb_warn("encoding option is ignored - %s", kcode); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "encoding option is ignored - %s", kcode); } } str = StringValue(argv[0]); @@ -3922,14 +3922,14 @@ rb_reg_regsub(VALUE str, VALUE src, struct re_registers *regs, VALUE regexp) https://github.com/ruby/ruby/blob/trunk/re.c#L3922 static VALUE ignorecase_getter(ID _x, VALUE *_y) { - rb_warn("variable $= is no longer effective"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "variable $= is no longer effective"); return Qfalse; } static void ignorecase_setter(VALUE val, ID id, VALUE *_) { - rb_warn("variable $= is no longer effective; ignored"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "variable $= is no longer effective; ignored"); } static VALUE diff --git a/ruby.c b/ruby.c index aa6d4a2..a19e08b 100644 --- a/ruby.c +++ b/ruby.c @@ -1747,7 +1747,10 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) https://github.com/ruby/ruby/blob/trunk/ruby.c#L1747 } if (opt->src.enc.name) - rb_warning("-K is specified; it is for 1.8 compatibility and may cause odd behavior"); + /* cannot set deprecated category, as enabling deprecation warnings based on flags + * has not happened yet. + */ + rb_warning("-K is specified; it is for 1.8 compatibility and may cause odd behavior"); #if USE_MJIT if (opt->features.set & FEATURE_BIT(jit)) { diff --git a/string.c b/string.c index 864a090..dfb38e4 100644 --- a/string.c +++ b/string.c @@ -8187,7 +8187,7 @@ rb_str_split_m(int argc, VALUE *argv, VALUE str) https://github.com/ruby/ruby/blob/trunk/string.c#L8187 rb_raise(rb_eTypeError, "value of $; must be String or Regexp"); } else { - rb_warn("$; is set to non-nil value"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$; is set to non-nil value"); } if (split_type != SPLIT_TYPE_AWK) { switch (BUILTIN_TYPE(spat)) { @@ -8413,7 +8413,7 @@ get_rs(void) https://github.com/ruby/ruby/blob/trunk/string.c#L8413 (!RB_TYPE_P(rs, T_STRING) || RSTRING_LEN(rs) != 1 || RSTRING_PTR(rs)[0] != '\n')) { - rb_warn("$/ is set to non-default value"); + rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "$/ is set to non-default value"); } return rs; } diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index f2abb3d..522b58e 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1112,40 +1112,40 @@ class TestArray < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_array.rb#L1112 def test_join assert_deprecated_warning {$, = ""} a = @cls[] - assert_equal("", assert_warn(/non-nil value/) {a.join}) + assert_equal("", assert_deprecated_warn(/non-nil value/) {a.join}) assert_equal("", a.join(',')) - assert_equal(Encoding::US_ASCII, assert_warn(/non-nil value/) {a.join}.encoding) + assert_equal(Encoding::US_ASCII, assert_deprecated_warn(/non-nil value/) {a.join}.encoding) assert_deprecated_warning {$, = ""} a = @cls[1, 2] - assert_equal("12", assert_warn(/non-nil value/) {a.join}) - assert_equal("12", assert_warn(/non-nil value/) {a.join(nil)}) + assert_equal("12", assert_deprecated_warn(/non-nil value/) {a.join}) + assert_equal("12", assert_deprecated_warn(/non-nil value/) {a.join(nil)}) assert_equal("1,2", a.join(',')) assert_deprecated_warning {$, = ""} a = @cls[1, 2, 3] - assert_equal("123", assert_warn(/non-nil value/) {a.join}) - assert_equal("123", assert_warn(/non-nil value/) {a.join(nil)}) + assert_equal("123", assert_deprecated_warn(/non-nil value/) {a.join}) + assert_equal("123", assert_deprecated_warn(/non-nil value/) {a.join(nil)}) assert_equal("1,2,3", a.join(',')) assert_deprecated_warning {$, = ":"} a = @cls[1, 2, 3] - assert_equal("1:2:3", assert_warn(/non-nil value/) {a.join}) - assert_equal("1:2:3", assert_warn(/non-nil value/) {a.join(nil)}) + assert_equal("1:2:3", assert_deprecated_warn(/non-nil value/) {a.join}) + assert_equal("1:2:3", assert_deprecated_warn(/non-nil value/) {a.join(nil)}) assert_equal("1,2,3", a.join(',')) assert_deprecated_warning {$, = ""} e = ''.force_encoding('EUC-JP') u = ''.force_encoding('UTF-8') - assert_equal(Encoding::US_ASCII, assert_warn(/non-nil value/) {[[]].join}.encoding) - assert_equal(Encoding::US_ASCII, assert_warn(/non-nil value/) {[1, [u]].join}.encoding) - assert_equal(Encoding::UTF_8, assert_warn(/non-nil value/) {[u, [e]].join}.encoding) - assert_equal(Encoding::UTF_8, assert_warn(/non-nil value/) {[u, [1]].join}.encoding) - assert_equal(Encoding::UTF_8, assert_warn(/non-nil value/) {[Struct.new(:to_str).new(u)].join}.encoding) + assert_equal(Encoding::US_ASCII, assert_deprecated_warn(/non-nil value/) {[[]].join}.encoding) + assert_equal(Encoding::US_ASCII, assert_deprecated_warn(/non-nil value/) {[1, [u]].join}.encoding) + assert_equal(Encoding::UTF_8, assert_deprecated_warn(/non-nil value/) {[u, [e]].join}.encoding) + assert_equal(Encoding::UTF_8, assert_deprecated_warn(/non-nil value/) {[u, [1]].join}.encoding) + assert_equal(Encoding::UTF_8, assert_deprecated_warn(/non-nil value/) {[Struct.new(:to_str).new(u)].join}.encoding) bug5379 = '[ruby-core:39776]' - assert_equal(Encoding::US_ASCII, assert_warn(/non-nil value/) {[[], u, nil].join}.encoding, bug5379) - assert_equal(Encoding::UTF_8, assert_warn(/non-nil value/) {[[], "\u3042", nil].join}.encoding, bug5379) + assert_equal(Encoding::US_ASCII, assert_deprecated_warn(/non-nil value/) {[[], u, nil].join}.encoding, bug5379) + assert_equal(Encoding::UTF_8, assert_deprecated_warn(/non-nil value/) {[[], "\u3042", nil].join}.encoding, bug5379) ensure $, = nil end diff --git a/test/ruby/test_io.rb b/test/ruby/test_io. (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/