{-# LANGUAGE TypeFamilies #-}
module Development.IDE.Plugin.CodeAction.RuleTypes
    (PackageExports(..)
    ,IdentInfo(..)
    ) where

import Data.Hashable (Hashable)
import Control.DeepSeq (NFData)
import Data.Binary (Binary)
import Development.IDE.GHC.Util
import Development.IDE.Types.Exports
import Development.Shake (RuleResult)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)

-- Rule type for caching Package Exports

type instance RuleResult PackageExports = ExportsMap

newtype PackageExports = PackageExports HscEnvEq
    deriving (PackageExports -> PackageExports -> Bool
(PackageExports -> PackageExports -> Bool)
-> (PackageExports -> PackageExports -> Bool) -> Eq PackageExports
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PackageExports -> PackageExports -> Bool
$c/= :: PackageExports -> PackageExports -> Bool
== :: PackageExports -> PackageExports -> Bool
$c== :: PackageExports -> PackageExports -> Bool
Eq, Int -> PackageExports -> ShowS
[PackageExports] -> ShowS
PackageExports -> String
(Int -> PackageExports -> ShowS)
-> (PackageExports -> String)
-> ([PackageExports] -> ShowS)
-> Show PackageExports
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PackageExports] -> ShowS
$cshowList :: [PackageExports] -> ShowS
show :: PackageExports -> String
$cshow :: PackageExports -> String
showsPrec :: Int -> PackageExports -> ShowS
$cshowsPrec :: Int -> PackageExports -> ShowS
Show, Typeable, (forall x. PackageExports -> Rep PackageExports x)
-> (forall x. Rep PackageExports x -> PackageExports)
-> Generic PackageExports
forall x. Rep PackageExports x -> PackageExports
forall x. PackageExports -> Rep PackageExports x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PackageExports x -> PackageExports
$cfrom :: forall x. PackageExports -> Rep PackageExports x
Generic)

instance Hashable PackageExports
instance NFData   PackageExports
instance Binary   PackageExports