packages feed

uhc-light-1.1.9.2: src/UHC/Light/Compiler/Gam/FixityGam.hs

module UHC.Light.Compiler.Gam.FixityGam
( FixityGam, FixityGamInfo (..), defaultFixityGamInfo
, fixityGamLookup
, initFixityGam )
where
import UHC.Util.Pretty
import UHC.Util.Utils
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.Gam
import UHC.Light.Compiler.Error
import qualified Data.Set as Set
import UHC.Light.Compiler.VarMp
import UHC.Light.Compiler.Substitutable
import UHC.Light.Compiler.Ty.Trf.Quantify
import Control.Monad
import UHC.Util.Binary
import UHC.Util.Serialize





{-# LINE 40 "src/ehc/Gam/FixityGam.chs" #-}
-- If this changes, also change {%{EH}ConfigInternalVersions}
data FixityGamInfo = FixityGamInfo { fgiPrio :: !Int, fgiFixity :: !Fixity } deriving Show

defaultFixityGamInfo = FixityGamInfo fixityMaxPrio Fixity_Infixl

type FixityGam = Gam HsName FixityGamInfo

{-# LINE 49 "src/ehc/Gam/FixityGam.chs" #-}
deriving instance Typeable FixityGamInfo

{-# LINE 53 "src/ehc/Gam/FixityGam.chs" #-}
fixityGamLookup :: HsName -> FixityGam -> FixityGamInfo
fixityGamLookup nm fg = maybe defaultFixityGamInfo id $ gamLookup nm fg

{-# LINE 62 "src/ehc/Gam/FixityGam.chs" #-}
initFixityGam :: FixityGam
initFixityGam
  = assocLToGam
      [ (hsnArrow  ,  FixityGamInfo 1 Fixity_Infixr)
      , (hsnPrArrow,  FixityGamInfo 2 Fixity_Infixr)
      , (hsnEqTilde,  FixityGamInfo 3 Fixity_Infix )
      ]

{-# LINE 88 "src/ehc/Gam/FixityGam.chs" #-}
instance Serialize FixityGamInfo where
  sput (FixityGamInfo a b) = sput a >> sput b
  sget = liftM2 FixityGamInfo sget sget