From 90fb5e2182ebf8deedc8b0acdf50aa237c3da4b0 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 16 Jan 2008 10:52:51 +0000 Subject: [PATCH] Fixed a bug where multiple problems would be deemed safe as long as one didn't have a solution (as opposed to all not having solutions) --- transformations/ArrayUsageCheck.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/transformations/ArrayUsageCheck.hs b/transformations/ArrayUsageCheck.hs index ae027dd..f50a302 100644 --- a/transformations/ArrayUsageCheck.hs +++ b/transformations/ArrayUsageCheck.hs @@ -59,12 +59,12 @@ checkArrayUsage tree = (mapM_ checkPar $ listify (const True) tree) >> return tr Left err -> dieP m $ "Could not work with array indexes for array \"" ++ arrName ++ "\": " ++ err Right [] -> return () -- No problems to work with Right problems -> - case mapM (\(vm,p) -> seqPair (return vm,uncurry solveProblem p)) problems of + case mapMaybe (\(vm,p) -> seqPair (return vm,uncurry solveProblem p)) problems of -- No solutions; no worries! - Nothing -> return () - Just ((varMapping,vm):_) -> do sol <- formatSolution varMapping (getCounterEqs vm) - arrName' <- getRealName (A.Name undefined undefined arrName) - dieP m $ "Overlapping indexes of array \"" ++ arrName' ++ "\" when: " ++ sol + [] -> return () + ((varMapping,vm):_) -> do sol <- formatSolution varMapping (getCounterEqs vm) + arrName' <- getRealName (A.Name undefined undefined arrName) + dieP m $ "Overlapping indexes of array \"" ++ arrName' ++ "\" when: " ++ sol formatSolution :: VarMap -> Map.Map CoeffIndex Integer -> PassM String formatSolution varToIndex indexToConst = do names <- mapM valOfVar $ Map.assocs varToIndex