-- GADT refinement
instance Outputable TcTyThing where -- Debugging only
- ppr (AGlobal g) = ppr g
+ ppr (AGlobal g) = pprTyThing g
ppr elt@(ATcId {}) = text "Identifier" <>
ifPprDebug (brackets (ppr (tct_id elt) <> dcolon <> ppr (tct_type elt) <> comma
<+> ppr (tct_level elt) <+> ppr (tct_co elt)))
| EqInst { -- delayed unification of the form
-- co :: ty1 ~ ty2
- tci_left :: TcType, -- ty1
- tci_right :: TcType, -- ty2
+ tci_left :: TcType, -- ty1 -- both types are...
+ tci_right :: TcType, -- ty2 -- ...free of boxes
tci_co :: Either -- co
- TcTyVar -- a wanted equation, with a hole, to be
- -- filled with a witness for the equality
- -- for equation generated by the
- -- unifier, 'ty1' is the actual and
- -- 'ty2' the expected type
- Coercion, -- a given equation, with a coercion
- -- witnessing the equality
- -- a coercion that originates from a
- -- signature or a GADT is a CoVar, but
- -- after normalisation of coercions,
- -- they can be arbitrary Coercions
- -- involving constructors and
- -- pseudo-constructors like sym and
- -- trans.
+ TcTyVar -- - a wanted equation, with a hole, to be
+ -- filled with a witness for the equality;
+ -- for equation arising from deferring
+ -- unification, 'ty1' is the actual and
+ -- 'ty2' the expected type
+ Coercion, -- - a given equation, with a coercion
+ -- witnessing the equality;
+ -- a coercion that originates from a
+ -- signature or a GADT is a CoVar, but
+ -- after normalisation of coercions, they
+ -- can be arbitrary Coercions involving
+ -- constructors and pseudo-constructors
+ -- like sym and trans.
tci_loc :: InstLoc,
tci_name :: Name -- Debugging help only: this makes it easier to