Incorrect unused top binding warning when interacting with GHC.Generics
The program
{-# LANGUAGE DeriveGeneric #-}
module Main (main) where
import Data.Aeson
import GHC.Generics
data Foo = Foo {bar :: String} deriving Generic
instance ToJSON Foo where
toJSON = genericToJSON defaultOptions
main :: IO ()
main = print (toJSON (Foo "hello"))
emits the warning
UTB.hs:7:17: warning: [-Wunused-top-binds]
Defined but not used: ‘bar’
but removing that binding changes the behaviour of the program, as the above prints
Object (fromList [("bar",String "hello")])
but
{-# LANGUAGE DeriveGeneric #-}
module Main (main) where
import Data.Aeson
import GHC.Generics
data Foo = Foo String deriving Generic
instance ToJSON Foo where
toJSON = genericToJSON defaultOptions
main :: IO ()
main = print (toJSON (Foo "hello"))
prints
String "hello"
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.0.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |