Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

Unhelpful message when DerivingVia cannot coerce due to a nominal type variable and constructors out of scope
## Summary ## Steps to reproduce ```haskell {-# LANGUAGE DerivingVia #-} {-# OPTIONS_GHC -Wno-missing-methods #-} module Bug where import Control.Monad.Trans.Reader(Reader) import GHC.Generics (Generically(Generically)) class MyClass a where foo :: Reader () a newtype T = MkT { unT :: () } deriving MyClass via (Generically T) instance MyClass (Generically a) ``` raises: ``` src/Bug.hs:12:12-18: error: [GHC-18872] • Couldn't match type ‘Generically T’ with ‘T’ arising from the coercion of the method ‘foo’ from type ‘Reader () (Generically T)’ to type ‘Reader () T’ • When deriving the instance for (MyClass T) | 12 | deriving MyClass via (Generically T) | ``` But it can work when bringing `ReaderT`'s constructor in scope: ```diff -import Control.Monad.Trans.Reader(Reader) +import Control.Monad.Trans.Reader(Reader, (ReaderT(ReaderT))) ``` ## Expected behavior A more helpful error message guiding me into considering that the coercion fails due to `a` having a `nominal` role in `Reader a`, and then that this `nominal` role can be bypassed when bringing the relevant constructor in scope. I initially stumbled upon that problem not with `Reader` but with [`Database.SQLite.Simple.RowParser`](https://hackage.haskell.org/package/sqlite-simple-0.4.19.0/docs/src/Database.SQLite.Simple.Internal.html#RowParser), and it took me 1h to understand the coercion failed because `StateT` imposed a `nominal` role on `RowParser`'s `a`, then another 3h to understand why my minimal reproducer was not reproducing the problem: because being self contained in a single `module`, the constructor was always in scope. Even though I was specifying a `nominal` role manually, always having the constructor in scope was rendering that role annotation useless to reproduce the error. I did read the [relevant page of the user guide](https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/roles.html) multiple times, but it did not help me to understand that problem: it doesn't talk about scope, constructor, external/internal like the wiki does. It's only after reading the [relevant page of the wiki]( https://wiki.haskell.org/GHC/Coercible#Using_newtypes_internally_and_externally_differently) that I began to have a clue about what was going on. ## Environment * GHC version used: 9.6.6 Optional: * Operating System: NixOS 25.05 * System Architecture: Linux x86_64
issue