Safe Haskell | None |
---|---|
Language | Haskell2010 |
- 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
RefactorCtx | |
|
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
RefactorT | |
|
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.
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 # | |