I'm trying to add the ability to view and edit source
similarly to that found in SmallTalk browsers.
Please see ruby-talk posts #21478 and #21555
The technique suggested by Matz at that time (Sep. '01)
to get source file and line # for a method was:
eval("[__FILE__,__LINE__]", obj.method(:method_name).to_proc)
This dosn't appear to work. __FILE__ and __LINE__ are evaluated
in the parser, so I cannot see how this technique could succeed.
However, it does feel like the "right" way to do this and I think it could
be made to work if __FILE__ and __LINE__ were implemented as virtual global
variables (in eval.c?).
In any case:
The simple patch to eval.c suggested originally by Ned Konz in post #21478
does appear to work when applied to Ruby v1.68. It is only valid for Methods,
but that's perfectly adequate for my needs. [Most Procs are anynonomous anyway.]
Without some sort of patch on the core, the only way I see to
get at source references is via the method_added hooks. This is _much_ less
efficient and especially frustrating given that this information
is already encoded all over the parse tree.