Note [ConcreteTv]
A concrete metavariable is a metavariable whose 'MetaInfo' is 'ConcreteTv'. Similar to 'TyVarTv's which are type variables which can only be unified with other type variables, a 'ConcreteTv' type variable is a type variable which can only be unified with a concrete type (in the sense of Note [Concrete types]). INVARIANT: the kind of a concrete metavariable is concrete. This invariant is upheld at the time of creation of a new concrete metavariable. Concrete metavariables are useful for representation-polymorphism checks: they allow us to refer to a type whose representation is not yet known but will be figured out by the typechecker (see Note [The Concrete mechanism]).
References 2
- Concrete types GHC.Tc.Utils.Concrete
- The Concrete mechanism GHC.Tc.Utils.Concrete
Referenced by 7
- Concrete types GHC.Tc.Utils.Concrete ×2
- GHC.Tc.Utils.TcType call site ×2
- The Concrete mechanism GHC.Tc.Utils.Concrete
- Representation-polymorphism checking built-ins GHC.Tc.Utils.Concrete
- GHC.Tc.Utils.TcMType call site