Incorrect "defined but not used" warning for data types using deriving
Consider:
module Main() where
import System
data Foo = Bar | Baz
deriving (Show,Read)
main = do
[x] <- getArgs
print (read x :: Foo)
When we compile:
$ ghc -c Test.hs -fwarn-unused-binds
Test.hs:6:11: Warning: Defined but not used: data constructor `Bar'
Test.hs:6:17: Warning: Defined but not used: data constructor `Baz'
This is incorrect. If a data type derives Read, Enum or Bounded (and for Bounded, is either the first or last element), then the values are used - even if not by name.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.10.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ndmitchell@gmail.com |
| Operating system | |
| Architecture |