Issue #17160 has been updated by vo.x (Vit Ondruch).


I thought there will be some magic and yes, it is confusing, because I'd expect the `rescue` exception to be the rule.  Also, if the `WebConsole::Evaluator#eval` was named differently, it would be probably more obvious. Appreciate your explanation. Thx.

----------------------------------------
Bug #17160: Wrong exception backtrace
https://bugs.ruby-lang.org/issues/17160#change-87504

* Author: vo.x (Vit Ondruch)
* Status: Rejected
* Priority: Normal
* ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Looking at web-console test results [1], there is following error reported:

~~~
WebConsole::EvaluatorTest#test_Evaluator_callers_are_cleaned_up_of_unneeded_backtraces [/home/travis/build/rails/web-console/test/web_console/evaluator_test.rb:63]:
--- expected
+++ actual
@@ -1,3 +1,3 @@
 "RuntimeError: oops
-\tfrom /home/travis/build/rails/web-console/test/web_console/evaluator_test.rb:61:in `block in <class:EvaluatorTest>'
+\tfrom (eval):1:in `block in <class:EvaluatorTest>'
 "
~~~

Trying to reproduce the issue, it seems that the exception backtrace is not correct. I have used slightly modified version of [2] included in attachment and the output is:

~~~
$ ruby -ractive_support -r./evaluator -e 'e = WebConsole::Evaluator.new(binding); puts e.eval("raise %{oops}")'
# exc.backtrace #
-e:1:in `<main>'
/builddir/t/evaluator.rb:22:in `eval'
/builddir/t/evaluator.rb:22:in `eval'
-e:1:in `<main>'
# caller #
/builddir/t/evaluator.rb:24:in `rescue in eval'
/builddir/t/evaluator.rb:21:in `eval'
-e:1:in `<main>'
RuntimeError: oops
~~~

I believe, that the `exc.backtrace` is wrong and the second line should actually be ```/builddir/t/evaluator.rb:21:in `eval'``` similarly to the output of the `caller`.


[1]: https://travis-ci.org/github/rails/web-console/jobs/719200769
[2]: https://raw.githubusercontent.com/rails/web-console/master/lib/web_console/evaluator.rb

---Files--------------------------------
evaluator.rb (1.12 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>