From da4c97a3d5156527ae15ae94ea5818a0283b7a3a Mon Sep 17 00:00:00 2001 From: Nick Smallbone Date: Thu, 14 Sep 2017 00:40:01 +0200 Subject: [PATCH] Add sanity check to makePassiveSet. --- src/Twee/PassiveQueue.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Twee/PassiveQueue.hs b/src/Twee/PassiveQueue.hs index 6da0257..00e9aa8 100644 --- a/src/Twee/PassiveQueue.hs +++ b/src/Twee/PassiveQueue.hs @@ -85,10 +85,12 @@ unpack proxy rule isLeft (score, id, pos) = {-# INLINEABLE makePassiveSet #-} makePassiveSet :: forall params. Params params => Id params -> [Passive params] -> Maybe (PassiveSet params) makePassiveSet _ [] = Nothing -makePassiveSet rule ps = - mkPassiveSet proxy rule - (Vector.fromList (map (pack True) (sort left))) - (Vector.fromList (map (pack False) (sort right))) +makePassiveSet rule ps + | and [passive_rule2 p == rule | p <- right] = + mkPassiveSet proxy rule + (Vector.fromList (map (pack True) (sort left))) + (Vector.fromList (map (pack False) (sort right))) + | otherwise = error "rule id does not occur in passive" where proxy :: Proxy params proxy = Proxy