
#11509: Incorrect error message in StandaloneDeriving: "The data constructors of <typeclass> are not all in scope" -------------------------------------+------------------------------------- Reporter: edsko | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): As Simon says, GHC's various `deriving` bits rely heavily on the assumption that the outermost type constructor is that of a datatype. I honestly have no idea how you'd make this work for typeclasses, especially since in your example, GHC would need some way to "tunnel down" into a type and figure out what the newtype is (if there even is one!). Throw in things like `MultiParamTypeClasses` and type synonyms, and I imagine that this would get extremely hairy. Would you be happy with a different error message to the tune of: {{{ Bug1.hs:40:1: error: • Can't make a derived instance of ‘SC (Serializable (MyList a))’: Cannot derive an instance of the form ‘C (T a b c)‘ where ‘T‘ is a type class • In the stand-alone deriving instance for ‘SC (Serializable a) => SC (Serializable (MyList a))’ }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11509#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler