From: Yusuke ENDOH Date: 2011-02-04T09:20:48+09:00 Subject: [ruby-core:35080] Re: [Ruby 1.9-Bug#4352] [patch] Fix eval(s, b) backtrace; make eval(s, b) consistent with eval(s) Hi, 2011/2/3 James M. Lawrence : > Yusuke Endoh: >>> Since source_location claims to be "the ruby source filename and line >>> number containing this proc", I was thinking that source_location >>> could give the "true" location, ignoring the file/line "lies" passed >>> to eval. >> >>Honestly, I understand your expectation. �It is of course acceptable to >>fix it in 2.0. �But it would require a major modification because the >>current implementation itself does NOT know the "true" location. �The >>information is discarded at the parse time. > > Did you misunderstand? It's not my expectation--the next sentence said > it was wrong, and indeed I rely on the current behavior. > > My expectation is that overriding file/line for eval can only be done > explicitly, never implicitly through the binding. I see. Sorry for my misunderstanding. But anyway, it is difficult to meet your expectation in 1.9. Inheriting file/line from a binding is actually intended, not a bug, even though it is confusing. We cannot change any spec in 1.9, unless it is considered a bug. However, it might be considered a bug for Kernel#eval to ignore an explicitly specified "(eval)", I think. Does that answer you? -- Yusuke Endoh