Interactive context, recording information about the state of the context in which statements are executed in a GHCi session.
Constructors
InteractiveContextic_dflags :: DynFlagsThe DynFlags used to evaluate interactive expressions and statements.
ic_mod_index :: IntEach GHCi stmt or declaration brings some new things into scope. We give them names like interactive:Ghci9.T, where the ic_index is the '9'. The ic_mod_index is incremented whenever we add something to ic_tythings See Note [The interactive package]
ic_imports :: [InteractiveImport]The GHCi top-level scope (icReaderEnv) is extended with these imports
This field is only stored here so that the client can retrieve it with GHC.getContext. GHC itself doesn't use it, but does reset it to empty sometimes (such as before a GHC.load). The context is set with GHC.setContext.
ic_tythings :: [TyThing]TyThings defined by the user, in reverse order of definition (ie most recent at the front). Also used in GHC.Tc.Module.runTcInteractive to fill the type checker environment. See Note [ic_tythings]
ic_gre_cache :: IcGlobalRdrEnvEssentially the cached GlobalRdrEnv.
The GlobalRdrEnv contains everything in scope at the command line, both imported and everything in ic_tythings, with the correct shadowing.
The IcGlobalRdrEnv contains extra data to allow efficient recalculation when the set of imports change. See Note [icReaderEnv recalculation]
ic_instances :: (InstEnv, [FamInst])All instances and family instances created during this session. These are grabbed en masse after each update to be sure that proper overlapping is retained. That is, rather than re-check the overlapping each time we update the context, we just take the results from the instance code that already does that.
ic_fix_env :: FixityEnvFixities declared in let statements
ic_default :: Maybe [Type]The current default types, set by a
defaultdeclarationic_resume :: [Resume]The stack of breakpoint contexts
ic_monad :: NameThe monad that GHCi is executing in
ic_int_print :: NameThe function that is used for printing results of expressions in ghci and -e mode.
ic_cwd :: Maybe FilePathvirtual CWD of the program
ic_plugins :: !PluginsCache of loaded plugins. We store them here to avoid having to load them every time we switch to the interactive context.