Skip to content

Commit af9b2d7

Browse files
committed
test: Avoid creating duplicate variables in the sat resolver
1 parent ca14836 commit af9b2d7

File tree

1 file changed

+14
-10
lines changed
  • crates/resolver-tests/src

1 file changed

+14
-10
lines changed

crates/resolver-tests/src/sat.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::collections::hash_map::Entry;
12
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
23
use std::fmt::Write;
34

@@ -86,16 +87,17 @@ fn create_dependencies_vars<'a>(
8687
.or_default()
8788
.insert((kind, platform), solver.new_var());
8889

89-
let dep_feature_var_map = dep
90-
.features()
91-
.iter()
92-
.map(|&f| (f, solver.new_var()))
93-
.collect();
94-
95-
var_for_is_dependencies_features_used
90+
let dep_feature_vars = var_for_is_dependencies_features_used
9691
.entry(name)
9792
.or_default()
98-
.insert((kind, platform), dep_feature_var_map);
93+
.entry((kind, platform))
94+
.or_default();
95+
96+
for &feature_name in dep.features() {
97+
if let Entry::Vacant(entry) = dep_feature_vars.entry(feature_name) {
98+
entry.insert(solver.new_var());
99+
}
100+
}
99101
}
100102

101103
for feature_values in pkg_features.values() {
@@ -109,12 +111,14 @@ fn create_dependencies_vars<'a>(
109111
continue;
110112
};
111113

112-
for dep_features_vars in var_for_is_dependencies_features_used
114+
for dep_feature_vars in var_for_is_dependencies_features_used
113115
.get_mut(&dep_name)
114116
.expect("feature dep name exists")
115117
.values_mut()
116118
{
117-
dep_features_vars.insert(dep_feature, solver.new_var());
119+
if let Entry::Vacant(entry) = dep_feature_vars.entry(dep_feature) {
120+
entry.insert(solver.new_var());
121+
}
118122
}
119123
}
120124
}

0 commit comments

Comments
 (0)