ghcide-2.9.0.0: The core of an IDE

Safe Haskell | None
Language | GHC2021

Development.IDE.GHC.Compat

Contents

- HIE Compat
- Compat modules
- Extras that rely on compat modules
- SysTools
- Recompilation avoidance

Description

Attempt at hiding the GHC version differences we can.

Synopsis

- hPutStringBuffer :: Handle -> StringBuffer -> IO ()
- addIncludePathsQuote :: FilePath -> DynFlags -> DynFlags
- getModuleHash :: ModIface -> Fingerprint
- setUpTypedHoles :: DynFlags -> DynFlags
- lookupNameCache :: NameCache -> Module -> OccName -> IO Name
- disableWarningsAsErrors :: DynFlags -> DynFlags
- reLoc :: (HasLoc (GenLocated a e), HasAnnotation b) => GenLocated a e -> GenLocated b e
- reLocA :: (HasLoc (GenLocated a e), HasAnnotation b) => GenLocated a e -> GenLocated b e
- renderMessages :: PsMessages -> (Bag WarnMsg, Bag ErrMsg)
- pattern PFailedWithErrorMessages :: forall a b. (b -> Bag (MsgEnvelope DecoratedSDoc)) -> ParseResult a
- myCoreToStgExpr :: Logger -> DynFlags -> InteractiveContext -> Bool -> Module -> ModLocation -> CoreExpr -> IO (Id, [CgStgTopBinding], InfoTableProvMap, CollectedCCs)
- data Usage
  - = UsagePackageModule {
    - usg_mod :: Module
    - usg_mod_hash :: Fingerprint
    - usg_safe :: IsSafeImport
    }
  - | UsageHomeModule {
    - usg_mod_name :: ModuleName
    - usg_unit_id :: UnitId
    - usg_mod_hash :: Fingerprint
    - usg_entities :: [(OccName, Fingerprint)]
    - usg_exports :: Maybe Fingerprint
    - usg_safe :: IsSafeImport
    }
  - | UsageFile {
    - usg_file_path :: FastString
    - usg_file_hash :: Fingerprint
    - usg_file_label :: Maybe String
    }
  - | UsageHomeModuleInterface {
    - usg_mod_name :: ModuleName
    - usg_unit_id :: UnitId
    - usg_iface_hash :: Fingerprint
    }
  - | UsageMergedRequirement {
    - usg_mod :: Module
    - usg_mod_hash :: Fingerprint
    }
- data FastStringCompat
- bytesFS :: FastString -> ByteString
- mkFastStringByteString :: ByteString -> FastString
- nodeInfo' :: HieAST TypeIndex -> NodeInfo TypeIndex
- getNodeIds :: HieAST a -> Map Identifier (IdentifierDetails a)
- getSourceNodeIds :: HieAST a -> Map Identifier (IdentifierDetails a)
- sourceNodeInfo :: HieAST a -> Maybe (NodeInfo a)
- generatedNodeInfo :: HieAST a -> Maybe (NodeInfo a)
- simpleNodeInfoCompat :: FastStringCompat -> FastStringCompat -> NodeInfo a
- isAnnotationInNodeInfo :: (FastStringCompat, FastStringCompat) -> NodeInfo a -> Bool
- nodeAnnotations :: NodeInfo a -> Set (FastStringCompat, FastStringCompat)
- mkAstNode :: NodeInfo a -> Span -> [HieAST a] -> HieAST a
- combineRealSrcSpans :: RealSrcSpan -> RealSrcSpan -> RealSrcSpan
- isQualifiedImport :: ImportDecl a -> Bool
- data GhcVersion
  - = GHC92
  - | GHC94
  - | GHC96
  - | GHC98
  - | GHC910
- ghcVersion :: GhcVersion
- ghcVersionStr :: String
- data HieFileResult = HieFileResult {
  - hie_file_result_version :: Integer
  - hie_file_result_ghc_version :: ByteString
  - hie_file_result :: HieFile
  }
- data HieFile = HieFile {
  - hie_hs_file :: FilePath
  - hie_module :: Module
  - hie_types :: Array TypeIndex HieTypeFlat
  - hie_asts :: HieASTs TypeIndex
  - hie_exports :: [AvailInfo]
  - hie_hs_src :: ByteString
  }
- hieExportNames :: HieFile -> [(SrcSpan, Name)]
- mkHieFile' :: ModSummary -> [AvailInfo] -> HieASTs Type -> ByteString -> Hsc HieFile
- enrichHie :: TypecheckedSource -> RenamedSource -> Bag EvBind -> [ClsInst] -> [TyCon] -> HieASTs Type
- writeHieFile :: FilePath -> HieFile -> IO ()
- readHieFile :: NameCache -> FilePath -> IO HieFileResult
- setHieDir :: FilePath -> DynFlags -> DynFlags
- dontWriteHieFiles :: DynFlags -> DynFlags
- data EvVarSource
  - = EvPatternBind
  - | EvSigBind
  - | EvWrapperBind
  - | EvImplicitBind
  - | EvInstBind {
    - isSuperInst :: Bool
    - cls :: Name
    }
  - | EvLetBind EvBindDeps
- data HieAST a = Node {
  - sourcedNodeInfo :: SourcedNodeInfo a
  - nodeSpan :: Span
  - nodeChildren :: [HieAST a]
  }
- data IEType
  - = Import
  - | ImportAs
  - | ImportHiding
  - | Export
- data Scope
  - = NoScope
  - | LocalScope Span
  - | ModuleScope
- data HieName
  - = ExternalName !Module !OccName !SrcSpan
  - | LocalName !OccName !SrcSpan
  - | KnownKeyName !Unique
- data TyVarScope
  - = ResolvedScopes [Scope]
  - | UnresolvedScope [Name] (Maybe Span)
- data DeclType
  - = FamDec
  - | SynDec
  - | DataDec
  - | ConDec
  - | PatSynDec
  - | ClassDec
  - | InstDec
- data BindType
  - = RegularBind
  - | InstanceBind
- data RecFieldContext
  - = RecFieldDecl
  - | RecFieldAssign
  - | RecFieldMatch
  - | RecFieldOcc
- newtype EvBindDeps = EvBindDeps {
  - getEvBindDeps :: [Name]
  }
- data ContextInfo
  - = Use
  - | MatchBind
  - | IEThing IEType
  - | TyDecl
  - | ValBind BindType Scope (Maybe Span)
  - | PatternBind Scope Scope (Maybe Span)
  - | ClassTyDecl (Maybe Span)
  - | Decl DeclType (Maybe Span)
  - | TyVarBind Scope TyVarScope
  - | RecField RecFieldContext (Maybe Span)
  - | EvidenceVarBind EvVarSource Scope (Maybe Span)
  - | EvidenceVarUse
- data IdentifierDetails a = IdentifierDetails {
  - identType :: Maybe a
  - identInfo :: Set ContextInfo
  }
- type NodeIdentifiers a = Map Identifier (IdentifierDetails a)
- type Identifier = Either ModuleName Name
- data NodeInfo a = NodeInfo (Set NodeAnnotation) [a] (NodeIdentifiers a)
- data NodeAnnotation = NodeAnnotation {
  - nodeAnnotConstr :: !FastString
  - nodeAnnotType :: !FastString
  }
- data NodeOrigin
  - = SourceInfo
  - | GeneratedInfo
- newtype SourcedNodeInfo a = SourcedNodeInfo {
  - getSourcedNodeInfo :: Map NodeOrigin (NodeInfo a)
  }
- newtype HieASTs a = HieASTs {
  - getAsts :: Map HiePath (HieAST a)
  }
- type HiePath = LexicalFastString
- pattern HiePath :: FastString -> HiePath
- newtype HieArgs a = HieArgs [(Bool, a)]
- newtype HieTypeFix = Roll (HieType HieTypeFix)
- type HieTypeFlat = HieType TypeIndex
- data HieType a
  - = HTyVarTy Name
  - | HAppTy a (HieArgs a)
  - | HTyConApp IfaceTyCon (HieArgs a)
  - | HForAllTy ((Name, a), ForAllTyFlag) a
  - | HFunTy a a a
  - | HQualTy a a
  - | HLitTy IfaceTyLit
  - | HCastTy a
  - | HCoercionTy
- type TypeIndex = Int
- data HieFile = HieFile {
  - hie_hs_file :: FilePath
  - hie_module :: Module
  - hie_types :: Array TypeIndex HieTypeFlat
  - hie_asts :: HieASTs TypeIndex
  - hie_exports :: [AvailInfo]
  - hie_hs_src :: ByteString
  }
- type Span = RealSrcSpan
- hieVersion :: Integer
- pprNodeIdents :: Outputable a => NodeIdentifiers a -> SDoc
- pprIdentifier :: Identifier -> SDoc
- pprBindSpan :: Maybe Span -> SDoc
- hieNameOcc :: HieName -> OccName
- toHieName :: Name -> HieName
- module Compat.HieUtils
- module Development.IDE.GHC.Compat.Core
- module Development.IDE.GHC.Compat.Env
- module Development.IDE.GHC.Compat.Iface
- module Development.IDE.GHC.Compat.Logger
- module Development.IDE.GHC.Compat.Outputable
- module Development.IDE.GHC.Compat.Parser
- module Development.IDE.GHC.Compat.Plugins
- module Development.IDE.GHC.Compat.Units
- data Option
  - = FileOption String String
  - | Option String
- runUnlit :: Logger -> DynFlags -> [Option] -> IO ()
- runPp :: Logger -> DynFlags -> [Option] -> IO ()
- hscCompileCoreExprHook :: Hooks -> Maybe (HscEnv -> SrcSpan -> CoreExpr -> IO (ForeignHValue, [Linkable], PkgsLoaded))
- type CoreExpr = Expr CoreBndr
- simplifyExpr :: DynFlags -> HscEnv -> CoreExpr -> IO CoreExpr
- tidyExpr :: TidyEnv -> CoreExpr -> CoreExpr
- emptyTidyEnv :: TidyEnv
- corePrepExpr :: DynFlags -> HscEnv -> CoreExpr -> IO CoreExpr
- corePrepPgm :: Logger -> CorePrepConfig -> CorePrepPgmConfig -> Module -> ModLocation -> CoreProgram -> [TyCon] -> IO CoreProgram
- lintInteractiveExpr :: SDoc -> HscEnv -> CoreExpr -> IO ()
- icInteractiveModule :: InteractiveContext -> Module
- type HomePackageTable = DModuleNameEnv HomeModInfo
- lookupHpt :: HomePackageTable -> ModuleName -> Maybe HomeModInfo
- loadModulesHome :: [HomeModInfo] -> HscEnv -> HscEnv
- bcoFreeNames :: UnlinkedBCO -> UniqDSet Name
- type ModIfaceAnnotation = Annotation
- pattern Annotation :: CoreAnnTarget -> AnnPayload -> Annotation
- data AnnTarget name = ModuleTarget Module
- extendAnnEnvList :: AnnEnv -> [Annotation] -> AnnEnv
- module GHC.Types.Unique.DSet
- module GHC.Types.Unique.Set
- module GHC.Types.Unique.DFM
- getDependentMods :: ModIface -> [ModuleName]
- flattenBinds :: [Bind b] -> [(b, Expr b)]
- mkRnEnv2 :: InScopeSet -> RnEnv2
- emptyInScopeSet :: InScopeSet
- data Unfolding
  - = NoUnfolding
  - | BootUnfolding
  - | OtherCon [AltCon]
  - | DFunUnfolding {
    - df_bndrs :: [Var]
    - df_con :: DataCon
    - df_args :: [CoreExpr]
    }
  - | CoreUnfolding {
    - uf_tmpl :: CoreExpr
    - uf_src :: UnfoldingSource
    - uf_is_top :: Bool
    - uf_cache :: UnfoldingCache
    - uf_guidance :: UnfoldingGuidance
    }
- noUnfolding :: Unfolding
- loadExpr :: Interp -> HscEnv -> SrcSpan -> UnlinkedBCO -> IO ForeignHValue
- byteCodeGen :: HscEnv -> Module -> [CgStgTopBinding] -> [TyCon] -> Maybe ModBreaks -> IO CompiledByteCode
- bc_bcos :: CompiledByteCode -> [UnlinkedBCO]
- loadDecls :: Interp -> HscEnv -> SrcSpan -> CompiledByteCode -> IO ([(Name, ForeignHValue)], [Linkable], PkgsLoaded)
- hscInterp :: HscEnv -> Interp
- expectJust :: HasCallStack => String -> Maybe a -> a
- extract_cons :: DataDefnCons a -> [a]
- recDotDot :: forall (p :: Pass) arg. HsRecFields (GhcPass p) arg -> Maybe Int
- data Dependencies
- type NameCacheUpdater = NameCache
- data XModulePs = XModulePs {
  - hsmodAnn :: EpAnn AnnsModule
  - hsmodLayout :: EpLayout
  - hsmodDeprecMessage :: Maybe (LWarningTxt GhcPs)
  - hsmodHaddockModHeader :: Maybe (LHsDoc GhcPs)
  }
- tcInitTidyEnv :: ZonkM TidyEnv

# Documentation

hPutStringBuffer :: Handle -> StringBuffer -> IO () #

addIncludePathsQuote :: FilePath -> DynFlags -> DynFlags #

getModuleHash :: ModIface -> Fingerprint #

setUpTypedHoles :: DynFlags -> DynFlags #

lookupNameCache :: NameCache -> Module -> OccName -> IO Name #

disableWarningsAsErrors :: DynFlags -> DynFlags #

reLoc :: (HasLoc (GenLocated a e), HasAnnotation b) => GenLocated a e -> GenLocated b e #

reLocA :: (HasLoc (GenLocated a e), HasAnnotation b) => GenLocated a e -> GenLocated b e #

renderMessages :: PsMessages -> (Bag WarnMsg, Bag ErrMsg) #

pattern PFailedWithErrorMessages :: forall a b. (b -> Bag (MsgEnvelope DecoratedSDoc)) -> ParseResult a #

myCoreToStgExpr :: Logger -> DynFlags -> InteractiveContext -> Bool -> Module -> ModLocation -> CoreExpr -> IO (Id, [CgStgTopBinding], InfoTableProvMap, CollectedCCs) #

data Usage #

Records modules for which changes may force recompilation of this module See wiki: https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/recompilation-avoidance

This differs from Dependencies. A module X may be in the dep_mods of this module (via an import chain) but if we don't use anything from X it won't appear in our Usage

Constructors

UsagePackageModule | Module from another package

Fields

- usg_mod :: Module

  External package module depended on

- usg_mod_hash :: Fingerprint

  Cached module ABI fingerprint (corresponds to mi_mod_hash)

- usg_safe :: IsSafeImport

  Was this module imported as a safe import

UsageHomeModule | Module from the current package

Fields

- usg_mod_name :: ModuleName

  Name of the module

- usg_unit_id :: UnitId

  UnitId of the HomeUnit the module is from

- usg_mod_hash :: Fingerprint

  Cached module ABI fingerprint (corresponds to mi_mod_hash)

- usg_entities :: [(OccName, Fingerprint)]

  Entities we depend on, sorted by occurrence name and fingerprinted. NB: usages are for parent names only, e.g. type constructors but not the associated data constructors.

- usg_exports :: Maybe Fingerprint

  Fingerprint for the export list of this module, if we directly imported it (and hence we depend on its export list)

- usg_safe :: IsSafeImport

  Was this module imported as a safe import

UsageFile | A file upon which the module depends, e.g. a CPP #include, or using TH's `addDependentFile`

Fields

- usg_file_path :: FastString

  External file dependency. From a CPP #include or TH addDependentFile. Should be absolute.

- usg_file_hash :: Fingerprint

  `Fingerprint` of the file contents.

- usg_file_label :: Maybe String

  An optional string which is used in recompilation messages if file in question has changed.

UsageHomeModuleInterface |

Fields

- usg_mod_name :: ModuleName

  Name of the module

- usg_unit_id :: UnitId

  UnitId of the HomeUnit the module is from

- usg_iface_hash :: Fingerprint

  The *interface* hash of the module, not the ABI hash. This changes when anything about the interface (and hence the module) has changed.

UsageMergedRequirement | A requirement which was merged into this one.

Fields

- usg_mod :: Module

  External package module depended on

- usg_mod_hash :: Fingerprint

  Cached module ABI fingerprint (corresponds to mi_mod_hash)

#### Instances

Instances details

Binary Usage |
Instance details Defined in GHC.Unit.Module.Deps Methods put_ :: BinHandle -> Usage -> IO () # put :: BinHandle -> Usage -> IO (Bin Usage) # get :: BinHandle -> IO Usage #
Eq Usage |
Instance details Defined in GHC.Unit.Module.Deps Methods (==) :: Usage -> Usage -> Bool # (/=) :: Usage -> Usage -> Bool #

data FastStringCompat #

#### Instances

Instances details

IsString FastStringCompat # |
Instance details Defined in Development.IDE.GHC.Compat Methods fromString :: String -> FastStringCompat #
Show FastStringCompat # |
Instance details Defined in Development.IDE.GHC.Compat Methods showsPrec :: Int -> FastStringCompat -> ShowS # show :: FastStringCompat -> String # showList :: [FastStringCompat] -> ShowS #
Eq FastStringCompat # |
Instance details Defined in Development.IDE.GHC.Compat Methods (==) :: FastStringCompat -> FastStringCompat -> Bool # (/=) :: FastStringCompat -> FastStringCompat -> Bool #
Ord FastStringCompat # |

Instance details

Defined in Development.IDE.GHC.Compat

Methods

compare :: FastStringCompat -> FastStringCompat -> Ordering #

(<) :: FastStringCompat -> FastStringCompat -> Bool #

(<=) :: FastStringCompat -> FastStringCompat -> Bool #

(>) :: FastStringCompat -> FastStringCompat -> Bool #

(>=) :: FastStringCompat -> FastStringCompat -> Bool #

max :: FastStringCompat -> FastStringCompat -> FastStringCompat #

min :: FastStringCompat -> FastStringCompat -> FastStringCompat #

bytesFS :: FastString -> ByteString #

Gives the Modified UTF-8 encoded bytes corresponding to a `FastString`

mkFastStringByteString :: ByteString -> FastString #

Create a `FastString` by copying an existing `ByteString`

nodeInfo' :: HieAST TypeIndex -> NodeInfo TypeIndex #

getNodeIds :: HieAST a -> Map Identifier (IdentifierDetails a) #

getSourceNodeIds :: HieAST a -> Map Identifier (IdentifierDetails a) #

Like getNodeIds but with generated node removed

sourceNodeInfo :: HieAST a -> Maybe (NodeInfo a) #

generatedNodeInfo :: HieAST a -> Maybe (NodeInfo a) #

simpleNodeInfoCompat :: FastStringCompat -> FastStringCompat -> NodeInfo a #

isAnnotationInNodeInfo :: (FastStringCompat, FastStringCompat) -> NodeInfo a -> Bool #

nodeAnnotations :: NodeInfo a -> Set (FastStringCompat, FastStringCompat) #

mkAstNode :: NodeInfo a -> Span -> [HieAST a] -> HieAST a #

combineRealSrcSpans :: RealSrcSpan -> RealSrcSpan -> RealSrcSpan #

Combines two `SrcSpan` into one that spans at least all the characters within both spans. Assumes the "file" part is the same in both inputs

isQualifiedImport :: ImportDecl a -> Bool #

data GhcVersion #

Constructors

GHC92 |
GHC94 |
GHC96 |
GHC98 |
GHC910 |

#### Instances

Instances details

Enum GhcVersion # |

Instance details

Defined in Development.IDE.GHC.Compat

Methods

succ :: GhcVersion -> GhcVersion #

pred :: GhcVersion -> GhcVersion #

toEnum :: Int -> GhcVersion #

fromEnum :: GhcVersion -> Int #

enumFrom :: GhcVersion -> [GhcVersion] #

enumFromThen :: GhcVersion -> GhcVersion -> [GhcVersion] #

enumFromTo :: GhcVersion -> GhcVersion -> [GhcVersion] #

enumFromThenTo :: GhcVersion -> GhcVersion -> GhcVersion -> [GhcVersion] #

Show GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods showsPrec :: Int -> GhcVersion -> ShowS # show :: GhcVersion -> String # showList :: [GhcVersion] -> ShowS #
Eq GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods (==) :: GhcVersion -> GhcVersion -> Bool # (/=) :: GhcVersion -> GhcVersion -> Bool #
Ord GhcVersion # |
Instance details Defined in Development.IDE.GHC.Compat Methods compare :: GhcVersion -> GhcVersion -> Ordering # (<) :: GhcVersion -> GhcVersion -> Bool # (<=) :: GhcVersion -> GhcVersion -> Bool # (>) :: GhcVersion -> GhcVersion -> Bool # (>=) :: GhcVersion -> GhcVersion -> Bool # max :: GhcVersion -> GhcVersion -> GhcVersion # min :: GhcVersion -> GhcVersion -> GhcVersion #

ghcVersion :: GhcVersion #

ghcVersionStr :: String #

# HIE Compat

data HieFileResult #

Constructors

HieFileResult |

Fields

- hie_file_result_version :: Integer
- hie_file_result_ghc_version :: ByteString
- hie_file_result :: HieFile

data HieFile #

GHC builds up a wealth of information about Haskell source as it compiles it. `.hie` files are a way of persisting some of this information to disk so that external tools that need to work with haskell source don't need to parse, typecheck, and rename all over again. These files contain:

- a simplified AST

  - nodes are annotated with source positions and types
  - identifiers are annotated with scope information
- the raw bytes of the initial Haskell source

Besides saving compilation cycles, `.hie` files also offer a more stable interface than the GHC API.

Constructors

HieFile |

Fields

- hie_hs_file :: FilePath

  Initial Haskell source file path

- hie_module :: Module

  The module this HIE file is for

- hie_types :: Array TypeIndex HieTypeFlat

  Types referenced in the `hie_asts`.

  See Note [Efficient serialization of redundant type info]

- hie_asts :: HieASTs TypeIndex

  Type-annotated abstract syntax trees

- hie_exports :: [AvailInfo]

  The names that this module exports

- hie_hs_src :: ByteString

  Raw bytes of the initial Haskell source

#### Instances

Instances details

NFData HieFile # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HieFile -> () #
Binary HieFile |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieFile -> IO () # put :: BinHandle -> HieFile -> IO (Bin HieFile) # get :: BinHandle -> IO HieFile #
Show HieFile # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> HieFile -> ShowS # show :: HieFile -> String # showList :: [HieFile] -> ShowS #

hieExportNames :: HieFile -> [(SrcSpan, Name)] #

mkHieFile' :: ModSummary -> [AvailInfo] -> HieASTs Type -> ByteString -> Hsc HieFile #

enrichHie :: TypecheckedSource -> RenamedSource -> Bag EvBind -> [ClsInst] -> [TyCon] -> HieASTs Type #

writeHieFile :: FilePath -> HieFile -> IO () #

Write a `HieFile` to the given `FilePath`, with a proper header and symbol tables for `Name`s and `FastString`s

readHieFile :: NameCache -> FilePath -> IO HieFileResult #

Read a `HieFile` from a `FilePath`. Can use an existing `NameCache`.

setHieDir :: FilePath -> DynFlags -> DynFlags #

dontWriteHieFiles :: DynFlags -> DynFlags #

data EvVarSource #

Constructors

EvPatternBind | bound by a pattern match
EvSigBind | bound by a type signature
EvWrapperBind | bound by a hswrapper
EvImplicitBind | bound by an implicit variable
EvInstBind | Bound by some instance of given class

Fields

- isSuperInst :: Bool
- cls :: Name

EvLetBind EvBindDeps | A direct let binding

#### Instances

Instances details

Binary EvVarSource |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> EvVarSource -> IO () # put :: BinHandle -> EvVarSource -> IO (Bin EvVarSource) # get :: BinHandle -> IO EvVarSource #
Outputable EvVarSource |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: EvVarSource -> SDoc #
Eq EvVarSource |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: EvVarSource -> EvVarSource -> Bool # (/=) :: EvVarSource -> EvVarSource -> Bool #
Ord EvVarSource |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: EvVarSource -> EvVarSource -> Ordering # (<) :: EvVarSource -> EvVarSource -> Bool # (<=) :: EvVarSource -> EvVarSource -> Bool # (>) :: EvVarSource -> EvVarSource -> Bool # (>=) :: EvVarSource -> EvVarSource -> Bool # max :: EvVarSource -> EvVarSource -> EvVarSource # min :: EvVarSource -> EvVarSource -> EvVarSource #

data HieAST a #

Constructors

Node |

Fields

- sourcedNodeInfo :: SourcedNodeInfo a
- nodeSpan :: Span
- nodeChildren :: [HieAST a]

#### Instances

Instances details

Functor HieAST |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> HieAST a -> HieAST b # (<$) :: a -> HieAST b -> HieAST a #
Foldable HieAST |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieAST m -> m #

foldMap :: Monoid m => (a -> m) -> HieAST a -> m #

foldMap' :: Monoid m => (a -> m) -> HieAST a -> m #

foldr :: (a -> b -> b) -> b -> HieAST a -> b #

foldr' :: (a -> b -> b) -> b -> HieAST a -> b #

foldl :: (b -> a -> b) -> b -> HieAST a -> b #

foldl' :: (b -> a -> b) -> b -> HieAST a -> b #

foldr1 :: (a -> a -> a) -> HieAST a -> a #

foldl1 :: (a -> a -> a) -> HieAST a -> a #

toList :: HieAST a -> [a] #

null :: HieAST a -> Bool #

length :: HieAST a -> Int #

elem :: Eq a => a -> HieAST a -> Bool #

maximum :: Ord a => HieAST a -> a #

minimum :: Ord a => HieAST a -> a #

sum :: Num a => HieAST a -> a #

product :: Num a => HieAST a -> a #

Traversable HieAST |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> HieAST a -> f (HieAST b) # sequenceA :: Applicative f => HieAST (f a) -> f (HieAST a) # mapM :: Monad m => (a -> m b) -> HieAST a -> m (HieAST b) # sequence :: Monad m => HieAST (m a) -> m (HieAST a) #
Binary (HieAST TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieAST TypeIndex -> IO () # put :: BinHandle -> HieAST TypeIndex -> IO (Bin (HieAST TypeIndex)) # get :: BinHandle -> IO (HieAST TypeIndex) #
Outputable a => Outputable (HieAST a) |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: HieAST a -> SDoc #

data IEType #

Types of imports and exports

Constructors

Import |
ImportAs |
ImportHiding |
Export |

#### Instances

Instances details

Binary IEType |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> IEType -> IO () # put :: BinHandle -> IEType -> IO (Bin IEType) # get :: BinHandle -> IO IEType #
Outputable IEType |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: IEType -> SDoc #
Enum IEType |
Instance details Defined in GHC.Iface.Ext.Types Methods succ :: IEType -> IEType # pred :: IEType -> IEType # toEnum :: Int -> IEType # fromEnum :: IEType -> Int # enumFrom :: IEType -> [IEType] # enumFromThen :: IEType -> IEType -> [IEType] # enumFromTo :: IEType -> IEType -> [IEType] # enumFromThenTo :: IEType -> IEType -> IEType -> [IEType] #
Eq IEType |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: IEType -> IEType -> Bool # (/=) :: IEType -> IEType -> Bool #
Ord IEType |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: IEType -> IEType -> Ordering # (<) :: IEType -> IEType -> Bool # (<=) :: IEType -> IEType -> Bool # (>) :: IEType -> IEType -> Bool # (>=) :: IEType -> IEType -> Bool # max :: IEType -> IEType -> IEType # min :: IEType -> IEType -> IEType #

data Scope #

Constructors

NoScope |
LocalScope Span |
ModuleScope |

#### Instances

Instances details

Binary Scope |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> Scope -> IO () # put :: BinHandle -> Scope -> IO (Bin Scope) # get :: BinHandle -> IO Scope #
Outputable Scope |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: Scope -> SDoc #
Data Scope |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Scope -> c Scope #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Scope #

toConstr :: Scope -> Constr #

dataTypeOf :: Scope -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Scope) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Scope) #

gmapT :: (forall b. Data b => b -> b) -> Scope -> Scope #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Scope -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Scope -> r #

gmapQ :: (forall d. Data d => d -> u) -> Scope -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Scope -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Scope -> m Scope #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Scope -> m Scope #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Scope -> m Scope #

Eq Scope |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: Scope -> Scope -> Bool # (/=) :: Scope -> Scope -> Bool #
Ord Scope |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: Scope -> Scope -> Ordering # (<) :: Scope -> Scope -> Bool # (<=) :: Scope -> Scope -> Bool # (>) :: Scope -> Scope -> Bool # (>=) :: Scope -> Scope -> Bool # max :: Scope -> Scope -> Scope # min :: Scope -> Scope -> Scope #

data HieName #

`Name`'s get converted into `HieName`'s before being written into `.hie` files. See `toHieName` and `fromHieName` for logic on how to convert between these two types.

Constructors

ExternalName !Module !OccName !SrcSpan |
LocalName !OccName !SrcSpan |
KnownKeyName !Unique |

#### Instances

Instances details

Outputable HieName |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: HieName -> SDoc #
Eq HieName |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: HieName -> HieName -> Bool # (/=) :: HieName -> HieName -> Bool #
Ord HieName |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: HieName -> HieName -> Ordering # (<) :: HieName -> HieName -> Bool # (<=) :: HieName -> HieName -> Bool # (>) :: HieName -> HieName -> Bool # (>=) :: HieName -> HieName -> Bool # max :: HieName -> HieName -> HieName # min :: HieName -> HieName -> HieName #

data TyVarScope #

Scope of a type variable.

This warrants a data type apart from `Scope` because of complexities introduced by features like `-XScopedTypeVariables` and `-XInstanceSigs`. For example, consider:

    foo, bar, baz :: forall a. a -> a

Here `a` is in scope in all the definitions of `foo`, `bar`, and `baz`, so we need a list of scopes to keep track of this. Furthermore, this list cannot be computed until we resolve the binding sites of `foo`, `bar`, and `baz`.

Consequently, `a` starts with an ``UnresolvedScope` [foo, bar, baz] Nothing` which later gets resolved into a `ResolvedScopes`.

Constructors

ResolvedScopes [Scope] |
UnresolvedScope | Unresolved scopes should never show up in the final `.hie` file

Fields

- [Name]

  names of the definitions over which the scope spans

- (Maybe Span)

  the location of the instance/class declaration for the case where the type variable is declared in a method type signature

#### Instances

Instances details

Binary TyVarScope |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> TyVarScope -> IO () # put :: BinHandle -> TyVarScope -> IO (Bin TyVarScope) # get :: BinHandle -> IO TyVarScope #
Outputable TyVarScope |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: TyVarScope -> SDoc #
Eq TyVarScope |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: TyVarScope -> TyVarScope -> Bool # (/=) :: TyVarScope -> TyVarScope -> Bool #
Ord TyVarScope |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: TyVarScope -> TyVarScope -> Ordering # (<) :: TyVarScope -> TyVarScope -> Bool # (<=) :: TyVarScope -> TyVarScope -> Bool # (>) :: TyVarScope -> TyVarScope -> Bool # (>=) :: TyVarScope -> TyVarScope -> Bool # max :: TyVarScope -> TyVarScope -> TyVarScope # min :: TyVarScope -> TyVarScope -> TyVarScope #

data DeclType #

Constructors

FamDec | type or data family
SynDec | type synonym
DataDec | data declaration
ConDec | constructor declaration
PatSynDec | pattern synonym
ClassDec | class declaration
InstDec | instance declaration

#### Instances

Instances details

Binary DeclType |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> DeclType -> IO () # put :: BinHandle -> DeclType -> IO (Bin DeclType) # get :: BinHandle -> IO DeclType #
Outputable DeclType |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: DeclType -> SDoc #
Enum DeclType |
Instance details Defined in GHC.Iface.Ext.Types Methods succ :: DeclType -> DeclType # pred :: DeclType -> DeclType # toEnum :: Int -> DeclType # fromEnum :: DeclType -> Int # enumFrom :: DeclType -> [DeclType] # enumFromThen :: DeclType -> DeclType -> [DeclType] # enumFromTo :: DeclType -> DeclType -> [DeclType] # enumFromThenTo :: DeclType -> DeclType -> DeclType -> [DeclType] #
Eq DeclType |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: DeclType -> DeclType -> Bool # (/=) :: DeclType -> DeclType -> Bool #
Ord DeclType |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: DeclType -> DeclType -> Ordering # (<) :: DeclType -> DeclType -> Bool # (<=) :: DeclType -> DeclType -> Bool # (>) :: DeclType -> DeclType -> Bool # (>=) :: DeclType -> DeclType -> Bool # max :: DeclType -> DeclType -> DeclType # min :: DeclType -> DeclType -> DeclType #

data BindType #

Constructors

RegularBind |
InstanceBind |

#### Instances

Instances details

Binary BindType |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> BindType -> IO () # put :: BinHandle -> BindType -> IO (Bin BindType) # get :: BinHandle -> IO BindType #
Outputable BindType |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: BindType -> SDoc #
Enum BindType |
Instance details Defined in GHC.Iface.Ext.Types Methods succ :: BindType -> BindType # pred :: BindType -> BindType # toEnum :: Int -> BindType # fromEnum :: BindType -> Int # enumFrom :: BindType -> [BindType] # enumFromThen :: BindType -> BindType -> [BindType] # enumFromTo :: BindType -> BindType -> [BindType] # enumFromThenTo :: BindType -> BindType -> BindType -> [BindType] #
Eq BindType |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: BindType -> BindType -> Bool # (/=) :: BindType -> BindType -> Bool #
Ord BindType |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: BindType -> BindType -> Ordering # (<) :: BindType -> BindType -> Bool # (<=) :: BindType -> BindType -> Bool # (>) :: BindType -> BindType -> Bool # (>=) :: BindType -> BindType -> Bool # max :: BindType -> BindType -> BindType # min :: BindType -> BindType -> BindType #

data RecFieldContext #

Constructors

RecFieldDecl |
RecFieldAssign |
RecFieldMatch |
RecFieldOcc |

#### Instances

Instances details

Binary RecFieldContext |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> RecFieldContext -> IO () # put :: BinHandle -> RecFieldContext -> IO (Bin RecFieldContext) # get :: BinHandle -> IO RecFieldContext #
Outputable RecFieldContext |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: RecFieldContext -> SDoc #
Enum RecFieldContext |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

succ :: RecFieldContext -> RecFieldContext #

pred :: RecFieldContext -> RecFieldContext #

toEnum :: Int -> RecFieldContext #

fromEnum :: RecFieldContext -> Int #

enumFrom :: RecFieldContext -> [RecFieldContext] #

enumFromThen :: RecFieldContext -> RecFieldContext -> [RecFieldContext] #

enumFromTo :: RecFieldContext -> RecFieldContext -> [RecFieldContext] #

enumFromThenTo :: RecFieldContext -> RecFieldContext -> RecFieldContext -> [RecFieldContext] #

Eq RecFieldContext |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: RecFieldContext -> RecFieldContext -> Bool # (/=) :: RecFieldContext -> RecFieldContext -> Bool #
Ord RecFieldContext |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

compare :: RecFieldContext -> RecFieldContext -> Ordering #

(<) :: RecFieldContext -> RecFieldContext -> Bool #

(<=) :: RecFieldContext -> RecFieldContext -> Bool #

(>) :: RecFieldContext -> RecFieldContext -> Bool #

(>=) :: RecFieldContext -> RecFieldContext -> Bool #

max :: RecFieldContext -> RecFieldContext -> RecFieldContext #

min :: RecFieldContext -> RecFieldContext -> RecFieldContext #

newtype EvBindDeps #

Eq/Ord instances compare on the converted HieName, as non-exported names may have different uniques after a roundtrip

Constructors

EvBindDeps |

Fields

- getEvBindDeps :: [Name]

#### Instances

Instances details

Binary EvBindDeps |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> EvBindDeps -> IO () # put :: BinHandle -> EvBindDeps -> IO (Bin EvBindDeps) # get :: BinHandle -> IO EvBindDeps #
Outputable EvBindDeps |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: EvBindDeps -> SDoc #
Eq EvBindDeps |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: EvBindDeps -> EvBindDeps -> Bool # (/=) :: EvBindDeps -> EvBindDeps -> Bool #
Ord EvBindDeps |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: EvBindDeps -> EvBindDeps -> Ordering # (<) :: EvBindDeps -> EvBindDeps -> Bool # (<=) :: EvBindDeps -> EvBindDeps -> Bool # (>) :: EvBindDeps -> EvBindDeps -> Bool # (>=) :: EvBindDeps -> EvBindDeps -> Bool # max :: EvBindDeps -> EvBindDeps -> EvBindDeps # min :: EvBindDeps -> EvBindDeps -> EvBindDeps #

data ContextInfo #

Different contexts under which identifiers exist

Constructors

Use | regular variable
MatchBind |
IEThing IEType | import/export
TyDecl |
ValBind | Value binding

Fields

- BindType

  whether or not the binding is in an instance

- Scope

  scope over which the value is bound

- (Maybe Span)

  span of entire binding

PatternBind

Pattern binding

This case is tricky because the bound identifier can be used in two distinct scopes. Consider the following example (with `-XViewPatterns`)

    do (b, a, (a -> True)) <- bar
       foo a

The identifier `a` has two scopes: in the view pattern `(a -> True)` and in the rest of the `do`-block in `foo a`.

Fields

- Scope

  scope in the pattern (the variable bound can be used further in the pattern)

- Scope

  rest of the scope outside the pattern

- (Maybe Span)

  span of entire binding

ClassTyDecl (Maybe Span) |
Decl | Declaration

Fields

- DeclType

  type of declaration

- (Maybe Span)

  span of entire binding

TyVarBind Scope TyVarScope | Type variable
RecField RecFieldContext (Maybe Span) | Record field
EvidenceVarBind | Constraint/Dictionary evidence variable binding

Fields

- EvVarSource

  how did this bind come into being

- Scope

  scope over which the value is bound

- (Maybe Span)

  span of the binding site

EvidenceVarUse | Usage of evidence variable

#### Instances

Instances details

Binary ContextInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> ContextInfo -> IO () # put :: BinHandle -> ContextInfo -> IO (Bin ContextInfo) # get :: BinHandle -> IO ContextInfo #
Outputable ContextInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: ContextInfo -> SDoc #
Eq ContextInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: ContextInfo -> ContextInfo -> Bool # (/=) :: ContextInfo -> ContextInfo -> Bool #
Ord ContextInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: ContextInfo -> ContextInfo -> Ordering # (<) :: ContextInfo -> ContextInfo -> Bool # (<=) :: ContextInfo -> ContextInfo -> Bool # (>) :: ContextInfo -> ContextInfo -> Bool # (>=) :: ContextInfo -> ContextInfo -> Bool # max :: ContextInfo -> ContextInfo -> ContextInfo # min :: ContextInfo -> ContextInfo -> ContextInfo #

data IdentifierDetails a #

Information associated with every identifier

We need to include types with identifiers because sometimes multiple identifiers occur in the same span(Overloaded Record Fields and so on)

Constructors

IdentifierDetails |

Fields

- identType :: Maybe a
- identInfo :: Set ContextInfo

#### Instances

Instances details

Functor IdentifierDetails |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> IdentifierDetails a -> IdentifierDetails b # (<$) :: a -> IdentifierDetails b -> IdentifierDetails a #
Foldable IdentifierDetails |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => IdentifierDetails m -> m #

foldMap :: Monoid m => (a -> m) -> IdentifierDetails a -> m #

foldMap' :: Monoid m => (a -> m) -> IdentifierDetails a -> m #

foldr :: (a -> b -> b) -> b -> IdentifierDetails a -> b #

foldr' :: (a -> b -> b) -> b -> IdentifierDetails a -> b #

foldl :: (b -> a -> b) -> b -> IdentifierDetails a -> b #

foldl' :: (b -> a -> b) -> b -> IdentifierDetails a -> b #

foldr1 :: (a -> a -> a) -> IdentifierDetails a -> a #

foldl1 :: (a -> a -> a) -> IdentifierDetails a -> a #

toList :: IdentifierDetails a -> [a] #

null :: IdentifierDetails a -> Bool #

length :: IdentifierDetails a -> Int #

elem :: Eq a => a -> IdentifierDetails a -> Bool #

maximum :: Ord a => IdentifierDetails a -> a #

minimum :: Ord a => IdentifierDetails a -> a #

sum :: Num a => IdentifierDetails a -> a #

product :: Num a => IdentifierDetails a -> a #

Traversable IdentifierDetails |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> IdentifierDetails a -> f (IdentifierDetails b) # sequenceA :: Applicative f => IdentifierDetails (f a) -> f (IdentifierDetails a) # mapM :: Monad m => (a -> m b) -> IdentifierDetails a -> m (IdentifierDetails b) # sequence :: Monad m => IdentifierDetails (m a) -> m (IdentifierDetails a) #
NFData a => NFData (IdentifierDetails a) # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: IdentifierDetails a -> () #
Binary (IdentifierDetails TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> IdentifierDetails TypeIndex -> IO () # put :: BinHandle -> IdentifierDetails TypeIndex -> IO (Bin (IdentifierDetails TypeIndex)) # get :: BinHandle -> IO (IdentifierDetails TypeIndex) #
Outputable a => Outputable (IdentifierDetails a) |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: IdentifierDetails a -> SDoc #
Monoid (IdentifierDetails a) |
Instance details Defined in GHC.Iface.Ext.Types Methods mempty :: IdentifierDetails a # mappend :: IdentifierDetails a -> IdentifierDetails a -> IdentifierDetails a # mconcat :: [IdentifierDetails a] -> IdentifierDetails a #
Semigroup (IdentifierDetails a) |
Instance details Defined in GHC.Iface.Ext.Types Methods (<>) :: IdentifierDetails a -> IdentifierDetails a -> IdentifierDetails a # sconcat :: NonEmpty (IdentifierDetails a) -> IdentifierDetails a # stimes :: Integral b => b -> IdentifierDetails a -> IdentifierDetails a #
Eq a => Eq (IdentifierDetails a) |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: IdentifierDetails a -> IdentifierDetails a -> Bool # (/=) :: IdentifierDetails a -> IdentifierDetails a -> Bool #

type NodeIdentifiers a = Map Identifier (IdentifierDetails a) #

type Identifier = Either ModuleName Name #

data NodeInfo a #

The information stored in one AST node.

The type parameter exists to provide flexibility in representation of types (see Note [Efficient serialization of redundant type info]).

Constructors

NodeInfo (Set NodeAnnotation) [a] (NodeIdentifiers a) |

#### Instances

Instances details

Functor NodeInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> NodeInfo a -> NodeInfo b # (<$) :: a -> NodeInfo b -> NodeInfo a #
Foldable NodeInfo |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => NodeInfo m -> m #

foldMap :: Monoid m => (a -> m) -> NodeInfo a -> m #

foldMap' :: Monoid m => (a -> m) -> NodeInfo a -> m #

foldr :: (a -> b -> b) -> b -> NodeInfo a -> b #

foldr' :: (a -> b -> b) -> b -> NodeInfo a -> b #

foldl :: (b -> a -> b) -> b -> NodeInfo a -> b #

foldl' :: (b -> a -> b) -> b -> NodeInfo a -> b #

foldr1 :: (a -> a -> a) -> NodeInfo a -> a #

foldl1 :: (a -> a -> a) -> NodeInfo a -> a #

toList :: NodeInfo a -> [a] #

null :: NodeInfo a -> Bool #

length :: NodeInfo a -> Int #

elem :: Eq a => a -> NodeInfo a -> Bool #

maximum :: Ord a => NodeInfo a -> a #

minimum :: Ord a => NodeInfo a -> a #

sum :: Num a => NodeInfo a -> a #

product :: Num a => NodeInfo a -> a #

Traversable NodeInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> NodeInfo a -> f (NodeInfo b) # sequenceA :: Applicative f => NodeInfo (f a) -> f (NodeInfo a) # mapM :: Monad m => (a -> m b) -> NodeInfo a -> m (NodeInfo b) # sequence :: Monad m => NodeInfo (m a) -> m (NodeInfo a) #
Binary (NodeInfo TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> NodeInfo TypeIndex -> IO () # put :: BinHandle -> NodeInfo TypeIndex -> IO (Bin (NodeInfo TypeIndex)) # get :: BinHandle -> IO (NodeInfo TypeIndex) #
Outputable a => Outputable (NodeInfo a) |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: NodeInfo a -> SDoc #

data NodeAnnotation #

A node annotation

Constructors

NodeAnnotation |

Fields

- nodeAnnotConstr :: !FastString

  name of the AST node constructor

- nodeAnnotType :: !FastString

  name of the AST node Type

#### Instances

Instances details

Binary NodeAnnotation |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> NodeAnnotation -> IO () # put :: BinHandle -> NodeAnnotation -> IO (Bin NodeAnnotation) # get :: BinHandle -> IO NodeAnnotation #
Outputable NodeAnnotation |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: NodeAnnotation -> SDoc #
Eq NodeAnnotation |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: NodeAnnotation -> NodeAnnotation -> Bool # (/=) :: NodeAnnotation -> NodeAnnotation -> Bool #
Ord NodeAnnotation |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

compare :: NodeAnnotation -> NodeAnnotation -> Ordering #

(<) :: NodeAnnotation -> NodeAnnotation -> Bool #

(<=) :: NodeAnnotation -> NodeAnnotation -> Bool #

(>) :: NodeAnnotation -> NodeAnnotation -> Bool #

(>=) :: NodeAnnotation -> NodeAnnotation -> Bool #

max :: NodeAnnotation -> NodeAnnotation -> NodeAnnotation #

min :: NodeAnnotation -> NodeAnnotation -> NodeAnnotation #

data NodeOrigin #

Source of node info

Constructors

SourceInfo |
GeneratedInfo |

#### Instances

Instances details

Binary NodeOrigin |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> NodeOrigin -> IO () # put :: BinHandle -> NodeOrigin -> IO (Bin NodeOrigin) # get :: BinHandle -> IO NodeOrigin #
Outputable NodeOrigin |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: NodeOrigin -> SDoc #
Enum NodeOrigin |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

succ :: NodeOrigin -> NodeOrigin #

pred :: NodeOrigin -> NodeOrigin #

toEnum :: Int -> NodeOrigin #

fromEnum :: NodeOrigin -> Int #

enumFrom :: NodeOrigin -> [NodeOrigin] #

enumFromThen :: NodeOrigin -> NodeOrigin -> [NodeOrigin] #

enumFromTo :: NodeOrigin -> NodeOrigin -> [NodeOrigin] #

enumFromThenTo :: NodeOrigin -> NodeOrigin -> NodeOrigin -> [NodeOrigin] #

Eq NodeOrigin |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: NodeOrigin -> NodeOrigin -> Bool # (/=) :: NodeOrigin -> NodeOrigin -> Bool #
Ord NodeOrigin |
Instance details Defined in GHC.Iface.Ext.Types Methods compare :: NodeOrigin -> NodeOrigin -> Ordering # (<) :: NodeOrigin -> NodeOrigin -> Bool # (<=) :: NodeOrigin -> NodeOrigin -> Bool # (>) :: NodeOrigin -> NodeOrigin -> Bool # (>=) :: NodeOrigin -> NodeOrigin -> Bool # max :: NodeOrigin -> NodeOrigin -> NodeOrigin # min :: NodeOrigin -> NodeOrigin -> NodeOrigin #

newtype SourcedNodeInfo a #

NodeInfos grouped by source

Constructors

SourcedNodeInfo |

Fields

- getSourcedNodeInfo :: Map NodeOrigin (NodeInfo a)

#### Instances

Instances details

Functor SourcedNodeInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> SourcedNodeInfo a -> SourcedNodeInfo b # (<$) :: a -> SourcedNodeInfo b -> SourcedNodeInfo a #
Foldable SourcedNodeInfo |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => SourcedNodeInfo m -> m #

foldMap :: Monoid m => (a -> m) -> SourcedNodeInfo a -> m #

foldMap' :: Monoid m => (a -> m) -> SourcedNodeInfo a -> m #

foldr :: (a -> b -> b) -> b -> SourcedNodeInfo a -> b #

foldr' :: (a -> b -> b) -> b -> SourcedNodeInfo a -> b #

foldl :: (b -> a -> b) -> b -> SourcedNodeInfo a -> b #

foldl' :: (b -> a -> b) -> b -> SourcedNodeInfo a -> b #

foldr1 :: (a -> a -> a) -> SourcedNodeInfo a -> a #

foldl1 :: (a -> a -> a) -> SourcedNodeInfo a -> a #

toList :: SourcedNodeInfo a -> [a] #

null :: SourcedNodeInfo a -> Bool #

length :: SourcedNodeInfo a -> Int #

elem :: Eq a => a -> SourcedNodeInfo a -> Bool #

maximum :: Ord a => SourcedNodeInfo a -> a #

minimum :: Ord a => SourcedNodeInfo a -> a #

sum :: Num a => SourcedNodeInfo a -> a #

product :: Num a => SourcedNodeInfo a -> a #

Traversable SourcedNodeInfo |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> SourcedNodeInfo a -> f (SourcedNodeInfo b) # sequenceA :: Applicative f => SourcedNodeInfo (f a) -> f (SourcedNodeInfo a) # mapM :: Monad m => (a -> m b) -> SourcedNodeInfo a -> m (SourcedNodeInfo b) # sequence :: Monad m => SourcedNodeInfo (m a) -> m (SourcedNodeInfo a) #
Binary (SourcedNodeInfo TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> SourcedNodeInfo TypeIndex -> IO () # put :: BinHandle -> SourcedNodeInfo TypeIndex -> IO (Bin (SourcedNodeInfo TypeIndex)) # get :: BinHandle -> IO (SourcedNodeInfo TypeIndex) #
Outputable a => Outputable (SourcedNodeInfo a) |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: SourcedNodeInfo a -> SDoc #

newtype HieASTs a #

Mapping from filepaths to the corresponding AST

Constructors

HieASTs |

Fields

- getAsts :: Map HiePath (HieAST a)

#### Instances

Instances details

Functor HieASTs |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> HieASTs a -> HieASTs b # (<$) :: a -> HieASTs b -> HieASTs a #
Foldable HieASTs |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieASTs m -> m #

foldMap :: Monoid m => (a -> m) -> HieASTs a -> m #

foldMap' :: Monoid m => (a -> m) -> HieASTs a -> m #

foldr :: (a -> b -> b) -> b -> HieASTs a -> b #

foldr' :: (a -> b -> b) -> b -> HieASTs a -> b #

foldl :: (b -> a -> b) -> b -> HieASTs a -> b #

foldl' :: (b -> a -> b) -> b -> HieASTs a -> b #

foldr1 :: (a -> a -> a) -> HieASTs a -> a #

foldl1 :: (a -> a -> a) -> HieASTs a -> a #

toList :: HieASTs a -> [a] #

null :: HieASTs a -> Bool #

length :: HieASTs a -> Int #

elem :: Eq a => a -> HieASTs a -> Bool #

maximum :: Ord a => HieASTs a -> a #

minimum :: Ord a => HieASTs a -> a #

sum :: Num a => HieASTs a -> a #

product :: Num a => HieASTs a -> a #

Traversable HieASTs |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> HieASTs a -> f (HieASTs b) # sequenceA :: Applicative f => HieASTs (f a) -> f (HieASTs a) # mapM :: Monad m => (a -> m b) -> HieASTs a -> m (HieASTs b) # sequence :: Monad m => HieASTs (m a) -> m (HieASTs a) #
Binary (HieASTs TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieASTs TypeIndex -> IO () # put :: BinHandle -> HieASTs TypeIndex -> IO (Bin (HieASTs TypeIndex)) # get :: BinHandle -> IO (HieASTs TypeIndex) #
Outputable a => Outputable (HieASTs a) |
Instance details Defined in GHC.Iface.Ext.Types Methods ppr :: HieASTs a -> SDoc #

type HiePath = LexicalFastString #

pattern HiePath :: FastString -> HiePath #

newtype HieArgs a #

A list of type arguments along with their respective visibilities (ie. is this an argument that would return `True` for `isVisibleForAllTyFlag`?).

Constructors

HieArgs [(Bool, a)] |

#### Instances

Instances details

Functor HieArgs |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> HieArgs a -> HieArgs b # (<$) :: a -> HieArgs b -> HieArgs a #
Foldable HieArgs |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieArgs m -> m #

foldMap :: Monoid m => (a -> m) -> HieArgs a -> m #

foldMap' :: Monoid m => (a -> m) -> HieArgs a -> m #

foldr :: (a -> b -> b) -> b -> HieArgs a -> b #

foldr' :: (a -> b -> b) -> b -> HieArgs a -> b #

foldl :: (b -> a -> b) -> b -> HieArgs a -> b #

foldl' :: (b -> a -> b) -> b -> HieArgs a -> b #

foldr1 :: (a -> a -> a) -> HieArgs a -> a #

foldl1 :: (a -> a -> a) -> HieArgs a -> a #

toList :: HieArgs a -> [a] #

null :: HieArgs a -> Bool #

length :: HieArgs a -> Int #

elem :: Eq a => a -> HieArgs a -> Bool #

maximum :: Ord a => HieArgs a -> a #

minimum :: Ord a => HieArgs a -> a #

sum :: Num a => HieArgs a -> a #

product :: Num a => HieArgs a -> a #

Traversable HieArgs |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> HieArgs a -> f (HieArgs b) # sequenceA :: Applicative f => HieArgs (f a) -> f (HieArgs a) # mapM :: Monad m => (a -> m b) -> HieArgs a -> m (HieArgs b) # sequence :: Monad m => HieArgs (m a) -> m (HieArgs a) #
Binary (HieArgs TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieArgs TypeIndex -> IO () # put :: BinHandle -> HieArgs TypeIndex -> IO (Bin (HieArgs TypeIndex)) # get :: BinHandle -> IO (HieArgs TypeIndex) #
Eq a => Eq (HieArgs a) |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: HieArgs a -> HieArgs a -> Bool # (/=) :: HieArgs a -> HieArgs a -> Bool #

newtype HieTypeFix #

Roughly isomorphic to the original core `Type`.

Constructors

Roll (HieType HieTypeFix) |

#### Instances

Instances details

Eq HieTypeFix |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: HieTypeFix -> HieTypeFix -> Bool # (/=) :: HieTypeFix -> HieTypeFix -> Bool #

type HieTypeFlat = HieType TypeIndex #

data HieType a #

A flattened version of `Type`.

See Note [Efficient serialization of redundant type info]

Constructors

HTyVarTy Name |
HAppTy a (HieArgs a) |
HTyConApp IfaceTyCon (HieArgs a) |
HForAllTy ((Name, a), ForAllTyFlag) a |
HFunTy a a a |
HQualTy a a | type with constraint: `t1 => t2` (see `IfaceDFunTy`)
HLitTy IfaceTyLit |
HCastTy a |
HCoercionTy |

#### Instances

Instances details

Functor HieType |
Instance details Defined in GHC.Iface.Ext.Types Methods fmap :: (a -> b) -> HieType a -> HieType b # (<$) :: a -> HieType b -> HieType a #
Foldable HieType |

Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieType m -> m #

foldMap :: Monoid m => (a -> m) -> HieType a -> m #

foldMap' :: Monoid m => (a -> m) -> HieType a -> m #

foldr :: (a -> b -> b) -> b -> HieType a -> b #

foldr' :: (a -> b -> b) -> b -> HieType a -> b #

foldl :: (b -> a -> b) -> b -> HieType a -> b #

foldl' :: (b -> a -> b) -> b -> HieType a -> b #

foldr1 :: (a -> a -> a) -> HieType a -> a #

foldl1 :: (a -> a -> a) -> HieType a -> a #

toList :: HieType a -> [a] #

null :: HieType a -> Bool #

length :: HieType a -> Int #

elem :: Eq a => a -> HieType a -> Bool #

maximum :: Ord a => HieType a -> a #

minimum :: Ord a => HieType a -> a #

sum :: Num a => HieType a -> a #

product :: Num a => HieType a -> a #

Traversable HieType |
Instance details Defined in GHC.Iface.Ext.Types Methods traverse :: Applicative f => (a -> f b) -> HieType a -> f (HieType b) # sequenceA :: Applicative f => HieType (f a) -> f (HieType a) # mapM :: Monad m => (a -> m b) -> HieType a -> m (HieType b) # sequence :: Monad m => HieType (m a) -> m (HieType a) #
Binary (HieType TypeIndex) |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieType TypeIndex -> IO () # put :: BinHandle -> HieType TypeIndex -> IO (Bin (HieType TypeIndex)) # get :: BinHandle -> IO (HieType TypeIndex) #
Eq a => Eq (HieType a) |
Instance details Defined in GHC.Iface.Ext.Types Methods (==) :: HieType a -> HieType a -> Bool # (/=) :: HieType a -> HieType a -> Bool #

type TypeIndex = Int #

data HieFile #

GHC builds up a wealth of information about Haskell source as it compiles it. `.hie` files are a way of persisting some of this information to disk so that external tools that need to work with haskell source don't need to parse, typecheck, and rename all over again. These files contain:

- a simplified AST

  - nodes are annotated with source positions and types
  - identifiers are annotated with scope information
- the raw bytes of the initial Haskell source

Besides saving compilation cycles, `.hie` files also offer a more stable interface than the GHC API.

Constructors

HieFile |

Fields

- hie_hs_file :: FilePath

  Initial Haskell source file path

- hie_module :: Module

  The module this HIE file is for

- hie_types :: Array TypeIndex HieTypeFlat

  Types referenced in the `hie_asts`.

  See Note [Efficient serialization of redundant type info]

- hie_asts :: HieASTs TypeIndex

  Type-annotated abstract syntax trees

- hie_exports :: [AvailInfo]

  The names that this module exports

- hie_hs_src :: ByteString

  Raw bytes of the initial Haskell source

#### Instances

Instances details

NFData HieFile # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: HieFile -> () #
Binary HieFile |
Instance details Defined in GHC.Iface.Ext.Types Methods put_ :: BinHandle -> HieFile -> IO () # put :: BinHandle -> HieFile -> IO (Bin HieFile) # get :: BinHandle -> IO HieFile #
Show HieFile # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> HieFile -> ShowS # show :: HieFile -> String # showList :: [HieFile] -> ShowS #

type Span = RealSrcSpan #

hieVersion :: Integer #

Current version of `.hie` files

pprNodeIdents :: Outputable a => NodeIdentifiers a -> SDoc #

pprIdentifier :: Identifier -> SDoc #

pprBindSpan :: Maybe Span -> SDoc #

hieNameOcc :: HieName -> OccName #

toHieName :: Name -> HieName #

module Compat.HieUtils

# Compat modules

module Development.IDE.GHC.Compat.Core

module Development.IDE.GHC.Compat.Env

module Development.IDE.GHC.Compat.Iface

module Development.IDE.GHC.Compat.Logger

module Development.IDE.GHC.Compat.Outputable

module Development.IDE.GHC.Compat.Parser

module Development.IDE.GHC.Compat.Plugins

module Development.IDE.GHC.Compat.Units

# Extras that rely on compat modules

# SysTools

data Option #

When invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform.

Constructors

FileOption String String |
Option String |

#### Instances

Instances details

Eq Option |
Instance details Defined in GHC.Utils.CliOption Methods (==) :: Option -> Option -> Bool # (/=) :: Option -> Option -> Bool #

runUnlit :: Logger -> DynFlags -> [Option] -> IO () #

runPp :: Logger -> DynFlags -> [Option] -> IO () #

# Recompilation avoidance

hscCompileCoreExprHook :: Hooks -> Maybe (HscEnv -> SrcSpan -> CoreExpr -> IO (ForeignHValue, [Linkable], PkgsLoaded)) #

type CoreExpr = Expr CoreBndr #

Expressions where binders are `CoreBndr`s

simplifyExpr :: DynFlags -> HscEnv -> CoreExpr -> IO CoreExpr #

tidyExpr :: TidyEnv -> CoreExpr -> CoreExpr #

emptyTidyEnv :: TidyEnv #

corePrepExpr :: DynFlags -> HscEnv -> CoreExpr -> IO CoreExpr #

corePrepPgm :: Logger -> CorePrepConfig -> CorePrepPgmConfig -> Module -> ModLocation -> CoreProgram -> [TyCon] -> IO CoreProgram #

lintInteractiveExpr #

Arguments

:: SDoc | The source of the linted expression
-> HscEnv |
-> CoreExpr |
-> IO () |

icInteractiveModule :: InteractiveContext -> Module #

type HomePackageTable = DModuleNameEnv HomeModInfo #

Helps us find information about modules in the home package

lookupHpt :: HomePackageTable -> ModuleName -> Maybe HomeModInfo #

loadModulesHome :: [HomeModInfo] -> HscEnv -> HscEnv #

Load modules, quickly. Input doesn't need to be desugared. A module must be loaded before dependent modules can be typechecked. This variant of loadModuleHome will *never* cause recompilation, it just modifies the session. The order modules are loaded is important when there are hs-boot files. In particular you should make sure to load the .hs version of a file after the .hs-boot version.

bcoFreeNames :: UnlinkedBCO -> UniqDSet Name #

Finds external references. Remember to remove the names defined by this group of BCOs themselves

type ModIfaceAnnotation = Annotation #

pattern Annotation :: CoreAnnTarget -> AnnPayload -> Annotation #

data AnnTarget name #

An annotation target

Constructors

ModuleTarget Module | We are annotating a particular module

#### Instances

Instances details

Functor AnnTarget |
Instance details Defined in GHC.Types.Annotations Methods fmap :: (a -> b) -> AnnTarget a -> AnnTarget b # (<$) :: a -> AnnTarget b -> AnnTarget a #
Binary name => Binary (AnnTarget name) |
Instance details Defined in GHC.Types.Annotations Methods put_ :: BinHandle -> AnnTarget name -> IO () # put :: BinHandle -> AnnTarget name -> IO (Bin (AnnTarget name)) # get :: BinHandle -> IO (AnnTarget name) #
Outputable name => Outputable (AnnTarget name) |
Instance details Defined in GHC.Types.Annotations Methods ppr :: AnnTarget name -> SDoc #

extendAnnEnvList :: AnnEnv -> [Annotation] -> AnnEnv #

Add the given annotation to the environment.

module GHC.Types.Unique.DSet

module GHC.Types.Unique.Set

module GHC.Types.Unique.DFM

getDependentMods :: ModIface -> [ModuleName] #

flattenBinds :: [Bind b] -> [(b, Expr b)] #

Collapse all the bindings in the supplied groups into a single list of lhs/rhs pairs suitable for binding in a `Rec` binding group

mkRnEnv2 :: InScopeSet -> RnEnv2 #

emptyInScopeSet :: InScopeSet #

data Unfolding #

Records the unfolding of an identifier, which is approximately the form the identifier would have if we substituted its definition in for the identifier. This type should be treated as abstract everywhere except in GHC.Core.Unfold

Constructors

NoUnfolding | We have no information about the unfolding.
BootUnfolding | We have no information about the unfolding, because this `Id` came from an `hi-boot` file. See Note [Inlining and hs-boot files] in GHC.CoreToIface for what this is used for.

OtherCon [AltCon]

It ain't one of these constructors. `OtherCon xs` also indicates that something has been evaluated and hence there's no point in re-evaluating it. `OtherCon []` is used even for non-data-type values to indicated evaluated-ness. Notably:

    data C = C !(Int -> Int)
    case x of { C f -> ... }

Here, `f` gets an `OtherCon []` unfolding.

DFunUnfolding |

Fields

- df_bndrs :: [Var]
- df_con :: DataCon
- df_args :: [CoreExpr]

CoreUnfolding

An unfolding with redundant cached information. Parameters:

uf_tmpl: Template used to perform unfolding; NB: Occurrence info is guaranteed correct: see Note [OccInfo in unfoldings and rules]

uf_is_top: Is this a top level binding?

uf_is_value: `exprIsHNF` template (cached); it is ok to discard a `seq` on this variable

uf_is_work_free: Does this waste only a little work if we expand it inside an inlining? Basically this is a cached version of `exprIsWorkFree`

uf_guidance: Tells us about the size of the unfolding template

Fields

- uf_tmpl :: CoreExpr
- uf_src :: UnfoldingSource
- uf_is_top :: Bool
- uf_cache :: UnfoldingCache
- uf_guidance :: UnfoldingGuidance

noUnfolding :: Unfolding #

There is no known `Unfolding`

loadExpr :: Interp -> HscEnv -> SrcSpan -> UnlinkedBCO -> IO ForeignHValue #

Load a single expression, including first loading packages and modules that this expression depends on.

Raises an IO exception (`ProgramError`) if it can't find a compiled version of the dependents to load.

byteCodeGen :: HscEnv -> Module -> [CgStgTopBinding] -> [TyCon] -> Maybe ModBreaks -> IO CompiledByteCode #

bc_bcos :: CompiledByteCode -> [UnlinkedBCO] #

loadDecls :: Interp -> HscEnv -> SrcSpan -> CompiledByteCode -> IO ([(Name, ForeignHValue)], [Linkable], PkgsLoaded) #

hscInterp :: HscEnv -> Interp #

Retrieve the target code interpreter

Fails if no target code interpreter is available

expectJust :: HasCallStack => String -> Maybe a -> a #

extract_cons :: DataDefnCons a -> [a] #

recDotDot :: forall (p :: Pass) arg. HsRecFields (GhcPass p) arg -> Maybe Int #

data Dependencies #

Dependency information about ALL modules and packages below this one in the import hierarchy. This is the serialisable version of `ImportAvails`.

Invariant: the dependencies of a module `M` never includes `M`.

Invariant: none of the lists contain duplicates.

Invariant: lists are ordered canonically (e.g. using stableModuleCmp)

See Note [Transitive Information in Dependencies]

#### Instances

Instances details

Binary Dependencies |
Instance details Defined in GHC.Unit.Module.Deps Methods put_ :: BinHandle -> Dependencies -> IO () # put :: BinHandle -> Dependencies -> IO (Bin Dependencies) # get :: BinHandle -> IO Dependencies #
Eq Dependencies |
Instance details Defined in GHC.Unit.Module.Deps Methods (==) :: Dependencies -> Dependencies -> Bool # (/=) :: Dependencies -> Dependencies -> Bool #

type NameCacheUpdater = NameCache #

data XModulePs #

Haskell Module extension point: GHC specific

Constructors

XModulePs |

Fields

- hsmodAnn :: EpAnn AnnsModule
- hsmodLayout :: EpLayout

  Layout info for the module. For incomplete modules (e.g. the output of parseHeader), it is EpNoLayout.

- hsmodDeprecMessage :: Maybe (LWarningTxt GhcPs)

  reason/explanation for warning/deprecation of this module

  - `AnnKeywordId`s : `AnnOpen` ,`AnnClose`
- hsmodHaddockModHeader :: Maybe (LHsDoc GhcPs)

  Haddock module info and description, unparsed

  - `AnnKeywordId`s : `AnnOpen` ,`AnnClose`

#### Instances

Instances details

Data XModulePs |

Instance details

Defined in GHC.Hs

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> XModulePs -> c XModulePs #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c XModulePs #

toConstr :: XModulePs -> Constr #

dataTypeOf :: XModulePs -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c XModulePs) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c XModulePs) #

gmapT :: (forall b. Data b => b -> b) -> XModulePs -> XModulePs #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> XModulePs -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> XModulePs -> r #

gmapQ :: (forall d. Data d => d -> u) -> XModulePs -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> XModulePs -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> XModulePs -> m XModulePs #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> XModulePs -> m XModulePs #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> XModulePs -> m XModulePs #

tcInitTidyEnv :: ZonkM TidyEnv #