[ruby-core:116909] [Ruby master Feature#20293] Add `Warning.categories` method that returns the warning category names

Issue #20293 has been reported by nobu (Nobuyoshi Nakada). ---------------------------------------- Feature #20293: Add `Warning.categories` method that returns the warning category names https://bugs.ruby-lang.org/issues/20293 * Author: nobu (Nobuyoshi Nakada) * Status: Open ---------------------------------------- I propose a new method `Warning.categories`. This would be useful (or necessary) for tests mainly. Currently, `EnvUtil.capture_global_values` saves the original warning settings as followings: ```ruby @original_warning = defined?(Warning.[]) ? %i[deprecated experimental].to_h {|i| [i, Warning[i]]} : nil ``` But this is wrong now; `performance` is missing. So we need: ```ruby @original_warning = if defined?(Warning.[]) # 2.7+ %i[deprecated experimental performance].to_h do |i| [i, begin Warning[i]; rescue ArgumentError; end] end.compact end ``` That means this list is version dependent and we will need to maintain this list in future. We need another surefire way. -- https://bugs.ruby-lang.org/

Issue #20293 has been updated by nobu (Nobuyoshi Nakada). https://github.com/ruby/ruby/pull/10069 ---------------------------------------- Feature #20293: Add `Warning.categories` method that returns the warning category names https://bugs.ruby-lang.org/issues/20293#change-107226 * Author: nobu (Nobuyoshi Nakada) * Status: Open ---------------------------------------- I propose a new method `Warning.categories`. This would be useful (or necessary) for tests mainly. Currently, `EnvUtil.capture_global_values` saves the original warning settings as followings: ```ruby @original_warning = defined?(Warning.[]) ? %i[deprecated experimental].to_h {|i| [i, Warning[i]]} : nil ``` But this is wrong now; `performance` is missing. So we need: ```ruby @original_warning = if defined?(Warning.[]) # 2.7+ %i[deprecated experimental performance].to_h do |i| [i, begin Warning[i]; rescue ArgumentError; end] end.compact end ``` That means this list is version dependent and we will need to maintain this list in future. We need another surefire way. -- https://bugs.ruby-lang.org/
participants (1)
-
nobu (Nobuyoshi Nakada)