| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Haskell.Tools.Refactor.RefactorBase
Contents
- data RefactorCtx dom = RefactorCtx {
- refModuleName :: Module
- refCtxImports :: [Ann ImportDecl dom SrcTemplateStage]
- runRefactor :: SemanticInfo' dom SameInfoModuleCls ~ ModuleInfo n => Ann Module dom SrcTemplateStage -> (Ann Module dom SrcTemplateStage -> RefactoredModule dom) -> Ghc (Either String (Ann Module dom SrcTemplateStage))
- addGeneratedImports :: Monad m => ReaderT (RefactorCtx dom) m (Ann Module dom SrcTemplateStage, [Name]) -> ReaderT (RefactorCtx dom) m (Ann Module dom SrcTemplateStage)
- newtype RefactorT dom m a = RefactorT {
- fromRefactorT :: WriterT [Name] (ReaderT (RefactorCtx dom) m) a
- refactError :: String -> Refactor n a
- type Refactor dom = RefactorT dom (ExceptT String Ghc)
- type RefactoredModule dom = Refactor dom (Ann Module dom SrcTemplateStage)
- registeredNamesFromPrelude :: [Name]
- otherNamesFromPrelude :: [String]
- qualifiedName :: Name -> String
- referenceName :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => n -> Refactor dom (Ann Name dom SrcTemplateStage)
- referenceOperator :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => n -> Refactor dom (Ann Operator dom SrcTemplateStage)
- referenceName' :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => ([String] -> Name -> Ann nt dom SrcTemplateStage) -> n -> Refactor dom (Ann nt dom SrcTemplateStage)
- referenceBy :: ([String] -> Name -> Ann nt dom SrcTemplateStage) -> Name -> [Ann ImportDecl dom SrcTemplateStage] -> Ann nt dom SrcTemplateStage
- data NameClass
- classifyName :: Name -> Refactor dom NameClass
- nameValid :: NameClass -> String -> Bool
- isIdStartChar :: Char -> Bool
- isOperatorChar :: Char -> Bool
Documentation
data RefactorCtx dom Source #
The information a refactoring can use
Constructors
| RefactorCtx | |
Fields
| |
Instances
| Monad m => MonadReader (RefactorCtx dom) (RefactorT dom m) Source # | |
runRefactor :: SemanticInfo' dom SameInfoModuleCls ~ ModuleInfo n => Ann Module dom SrcTemplateStage -> (Ann Module dom SrcTemplateStage -> RefactoredModule dom) -> Ghc (Either String (Ann Module dom SrcTemplateStage)) Source #
Performs the given refactoring, transforming it into a Ghc action
addGeneratedImports :: Monad m => ReaderT (RefactorCtx dom) m (Ann Module dom SrcTemplateStage, [Name]) -> ReaderT (RefactorCtx dom) m (Ann Module dom SrcTemplateStage) Source #
Adds the imports that bring names into scope that are needed by the refactoring
newtype RefactorT dom m a Source #
Input and output information for the refactoring
Constructors
| RefactorT | |
Fields
| |
Instances
| MonadTrans (RefactorT dom) Source # | |
| Monad m => MonadReader (RefactorCtx dom) (RefactorT dom m) Source # | |
| Monad m => MonadWriter [Name] (RefactorT dom m) Source # | |
| Monad m => Monad (RefactorT dom m) Source # | |
| Functor m => Functor (RefactorT dom m) Source # | |
| Applicative m => Applicative (RefactorT dom m) Source # | |
| MonadIO m => MonadIO (RefactorT dom m) Source # | |
| GhcMonad m => GhcMonad (RefactorT dom m) Source # | |
| (Monad m, HasDynFlags m) => HasDynFlags (RefactorT dom m) Source # | |
| ExceptionMonad m => ExceptionMonad (RefactorT dom m) Source # | |
refactError :: String -> Refactor n a Source #
type RefactoredModule dom = Refactor dom (Ann Module dom SrcTemplateStage) Source #
qualifiedName :: Name -> String Source #
referenceName :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => n -> Refactor dom (Ann Name dom SrcTemplateStage) Source #
referenceOperator :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => n -> Refactor dom (Ann Operator dom SrcTemplateStage) Source #
referenceName' :: (SemanticInfo' dom SameInfoImportCls ~ ImportInfo n, Eq n, NamedThing n) => ([String] -> Name -> Ann nt dom SrcTemplateStage) -> n -> Refactor dom (Ann nt dom SrcTemplateStage) Source #
Create a name that references the definition. Generates an import if the definition is not yet imported.
referenceBy :: ([String] -> Name -> Ann nt dom SrcTemplateStage) -> Name -> [Ann ImportDecl dom SrcTemplateStage] -> Ann nt dom SrcTemplateStage Source #
Reference the name by the shortest suitable import
Different classes of definitions that have different kind of names.
Constructors
| Variable | Normal value definitions: functions, variables |
| Ctor | Data constructors |
| ValueOperator | Functions with operator-like names |
| DataCtorOperator | Constructors with operator-like names |
| SynonymOperator | Type definitions with operator-like names |
classifyName :: Name -> Refactor dom NameClass Source #
Get which category does a given name belong to
nameValid :: NameClass -> String -> Bool Source #
Check if a given name is valid for a given kind of definition
isIdStartChar :: Char -> Bool Source #
isOperatorChar :: Char -> Bool Source #
Orphan instances
| GhcMonad m => GhcMonad (ExceptT s m) Source # | |
| (GhcMonad m, Monoid s) => GhcMonad (WriterT s m) Source # | |
| ExceptionMonad m => ExceptionMonad (ExceptT s m) Source # | |
| (ExceptionMonad m, Monoid s) => ExceptionMonad (WriterT s m) Source # | |
| GhcMonad m => GhcMonad (ReaderT * s m) Source # | |
| ExceptionMonad m => ExceptionMonad (ReaderT * s m) Source # | |