{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
module Development.IDE.Core.RuleTypes(
module Development.IDE.Core.RuleTypes
) where
import Control.DeepSeq
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 (HomeModInfo)
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 = CoreModule
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
data GetLocatedImports = GetLocatedImports
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetLocatedImports
instance NFData GetLocatedImports
data GetDependencyInformation = GetDependencyInformation
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetDependencyInformation
instance NFData GetDependencyInformation
data ReportImportCycles = ReportImportCycles
deriving (Eq, Show, Typeable, Generic)
instance Hashable ReportImportCycles
instance NFData ReportImportCycles
data GetDependencies = GetDependencies
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetDependencies
instance NFData GetDependencies
data TypeCheck = TypeCheck
deriving (Eq, Show, Typeable, Generic)
instance Hashable TypeCheck
instance NFData TypeCheck
data GetSpanInfo = GetSpanInfo
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetSpanInfo
instance NFData GetSpanInfo
data GenerateCore = GenerateCore
deriving (Eq, Show, Typeable, Generic)
instance Hashable GenerateCore
instance NFData GenerateCore
data GhcSession = GhcSession
deriving (Eq, Show, Typeable, Generic)
instance Hashable GhcSession
instance NFData GhcSession
data GetHieFile = GetHieFile FilePath
deriving (Eq, Show, Typeable, Generic)
instance Hashable GetHieFile
instance NFData GetHieFile