dlist
dlist copied to clipboard
Incomplete pattern warning when matching both `Nil` and `Cons`
Hello, I'm getting this warning for a pattern usage like:
foo :: DList a -> IO ()
foo Nil = putStrLn "empty!"
foo (Cons x xs) = print $ x:xs
warning: [-Wincomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for ‘foo’:
Patterns not matched: _
My understanding using pattern synonyms, is that the implementer needs to tell the compiler which pattern set should be considered as complete:
{-# COMPLETE Nil, Cons #-}
Would you accept a PR for that?
Would you accept a PR for that?
Certainly! Thanks for offering!
I just checked briefly to see when it was added to GHC. It seems to appear in the documentation of 8.2.1. It's absent from the 8.2.1 release notes but appears in the 8.2.2 release notes.
I would ideally like a test that demonstrates no incomplete pattern warning (-Wincomplete-patterns
) when COMPLETE
is used. Perhaps the warning can be turned into an error that would cause compiling to fail. Also, the test should ideally pass for all versions of GHC that support COMPLETE
.