@@ -17,15 +17,15 @@ import qualified AST.Variable as Var
17import Elm.Utils ((|>))
17import Elm.Utils ((|>))
18import Nitpick.Pattern (Pattern(..), fromCanonicalPattern)
18import Nitpick.Pattern (Pattern(..), fromCanonicalPattern)
19import qualified Reporting.Annotation as A
19import qualified Reporting.Annotation as A
20+import qualified Reporting.Error.Pattern as Error
20import qualified Reporting.Region as Region
21import qualified Reporting.Region as Region
21import qualified Reporting.Result as Result
22import qualified Reporting.Result as Result
22−import qualified Reporting.Warning as Warning
25patternMatches
25patternMatches
26 :: Module.Interfaces
26 :: Module.Interfaces
27 -> Module.CanonicalModule
27 -> Module.CanonicalModule
28− -> Result.Result Warning.Warning e ()
28+ -> Result.Result w Error.Error ()
29patternMatches interfaces modul =
29patternMatches interfaces modul =
31 name = Module.name modul
31 name = Module.name modul
@@ -102,7 +102,7 @@ lookupOtherTags (Var.Canonical home name) tagDict =
102checkExpression
102checkExpression
103 :: TagDict
103 :: TagDict
104 -> Canonical.Expr
104 -> Canonical.Expr
105− -> Result.Result Warning.Warning e ()
105+ -> Result.Result w Error.Error ()
106checkExpression tagDict (A.A region expression) =
106checkExpression tagDict (A.A region expression) =
@@ -188,7 +188,7 @@ checkPatterns
188 :: TagDict
188 :: TagDict
189 -> Region.Region
189 -> Region.Region
190 -> [Pattern.CanonicalPattern]
190 -> [Pattern.CanonicalPattern]
191− -> Result.Result Warning.Warning e ()
191+ -> Result.Result w Error.Error ()
192checkPatterns tagDict region patterns =
192checkPatterns tagDict region patterns =
193 checkPatternsHelp tagDict region [Anything] patterns
193 checkPatternsHelp tagDict region [Anything] patterns
@@ -198,14 +198,14 @@ checkPatternsHelp
198 -> Region.Region
198 -> Region.Region
199 -> [Pattern]
199 -> [Pattern]
200 -> [Pattern.CanonicalPattern]
200 -> [Pattern.CanonicalPattern]
201− -> Result.Result Warning.Warning e ()
201+ -> Result.Result w Error.Error ()
202checkPatternsHelp tagDict region unhandled patterns =
202checkPatternsHelp tagDict region unhandled patterns =
203 case (unhandled, patterns) of
203 case (unhandled, patterns) of
204 ([], []) ->
204 ([], []) ->
205 return ()
205 return ()
207 (_:_, []) ->
207 (_:_, []) ->
208− Result.warn region (Warning.InexhaustivePatternMatch unhandled)
208+ Result.throw region (Error.Incomplete unhandled)
210 (_, pattern@(A.A localRegion _) : remainingPatterns) ->
210 (_, pattern@(A.A localRegion _) : remainingPatterns) ->
211 do newUnhandled <- filterPatterns tagDict localRegion pattern unhandled
211 do newUnhandled <- filterPatterns tagDict localRegion pattern unhandled
@@ -217,7 +217,7 @@ filterPatterns
217 -> Region.Region
217 -> Region.Region
218 -> Pattern.CanonicalPattern
218 -> Pattern.CanonicalPattern
219 -> [Pattern]
219 -> [Pattern]
220− -> Result.Result Warning.Warning e [Pattern]
220+ -> Result.Result w Error.Error [Pattern]
221filterPatterns tagDict region pattern unhandled =
221filterPatterns tagDict region pattern unhandled =
223 nitPattern =
223 nitPattern =
@@ -227,8 +227,8 @@ filterPatterns tagDict region pattern unhandled =
227 intersection pat nitPattern == Nothing
227 intersection pat nitPattern == Nothing
229 if all noIntersection unhandled then
229 if all noIntersection unhandled then
230− do Result.warn region Warning.RedundantPatternMatch
230+ Result.throw region Error.Redundant
231− return unhandled
231+
233 do let complementPatterns = complement tagDict nitPattern
233 do let complementPatterns = complement tagDict nitPattern