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


Thank you for the fix nobu.
I believe it should also send everything (message + backtrace) as a single String to Warning.warn.
I did that in r58493.

It would be nice to backport this to 2.4 for easier exception filtering,
but I guess it's not so common to backport features like this?

----------------------------------------
Feature #13505: circular require prints the backtrace directly to stderr
https://bugs.ruby-lang.org/issues/13505#change-64511

* Author: Eregon (Benoit Daloze)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 2.5
----------------------------------------
The "loading in progress, circular require considered harmful" warning prints the caller backtrace directly to stderr:

~~~ c
    if (RTEST(ruby_verbose)) {
	rb_warning("loading in progress, circular require considered harmful - %s", ftptr);
	rb_backtrace_print_to(rb_stderr);
    }
~~~

This is suboptimal as rb_warning now eventually delegates to Warning.warn, which can handle the warning, but not the backtrace printed separetely to $stderr.
I think the backtrace should be sent together to Warning.warn so the entire warning can be treated/filtered/etc correctly in Warning.warn.



-- 
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>