Do not warn on unused newtype constructors when used with FFI
One of the things I love about GHC are the accurate warnings about unused code. This makes refactoring a joy and prevents dead code that is so common in large Java/C++/etc. projects.
It's quite rare that it gets in your way, but one situation where this can happen is with FFI code. Here is an example:
module SomeModule (Context, mkContext) where import Foreign newtype Context = Context (Ptr ()) foreign import ccall mkContext :: IO Context
Here GHC warns about the unused newtype consructor.
There are a couple of workarounds that you could use to make this code -Wall sane. But I think they either leak more information about the Context type, or they require an internal "Types" module (which adds maintenance costs and decreases code locality).
I think from a users perspective it would be desirable to omit warnings about unused newtype constructors if the newtype is used in a foreign import declaration.