module GHC.Types.Target
( Target(..)
, TargetId(..)
, InputFileBuffer
, pprTarget
, pprTargetId
)
where
import GHC.Prelude
import GHC.Driver.Phases ( Phase )
import GHC.Unit
import GHC.Data.StringBuffer ( StringBuffer )
import GHC.Utils.Outputable
import Data.Time
data Target
= Target {
Target -> TargetId
targetId :: TargetId,
Target -> Bool
targetAllowObjCode :: Bool,
Target -> Maybe (InputFileBuffer, UTCTime)
targetContents :: Maybe (InputFileBuffer, UTCTime)
}
data TargetId
= TargetModule ModuleName
| TargetFile FilePath (Maybe Phase)
deriving TargetId -> TargetId -> Bool
(TargetId -> TargetId -> Bool)
-> (TargetId -> TargetId -> Bool) -> Eq TargetId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TargetId -> TargetId -> Bool
$c/= :: TargetId -> TargetId -> Bool
== :: TargetId -> TargetId -> Bool
$c== :: TargetId -> TargetId -> Bool
Eq
type InputFileBuffer = StringBuffer
pprTarget :: Target -> SDoc
pprTarget :: Target -> SDoc
pprTarget (Target TargetId
id Bool
obj Maybe (InputFileBuffer, UTCTime)
_) =
(if Bool
obj then SDoc
empty else Char -> SDoc
char Char
'*') SDoc -> SDoc -> SDoc
<> TargetId -> SDoc
pprTargetId TargetId
id
instance Outputable Target where
ppr :: Target -> SDoc
ppr = Target -> SDoc
pprTarget
pprTargetId :: TargetId -> SDoc
pprTargetId :: TargetId -> SDoc
pprTargetId (TargetModule ModuleName
m) = ModuleName -> SDoc
forall a. Outputable a => a -> SDoc
ppr ModuleName
m
pprTargetId (TargetFile FilePath
f Maybe Phase
_) = FilePath -> SDoc
text FilePath
f
instance Outputable TargetId where
ppr :: TargetId -> SDoc
ppr = TargetId -> SDoc
pprTargetId