From 8890568091f692061640687978a420793c7e49f4 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 4 Oct 2017 20:24:51 +0200 Subject: [PATCH] Move logic for walking over dependent features around --- src/cargo/core/resolver/mod.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 45172a1dd..28740cb22 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -907,11 +907,11 @@ impl<'r> Requirements<'r> { self.deps.entry(pkg).or_insert((false, Vec::new())).0 = true; } - fn require_feature(&mut self, feat: &'r str, recursive: &'r Vec) -> CargoResult<()> { + fn require_feature(&mut self, feat: &'r str) -> CargoResult<()> { if self.seen(feat) { return Ok(()); } - for f in recursive { + for f in self.summary.features().get(feat).expect("must be a valid feature") { if f == &feat { bail!("Cyclic feature dependency: feature `{}` depends on itself", feat); } @@ -935,13 +935,10 @@ impl<'r> Requirements<'r> { self.require_crate_feature(feat_or_package, feat); } None => { - match self.summary.features().get(feat_or_package) { - Some(recursive) => { - self.require_feature(feat_or_package, recursive)?; - } - None => { - self.require_dependency(feat_or_package); - } + if self.summary.features().contains_key(feat_or_package) { + self.require_feature(feat_or_package)?; + } else { + self.require_dependency(feat_or_package); } } } -- 2.30.2