HaRe-0.8.3.0: src/Language/Haskell/Refact/API.hs
-- | This module should provide all that is required to write further
-- refactorings.
-- NOTE: it is currently unstable, and may change without notice on minor version number bumps
module Language.Haskell.Refact.API
(
-- * from `Language.Haskell.Refact.Utils.Monad`
ParseResult
, VerboseLevel(..)
, RefactSettings(..)
, TargetModule
, RefactFlags(..)
, StateStorage(..)
-- ** The GHC Monad
, RefactGhc
, runRefactGhc
, getRefacSettings
, defaultSettings
, logSettings
, logm
, logDataWithAnns
, logExactprint
, logParsedSource
-- * from `Language.Haskell.Refact.Utils.Utils`
-- ** Managing the GHC / project environment
, parseSourceFileGhc
, getTargetGhc
-- ** The bits that do the work
, runRefacSession
, applyRefac
, refactDone
, ApplyRefacResult
, RefacSource(..)
, nameSybQuery
, fileNameFromModSummary
, getModuleName
, clientModsAndFiles
, serverModsAndFiles
, stripCallStack
-- * from `Language.Haskell.Refact.Utils.MonadFunctions`
-- ** Conveniences for state access
, getTypecheckedModule
, RefacResult(..)
, getRefactStreamModified
, setRefactStreamModified
, getRefactInscopes
, getRefactRenamed
, putRefactRenamed
, getRefactParsed
, putRefactParsed
, putParsedModule
, clearParsedModule
, getRefactFileName
, getRefactTargetModule
, getRefactNameMap
, getRefactModule
, getRefactModuleName
-- * New ghc-exactprint interfacing
-- , refactRunTransform
, liftT
-- ** State flags for managing generic traversals
, getRefactDone
, setRefactDone
, clearRefactDone
, setStateStorage
, getStateStorage
-- * Parsing source
, parseDeclWithAnns
-- , logm
-- * from `Language.Haskell.Refact.Utils.LocUtils`
, SimpPos
, getGhcLoc
, getGhcLocEnd
, getLocatedStart
, getLocatedEnd
, getStartEndLoc
, startEndLocGhc
, emptyList, nonEmptyList
-- * from `Language.Haskell.Refact.Utils.TypeSyn`
, InScopes
, ghead
, glast
, gtail
, gfromJust
-- * from `Language.Haskell.Refact.Utils.TypeUtils`
-- ** Program Analysis
-- ** Imports and exports
, inScopeInfo, isInScopeAndUnqualified, isInScopeAndUnqualifiedGhc, inScopeNames
, isExported, isExplicitlyExported, modIsExported
, equivalentNameInNewMod
, hsQualifier
-- *** Variable analysis
, isFieldName
, isClassName
, isInstanceName
, hsTypeVbls
, hsNamessRdr
, isDeclaredInRdr
, FreeNames(..),DeclaredNames(..)
, hsFreeAndDeclaredNameStrings
, hsFreeAndDeclaredRdr
, hsFreeAndDeclaredPNs
, getDeclaredVarsRdr
, hsVisibleNamesRdr
, hsFDsFromInsideRdr, hsFDNamesFromInsideRdr, hsFDNamesFromInsideRdrPure
, hsVisibleDsRdr
, rdrName2Name, rdrName2NamePure
-- *** Property checking
,isVarId,isConId,isOperator,isTopLevelPN,isLocalPN,isNonLibraryName -- ,isTopLevelPNT
,isQualifiedPN, isFunOrPatName,isTypeSig
,isFunBindP,isFunBindR,isPatBindP,isPatBindR,isSimplePatBind,isSimplePatDecl
,isComplexPatBind,isComplexPatDecl,isFunOrPatBindP,isFunOrPatBindR
,usedWithoutQualR
,findNameInRdr
,findNamesRdr, findEntity, findEntity'
,sameOccurrence
, findIdForName
, getTypeForName
, definesTypeSigRdr,definesSigDRdr
, sameBindRdr
, UsedByRhs(..)
-- *** Modules and files
, isMainModule
, getModule
-- *** Locations
,defineLoc, useLoc, locToExp
,findLRdrName
-- ,locToName
,locToNameRdrPure
,locToRdrName
,getName
-- * Program transformation
-- *** Adding
,addDecl, addItemsToImport, addItemsToExport, addHiding
,addParamsToDecls, addParamsToSigs, addActualParamsToRhs, addImportDecl, duplicateDecl
-- *** Removing
,rmDecl, rmTypeSig, rmTypeSigs
-- *** Updating
-- ,Update(update)
,rmQualifier,qualifyToplevelName,renamePN, HowToQual(..), autoRenameLocalVar
-- *** Identifiers, expressions, patterns and declarations
, expToNameRdr
, patToNameRdr
, nameToString
, pNtoPat
, definedPNsRdr,definedNamesRdr
, definingDeclsRdrNames, definingDeclsRdrNames', definingSigsRdrNames
, definingTyClDeclsNames
-- *** Others
, divideDecls
, mkRdrName,mkQualifiedRdrName,mkNewGhcName,mkNewName,mkNewToplevelName
, registerRdrName
-- The following functions are not in the the API yet.
, causeNameClashInExports
, declsSybTransform
-- ** Typed AST traversals (added by CMB)
-- ** Miscellous
-- ** from `Language.Haskell.Refact.Utils.GhcUtils`
-- ** SYB versions
, everywhereMStaged'
, everywhereStaged
, everywhereStaged'
, listifyStaged
-- ** Scrap Your Zipper versions
, zeverywhereStaged
, zopenStaged
, zsomewhereStaged
, transZ
, transZM
, zopenStaged'
, ztransformStagedM
-- *** SYZ utilities
, upUntil
, findAbove
-- * from `Language.Haskell.Refact.Utils.GhcVersionSpecific`
, showGhc
, showGhcQual
, prettyprint
, prettyprint2
, ppType
, setGhcContext
-- * from `Language.Haskell.Refact.Utils.TokenUtils`
, NameMap
-- * from `Language.Haskell.Refact.Utils.ExactPrint'`
, replace
, setRefactAnns
, setAnnKeywordDP
, copyAnn
, clearPriorComments
, balanceAllComments
) where
import Language.Haskell.Refact.Utils.ExactPrint
import Language.Haskell.Refact.Utils.GhcUtils
import Language.Haskell.Refact.Utils.GhcVersionSpecific
import Language.Haskell.Refact.Utils.LocUtils
import Language.Haskell.Refact.Utils.Monad
import Language.Haskell.Refact.Utils.MonadFunctions
import Language.Haskell.Refact.Utils.TypeSyn
import Language.Haskell.Refact.Utils.TypeUtils
import Language.Haskell.Refact.Utils.Types
import Language.Haskell.Refact.Utils.Utils
import Language.Haskell.Refact.Utils.Variables
import Language.Haskell.GHC.ExactPrint.Utils