module Language.Haskell.Refact.Utils.Types ( ApplyRefacResult , RefacResult(..) , RefacSource(..) -- * , TreeId(..) , mainTid , TokenCache(..) , SimpPos , SimpSpan , NameMap ) where import qualified GHC as GHC import Language.Haskell.GHC.ExactPrint import qualified Data.Map as Map -- --------------------------------------------------------------------- -- | The result of a refactoring is the file, a flag as to whether it -- was modified, and the updated AST type ApplyRefacResult = ((FilePath, RefacResult), (Anns,GHC.ParsedSource)) data RefacResult = RefacModified | RefacUnmodifed deriving (Show,Ord,Eq) data RefacSource = RSFile FilePath | RSMod GHC.ModSummary | RSAlreadyLoaded -- --------------------------------------------------------------------- data TreeId = TId !Int deriving (Eq,Ord,Show) -- |Identifies the tree carrying the main tokens, not any work in -- progress or deleted ones mainTid :: TreeId mainTid = TId 0 data TokenCache a = TK { tkCache :: !(Map.Map TreeId a) , tkLastTreeId :: !TreeId } deriving (Show) type SimpPos = (Int,Int) -- Line, column type SimpSpan = (SimpPos,SimpPos) -- --------------------------------------------------------------------- type NameMap = Map.Map GHC.SrcSpan GHC.Name