Issue #4352 has been updated by matz (Yukihiro Matsumoto).

Target version changed from 2.2.0 to next minor

I am sorry I missed this issue for a long time.

I agree with the rationale behind the proposal. I am slightly concerned about incompatibility.
So we need to experiment to measure how big the compatibility issue after changing the behavior.
I expect the impact is small (but my expectation fails often).

Matz.


----------------------------------------
Bug #4352: [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s)
https://bugs.ruby-lang.org/issues/4352#change-68315

* Author: quix (James M. Lawrence)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: next minor
* ruby -v: ruby 1.9.3dev (2011-02-01 trunk 30751) [i386-darwin9.8.0]
* Backport: 
----------------------------------------
=begin
 def ex_message
   begin
     yield
   rescue => e
     p e.message
   end
 end
 
 ex_message { eval('raise') }
 ex_message { eval('raise', binding) }
 
 eval('def f ; end')
 p method(:f).source_location
 eval('def g ; end', binding)
 p method(:g).source_location
 ----
 Without patch:
 "(eval):1:in `block in <main>': "
 ""
 ["(eval)", 1]
 ["eval_test.rb", 14]
 
 With patch:
 "(eval):1:in `block in <main>': "
 "(eval):1:in `block in <main>': "
 ["(eval)", 1]
 ["(eval)", 1]
 
 Knowing the line of an error inside eval is useful. Passing a binding
 shouldn't discard that information. Present behavior is even wrong:
 there's no line 10 in this file.
 ----
 eval %{
   
   # .. code ...
   raise
 
 
 }, binding
 ----
 Without patch:
 /Users/jlawrence/tmp/raiser.rb:10:in `<main>': unhandled exception
 	from /Users/jlawrence/tmp/raiser.rb:7:in `eval'
 	from /Users/jlawrence/tmp/raiser.rb:7:in `<main>'
 
 With patch:
 /Users/jlawrence/tmp/raiser.rb:7:in `eval': (eval):4:in `<main>':  (RuntimeError)
 	from /Users/jlawrence/tmp/raiser.rb:7:in `eval'
 	from /Users/jlawrence/tmp/raiser.rb:7:in `<main>'
=end


---Files--------------------------------
eval.patch (1.75 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>