Fix check for existing crate when using --extern #17189
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.
When checking for an existing crate, compare against the
crate_metadata::name
field, which is the crate name which was requested during resolution, rather than the result of thecrate_metadata::name()
method, which is the crate name within the crate metadata, as these may not match when using the --extern option torustc
.This fixes spurious "multiple crate version" warnings under the following scenario:
foo
, is referenced multiple times--extern foo=./path/to/libbar.rlib
is specified to rustclibbar.rlib
is notfoo
The behavior surrounding
Context::should_match_name
and the comments inloader.rs
both lead me to believe that this scenario is intended to work.Fixes #17186