ghc-8.0.0.20160111: The GHC API

Safe HaskellNone
LanguageHaskell2010

Module

Contents

Synopsis

The ModuleName type

data ModuleName

A ModuleName is essentially a simple string, e.g. Data.List.

Instances

Eq ModuleName 
Data ModuleName 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleName -> c ModuleName Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleName Source

toConstr :: ModuleName -> Constr Source

dataTypeOf :: ModuleName -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c ModuleName) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleName) Source

gmapT :: (forall b. Data b => b -> b) -> ModuleName -> ModuleName Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleName -> r Source

gmapQ :: (forall d. Data d => d -> u) -> ModuleName -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleName -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleName -> m ModuleName Source

Ord ModuleName 
BinaryStringRep ModuleName 
Outputable ModuleName 
Uniquable ModuleName 
Binary ModuleName 

moduleNameSlashes :: ModuleName -> String

Returns the string version of the module name, with dots replaced by slashes.

moduleNameColons :: ModuleName -> String

Returns the string version of the module name, with dots replaced by underscores.

moduleStableString :: Module -> String

Get a string representation of a Module that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal"

stableModuleNameCmp :: ModuleName -> ModuleName -> Ordering

Compares module names lexically, rather than by their Uniques

The UnitId type

data UnitId

A string which uniquely identifies a package. For wired-in packages, it is just the package name, but for user compiled packages, it is a hash. ToDo: when the key is a hash, we can do more clever things than store the hex representation and hash-cons those strings.

Instances

Eq UnitId 

Methods

(==) :: UnitId -> UnitId -> Bool

(/=) :: UnitId -> UnitId -> Bool

Data UnitId 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UnitId -> c UnitId Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UnitId Source

toConstr :: UnitId -> Constr Source

dataTypeOf :: UnitId -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c UnitId) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UnitId) Source

gmapT :: (forall b. Data b => b -> b) -> UnitId -> UnitId Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UnitId -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UnitId -> r Source

gmapQ :: (forall d. Data d => d -> u) -> UnitId -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> UnitId -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> UnitId -> m UnitId Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UnitId -> m UnitId Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UnitId -> m UnitId Source

Ord UnitId 
BinaryStringRep UnitId 
Outputable UnitId 

Methods

ppr :: UnitId -> SDoc

pprPrec :: Rational -> UnitId -> SDoc

Uniquable UnitId 

Methods

getUnique :: UnitId -> Unique

Binary UnitId 

Methods

put_ :: BinHandle -> UnitId -> IO ()

put :: BinHandle -> UnitId -> IO (Bin UnitId)

get :: BinHandle -> IO UnitId

stableUnitIdCmp :: UnitId -> UnitId -> Ordering

Compares package ids lexically, rather than by their Uniques

Wired-in UnitIds

 

mainUnitId :: UnitId

This is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program.

holeUnitId :: UnitId

This is a fake package id used to provide identities to any un-implemented signatures. The set of hole identities is global over an entire compilation.

The Module type

data Module

A Module is a pair of a UnitId and a ModuleName.

Constructors

Module 

Instances

Eq Module 

Methods

(==) :: Module -> Module -> Bool

(/=) :: Module -> Module -> Bool

Data Module 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Module -> c Module Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Module Source

toConstr :: Module -> Constr Source

dataTypeOf :: Module -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c Module) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Module) Source

gmapT :: (forall b. Data b => b -> b) -> Module -> Module Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Module -> r Source

gmapQ :: (forall d. Data d => d -> u) -> Module -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> Module -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Module -> m Module Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Module -> m Module Source

Ord Module 
Outputable Module 

Methods

ppr :: Module -> SDoc

pprPrec :: Rational -> Module -> SDoc

Uniquable Module 

Methods

getUnique :: Module -> Unique

Binary Module 

Methods

put_ :: BinHandle -> Module -> IO ()

put :: BinHandle -> Module -> IO (Bin Module)

get :: BinHandle -> IO Module

stableModuleCmp :: Module -> Module -> Ordering

This gives a stable ordering, as opposed to the Ord instance which gives an ordering based on the Uniques of the components, which may not be stable from run to run of the compiler.

class HasModule m where

Minimal complete definition

getModule

Methods

getModule :: m Module

Instances

class ContainsModule t where

Minimal complete definition

extractModule

Methods

extractModule :: t -> Module

The ModuleLocation type

data ModLocation

Where a module lives on the file system: the actual locations of the .hs, .hi and .o files, if we have them

addBootSuffix :: FilePath -> FilePath

Add the -boot suffix to .hs, .hi and .o files

addBootSuffix_maybe :: Bool -> FilePath -> FilePath

Add the -boot suffix if the Bool argument is True

addBootSuffixLocn :: ModLocation -> ModLocation

Add the -boot suffix to all file paths associated with the module

Module mappings

data ModuleEnv elt

A map keyed off of Modules

extendModuleEnvList_C :: (a -> a -> a) -> ModuleEnv a -> [(Module, a)] -> ModuleEnv a

plusModuleEnv_C :: (a -> a -> a) -> ModuleEnv a -> ModuleEnv a -> ModuleEnv a

mapModuleEnv :: (a -> b) -> ModuleEnv a -> ModuleEnv b

foldModuleEnv :: (a -> b -> b) -> b -> ModuleEnv a -> b

extendModuleEnvWith :: (a -> a -> a) -> ModuleEnv a -> Module -> a -> ModuleEnv a

ModuleName mappings

type ModuleNameEnv elt = UniqFM elt

A map keyed off of ModuleNames (actually, their Uniques)

Sets of Modules

type ModuleSet = Map Module ()

A set of Modules