Note [Skolemising and identity]
In some places, we make a TyVarTv for a binder. E.g.
class C a where ...
As Note [Inferring kinds for type declarations] discusses,
we make a TyVarTv for 'a'. Later we skolemise it, and we'd
like to retain its identity, location info etc. (If we don't
retain its identity we'll have to do some pointless swizzling;
see GHC.Tc.TyCl.swizzleTcTyConBndrs. If we retain its identity
but not its location we'll lose the detailed binding site info.
Conclusion: use the Name of the TyVarTv. But we don't want
to do that when skolemising random unification variables;
there the location we want is the skolemisation site.
Fortunately we can tell the difference: random unification
variables have System Names. That's why final_name is
set based on the isSystemName test. References 1
- Inferring kinds for type declarations GHC.Tc.TyCl
Referenced by 1
- GHC.Tc.Utils.TcMType call site