Feature #2084

Method#source_location and Methods Created with `attr`

Added by Run Paint Run Run over 2 years ago. Updated 10 months ago.

[ruby-core:25532]
Status:Closed Start date:09/11/2009
Priority:Normal Due date:
Assignee:_ wanabe % Done:

100%

Category:core
Target version:1.9.2

Description

$ cat /tmp/attr.rb 
  class C
    attr :a
  end

  p C.instance_methods(false)
  p C.instance_method(:a).source_location

  $ ruby -v /tmp/attr.rb
  ruby 1.9.2dev (2009-09-11) [i686-linux]
  [:a]
  nil

Is it feasible to have Method#source_location work with methods created with _attr_(and friends)? Given that a common use for this feature is to extract documentation, it would be helpful if such methods could be located by introspection.

save_attr_loc.patch (5.1 kB) _ wanabe, 01/25/2010 09:56 am

Associated revisions

Revision 27016
Added by _ wanabe almost 2 years ago

* proc.c (rb_method_location): return attr's location if it is setup. [Feature #2084] * NEWS: follow above. * vm_method.c (rb_add_method): save attr's location. * gc.c (mark_method_entry): mark attr's location. * method.h (rb_method_definition_t): add member to save attr's location. * vm_eval.c (vm_call0): follow above. * vm_insnhelper.c (vm_call_method): ditto. * vm_method.c (rb_method_definition_eq): ditto.

Revision 27016
Added by _ wanabe almost 2 years ago

* proc.c (rb_method_location): return attr's location if it is setup. [Feature #2084] * NEWS: follow above. * vm_method.c (rb_add_method): save attr's location. * gc.c (mark_method_entry): mark attr's location. * method.h (rb_method_definition_t): add member to save attr's location. * vm_eval.c (vm_call0): follow above. * vm_insnhelper.c (vm_call_method): ditto. * vm_method.c (rb_method_definition_eq): ditto.

History

Updated by _ wanabe about 2 years ago

I wrote a patch. How about this?

Updated by Nobuyoshi Nakada almost 2 years ago

  • Status changed from Open to Assigned
  • Assignee set to Yuki Sonoda

Updated by Yusuke Endoh almost 2 years ago

  • Priority changed from Low to Normal
  • Target version set to 1.9.2
Hi,

> I wrote a patch.  How about this?


+1, and I confirmed it passes make check and RubySpec.

Matz or Yugui, could you approve this?

-- 
Yusuke Endoh <mame@tsg.ne.jp>

Updated by Yusuke Endoh almost 2 years ago

  • Assignee changed from Yuki Sonoda to _ wanabe
Hi,

> Matz or Yugui, could you approve this?

Yugui has agreed with this feature on IRC.
But she said she had no responsibility for Method#source_location.
(I had misunderstood that she had committed it)

Well, because this feature is trivial, I guess anyone won't disagree.
Wanabe, could you apply your patch?
If you are reluctant to commit it without explicit approval, I'll
commit it on my own responsibility.

-- 
Yusuke Endoh <mame@tsg.ne.jp>

Updated by _ wanabe almost 2 years ago

> If you are reluctant to commit it without explicit approval, I'll
> commit it on my own responsibility.

Many thanks for your concern.
I'll apply it soon.

Updated by _ wanabe almost 2 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100
This issue was solved with changeset r27016.
Run Paint, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

Also available in: Atom PDF