
Good point. I will refine.
The reason it says "specialized" is that type variables other than the last one might be specialized. The class in this example has only one type parameter, so "specialized" is specious. I can fine-tune the error message to print "specialized" only when it actually has been.
Thanks,
Richard
On Oct 22, 2013, at 4:50 AM, Joachim Breitner
Hi,
Am Montag, den 21.10.2013, 13:08 -0400 schrieb Richard Eisenberg:
For the curious, you can see the code in my github fork at https://raw.github.com/goldfirere/ghc/master/compiler/typecheck/TcDeriv.lhs (search for `role_errs`). An example of the new error message is in https://github.com/goldfirere/testsuite/blob/master/tests/roles/should_fail/...
you say Roles10.hs:16:12: Can't make a derived instance of ‛C Age’ (even with cunning newtype deriving): it is not type-safe to use GeneralizedNewtypeDeriving on this class; ‛meth’, specialized to type ‛a -> F a’, cannot be converted safely In the newtype declaration for ‛Age’
but shouldn’t that be either
Roles10.hs:16:12: Can't make a derived instance of ‛C Age’ (even with cunning newtype deriving): it is not type-safe to use GeneralizedNewtypeDeriving on this class; the type of ‛meth’, ‛a -> F a’, cannot be converted safely In the newtype declaration for ‛Age’
or
Roles10.hs:16:12: Can't make a derived instance of ‛C Age’ (even with cunning newtype deriving): it is not type-safe to use GeneralizedNewtypeDeriving on this class; ‛meth’, specialized to type ‛Age -> F Age’, cannot be converted safely In the newtype declaration for ‛Age’
(I’m confused by “specialized to” when the type as printed is not specialized.)
Greetings, Joachim
-- Joachim Breitner e-Mail: mail@joachim-breitner.de Homepage: http://www.joachim-breitner.de ICQ#: 74513189 Jabber-ID: nomeata@joachim-breitner.de _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs