ariadne-0.1.2.2: Ariadne/Types.hs
module Ariadne.Types where
import Language.Haskell.Names
import qualified Language.Haskell.Names.GlobalSymbolTable as Global
import Language.Haskell.Exts.Annotated
import Distribution.HaskellSuite.Packages
import qualified Distribution.ModuleName as Cabal
import qualified Data.Map as Map
import qualified Ariadne.SrcMap as SrcMap
data NameLevel = TypeLevel | ValueLevel
deriving (Ord, Eq, Show, Enum, Bounded)
-- | Global name index records the correspondence between global names and
-- their definition sites. Not every available global name is necessarily
-- in the index.
type GlobalNameIndex = Map.Map (OrigName, NameLevel) SrcLoc
-- | Data about a module for which we have source code
data ModuleData = ModuleData
{ modulePath :: FilePath
, moduleSource :: Module SrcSpan
, moduleSymbols :: Symbols
, moduleImpTbl :: Global.Table
, moduleResolved :: Module (Scoped SrcSpanInfo)
, moduleGIndex :: GlobalNameIndex
, moduleSrcMap :: SrcMap.SrcMap Origin
}
data Origin
= LocKnown SrcLoc
| LocUnknown ModuleNameS
| ResolveError String
deriving Show