@@ -1085,7 +1085,9 @@ fn activate_deps_loop(
1085
1085
if let Some ( conflicting) = frame
1086
1086
. remaining_siblings
1087
1087
. clone ( )
1088
- . filter_map ( |( _, ( new_dep, _, _) ) | past_conflicting_activations. get ( & new_dep) )
1088
+ . filter_map ( |( _, ( new_dep, _, _) ) | {
1089
+ past_conflicting_activations. get ( & new_dep)
1090
+ } )
1089
1091
. flat_map ( |x| x)
1090
1092
. find ( |con| cx. is_conflicting ( None , con) )
1091
1093
{
@@ -1098,14 +1100,15 @@ fn activate_deps_loop(
1098
1100
// if not has_another we we activate for the better error messages
1099
1101
frame. just_for_error_messages = has_past_conflicting_dep;
1100
1102
if !has_past_conflicting_dep
1101
- || ( !has_another
1102
- && ( just_here_for_the_error_messages
1103
- || find_candidate (
1104
- & mut backtrack_stack. clone ( ) ,
1105
- & parent,
1106
- & conflicting_activations,
1107
- ) . is_none ( ) ) )
1108
- {
1103
+ || ( !has_another && ( just_here_for_the_error_messages || {
1104
+ conflicting_activations
1105
+ . extend ( remaining_candidates. conflicting_prev_active . clone ( ) ) ;
1106
+ find_candidate (
1107
+ & mut backtrack_stack. clone ( ) ,
1108
+ & parent,
1109
+ & conflicting_activations,
1110
+ ) . is_none ( )
1111
+ } ) ) {
1109
1112
remaining_deps. push ( frame) ;
1110
1113
} else {
1111
1114
trace ! (
@@ -1618,7 +1621,10 @@ impl Context {
1618
1621
parent : Option < & PackageId > ,
1619
1622
conflicting_activations : & HashMap < PackageId , ConflictReason > ,
1620
1623
) -> bool {
1621
- conflicting_activations. keys ( ) . chain ( parent) . all ( |id| self . is_active ( id) )
1624
+ conflicting_activations
1625
+ . keys ( )
1626
+ . chain ( parent)
1627
+ . all ( |id| self . is_active ( id) )
1622
1628
}
1623
1629
1624
1630
/// Return all dependencies and the features we want from them.
0 commit comments