@@ -1264,7 +1264,7 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
12641264 has_been_used : None ,
12651265 } ) ;
12661266
1267- if !D :: ENABLE_PROVISIONAL_CACHE {
1267+ if true || !D :: ENABLE_PROVISIONAL_CACHE {
12681268 let result = D :: compute_goal ( self , cx, prev_stack_entry. input , inspect) ;
12691269 let reeval_entry = self . stack . pop ( ) ;
12701270 return ( reeval_entry, result) ;
@@ -1289,7 +1289,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
12891289 let cycles = self . tree . rerun_get_and_reset_cycles ( prev_stack_entry. node_id ) ;
12901290 let current_stack_len = self . stack . len ( ) ;
12911291 let mut first_cycle = true ;
1292- let mut only_evaluated_leaf = false ;
12931292 ' outer: for cycle in cycles {
12941293 let & tree:: Cycle { node_id : cycle_node_id, ref provisional_results } =
12951294 self . tree . get_cycle ( cycle) ;
@@ -1368,20 +1367,16 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
13681367 ) ;
13691368 break ;
13701369 }
1370+ } else if current_goal. 0 == node_id {
1371+ debug ! ( parent = ?info. input, cycle = ?added_goals. last( ) . unwrap( ) , "reevaluated parent, skip cycle" ) ;
1372+ continue ' outer;
13711373 } else {
1372- if only_evaluated_leaf {
1373- break ;
1374- } else {
1375- debug ! ( parent = ?info. input, cycle = ?added_goals. last( ) . unwrap( ) , "reevaluated parent, skip cycle" ) ;
1376- continue ' outer;
1377- }
1374+ break ;
13781375 }
13791376 }
13801377 }
13811378 }
13821379
1383- only_evaluated_leaf = true ;
1384-
13851380 for ( stack_depth, node_id, info) in added_goals {
13861381 let tree:: GoalInfo { input, step_kind_from_parent, available_depth } = info;
13871382 let provisional_result = provisional_results. get ( & stack_depth) . copied ( ) ;
@@ -1407,7 +1402,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
14071402 step_kind_from_parent = ?current_goal. 1 . step_kind_from_parent
14081403 ) ;
14091404 let _span = span. enter ( ) ;
1410-
14111405 let ( node_id, result) = self . evaluate_goal (
14121406 cx,
14131407 current_goal. 1 . input ,
@@ -1419,7 +1413,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
14191413 debug ! ( input = ?current_goal. 1 . input, ?result, "goal did not change" ) ;
14201414 continue ' outer;
14211415 } else {
1422- only_evaluated_leaf = false ;
14231416 debug ! ( input = ?current_goal. 1 . input, ?result, "goal did change" ) ;
14241417 if self . stack . len ( ) > current_stack_len {
14251418 let parent = self . stack . pop ( ) ;
0 commit comments