@@ -209,25 +209,25 @@ checkExpression tagDict (A.A region expression) =
209209
210210checkPatterns :: TagDict -> Region.Region -> Error.Origin -> [Pattern.Canonical] -> Result wrn ()
211211checkPatterns tagDict region origin patterns =
212− checkPatternsHelp tagDict region origin [Anything] patterns
212+ checkPatternsHelp tagDict region origin (Set.singleton Anything) patterns
213213
214214
215215checkPatternsHelp
216216 :: TagDict
217217 -> Region.Region
218218 -> Error.Origin
219− -> [Pattern]
219+ -> Set.Set Pattern
220220 -> [Pattern.Canonical]
221221 -> Result wrn ()
222222checkPatternsHelp tagDict region origin unhandled patterns =
223− case (unhandled, patterns) of
224− ([], []) ->
225− return ()
226−
227− (_:_, []) ->
228− Result.throw region (Error.Incomplete origin unhandled)
223+ case patterns of
224+ [] ->
225+ if Set.size unhandled == 0 then
226+ return ()
227+ else
228+ Result.throw region (Error.Incomplete origin unhandled)
229229
230− (_, pattern@(A.A localRegion _) : remainingPatterns) ->
230+ pattern@(A.A localRegion _) : remainingPatterns ->
231231 do newUnhandled <- filterPatterns tagDict localRegion pattern unhandled
232232 checkPatternsHelp tagDict region origin newUnhandled remainingPatterns
233233
@@ -236,8 +236,8 @@ filterPatterns
236236 :: TagDict
237237 -> Region.Region
238238 -> Pattern.Canonical
239− -> [Pattern]
240− -> Result wrn [Pattern]
239+ -> Set.Set Pattern
240+ -> Result wrn (Set.Set Pattern)
241241filterPatterns tagDict region pattern unhandled =
242242 let
243243 nitPattern =
@@ -252,6 +252,7 @@ filterPatterns tagDict region pattern unhandled =
252252 else
253253 do let complementPatterns = complement tagDict nitPattern
254254 return $
255+ Set.fromList $
255256 concatMap
256257 (\p -> Maybe.mapMaybe (intersection p) complementPatterns)
257258 unhandled