ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:103026] [Ruby master Feature#17749] Const source location without name
@ 2021-03-25 23:29 tenderlove
  2021-03-26  0:12 ` [ruby-core:103027] " dylan.smith
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: tenderlove @ 2021-03-25 23:29 UTC (permalink / raw)
  To: ruby-core

Issue #17749 has been reported by tenderlovemaking (Aaron Patterson).

----------------------------------------
Feature #17749: Const source location without name
https://bugs.ruby-lang.org/issues/17749

* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Priority: Normal
----------------------------------------
Hi,

I would like to be able to ask a class or module what its source location is without knowing the name.  For example, I want to do this:

```ruby
module A
  class B
  end
end

p A::B.const_source_location
```

In other works `A::B.const_source_location` would be equivalent to `A.const_source_location(:B)`.

The reason I want to do this is because sometimes it is very difficult to get the name of a constant, and sometimes I don't have access to the constant that "encloses" the class or module.

One example:

```ruby
ObjectSpace.each_object(Class) do |k|
  p k.const_source_location
end
```

In this case I have class objects, but I can't tell what constant `k` was defined *inside* of.  Also I can't trust the "name" method on `k` because sometimes it's not the default method (of course I could work around that, but it's not fun).

I've attached a patch that implements the feature, and there is a PR [here](https://github.com/ruby/ruby/pull/4324)

Side note: I think I would like "source_location" better than `const_source_location`, but I wanted to just file a feature request so we could talk about the feature in general.

---Files--------------------------------
0001-Add-constant-location-information-to-classes.patch (5.34 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-04-17  7:38 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-25 23:29 [ruby-core:103026] [Ruby master Feature#17749] Const source location without name tenderlove
2021-03-26  0:12 ` [ruby-core:103027] " dylan.smith
2021-03-26  2:01 ` [ruby-core:103028] " shevegen
2021-03-26  6:57 ` [ruby-core:103034] " sawadatsuyoshi
2021-03-26 16:09 ` [ruby-core:103039] " tenderlove
2021-03-26 17:44 ` [ruby-core:103041] " eregontp
2021-03-26 17:45 ` [ruby-core:103042] " eregontp
2021-04-16  6:21 ` [ruby-core:103473] " mame
2021-04-16 18:00 ` [ruby-core:103484] " tenderlove
2021-04-17  7:38 ` [ruby-core:103494] " mame

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).