Skip to content

Commit d00bbe7

Browse files
committed
Added QueryKind::Normalized, and used it in cargo-add
1 parent 7b9d3f5 commit d00bbe7

File tree

6 files changed

+11
-4
lines changed

6 files changed

+11
-4
lines changed

crates/resolver-tests/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ pub fn resolve_with_config_raw(
112112
let matched = match kind {
113113
QueryKind::Exact => dep.matches(summary),
114114
QueryKind::Fuzzy => true,
115+
QueryKind::Normalized => true,
115116
};
116117
if matched {
117118
self.used.insert(summary.package_id());

src/cargo/ops/cargo_add/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ fn get_latest_dependency(
584584
}
585585
MaybeWorkspace::Other(query) => {
586586
let possibilities = loop {
587-
match registry.query_vec(&query, QueryKind::Fuzzy) {
587+
match registry.query_vec(&query, QueryKind::Normalized) {
588588
std::task::Poll::Ready(res) => {
589589
break res?;
590590
}
@@ -707,7 +707,7 @@ fn select_package(
707707
MaybeWorkspace::Other(query) => {
708708
let possibilities = loop {
709709
// Exact to avoid returning all for path/git
710-
match registry.query_vec(&query, QueryKind::Exact) {
710+
match registry.query_vec(&query, QueryKind::Normalized) {
711711
std::task::Poll::Ready(res) => {
712712
break res?;
713713
}
@@ -934,7 +934,7 @@ fn populate_available_features(
934934
}
935935

936936
let possibilities = loop {
937-
match registry.query_vec(&query, QueryKind::Exact) {
937+
match registry.query_vec(&query, QueryKind::Normalized) {
938938
std::task::Poll::Ready(res) => {
939939
break res?;
940940
}

src/cargo/sources/directory.rs

Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 2 additions & 1 deletion
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

Lines changed: 3 additions & 0 deletions
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)