@@ -1262,7 +1262,7 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
1262
1262
has_been_used : None ,
1263
1263
} ) ;
1264
1264
1265
- if !D :: ENABLE_PROVISIONAL_CACHE {
1265
+ if true || !D :: ENABLE_PROVISIONAL_CACHE {
1266
1266
let result = D :: compute_goal ( self , cx, prev_stack_entry. input , inspect) ;
1267
1267
let reeval_entry = self . stack . pop ( ) ;
1268
1268
return ( reeval_entry, result) ;
@@ -1287,7 +1287,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
1287
1287
let cycles = self . tree . rerun_get_and_reset_cycles ( prev_stack_entry. node_id ) ;
1288
1288
let current_stack_len = self . stack . len ( ) ;
1289
1289
let mut first_cycle = true ;
1290
- let mut only_evaluated_leaf = false ;
1291
1290
' outer: for cycle in cycles {
1292
1291
let & tree:: Cycle { node_id : cycle_node_id, ref provisional_results } =
1293
1292
self . tree . get_cycle ( cycle) ;
@@ -1366,20 +1365,16 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
1366
1365
) ;
1367
1366
break ;
1368
1367
}
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;
1369
1371
} 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 ;
1376
1373
}
1377
1374
}
1378
1375
}
1379
1376
}
1380
1377
1381
- only_evaluated_leaf = true ;
1382
-
1383
1378
for ( stack_depth, node_id, info) in added_goals {
1384
1379
let tree:: GoalInfo { input, step_kind_from_parent, available_depth } = info;
1385
1380
let provisional_result = provisional_results. get ( & stack_depth) . copied ( ) ;
@@ -1405,7 +1400,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
1405
1400
step_kind_from_parent = ?current_goal. 1 . step_kind_from_parent
1406
1401
) ;
1407
1402
let _span = span. enter ( ) ;
1408
-
1409
1403
let ( node_id, result) = self . evaluate_goal (
1410
1404
cx,
1411
1405
current_goal. 1 . input ,
@@ -1417,7 +1411,6 @@ impl<D: Delegate<Cx = X>, X: Cx> SearchGraph<D> {
1417
1411
debug ! ( input = ?current_goal. 1 . input, ?result, "goal did not change" ) ;
1418
1412
continue ' outer;
1419
1413
} else {
1420
- only_evaluated_leaf = false ;
1421
1414
debug ! ( input = ?current_goal. 1 . input, ?result, "goal did change" ) ;
1422
1415
if self . stack . len ( ) > current_stack_len {
1423
1416
let parent = self . stack . pop ( ) ;
0 commit comments