Skip to content

Commit ffaf55f

Browse files
committed
Only insert dep found once
1 parent 80426d7 commit ffaf55f

File tree

3 files changed

+19
-2036
lines changed

3 files changed

+19
-2036
lines changed

src/resolver/mod.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ impl<'d> Resolver<'d> {
412412
match self.local_lookup(&item) {
413413
Ok((resolved_dep, items)) => {
414414
processed.insert(resolved_dep.name.to_string());
415-
result.found.push(resolved_dep);
415+
result.add_found(resolved_dep);
416416
queue.extend(items);
417417
continue;
418418
}
@@ -426,7 +426,7 @@ impl<'d> Resolver<'d> {
426426
// Look at lockfile before doing anything else
427427
if let Some((resolved_dep, items)) = self.lockfile_lookup(&item, cache) {
428428
processed.insert(resolved_dep.name.to_string());
429-
result.found.push(resolved_dep);
429+
result.add_found(resolved_dep);
430430
queue.extend(items);
431431
continue;
432432
}
@@ -473,7 +473,7 @@ impl<'d> Resolver<'d> {
473473
if can_be_overridden {
474474
remote_result = Some((resolved_dep, items));
475475
} else {
476-
result.found.push(resolved_dep);
476+
result.add_found(resolved_dep);
477477
queue.extend(items);
478478
}
479479
}
@@ -504,12 +504,12 @@ impl<'d> Resolver<'d> {
504504
| Some(ConfigDependency::Detailed { .. })
505505
| Some(ConfigDependency::Simple(_)) => {
506506
if let Some((resolved_dep, items)) = self.repositories_lookup(&item, cache) {
507-
result.found.push(resolved_dep);
507+
result.add_found(resolved_dep);
508508
queue.extend(items);
509509
} else {
510510
// Fallback to the remote result otherwise
511511
if let Some((resolved_dep, items)) = remote_result {
512-
result.found.push(resolved_dep);
512+
result.add_found(resolved_dep);
513513
queue.extend(items);
514514
} else {
515515
log::debug!("Didn't find {}", item.name);
@@ -520,7 +520,7 @@ impl<'d> Resolver<'d> {
520520
Some(ConfigDependency::Url { url, .. }) => {
521521
match self.url_lookup(&item, url.as_ref(), cache, http_download) {
522522
Ok((resolved_dep, items)) => {
523-
result.found.push(resolved_dep);
523+
result.add_found(resolved_dep);
524524
queue.extend(items);
525525
}
526526
Err(e) => {
@@ -560,7 +560,7 @@ impl<'d> Resolver<'d> {
560560
cache,
561561
) {
562562
Ok((resolved_dep, items)) => {
563-
result.found.push(resolved_dep);
563+
result.add_found(resolved_dep);
564564
queue.extend(items);
565565
}
566566
Err(e) => {

src/resolver/result.rs

+10-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@ pub struct Resolution<'d> {
2222
pub req_failures: HashMap<String, Vec<RequirementFailure>>,
2323
}
2424

25-
impl Resolution<'_> {
25+
impl<'d> Resolution<'d> {
26+
pub fn add_found(&mut self, dep: ResolvedDependency<'d>) {
27+
for f in &self.found {
28+
if f == &dep {
29+
return;
30+
}
31+
}
32+
self.found.push(dep);
33+
}
34+
2635
pub fn finalize(&mut self) {
2736
let mut solver = DependencySolver::default();
2837
for package in &self.found {

0 commit comments

Comments
 (0)