Skip to content

Commit 4e22e35

Browse files
committed
Added QueryKind::Normalized, and used it in cargo-add
1 parent 4b1fc88 commit 4e22e35

File tree

6 files changed

+11
-4
lines changed

6 files changed

+11
-4
lines changed

crates/resolver-tests/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ pub fn resolve_with_config_raw(
113113
let matched = match kind {
114114
QueryKind::Exact => dep.matches(summary),
115115
QueryKind::Fuzzy => true,
116+
QueryKind::Normalized => true,
116117
};
117118
if matched {
118119
self.used.insert(summary.package_id());

src/cargo/ops/cargo_add/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ fn get_latest_dependency(
588588
}
589589
MaybeWorkspace::Other(query) => {
590590
let possibilities = loop {
591-
match registry.query_vec(&query, QueryKind::Fuzzy) {
591+
match registry.query_vec(&query, QueryKind::Normalized) {
592592
std::task::Poll::Ready(res) => {
593593
break res?;
594594
}
@@ -711,7 +711,7 @@ fn select_package(
711711
MaybeWorkspace::Other(query) => {
712712
let possibilities = loop {
713713
// Exact to avoid returning all for path/git
714-
match registry.query_vec(&query, QueryKind::Exact) {
714+
match registry.query_vec(&query, QueryKind::Normalized) {
715715
std::task::Poll::Ready(res) => {
716716
break res?;
717717
}
@@ -938,7 +938,7 @@ fn populate_available_features(
938938
}
939939

940940
let possibilities = loop {
941-
match registry.query_vec(&query, QueryKind::Exact) {
941+
match registry.query_vec(&query, QueryKind::Normalized) {
942942
std::task::Poll::Ready(res) => {
943943
break res?;
944944
}

src/cargo/sources/directory.rs

+1
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ impl<'cfg> Source for DirectorySource<'cfg> {
109109
let matches = packages.filter(|pkg| match kind {
110110
QueryKind::Exact => dep.matches(pkg.summary()),
111111
QueryKind::Fuzzy => true,
112+
QueryKind::Normalized => dep.matches(pkg.summary()),
112113
});
113114
for summary in matches.map(|pkg| pkg.summary().clone()) {
114115
f(IndexSummary::Candidate(summary));

src/cargo/sources/path.rs

+1
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,7 @@ impl<'cfg> Source for PathSource<'cfg> {
555555
let matched = match kind {
556556
QueryKind::Exact => dep.matches(s),
557557
QueryKind::Fuzzy => true,
558+
QueryKind::Normalized => dep.matches(s),
558559
};
559560
if matched {
560561
f(IndexSummary::Candidate(s.clone()))

src/cargo/sources/registry/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,7 @@ impl<'cfg> Source for RegistrySource<'cfg> {
793793
let matched = match kind {
794794
QueryKind::Exact => dep.matches(s.as_summary()),
795795
QueryKind::Fuzzy => true,
796+
QueryKind::Normalized => true,
796797
};
797798
if !matched {
798799
return;
@@ -831,7 +832,7 @@ impl<'cfg> Source for RegistrySource<'cfg> {
831832
return Poll::Ready(Ok(()));
832833
}
833834
let mut any_pending = false;
834-
if kind == QueryKind::Fuzzy {
835+
if kind == QueryKind::Fuzzy || kind == QueryKind::Normalized {
835836
// Attempt to handle misspellings by searching for a chain of related
836837
// names to the original name. The resolver will later
837838
// reject any candidates that have the wrong name, and with this it'll

src/cargo/sources/source.rs

+3
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ pub enum QueryKind {
180180
/// whereas an `Registry` source may return dependencies that have the same
181181
/// canonicalization.
182182
Fuzzy,
183+
/// Match a denpendency in all ways and will normalize the package name.
184+
/// Each source defines what normalizing means.
185+
Normalized,
183186
}
184187

185188
/// A download status that represents if a [`Package`] has already been

0 commit comments

Comments
 (0)