Safe Haskell | None |
---|---|
Language | Haskell2010 |
Types and instances for monadic refactorings. The refactoring monad provides automatic importing, keeping important source fragments (such as preprocessor pragmas), and providing contextual information for refactorings.
- class Monad m => RefactorMonad m where
- type LocalRefactoring dom = UnnamedModule dom -> LocalRefactor dom (UnnamedModule dom)
- type Refactoring dom = ModuleDom dom -> [ModuleDom dom] -> Refactor [RefactorChange dom]
- type ProjectRefactoring dom = [ModuleDom dom] -> Refactor [RefactorChange dom]
- type LocalRefactor dom = LocalRefactorT dom Refactor
- type Refactor = ExceptT String Ghc
- newtype LocalRefactorT dom m a = LocalRefactorT {
- fromRefactorT :: WriterT [Either Name (SrcSpan, String, String)] (ReaderT (RefactorCtx dom) m) a
- data RefactorCtx dom = RefactorCtx {
- refModuleName :: Module
- refCtxRoot :: Ann UModule dom SrcTemplateStage
- refCtxImports :: [Ann UImportDecl dom SrcTemplateStage]
Documentation
class Monad m => RefactorMonad m where Source #
A monad that can be used to refactor
RefactorMonad Refactor Source # | |
RefactorMonad (LocalRefactor dom) Source # | |
RefactorMonad m => RefactorMonad (StateT s m) Source # | |
RefactorMonad m => RefactorMonad (StateT s m) Source # | |
type LocalRefactoring dom = UnnamedModule dom -> LocalRefactor dom (UnnamedModule dom) Source #
A refactoring that only affects one module
type Refactoring dom = ModuleDom dom -> [ModuleDom dom] -> Refactor [RefactorChange dom] Source #
The type of a refactoring
type ProjectRefactoring dom = [ModuleDom dom] -> Refactor [RefactorChange dom] Source #
The type of a refactoring that affects the whole project.
type LocalRefactor dom = LocalRefactorT dom Refactor Source #
The refactoring monad for a given module
newtype LocalRefactorT dom m a Source #
Input and output information for the refactoring TODO: use multiple states instead of Either
LocalRefactorT | |
|
MonadTrans (LocalRefactorT dom) Source # | |
RefactorMonad (LocalRefactor dom) Source # | |
Monad m => MonadReader (RefactorCtx dom) (LocalRefactorT dom m) Source # | |
Monad m => MonadWriter [Either Name (SrcSpan, String, String)] (LocalRefactorT dom m) Source # | |
Monad m => Monad (LocalRefactorT dom m) Source # | |
Functor m => Functor (LocalRefactorT dom m) Source # | |
Applicative m => Applicative (LocalRefactorT dom m) Source # | |
MonadIO m => MonadIO (LocalRefactorT dom m) Source # | |
GhcMonad m => GhcMonad (LocalRefactorT dom m) Source # | |
(HasDynFlags m, Monad m) => HasDynFlags (LocalRefactorT dom m) Source # | |
ExceptionMonad m => ExceptionMonad (LocalRefactorT dom m) Source # | |
data RefactorCtx dom Source #
The information a refactoring can use
RefactorCtx | |
|
Monad m => MonadReader (RefactorCtx dom) (LocalRefactorT dom m) Source # | |
Some instances missing from GHC
Orphan instances
(GhcMonad m, Monoid s) => GhcMonad (WriterT s m) Source # | |
GhcMonad m => GhcMonad (StateT s m) Source # | |
GhcMonad m => GhcMonad (ExceptT s m) Source # | |
GhcMonad m => GhcMonad (StateT s m) Source # | |
(Monad m, HasDynFlags m) => HasDynFlags (StateT s m) Source # | |
(Monad m, HasDynFlags m) => HasDynFlags (StateT s m) Source # | |
(ExceptionMonad m, Monoid s) => ExceptionMonad (WriterT s m) Source # | |
ExceptionMonad m => ExceptionMonad (StateT s m) Source # | |
ExceptionMonad m => ExceptionMonad (ExceptT s m) Source # | |
ExceptionMonad m => ExceptionMonad (StateT s m) Source # | |
GhcMonad m => GhcMonad (ReaderT * s m) Source # | |
ExceptionMonad m => ExceptionMonad (ReaderT * s m) Source # | |