{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
module Distribution.Types.ComponentLocalBuildInfo (
ComponentLocalBuildInfo(..),
componentIsIndefinite,
maybeComponentInstantiatedWith,
) where
import Prelude ()
import Distribution.Compat.Prelude
import Distribution.ModuleName
import Distribution.Backpack
import Distribution.Compat.Graph
import Distribution.Types.ComponentId
import Distribution.Types.MungedPackageId
import Distribution.Types.UnitId
import Distribution.Types.ComponentName
import Distribution.Types.MungedPackageName
import Distribution.Types.ModuleRenaming
import qualified Distribution.InstalledPackageInfo as Installed
data ComponentLocalBuildInfo
= LibComponentLocalBuildInfo {
ComponentLocalBuildInfo -> ComponentName
componentLocalName :: ComponentName,
ComponentLocalBuildInfo -> ComponentId
componentComponentId :: ComponentId,
ComponentLocalBuildInfo -> UnitId
componentUnitId :: UnitId,
ComponentLocalBuildInfo -> Bool
componentIsIndefinite_ :: Bool,
ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]
componentInstantiatedWith :: [(ModuleName, OpenModule)],
ComponentLocalBuildInfo -> [(UnitId, MungedPackageId)]
componentPackageDeps :: [(UnitId, MungedPackageId)],
ComponentLocalBuildInfo -> [(OpenUnitId, ModuleRenaming)]
componentIncludes :: [(OpenUnitId, ModuleRenaming)],
ComponentLocalBuildInfo -> [UnitId]
componentExeDeps :: [UnitId],
ComponentLocalBuildInfo -> [UnitId]
componentInternalDeps :: [UnitId],
ComponentLocalBuildInfo -> String
componentCompatPackageKey :: String,
ComponentLocalBuildInfo -> MungedPackageName
componentCompatPackageName :: MungedPackageName,
ComponentLocalBuildInfo -> [ExposedModule]
componentExposedModules :: [Installed.ExposedModule],
ComponentLocalBuildInfo -> Bool
componentIsPublic :: Bool
}
| FLibComponentLocalBuildInfo {
componentLocalName :: ComponentName,
componentComponentId :: ComponentId,
componentUnitId :: UnitId,
componentPackageDeps :: [(UnitId, MungedPackageId)],
componentIncludes :: [(OpenUnitId, ModuleRenaming)],
componentExeDeps :: [UnitId],
componentInternalDeps :: [UnitId]
}
| ExeComponentLocalBuildInfo {
componentLocalName :: ComponentName,
componentComponentId :: ComponentId,
componentUnitId :: UnitId,
componentPackageDeps :: [(UnitId, MungedPackageId)],
componentIncludes :: [(OpenUnitId, ModuleRenaming)],
componentExeDeps :: [UnitId],
componentInternalDeps :: [UnitId]
}
| TestComponentLocalBuildInfo {
componentLocalName :: ComponentName,
componentComponentId :: ComponentId,
componentUnitId :: UnitId,
componentPackageDeps :: [(UnitId, MungedPackageId)],
componentIncludes :: [(OpenUnitId, ModuleRenaming)],
componentExeDeps :: [UnitId],
componentInternalDeps :: [UnitId]
}
| BenchComponentLocalBuildInfo {
componentLocalName :: ComponentName,
componentComponentId :: ComponentId,
componentUnitId :: UnitId,
componentPackageDeps :: [(UnitId, MungedPackageId)],
componentIncludes :: [(OpenUnitId, ModuleRenaming)],
componentExeDeps :: [UnitId],
componentInternalDeps :: [UnitId]
}
deriving ((forall x.
ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x)
-> (forall x.
Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo)
-> Generic ComponentLocalBuildInfo
forall x. Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo
forall x. ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x
from :: forall x. ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x
$cto :: forall x. Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo
to :: forall x. Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo
Generic, ReadPrec [ComponentLocalBuildInfo]
ReadPrec ComponentLocalBuildInfo
Int -> ReadS ComponentLocalBuildInfo
ReadS [ComponentLocalBuildInfo]
(Int -> ReadS ComponentLocalBuildInfo)
-> ReadS [ComponentLocalBuildInfo]
-> ReadPrec ComponentLocalBuildInfo
-> ReadPrec [ComponentLocalBuildInfo]
-> Read ComponentLocalBuildInfo
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS ComponentLocalBuildInfo
readsPrec :: Int -> ReadS ComponentLocalBuildInfo
$creadList :: ReadS [ComponentLocalBuildInfo]
readList :: ReadS [ComponentLocalBuildInfo]
$creadPrec :: ReadPrec ComponentLocalBuildInfo
readPrec :: ReadPrec ComponentLocalBuildInfo
$creadListPrec :: ReadPrec [ComponentLocalBuildInfo]
readListPrec :: ReadPrec [ComponentLocalBuildInfo]
Read, Int -> ComponentLocalBuildInfo -> ShowS
[ComponentLocalBuildInfo] -> ShowS
ComponentLocalBuildInfo -> String
(Int -> ComponentLocalBuildInfo -> ShowS)
-> (ComponentLocalBuildInfo -> String)
-> ([ComponentLocalBuildInfo] -> ShowS)
-> Show ComponentLocalBuildInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ComponentLocalBuildInfo -> ShowS
showsPrec :: Int -> ComponentLocalBuildInfo -> ShowS
$cshow :: ComponentLocalBuildInfo -> String
show :: ComponentLocalBuildInfo -> String
$cshowList :: [ComponentLocalBuildInfo] -> ShowS
showList :: [ComponentLocalBuildInfo] -> ShowS
Show, Typeable)
instance Binary ComponentLocalBuildInfo
instance Structured ComponentLocalBuildInfo
instance IsNode ComponentLocalBuildInfo where
type Key ComponentLocalBuildInfo = UnitId
nodeKey :: ComponentLocalBuildInfo -> Key ComponentLocalBuildInfo
nodeKey = ComponentLocalBuildInfo -> Key ComponentLocalBuildInfo
ComponentLocalBuildInfo -> UnitId
componentUnitId
nodeNeighbors :: ComponentLocalBuildInfo -> [Key ComponentLocalBuildInfo]
nodeNeighbors = ComponentLocalBuildInfo -> [Key ComponentLocalBuildInfo]
ComponentLocalBuildInfo -> [UnitId]
componentInternalDeps
componentIsIndefinite :: ComponentLocalBuildInfo -> Bool
componentIsIndefinite :: ComponentLocalBuildInfo -> Bool
componentIsIndefinite LibComponentLocalBuildInfo{ componentIsIndefinite_ :: ComponentLocalBuildInfo -> Bool
componentIsIndefinite_ = Bool
b } = Bool
b
componentIsIndefinite ComponentLocalBuildInfo
_ = Bool
False
maybeComponentInstantiatedWith :: ComponentLocalBuildInfo -> Maybe [(ModuleName, OpenModule)]
maybeComponentInstantiatedWith :: ComponentLocalBuildInfo -> Maybe [(ModuleName, OpenModule)]
maybeComponentInstantiatedWith
LibComponentLocalBuildInfo { componentInstantiatedWith :: ComponentLocalBuildInfo -> [(ModuleName, OpenModule)]
componentInstantiatedWith = [(ModuleName, OpenModule)]
insts } = [(ModuleName, OpenModule)] -> Maybe [(ModuleName, OpenModule)]
forall a. a -> Maybe a
Just [(ModuleName, OpenModule)]
insts
maybeComponentInstantiatedWith ComponentLocalBuildInfo
_ = Maybe [(ModuleName, OpenModule)]
forall a. Maybe a
Nothing