Bug #16506
closedDocumentation for `Module#const_souce_location` is wrong
Description
Returns the Ruby source filename and line number containing first definition of constant specified.
It should be:
Returns the Ruby source filename and line number containing the last definition (the effective definition) of the constant specified.
It also has an example line:
p Object.const_source_location('A') # => ["test.rb", 1] -- note it is first entry, not "continuation"
but that may give the impression that the first-ness is due to the nature of this method. The reason ["test.rb", 1]
is returned instead of ["test.rb", 14]
is because the constant is created at line 1, and is only reopened/modified in line 14. Perhaps, this line can be changed to:
p Object.const_source_location('A') # => ["test.rb", 1] -- note 'A' is created in line 1, and is only reopened/modified in "continuation"
Adding something like this may make it clear that it is the last definition that is returned:
D = 'D1'
D = 'D2'
D = 'D3'
...
Object.const_source_location('D') # => returns the location that corresponds to 'D3'
Updated by zverok (Victor Shepelev) over 5 years ago
@sawa That's an interesting question! I wrote an original doc, and I meant this:
# test.rb:
class A
end
class A # reopening
end
Object.const_source_location('A') # => ["test.rb", 1] -- first definition
But of course, if we are talking about plain constants (not classes), you are right:
# test.rb:
A = 1
A = 2
Object.const_source_location('A') # => ["test.rb", 3] -- LAST definition
I'll submit a PR with clarifications to cover both cases.
Updated by zverok (Victor Shepelev) over 5 years ago
Ah, while I was writing the comment, you've updated the description with the same thoughts :)
Will fix.
Updated by zverok (Victor Shepelev) over 5 years ago
Clarification PR: https://github.com/ruby/ruby/pull/2850
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Open to Closed