haskell-tools-refactor-0.9.0.0: Refactoring Tool for Haskell

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.Tools.Refactor.Utils.Monadic

Description

Basic utilities and types for defining refactorings.

Synopsis

Documentation

runRefactor :: ModuleDom dom -> [ModuleDom dom] -> Refactoring dom -> Ghc (Either String [RefactorChange dom]) Source #

Performs the given refactoring, transforming it into a Ghc action

localRefactoring :: HasModuleInfo dom => LocalRefactoring dom -> Refactoring dom Source #

Wraps a refactoring that only affects one module. Performs the per-module finishing touches.

localRefactoringRes :: HasModuleInfo dom => ((UnnamedModule dom -> UnnamedModule dom) -> a -> a) -> UnnamedModule dom -> LocalRefactor dom a -> Refactor a Source #

Transform the result of the local refactoring

insertText :: SourceInfoTraversal p => [(SrcSpan, String, String)] -> p dom SrcTemplateStage -> p dom SrcTemplateStage Source #

Re-inserts the elements removed from the AST that should be kept (for example preprocessor directives)

addGeneratedImports :: [Name] -> Ann UModule dom SrcTemplateStage -> Ann UModule dom SrcTemplateStage Source #

Adds the imports that bring names into scope that are needed by the refactoring

referenceName' :: (HasImportInfo dom, HasModuleInfo dom) => ([String] -> Name -> Ann nt dom SrcTemplateStage) -> Name -> LocalRefactor 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 UImportDecl dom SrcTemplateStage] -> Ann nt dom SrcTemplateStage Source #

Reference the name by the shortest suitable import