From eaeaf4251f721e0f647975a507da1e77ac2cfe11 Mon Sep 17 00:00:00 2001 From: prsabahrami Date: Fri, 24 Jan 2025 12:00:09 -0500 Subject: [PATCH] implement conditions in `from_provider_async` function --- src/snapshot.rs | 8 +++++++- src/solver/mod.rs | 4 ++-- tests/solver.rs | 10 ++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/snapshot.rs b/src/snapshot.rs index aa8e967..ab6d926 100644 --- a/src/snapshot.rs +++ b/src/snapshot.rs @@ -221,7 +221,13 @@ impl DependencySnapshot { } for &req in deps.requirements.iter() { - let (_, requirement) = req.into_condition_and_requirement(); // TODO: condition + let (condition, requirement) = req.into_condition_and_requirement(); + + if let Some(condition) = condition { + if seen.insert(Element::VersionSet(condition)) { + queue.push_back(Element::VersionSet(condition)); + } + } match requirement { Requirement::Single(version_set) => { diff --git a/src/solver/mod.rs b/src/solver/mod.rs index 87193ec..ebb57ac 100644 --- a/src/solver/mod.rs +++ b/src/solver/mod.rs @@ -1926,12 +1926,12 @@ async fn add_clauses_for_solvables( ); } - if let Some((condition, condition_candidates)) = condition { tracing::trace!( "Adding conditional clauses for {} with condition {}", requirement.display(cache.provider()), - std::convert::Into::::into(condition).display(cache.provider()), + std::convert::Into::::into(condition) + .display(cache.provider()), ); let condition_version_set_variables = requirement_to_sorted_candidates.insert( diff --git a/tests/solver.rs b/tests/solver.rs index 77e1488..b19d5ca 100644 --- a/tests/solver.rs +++ b/tests/solver.rs @@ -514,12 +514,10 @@ impl DependencyProvider for BundleBoxProvider { .into() }; - result - .requirements - .push(ConditionalRequirement { - requirement, - condition: None, - }); + result.requirements.push(ConditionalRequirement { + requirement, + condition: None, + }); } for req in &deps.constrains {