module UHC.Light.Compiler.Gam.ClGam ( ClGamInfo (..), ClGam, emptyCLGI , initClGam ) where import UHC.Util.Pretty import UHC.Util.Utils import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Base.TermLike import UHC.Light.Compiler.Base.HsName.Builtin import UHC.Light.Compiler.Ty import UHC.Light.Compiler.Ty.Pretty import UHC.Light.Compiler.Gam import Control.Monad import UHC.Util.Binary import UHC.Util.Serialize {-# LINE 37 "src/ehc/Gam/ClGam.chs" #-} -- If this changes, also change {%{EH}ConfigInternalVersions} data ClGamInfo = ClGamInfo { clgiPrToEvidTy :: !Ty -- mapping from predicate type -> dictionary structure record, encoded as function , clgiRuleTy :: !Ty , clgiDfltDictNm :: !HsName -- dictionary name of default instance fields constructing function , clgiDictTag :: !CTag -- tag of dictionary , clgiGenerDerivableL :: [(HsName,HsName)] -- list of fields with default value which can be derived using generic deriving } deriving Show type ClGam = Gam HsName ClGamInfo emptyCLGI = ClGamInfo Ty_Any Ty_Any hsnUnknown CTagRec [] {-# LINE 69 "src/ehc/Gam/ClGam.chs" #-} deriving instance Typeable ClGamInfo deriving instance Data ClGamInfo {-# LINE 74 "src/ehc/Gam/ClGam.chs" #-} instance PP ClGamInfo where pp clgi = pp (clgiDfltDictNm clgi) >#< "::" >#< ppTy (clgiRuleTy clgi) >#< "::" >#< ppTy (clgiPrToEvidTy clgi) {-# LINE 79 "src/ehc/Gam/ClGam.chs" #-} initClGam = assocLToGam [ (hsnPrArrow, emptyCLGI) ] {-# LINE 94 "src/ehc/Gam/ClGam.chs" #-} instance Serialize ClGamInfo where sput (ClGamInfo a b c d e) = sput a >> sput b >> sput c >> sput d >> sput e sget = liftM5 ClGamInfo sget sget sget sget sget