@@ -1262,7 +1262,7 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
12621262 has_been_used : None ,
12631263 } ) ;
12641264
1265- if !D :: ENABLE_PROVISIONAL_CACHE {
1265+ if true || !D :: ENABLE_PROVISIONAL_CACHE {
12661266 let result = D :: compute_goal ( self , cx, prev_stack_entry. input , inspect) ;
12671267 let reeval_entry = self . stack . pop ( ) ;
12681268 return ( reeval_entry, result) ;
@@ -1287,7 +1287,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
12871287 let cycles = self . tree . rerun_get_and_reset_cycles ( prev_stack_entry. node_id ) ;
12881288 let current_stack_len = self . stack . len ( ) ;
12891289 let mut first_cycle = true ;
1290- let mut only_evaluated_leaf = false ;
12911290 ' outer: for cycle in cycles {
12921291 let & tree:: Cycle { node_id : cycle_node_id, ref provisional_results } =
12931292 self . tree . get_cycle ( cycle) ;
@@ -1366,20 +1365,16 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
13661365 ) ;
13671366 break ;
13681367 }
1368+ } else if current_goal. 0 == node_id {
1369+ debug ! ( parent = ?info. input, cycle = ?added_goals. last( ) . unwrap( ) , "reevaluated parent, skip cycle" ) ;
1370+ continue ' outer;
13691371 } else {
1370- if only_evaluated_leaf {
1371- break ;
1372- } else {
1373- debug ! ( parent = ?info. input, cycle = ?added_goals. last( ) . unwrap( ) , "reevaluated parent, skip cycle" ) ;
1374- continue ' outer;
1375- }
1372+ break ;
13761373 }
13771374 }
13781375 }
13791376 }
13801377
1381- only_evaluated_leaf = true ;
1382-
13831378 for ( stack_depth, node_id, info) in added_goals {
13841379 let tree:: GoalInfo { input, step_kind_from_parent, available_depth } = info;
13851380 let provisional_result = provisional_results. get ( & stack_depth) . copied ( ) ;
@@ -1405,7 +1400,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
14051400 step_kind_from_parent = ?current_goal. 1 . step_kind_from_parent
14061401 ) ;
14071402 let _span = span. enter ( ) ;
1408-
14091403 let ( node_id, result) = self . evaluate_goal (
14101404 cx,
14111405 current_goal. 1 . input ,
@@ -1417,7 +1411,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
14171411 debug ! ( input = ?current_goal. 1 . input, ?result, "goal did not change" ) ;
14181412 continue ' outer;
14191413 } else {
1420- only_evaluated_leaf = false ;
14211414 debug ! ( input = ?current_goal. 1 . input, ?result, "goal did change" ) ;
14221415 if self . stack . len ( ) > current_stack_len {
14231416 let parent = self . stack . pop ( ) ;
0 commit comments