Ticket #7336 (closed bug: fixed)
Defined but not used is not detected for data types with instances
module Unused () where data U = U deriving Show
does _not_ report
Unused.hs:3:6: Warning: Defined but not used: type constructor or class `U' Unused.hs:3:10: Warning: Defined but not used: data constructor `U'
This message is only displayed without "deriving". I know, instances are always exported, but these instances cannot be used.
Considering that all types may get Typeable instances, no unused warning would ever be issued for data types.