@@ -1,30 +1,27 @@
1{-# LANGUAGE NamedFieldPuns, TupleSections #-}
1{-# LANGUAGE NamedFieldPuns, TupleSections #-}
2−module CheckMatch
2+module Nitpick.PatternMatches
3 ( checkBody
3 ( checkBody
5 , CanonicalPat
5 , CanonicalPat
8import Control.Applicative ((<$>), (<*>))
8import Control.Applicative ((<$>), (<*>))
9−import Control.Monad.Except (throwError)
9+import Control.Monad.Except (forM, liftM, throwError)
10−import Control.Monad (liftM)
11−import Control.Monad (forM)
13import Data.Maybe (mapMaybe, catMaybes)
10import Data.Maybe (mapMaybe, catMaybes)
14import qualified Data.Set as Set
11import qualified Data.Set as Set
15import qualified Data.Map as Map
12import qualified Data.Map as Map
17−import Elm.Utils ((|>))
18import qualified AST.Expression.General as General
14import qualified AST.Expression.General as General
19import qualified AST.Expression.Canonical as Canonical
15import qualified AST.Expression.Canonical as Canonical
20import qualified AST.Module as Module
16import qualified AST.Module as Module
21import qualified AST.Pattern as Pattern
17import qualified AST.Pattern as Pattern
22−import AST.Pattern (CanonicalPattern)
18+import qualified AST.Variable as Var
19+import Elm.Utils ((|>))
23import qualified Reporting.Annotation as Annotation
20import qualified Reporting.Annotation as Annotation
21+import qualified Reporting.Error.Nitpick as Error
24import qualified Reporting.Region as Region
22import qualified Reporting.Region as Region
25−import qualified AST.Variable as Var
23+import qualified Reporting.Warning.Nitpick as Warning
26−import qualified Reporting.Error.CheckMatch as Error
24+
27−import Reporting.Warning.CheckMatch
30 Either (Annotation.Located Error.Error)
27 Either (Annotation.Located Error.Error)
@@ -80,7 +77,7 @@ checkBody interfaces =
80 General.Let defs e ->
77 General.Let defs e ->
81 concat <$> sequence [ps, rhssResults, checkExpr e]
78 concat <$> sequence [ps, rhssResults, checkExpr e]
83− ps = mapMaybeM (\(Canonical.Definition p _ _) -> checkMatch r [p]) defs
80+ ps = filterMapM (\(Canonical.Definition p _ _) -> checkMatch r [p]) defs
85 rhssResults = concatMapM (\(Canonical.Definition _ e _) -> checkExpr e) defs
82 rhssResults = concatMapM (\(Canonical.Definition _ e _) -> checkExpr e) defs
@@ -252,17 +249,22 @@ checkBody interfaces =
255concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
253concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
256−concatMapM f =
254+concatMapM f list =
257− liftM concat . mapM f
255+ liftM concat (mapM f list)
260−mapMaybeM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
258+filterMapM :: Monad m => (a -> m (Maybe b)) -> [a] -> m [b]
261−mapMaybeM f =
259+filterMapM f list =
262− liftM catMaybes . mapM f
260+ liftM catMaybes (mapM f list)
265maybeCons :: Maybe a -> [a] -> [a]
263maybeCons :: Maybe a -> [a] -> [a]
266−maybeCons =
264+maybeCons maybe list =
267− maybe id (:)
265+ case maybe of