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