Eager load autoloads that are registered before the RBS rewriter is loaded #2300
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.
We need to eager load all the autoloads registered before we load the RBS rewriter, since we might enter into a weird loop when those constants are used for rewriting, which triggers their autoloads which tries to require their file, which we will try to rewrite, but fail since we need the constant to do the rewriting in the first place.
This is especially important since Prism has a few autoloaded constants whose associated file should NOT be rewritten (since they are needed for the rewriting itself), so should be loaded as early as possible.
Using the
AutoloadTracker
like this is appropriate since we continue to register autoloads even after theeager_load_all!
is triggered, which makes callingeager_load_all!
multiple times a safe operation.