[source]

compiler/prelude/PrelInfo.hs

Note [About wired-in things]

[note link]

  • Wired-in things are Ids/TyCons that are completely known to the compiler. They are global values in GHC, (e.g. listTyCon :: TyCon).

  • A wired in Name contains the thing itself inside the Name:

    see Name.wiredInNameTyThing_maybe

    (E.g. listTyConName contains listTyCon.

  • The name cache is initialised with (the names of) all wired-in things (except tuples and sums; see Note [Known-])

  • The type environment itself contains no wired in things. The type checker sees if the Name is wired in before looking up the name in the type environment.

  • MkIface prunes out wired-in things before putting them in an interface file. So interface files never contain wired-in things.