module GHC.Tc.Types.CtLocEnv (
    CtLocEnv(..)
  , getCtLocEnvLoc
  , getCtLocEnvLvl
  , setCtLocEnvLvl
  , setCtLocRealLoc
  , setCtLocEnvLoc
  , ctLocEnvInGeneratedCode
  ) where
import GHC.Prelude
import GHC.Types.SrcLoc
import GHC.Types.Name.Reader
import GHC.Tc.Types.BasicTypes
import GHC.Tc.Utils.TcType
import GHC.Tc.Types.ErrCtxt
data CtLocEnv = CtLocEnv { CtLocEnv -> [ErrCtxt]
ctl_ctxt :: ![ErrCtxt]
                         , CtLocEnv -> RealSrcSpan
ctl_loc :: !RealSrcSpan
                         , CtLocEnv -> TcBinderStack
ctl_bndrs :: !TcBinderStack
                         , CtLocEnv -> TcLevel
ctl_tclvl :: !TcLevel
                         , CtLocEnv -> Bool
ctl_in_gen_code :: !Bool
                         , CtLocEnv -> LocalRdrEnv
ctl_rdr :: !LocalRdrEnv }
getCtLocEnvLoc :: CtLocEnv -> RealSrcSpan
getCtLocEnvLoc :: CtLocEnv -> RealSrcSpan
getCtLocEnvLoc = CtLocEnv -> RealSrcSpan
ctl_loc
getCtLocEnvLvl :: CtLocEnv -> TcLevel
getCtLocEnvLvl :: CtLocEnv -> TcLevel
getCtLocEnvLvl = CtLocEnv -> TcLevel
ctl_tclvl
setCtLocEnvLvl :: CtLocEnv -> TcLevel -> CtLocEnv
setCtLocEnvLvl :: CtLocEnv -> TcLevel -> CtLocEnv
setCtLocEnvLvl CtLocEnv
env TcLevel
lvl = CtLocEnv
env { ctl_tclvl = lvl }
setCtLocRealLoc :: CtLocEnv -> RealSrcSpan -> CtLocEnv
setCtLocRealLoc :: CtLocEnv -> RealSrcSpan -> CtLocEnv
setCtLocRealLoc CtLocEnv
env RealSrcSpan
ss = CtLocEnv
env { ctl_loc = ss }
setCtLocEnvLoc :: CtLocEnv -> SrcSpan -> CtLocEnv
setCtLocEnvLoc :: CtLocEnv -> SrcSpan -> CtLocEnv
setCtLocEnvLoc CtLocEnv
env (RealSrcSpan RealSrcSpan
loc Maybe BufSpan
_)
  = CtLocEnv
env { ctl_loc = loc, ctl_in_gen_code = False }
setCtLocEnvLoc CtLocEnv
env loc :: SrcSpan
loc@(UnhelpfulSpan UnhelpfulSpanReason
_)
  | SrcSpan -> Bool
isGeneratedSrcSpan SrcSpan
loc
  = CtLocEnv
env { ctl_in_gen_code = True }
  | Bool
otherwise
  = CtLocEnv
env
ctLocEnvInGeneratedCode :: CtLocEnv -> Bool
ctLocEnvInGeneratedCode :: CtLocEnv -> Bool
ctLocEnvInGeneratedCode = CtLocEnv -> Bool
ctl_in_gen_code