@@ -209,25 +209,25 @@ checkExpression tagDict (A.A region expression) =
210checkPatterns :: TagDict -> Region.Region -> Error.Origin -> [Pattern.Canonical] -> Result wrn ()
210checkPatterns :: TagDict -> Region.Region -> Error.Origin -> [Pattern.Canonical] -> Result wrn ()
211checkPatterns tagDict region origin patterns =
211checkPatterns tagDict region origin patterns =
212− checkPatternsHelp tagDict region origin [Anything] patterns
212+ checkPatternsHelp tagDict region origin (Set.singleton Anything) patterns
215checkPatternsHelp
215checkPatternsHelp
216 :: TagDict
216 :: TagDict
217 -> Region.Region
217 -> Region.Region
218 -> Error.Origin
218 -> Error.Origin
219− -> [Pattern]
219+ -> Set.Set Pattern
220 -> [Pattern.Canonical]
220 -> [Pattern.Canonical]
221 -> Result wrn ()
221 -> Result wrn ()
222checkPatternsHelp tagDict region origin unhandled patterns =
222checkPatternsHelp tagDict region origin unhandled patterns =
223− case (unhandled, patterns) of
223+ case patterns of
224− ([], []) ->
224+ [] ->
225+ if Set.size unhandled == 0 then
225− return ()
226+ return ()
228− Result.throw region (Error.Incomplete origin unhandled)
228+ Result.throw region (Error.Incomplete origin unhandled)
230− (_, pattern@(A.A localRegion _) : remainingPatterns) ->
230+ pattern@(A.A localRegion _) : remainingPatterns ->
231 do newUnhandled <- filterPatterns tagDict localRegion pattern unhandled
231 do newUnhandled <- filterPatterns tagDict localRegion pattern unhandled
232 checkPatternsHelp tagDict region origin newUnhandled remainingPatterns
232 checkPatternsHelp tagDict region origin newUnhandled remainingPatterns
@@ -236,8 +236,8 @@ filterPatterns
236 :: TagDict
236 :: TagDict
237 -> Region.Region
237 -> Region.Region
238 -> Pattern.Canonical
238 -> Pattern.Canonical
239− -> [Pattern]
239+ -> Set.Set Pattern
240− -> Result wrn [Pattern]
240+ -> Result wrn (Set.Set Pattern)
241filterPatterns tagDict region pattern unhandled =
241filterPatterns tagDict region pattern unhandled =
243 nitPattern =
243 nitPattern =
@@ -252,6 +252,7 @@ filterPatterns tagDict region pattern unhandled =
253 do let complementPatterns = complement tagDict nitPattern
253 do let complementPatterns = complement tagDict nitPattern
255 concatMap
256 concatMap
256 (\p -> Maybe.mapMaybe (intersection p) complementPatterns)
257 (\p -> Maybe.mapMaybe (intersection p) complementPatterns)
257 unhandled
258 unhandled