[#37730] [Ruby 1.9 - Bug #4962][Open] come back gem_prelude! — Yusuke Endoh <mame@...>

24 messages 2011/07/02

[#37840] [Ruby 1.9 - Feature #4985][Open] Add %S[] support for making a list of symbols — Aaron Patterson <aaron@...>

23 messages 2011/07/07

[#37866] [Backport87 - Feature #4996][Open] About 1.8.7 EOL — Shyouhei Urabe <shyouhei@...>

22 messages 2011/07/08

[#37913] [Ruby 1.9 - Bug #5003][Open] Enumerator#next segfaults in OS X Lion (10.7) — Ganesh Gunasegaran <ganesh.gunas@...>

16 messages 2011/07/09

[#37917] [Ruby 1.9 - Feature #5005][Open] Provide convenient access to original methods — Lazaridis Ilias <ilias@...>

13 messages 2011/07/09

[#37932] [Ruby 1.9 - Feature #5008][Open] Equal rights for Hash (like Array, String, Integer, Float) — Suraj Kurapati <sunaku@...>

31 messages 2011/07/09

[#37936] [Ruby 1.9 - Feature #5010][Open] Add Slop(-like) in stdlib and deprecate current OptionParser API — Rodrigo Rosenfeld Rosas <rr.rosas@...>

29 messages 2011/07/09

[#37968] [Ruby 1.9 - Bug #5015][Open] method_added" is called in addition to "method_undefined — Lazaridis Ilias <ilias@...>

14 messages 2011/07/10

[#38096] [Ruby 1.9 - Feature #5033][Open] PATCH: 1.9: gc_mark_children: Avoid gc_mark() tail recursion, use goto again. — Kurt Stephens <ks.ruby@...>

14 messages 2011/07/16

[#38109] [Ruby 1.9 - Bug #5034][Open] C Source Code formatting — Lazaridis Ilias <ilias@...>

18 messages 2011/07/16

[#38171] [Ruby 1.9 - Bug #5047][Open] Segfault (most likely involving require) — Jack Christensen <jack@...>

21 messages 2011/07/18

[#38182] [Ruby 1.9 - Feature #5054][Open] Compress a sequence of ends — ANDO Yasushi ANDO <andyjpn@...>

68 messages 2011/07/19

[#38197] [Ruby 1.9 - Feature #5056][Open] About 1.9 EOL — Shyouhei Urabe <shyouhei@...>

39 messages 2011/07/19
[#38900] [Ruby 1.9 - Feature #5056] About 1.9 EOL — Shota Fukumori <sorah@...> 2011/08/10

[#38902] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Yukihiro Matsumoto <matz@...> 2011/08/10

Hi,

[#39048] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — SASADA Koichi <ko1@...> 2011/08/22

Hi,

[#39055] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Lucas Nussbaum <lucas@...> 2011/08/23

On 23/08/11 at 06:50 +0900, SASADA Koichi wrote:

[#38295] [Ruby 1.9 - Feature #5064][Open] HTTP user-agent class — Eric Hodel <drbrain@...7.net>

15 messages 2011/07/21

[#38391] [Ruby 1.9 - Bug #5076][Open] Mac OS X Lion Support — Yui NARUSE <naruse@...>

17 messages 2011/07/22

[#38503] [Ruby 1.9 - Feature #5096][Open] offer Logger-compatibility for ext — Eric Wong <normalperson@...>

16 messages 2011/07/25

[#38510] [Ruby 1.9 - Feature #5097][Assigned] Supported platforms of Ruby 1.9.3 — Yui NARUSE <naruse@...>

42 messages 2011/07/26

[#38526] [Backport92 - Backport #5099][Open] Backport r31875 load path performance problem — Aaron Patterson <aaron@...>

19 messages 2011/07/26

[#38538] [Ruby 1.9 - Feature #5101][Open] allow optional timeout for TCPSocket.new — Eric Wong <normalperson@...>

15 messages 2011/07/27

[#38610] [Ruby 1.9 - Feature #5120][Open] String#split needs to be logical — Alexey Muranov <muranov@...>

18 messages 2011/07/30

[#38623] [Ruby 1.9 - Feature #5123][Open] Alias Hash 1.9 as OrderedHash — Alexey Muranov <muranov@...>

14 messages 2011/07/31

[ruby-core:37790] [Ruby 1.9 - Bug #4352] [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s)

From: Yusuke Endoh <mame@...>
Date: 2011-07-05 03:50:31 UTC
List: ruby-core #37790
Issue #4352 has been updated by Yusuke Endoh.

Assignee changed from Yusuke Endoh to Yukihiro Matsumoto

Hi, matz

This ticket includes some design concerns.

The source_location seems important information not only for
human users, but also for tools, such as a debugger, lint,
coverage measurement, etc.
James and Rocky seem to be interested in the aspect of tools,
and dislike eval, which fakes the information.


1) Is the feature that fakes source_location really needed?
I guess that the feature is designed for erb-like application,
but C-style "#line" may be better.

2) What source_location should be used when only binding is
given?

  eval("__FILE__", TOPLEVEL_BINDING) #=> "<main>" or "(eval)"?

Some people expect "<main>" [ruby-dev:38767], and others expect
"(eval)".  [ruby-core:35027]

3) Which source_location should be used when binding and
explicit source_location are both given?

  eval("__FILE__", TOPLEVEL_BINDING, "foo") #=> "<main>" or "foo"?

Currently "foo" is returned.

4) Should 3) be applied even if "(eval)" is given explicitly?

  eval("__FILE__", TOPLEVEL_BINDING, "(eval)") #=> "<main>" or "(eval)"?

Currently "<main>" is returned.

5) Shouldn't ruby have two-type information, one for human and
one for tools?  The former is used for backtrace.  The latter
is used for tools.  eval can fake only the former information.

6) If 5) is accepted, which information should be used by
require_relative?  See #4487.


Thanks,
-- 
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #4352: [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s)
http://redmine.ruby-lang.org/issues/4352

Author: James M. Lawrence
Status: Assigned
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 1.9.x
ruby -v: ruby 1.9.3dev (2011-02-01 trunk 30751) [i386-darwin9.8.0]


=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



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next