Issue #12944 has been updated by Eregon (Benoit Daloze).


nobu (Nobuyoshi Nakada) wrote:
> Nitpicking an edge case, these two are different.

I see, do you think it is important?
I think the second output is actually more natural for a warning.

r58487 is not enough, it calls Warning#write and not Warning.warn:

ruby -ve 'def Warning.warn(msg); p msg; end; def m; Thread.exclusive {}; end; m'

should send to Warning.warn so it can be filtered.
I also think Warning#write should not be defined.

The entire warning should also be sent as a single String, so for instance I can filter based on where the warning was emitted:

~~~ ruby
def Warning.warn(message)
  case message
  when /Thread\.exclusive is deprecated.+\n.+thread\/exclusive_spec\.rb/
    # ignore
  else
    super(message)
  end
end
~~~

----------------------------------------
Feature #12944: Change Kernel#warn to call Warning.warn
https://bugs.ruby-lang.org/issues/12944#change-64483

* Author: jeremyevans0 (Jeremy Evans)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
Currently, Kernel#warn is basically the same as $stderr.puts.  With the new Warning.warn support in ruby 2.4, it makes sense for Kernel#warn to call Warning.warn, otherwise you will not be able to use Warning.warn to filter/process warning messages generated by Kernel#warn.

The Kernel#warn API is different than the Warning.warn API, the attached patch tries to get similar behavior, but there are probably corner cases where the behavior is different.

---Files--------------------------------
0001-Change-Kernel-warn-to-call-Warning.warn.patch (1.88 KB)
0001-Change-Kernel-warn-to-call-Warning.warn.patch (1.89 KB)
0001-Change-Kernel-warn-to-call-Warning.warn.patch (2.36 KB)
0001-Change-Kernel-warn-to-call-Warning.warn.patch (2.3 KB)
0001-Change-Kernel-warn-to-call-Warning.warn.patch (3.23 KB)
0001-Restore-behavior-of-Kernel-warn-accepting-arrays-arg.patch (1.23 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>