
#10959: MINIMAL pragma and default implementations -------------------------------------+------------------------------------- Reporter: basvandijk | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.2 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Other Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- The `ToJSON` class from the `aeson` library recently gained the new method `toEncoding` which has a default implementation based on the existing `toJSON` method. A MINIMAL pragma was added to `toJSON` to make sure instances will define it. However, `toJSON` also has a default implementation but only if the type has an instance for `Generic`: {{{ class ToJSON a where toJSON :: a -> Value {-# MINIMAL toJSON #-} default toJSON :: (Generic a, GToJSON (Rep a)) => a -> Value toJSON = genericToJSON defaultOptions toEncoding :: a -> Encoding toEncoding = Encoding . E.encodeToBuilder . toJSON }}} The problem is that users of `aeson` who are using the generic implementation get warnings that their `toJSON` method is not defined: {{{ No explicit implementation for ‘toJSON’ In the instance declaration for ‘ToJSON MyType’ }}} It would be nice if GHC is a bit smarter in this case so that when a a default implementation is used it won't give the warning. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10959 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler