rustc: Fix extern crate
being order dependent
#29961
Merged
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.
This commit fixes a bug where a crate could fail to compile depending on the
order of
extern crate
directives at the top of the crate. Specifically, if thesame crate is found at two locations, then if it's loaded first via
--extern
it will not emit a duplicate warning, but if it's first loaded transitively
via a dep and then via
--extern
an error will be emitted.The loader was tweaked to catch this scenario and coalesce the loading of these
two crates to prevent errors from being emitted.