{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
module Development.IDE.Core.RuleTypes(
module Development.IDE.Core.RuleTypes
) where
import Control.DeepSeq
import Data.Binary
import Development.IDE.Import.DependencyInformation
import Development.IDE.GHC.Util
import Development.IDE.Types.Location
import Data.Hashable
import Data.Typeable
import qualified Data.Set as S
import Development.Shake
import GHC.Generics (Generic)
import GHC
import Module (InstalledUnitId)
import HscTypes (CgGuts, Linkable, HomeModInfo, ModDetails)
import Development.IDE.GHC.Compat
import Development.IDE.Spans.Type
type instance RuleResult GetParsedModule = ParsedModule
type instance RuleResult GetDependencyInformation = DependencyInformation
type instance RuleResult GetDependencies = TransitiveDependencies
data TcModuleResult = TcModuleResult
{ tmrModule :: TypecheckedModule
, tmrModInfo :: HomeModInfo
}
instance Show TcModuleResult where
show = show . pm_mod_summary . tm_parsed_module . tmrModule
instance NFData TcModuleResult where
rnf = rwhnf
type instance RuleResult TypeCheck = TcModuleResult
type instance RuleResult GetSpanInfo = [SpanInfo]
type instance RuleResult GenerateCore = (SafeHaskellMode, CgGuts, ModDetails)
type instance RuleResult GenerateByteCode = Linkable
type instance RuleResult GhcSession = HscEnvEq
type instance RuleResult GetLocatedImports = ([(Located ModuleName, Maybe NormalizedFilePath)], S.Set InstalledUnitId)
type instance RuleResult ReportImportCycles = ()
type instance RuleResult GetHieFile = HieFile
data GetParsedModule = GetParsedModule
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetParsedModule
instance NFData GetParsedModule
instance Binary GetParsedModule
data GetLocatedImports = GetLocatedImports
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetLocatedImports
instance NFData GetLocatedImports
instance Binary GetLocatedImports
data GetDependencyInformation = GetDependencyInformation
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetDependencyInformation
instance NFData GetDependencyInformation
instance Binary GetDependencyInformation
data ReportImportCycles = ReportImportCycles
deriving (Eq, Show, Typeable, Generic)
instance Hashable ReportImportCycles
instance NFData ReportImportCycles
instance Binary ReportImportCycles
data GetDependencies = GetDependencies
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetDependencies
instance NFData GetDependencies
instance Binary GetDependencies
data TypeCheck = TypeCheck
deriving (Eq, Show, Typeable, Generic)
instance Hashable TypeCheck
instance NFData TypeCheck
instance Binary TypeCheck
data GetSpanInfo = GetSpanInfo
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetSpanInfo
instance NFData GetSpanInfo
instance Binary GetSpanInfo
data GenerateCore = GenerateCore
deriving (Eq, Show, Typeable, Generic)
instance Hashable GenerateCore
instance NFData GenerateCore
instance Binary GenerateCore
data GenerateByteCode = GenerateByteCode
deriving (Eq, Show, Typeable, Generic)
instance Hashable GenerateByteCode
instance NFData GenerateByteCode
instance Binary GenerateByteCode
data GhcSession = GhcSession
deriving (Eq, Show, Typeable, Generic)
instance Hashable GhcSession
instance NFData GhcSession
instance Binary GhcSession
data GetHieFile = GetHieFile FilePath
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetHieFile
instance NFData GetHieFile
instance Binary GetHieFile