- tcg_exports :: [AvailInfo], -- What is exported
- tcg_imports :: ImportAvails, -- Information about what was imported
- -- from where, including things bound
- -- in this module
-
- tcg_dus :: DefUses, -- What is defined in this module and what is used.
- -- The latter is used to generate
- -- (a) version tracking; no need to recompile if these
- -- things have not changed version stamp
- -- (b) unused-import info
-
- tcg_keep :: TcRef NameSet, -- Locally-defined top-level names to keep alive
- -- "Keep alive" means give them an Exported flag, so
- -- that the simplifier does not discard them as dead
- -- code, and so that they are exposed in the interface file
- -- (but not to export to the user).
- --
- -- Some things, like dict-fun Ids and default-method Ids are
- -- "born" with the Exported flag on, for exactly the above reason,
- -- but some we only discover as we go. Specifically:
- -- * The to/from functions for generic data types
- -- * Top-level variables appearing free in the RHS of an orphan rule
- -- * Top-level variables appearing free in a TH bracket
-
- tcg_inst_uses :: TcRef NameSet, -- Home-package Dfuns actually used
- -- Used to generate version dependencies
- -- This records usages, rather like tcg_dus, but it has to
- -- be a mutable variable so it can be augmented
- -- when we look up an instance. These uses of dfuns are
- -- rather like the free variables of the program, but
- -- are implicit instead of explicit.
-
- tcg_th_used :: TcRef Bool, -- True <=> Template Haskell syntax used
- -- We need this so that we can generate a dependency on the
- -- Template Haskell package, becuase the desugarer is going to
- -- emit loads of references to TH symbols. It's rather like
- -- tcg_inst_uses; the reference is implicit rather than explicit,
- -- so we have to zap a mutable variable.
-
- tcg_dfun_n :: TcRef Int, -- Allows us to number off the names of DFuns
- -- It's convenient to allocate an External Name for a DFun, with
- -- a permanently-fixed unique, just like other top-level functions
- -- defined in this module. But that means we need a canonical
- -- occurrence name, distinct from all other dfuns in this module,
- -- and this name supply serves that purpose (df1, df2, etc).
-
- -- The next fields accumulate the payload of the module
- -- The binds, rules and foreign-decl fiels are collected
- -- initially in un-zonked form and are finally zonked in tcRnSrcDecls
-
- -- The next fields accumulate the payload of the
- -- module The binds, rules and foreign-decl fiels are
- -- collected initially in un-zonked form and are
- -- finally zonked in tcRnSrcDecls
-
- tcg_rn_imports :: Maybe [LImportDecl Name],
+ tcg_exports :: [AvailInfo], -- ^ What is exported
+ tcg_imports :: ImportAvails,
+ -- ^ Information about what was imported from where, including
+ -- things bound in this module.
+
+ tcg_dus :: DefUses,
+ -- ^ What is defined in this module and what is used.
+ -- The latter is used to generate
+ --
+ -- (a) version tracking; no need to recompile if these things have
+ -- not changed version stamp
+ --
+ -- (b) unused-import info
+
+ tcg_keep :: TcRef NameSet,
+ -- ^ Locally-defined top-level names to keep alive.
+ --
+ -- "Keep alive" means give them an Exported flag, so that the
+ -- simplifier does not discard them as dead code, and so that they
+ -- are exposed in the interface file (but not to export to the
+ -- user).
+ --
+ -- Some things, like dict-fun Ids and default-method Ids are "born"
+ -- with the Exported flag on, for exactly the above reason, but some
+ -- we only discover as we go. Specifically:
+ --
+ -- * The to/from functions for generic data types
+ --
+ -- * Top-level variables appearing free in the RHS of an orphan
+ -- rule
+ --
+ -- * Top-level variables appearing free in a TH bracket
+
+ tcg_inst_uses :: TcRef NameSet,
+ -- ^ Home-package Dfuns actually used.
+ --
+ -- Used to generate version dependencies This records usages, rather
+ -- like tcg_dus, but it has to be a mutable variable so it can be
+ -- augmented when we look up an instance. These uses of dfuns are
+ -- rather like the free variables of the program, but are implicit
+ -- instead of explicit.
+
+ tcg_th_used :: TcRef Bool,
+ -- ^ @True@ <=> Template Haskell syntax used.
+ --
+ -- We need this so that we can generate a dependency on the Template
+ -- Haskell package, becuase the desugarer is going to emit loads of
+ -- references to TH symbols. It's rather like tcg_inst_uses; the
+ -- reference is implicit rather than explicit, so we have to zap a
+ -- mutable variable.
+
+ tcg_dfun_n :: TcRef OccSet,
+ -- ^ Allows us to choose unique DFun names.
+
+ -- The next fields accumulate the payload of the module
+ -- The binds, rules and foreign-decl fiels are collected
+ -- initially in un-zonked form and are finally zonked in tcRnSrcDecls
+