Note [Implicit TyThings]
DEFINITION: An "implicit" TyThing is one that does not have its own
IfaceDecl in an interface file. Instead, its binding in the type
environment is created as part of typechecking the IfaceDecl for
some other thing.
Examples:
* All DataCons are implicit, because they are generated from the
IfaceDecl for the data/newtype. Ditto class methods.
* Record selectors are *not* implicit, because they get their own
free-standing IfaceDecl. See Note [Record selectors] in
GHC.Tc.TyCl.Utils.
* Associated data/type families are implicit because they are
included in the IfaceDecl of the parent class. (NB: the
IfaceClass decl happens to use IfaceDecl recursively for the
associated types, but that's irrelevant here.)
* Dictionary function Ids are not implicit.
* Axioms for newtypes are implicit (same as above), but axioms
for data/type family instances are *not* implicit (like DFunIds). References 1
- Record selectors GHC.Tc.TyCl.Utils
Referenced by 3
- Implicit axioms GHC.Core.Coercion.Axiom
- Record selectors GHC.Tc.TyCl.Utils
- Handling never-exported TyThings under Backpack GHC.Tc.Utils.Backpack