uhc-util-0.1.7.0: UHC utilities

Safe HaskellNone
LanguageHaskell98

UHC.Util.CompileRun3

Description

Combinators for a compile run. 20150807: experimental version, to provide with a forwarding mechanism for renamed compile units. As of now does not work with UHC, suspect a non intented name capture

Synopsis

Documentation

class (CompileModName nm, CompileUnitState state, CompileUnit unit nm loc state, CompileRunError err pos, CompileRunStateInfo info nm pos, MonadState (CompileRun nm unit info err) m, MonadIO m, Monad m) => CompileRunner state nm pos loc unit info err m Source #

Class alias for compile functionality

data CompileRun nm unit info err Source #

Constructors

CompileRun 

Fields

crCUCache :: forall cat nm unit info err. ArrowApply cat => Lens cat (CompileRun nm unit info err) (Map nm unit) Source #

crCompileOrder :: forall cat nm unit info err. ArrowApply cat => Lens cat (CompileRun nm unit info err) [[nm]] Source #

crTopModNm :: forall cat nm unit info err. ArrowApply cat => Lens cat (CompileRun nm unit info err) nm Source #

crState :: forall cat nm unit info err a. ArrowApply cat => Lens cat (CompileRun nm unit info err -> CompileRun nm unit info a) (CompileRunState err -> CompileRunState a) Source #

crStateInfo :: forall cat nm unit info err a. ArrowApply cat => Lens cat (CompileRun nm unit info err -> CompileRun nm unit a err) (info -> a) Source #

crNmForward :: forall cat nm unit info err. ArrowApply cat => Lens cat (CompileRun nm unit info err) (Map nm nm) Source #

type CompilePhase n u i e a = CompilePhaseT n u i e Identity a Source #

data CompilePhaseT n u i e m a Source #

CompileRun as state in specific StateT variant with non standard >>= newtype CompilePhaseT n u i e m a = CompilePhaseT {runCompilePhaseT :: CompileRun n u i e -> m (a, CompileRun n u i e)}

Instances

(CompileRunner state n pos loc u i e m, MonadState s m) => MonadState s (CompilePhaseT n u i e m) Source # 

Methods

get :: CompilePhaseT n u i e m s #

put :: s -> CompilePhaseT n u i e m () #

state :: (s -> (a, s)) -> CompilePhaseT n u i e m a #

(CompileRunner state n pos loc u i e m, MonadError e' m) => MonadError e' (CompilePhaseT n u i e m) Source # 

Methods

throwError :: e' -> CompilePhaseT n u i e m a #

catchError :: CompilePhaseT n u i e m a -> (e' -> CompilePhaseT n u i e m a) -> CompilePhaseT n u i e m a #

MonadTrans (CompilePhaseT n u i e) Source # 

Methods

lift :: Monad m => m a -> CompilePhaseT n u i e m a #

CompileRunner state n pos loc u i e m => Monad (CompilePhaseT n u i e m) Source # 

Methods

(>>=) :: CompilePhaseT n u i e m a -> (a -> CompilePhaseT n u i e m b) -> CompilePhaseT n u i e m b #

(>>) :: CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b -> CompilePhaseT n u i e m b #

return :: a -> CompilePhaseT n u i e m a #

fail :: String -> CompilePhaseT n u i e m a #

CompileRunner state n pos loc u i e m => Functor (CompilePhaseT n u i e m) Source # 

Methods

fmap :: (a -> b) -> CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b #

(<$) :: a -> CompilePhaseT n u i e m b -> CompilePhaseT n u i e m a #

(CompileRunner state n pos loc u i e m, MonadFix m) => MonadFix (CompilePhaseT n u i e m) Source # 

Methods

mfix :: (a -> CompilePhaseT n u i e m a) -> CompilePhaseT n u i e m a #

CompileRunner state n pos loc u i e m => Applicative (CompilePhaseT n u i e m) Source # 

Methods

pure :: a -> CompilePhaseT n u i e m a #

(<*>) :: CompilePhaseT n u i e m (a -> b) -> CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b #

liftA2 :: (a -> b -> c) -> CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b -> CompilePhaseT n u i e m c #

(*>) :: CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b -> CompilePhaseT n u i e m b #

(<*) :: CompilePhaseT n u i e m a -> CompilePhaseT n u i e m b -> CompilePhaseT n u i e m a #

(CompileRunner state n pos loc u i e m, MonadIO m) => MonadIO (CompilePhaseT n u i e m) Source # 

Methods

liftIO :: IO a -> CompilePhaseT n u i e m a #

class CompileUnit u n l s | u -> n l s where Source #

Per compile unit

Methods

cuDefault :: u Source #

cuFPath :: u -> FPath Source #

cuUpdFPath :: FPath -> u -> u Source #

cuLocation :: u -> l Source #

cuUpdLocation :: l -> u -> u Source #

cuKey :: u -> n Source #

cuUpdKey :: n -> u -> u Source #

cuState :: u -> s Source #

cuUpdState :: s -> u -> u Source #

cuImports :: u -> [n] Source #

cuParticipation :: u -> [CompileParticipation] Source #

class CompileUnitState s where Source #

State of a compile unit

Minimal complete definition

cusDefault, cusUnk, cusIsUnk, cusIsImpKnown

class CompileRunError e p | e -> p where Source #

Error reporting

Methods

crePPErrL :: [e] -> PP_Doc Source #

creMkNotFoundErrL :: p -> String -> [String] -> [FileSuffix] -> [e] Source #

creAreFatal :: [e] -> Bool Source #

class CompileModName n where Source #

Conversion from string to module name

Minimal complete definition

mkCMNm

Methods

mkCMNm :: String -> n Source #

class CompileRunStateInfo i n p where Source #

Minimal complete definition

crsiImportPosOfCUKey

Methods

crsiImportPosOfCUKey :: n -> i -> p Source #

class FileLocatable x loc | loc -> x where Source #

Minimal complete definition

fileLocation, noFileLocation

Methods

fileLocation :: x -> loc Source #

noFileLocation :: loc Source #

mkEmptyCompileRun :: n -> i -> CompileRun n u i e Source #

crCU :: (Show n, Ord n) => n -> CompileRun n u i e -> u Source #

crMbCU :: Ord n => n -> CompileRun n u i e -> Maybe u Source #

crMbCUNotForwarded :: Ord n => n -> CompileRun n u i e -> Maybe u Source #

crMbCUForwarded :: Ord n => n -> CompileRun n u i e -> Maybe u Source #

ppCR :: (PP n, PP u) => CompileRun n u i e -> PP_Doc Source #

cpUpdStateInfo :: CompileRunner s n p l u i e m => (i -> i) -> CompilePhaseT n u i e m () Source #

cpUpdSI :: CompileRunner s n p l u i e m => (i -> i) -> CompilePhaseT n u i e m () Source #

cpUpdCU :: (Show n, Ord n, CompileRunner s n p l u i e m) => n -> (u -> u) -> CompilePhaseT n u i e m () Source #

cpUpdCUWithKey :: (Show n, Ord n, CompileRunner s n p l u i e m) => n -> (n -> u -> (n, u)) -> CompilePhaseT n u i e m n Source #

cpMbCU :: (Ord n, CompileRunner s n p l u i e m) => n -> CompilePhaseT n u i e m (Maybe u) Source #

lookup unit

cpSetFail :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpSetStop :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpSetStopSeq :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpSetStopAllSeq :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpSetOk :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpSetErrs :: CompileRunner s n p l u i e m => [e] -> CompilePhaseT n u i e m () Source #

cpSetLimitErrs :: CompileRunner s n p l u i e m => Int -> String -> [e] -> CompilePhaseT n u i e m () Source #

cpSetLimitErrsWhen :: CompileRunner s n p l u i e m => Int -> String -> [e] -> CompilePhaseT n u i e m () Source #

cpSetInfos :: CompileRunner s n p l u i e m => String -> Bool -> [e] -> CompilePhaseT n u i e m () Source #

cpSetCompileOrder :: CompileRunner s n p l u i e m => [[n]] -> CompilePhaseT n u i e m () Source #

cpSeq :: CompileRunner s n p l u i e m => [CompilePhaseT n u i e m ()] -> CompilePhaseT n u i e m () Source #

cpSeqWhen :: CompileRunner s n p l u i e m => Bool -> [CompilePhaseT n u i e m ()] -> CompilePhaseT n u i e m () Source #

cpEmpty :: CompileRunner s n p l u i e m => CompilePhaseT n u i e m () Source #

cpFindFilesForFPathInLocations Source #

Arguments

:: (Ord n, Show n, FPATH n, FileLocatable u loc, Show loc, CompileRunner s n p loc u i e m) 
=> (loc -> n -> FPath -> [(loc, FPath, [e])])

get the locations for a name, possibly with errors

-> ((FPath, loc, [e]) -> res)

construct a result given a found location

-> Bool

stop when first is found

-> [(FileSuffix, s)]

suffix info

-> [loc]

locations to search

-> Maybe n

possibly a module name

-> Maybe FPath

possibly a file path

-> CompilePhaseT n u i e m [res] 

cpFindFilesForFPath :: forall e n u p i s m. (Ord n, Show n, FPATH n, FileLocatable u String, CompileRunner s n p String u i e m) => Bool -> [(FileSuffix, s)] -> [String] -> Maybe n -> Maybe FPath -> CompilePhaseT n u i e m [FPath] Source #

cpFindFileForFPath :: (Ord n, Show n, FPATH n, FileLocatable u String, CompileRunner s n p String u i e m) => [(FileSuffix, s)] -> [String] -> Maybe n -> Maybe FPath -> CompilePhaseT n u i e m (Maybe FPath) Source #

cpImportGather :: (Show n, Ord n, CompileRunner s n p l u i e m) => (n -> CompilePhaseT n u i e m ()) -> n -> CompilePhaseT n u i e m () Source #

Abbreviation for cpImportGatherFromMods for 1 module

cpImportGatherFromMods :: (Show n, Ord n, CompileRunner s n p l u i e m) => (Maybe prev -> n -> CompilePhaseT n u i e m (x, Maybe prev)) -> [n] -> CompilePhaseT n u i e m () Source #

recursively extract imported modules

cpImportGatherFromModsWithImp :: (Show n, Ord n, CompileRunner s n p l u i e m) => (u -> [n]) -> (Maybe prev -> n -> CompilePhaseT n u i e m (x, Maybe prev)) -> [n] -> CompilePhaseT n u i e m () Source #

recursively extract imported modules, providing a way to import + do the import

cpPP :: (PP n, PP u, CompileRunner s n p l u i e m) => String -> CompilePhaseT n u i e m () Source #

cpPPMsg :: (PP msg, CompileRunner s n p l u i e m) => msg -> CompilePhaseT n u i e m () Source #

forgetM :: Monad m => m a -> m () Source #