give better error messages for instance declarations with the wrong number of parameters
Consider the following erroneous program which tries to define an instance of
import Control.Monad.Reader newtype Reader' r a = Reader' (r -> a) instance MonadReader (Reader' r)
This instance declaration is wrong, because the
MonadReader type class has two parameters. But ghc's error message is not very helpful:
/tmp/err.hs:5:21: `Reader' r' is not applied to enough type arguments Expected kind `*', but `Reader' r' has kind `* -> *' In the instance declaration for `MonadReader (Reader' r)'
While if I give too many arguments, e.g.,
instance MonadReader r r (Reader' r), I always get a good error message, even if the kinds of some of the leading types are wrong:
Kind error: `MonadReader' is applied to too many type arguments In the instance declaration for `MonadReader r r (Reader' r)'
So it'd be great if the error message for giving too few type arguments could be more like that one.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information