From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2024-06-11T16:00:24+00:00 Subject: [ruby-core:118291] [Ruby master Bug#20573] Warning.warn shouldn't be called for disabled warnings Issue #20573 has been updated by tenderlovemaking (Aaron Patterson). byroot (Jean Boussier) wrote in #note-6: > In [Feature #16345] it was stated: > > > We chose Warning.disable(:deprecated) instead of > re-defining Warning.warn in order to avoid string object generation. > > The intent was clearly for `Warning.warn` not to be called. I'm reading the ticket the same way. It sounds like this is a bug. ---------------------------------------- Bug #20573: Warning.warn shouldn't be called for disabled warnings https://bugs.ruby-lang.org/issues/20573#change-108795 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- Currently `Warning.warn` will be called for all warnings, even if that particular category is disabled. For example ```ruby module Warning def warn(message, category:) p message => category end end def get_var $= end p Warning[:deprecated] get_var ``` I think that internally we should _not_ call `Warning.warn` unless the category is enabled. I've sent a PR here: https://github.com/ruby/ruby/pull/10960 -- https://bugs.ruby-lang.org/