@@ -444,19 +444,26 @@ evaluatePattern' pat@Pattern{term, ceilConditions} = withPatternContext pat $ do
444
444
throw . SideConditionFalse . collapseAndBools $ pat. constraints
445
445
Left unknwon@ SMT. SMTSolverUnknown {} -> do
446
446
-- unlikely case of an Unknown response to a consistency check.
447
- -- What to do here? fail hard for now.
448
- liftIO $ Exception. throw unknwon
449
- Left other -> liftIO $ Exception. throw other -- fail hard on other SMT errors
447
+ -- What to do here? continue for now to preserver the old behaviour.
448
+ withPatternContext pat . logWarn . Text. pack $
449
+ " Constraints consistency check returns: " <> show unknwon
450
+ continue
451
+ Left other ->
452
+ -- fail hard on SMT error other than @SMT.SMTSolverUnknown@
453
+ liftIO $ Exception. throw other
450
454
Right True -> do
451
455
-- constrains are consistent, continue
452
- newTerm <- withTermContext term $ evaluateTerm' BottomUp term `catch_` keepTopLevelResults
453
- -- after evaluating the term, evaluate all (existing and
454
- -- newly-acquired) constraints, once
455
- traverse_ simplifyAssumedPredicate . predicates =<< getState
456
- -- this may yield additional new constraints, left unevaluated
457
- evaluatedConstraints <- predicates <$> getState
458
- pure Pattern {constraints = evaluatedConstraints, term = newTerm, ceilConditions}
456
+ continue
459
457
where
458
+ continue = do
459
+ newTerm <- withTermContext term $ evaluateTerm' BottomUp term `catch_` keepTopLevelResults
460
+ -- after evaluating the term, evaluate all (existing and
461
+ -- newly-acquired) constraints, once
462
+ traverse_ simplifyAssumedPredicate . predicates =<< getState
463
+ -- this may yield additional new constraints, left unevaluated
464
+ evaluatedConstraints <- predicates <$> getState
465
+ pure Pattern {constraints = evaluatedConstraints, term = newTerm, ceilConditions}
466
+
460
467
-- when TooManyIterations exception occurred while evaluating the top-level term,
461
468
-- i.e. not in a recursive evaluation of a side-condition,
462
469
-- it is safe to keep the partial result and ignore the exception.
0 commit comments