Allow indexing enhancements to create namespaces #2857
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.
Motivation
We realized that in order to support concerns
class_methods do...end
, indexing enhancements needed to be more powerful and have the liberty to create fake/temporary namespaces.When trying to make that possible, we also realized that the API had many shortcomings that made enhancements harder than they had to be.
Implementation
The idea is to instantiate enhancements with the declaration listener and then expose the API from it. That way, the declaration listener can hold important state like the code units cache and the current file path and enhancements only make flow adjustments and additions to the indexing process.
This PR also allows enhancements to create modules and classes, which allows us to support
class_methods do...end
in the Rails add-on and allows the RSpec add-on to supportlet
andsubject
properly.Automated Tests
Added tests.