[prototype runtime] Use the original Module#name to avoid generating incorrect module name #526
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
rbs prototype runtime
command generates RBS with incorrect module names ifModule#name
is re-defined.For example:
Solution
This pull request fixes this problem by using the original
Module#name
to get a constant name.It will display the following result.
By the way,
prototype runtime
still uses other Module's methods that can be re-defined. For example, it usesModule#instance_method
to get a method object of a module.At first, I thought I should replace them with the original methods, but I didn't.
Because I guess it is not problematic in most cases. On the contrary, redefined methods can be more appropriate than the original methods.
For example, delegator's
instance_method
is re-defined to work with delegated methods. https://github.com/ruby/ruby/blob/53e352fd718cd2cae6d77298e6e92736dddcfeeb/lib/delegate.rb#L436So I think we don't need to use the original method for them.