-- | 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