@@ -1,30 +1,27 @@
11{-# LANGUAGE NamedFieldPuns, TupleSections #-}
2−module CheckMatch
2+module Nitpick.PatternMatches
33 ( checkBody
44 , Pat (..)
55 , CanonicalPat
66 ) where
77
88import Control.Applicative ((<$>), (<*>))
9−import Control.Monad.Except (throwError)
10−import Control.Monad (liftM)
11−import Control.Monad (forM)
12−
9+import Control.Monad.Except (forM, liftM, throwError)
1310import Data.Maybe (mapMaybe, catMaybes)
1411import qualified Data.Set as Set
1512import qualified Data.Map as Map
1613
17−import Elm.Utils ((|>))
1814import qualified AST.Expression.General as General
1915import qualified AST.Expression.Canonical as Canonical
2016import qualified AST.Module as Module
2117import qualified AST.Pattern as Pattern
22−import AST.Pattern (CanonicalPattern)
18+import qualified AST.Variable as Var
19+import Elm.Utils ((|>))
2320import qualified Reporting.Annotation as Annotation
21+import qualified Reporting.Error.Nitpick as Error
2422import qualified Reporting.Region as Region
25−import qualified AST.Variable as Var
26−import qualified Reporting.Error.CheckMatch as Error
27−import Reporting.Warning.CheckMatch
23+import qualified Reporting.Warning.Nitpick as Warning
24+
2825
2926type M =
3027 Either (Annotation.Located Error.Error)
@@ -80,7 +77,7 @@ checkBody interfaces =
8077 General.Let defs e ->
8178 concat <$> sequence [ps, rhssResults, checkExpr e]
8279 where
83− ps = mapMaybeM (\(Canonical.Definition p _ _) -> checkMatch r [p]) defs
80+ ps = filterMapM (\(Canonical.Definition p _ _) -> checkMatch r [p]) defs
8481
8582 rhssResults = concatMapM (\(Canonical.Definition _ e _) -> checkExpr e) defs
8683
@@ -252,17 +249,22 @@ checkBody interfaces =
252249
253250
254251-- Util
252+
255253concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
256−concatMapM f =
257− liftM concat . mapM f
254+concatMapM f list =
255+ liftM concat (mapM f list)
258256
259257
260−mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
261−mapMaybeM f =
262− liftM catMaybes . mapM f
258+filterMapM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
259+filterMapM f list =
260+ liftM catMaybes (mapM f list)
263261
264262
265263maybeCons :: Maybe a -> [a] -> [a]
266−maybeCons =
267− maybe id (:)
264+maybeCons maybe list =
265+ case maybe of
266+ Just x ->
267+ x : list
268268
269+ Nothing ->
270+ list