diff --git a/crates/uv-resolver/src/resolver/mod.rs b/crates/uv-resolver/src/resolver/mod.rs index cf2132c5b9e8..7e959d0c01c1 100644 --- a/crates/uv-resolver/src/resolver/mod.rs +++ b/crates/uv-resolver/src/resolver/mod.rs @@ -486,21 +486,21 @@ impl ResolverState { - state - .pubgrub - .add_incompatibility(Incompatibility::custom_version( - package.clone(), - version.clone(), - UnavailableReason::Version(reason), - )); - let forked_state = cur_state.take().unwrap(); + let mut forked_state = cur_state.take().unwrap(); if !is_last { cur_state = Some(forked_state.clone()); } + + forked_state.pubgrub.add_incompatibility( + Incompatibility::custom_version( + package.clone(), + version.clone(), + UnavailableReason::Version(reason), + ), + ); forked_states.push(forked_state); continue; } @@ -521,23 +521,24 @@ impl ResolverState constraints, }; - // Add that package and version if the dependencies are not problematic. - let dep_incompats = state.pubgrub.add_incompatibility_from_dependencies( - package.clone(), - version.clone(), - dependencies, - ); + let mut forked_state = cur_state.take().unwrap(); + if !is_last { + cur_state = Some(forked_state.clone()); + } - state.pubgrub.partial_solution.add_version( + // Add that package and version if the dependencies are not problematic. + let dep_incompats = + forked_state.pubgrub.add_incompatibility_from_dependencies( + package.clone(), + version.clone(), + dependencies, + ); + forked_state.pubgrub.partial_solution.add_version( package.clone(), version.clone(), dep_incompats, - &state.pubgrub.incompatibility_store, + &forked_state.pubgrub.incompatibility_store, ); - let forked_state = cur_state.take().unwrap(); - if !is_last { - cur_state = Some(forked_state.clone()); - } forked_states.push(forked_state); } continue 'FORK;