summaryrefslogtreecommitdiff
path: root/compiler/deSugar/DsMonad.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/deSugar/DsMonad.hs')
-rw-r--r--compiler/deSugar/DsMonad.hs39
1 files changed, 10 insertions, 29 deletions
diff --git a/compiler/deSugar/DsMonad.hs b/compiler/deSugar/DsMonad.hs
index eac17bfea0..045647f27c 100644
--- a/compiler/deSugar/DsMonad.hs
+++ b/compiler/deSugar/DsMonad.hs
@@ -32,8 +32,8 @@ module DsMonad (
-- Getting and setting pattern match oracle states
getPmDelta, updPmDelta,
- -- Iterations for pm checking
- incrCheckPmIterDs, resetPmIterDs, dsGetCompleteMatches,
+ -- Get COMPLETE sets of a TyCon
+ dsGetCompleteMatches,
-- Warnings and errors
DsWarning, warnDs, warnIfSetDs, errDs, errDsCoreExpr,
@@ -190,8 +190,7 @@ mkDsEnvsFromTcGbl :: MonadIO m
=> HscEnv -> IORef Messages -> TcGblEnv
-> m (DsGblEnv, DsLclEnv)
mkDsEnvsFromTcGbl hsc_env msg_var tcg_env
- = do { pm_iter_var <- liftIO $ newIORef 0
- ; cc_st_var <- liftIO $ newIORef newCostCentreState
+ = do { cc_st_var <- liftIO $ newIORef newCostCentreState
; let dflags = hsc_dflags hsc_env
this_mod = tcg_mod tcg_env
type_env = tcg_type_env tcg_env
@@ -200,7 +199,7 @@ mkDsEnvsFromTcGbl hsc_env msg_var tcg_env
complete_matches = hptCompleteSigs hsc_env
++ tcg_complete_matches tcg_env
; return $ mkDsEnvs dflags this_mod rdr_env type_env fam_inst_env
- msg_var pm_iter_var cc_st_var complete_matches
+ msg_var cc_st_var complete_matches
}
runDs :: HscEnv -> (DsGblEnv, DsLclEnv) -> DsM a -> IO (Messages, Maybe a)
@@ -219,8 +218,7 @@ runDs hsc_env (ds_gbl, ds_lcl) thing_inside
-- | Run a 'DsM' action in the context of an existing 'ModGuts'
initDsWithModGuts :: HscEnv -> ModGuts -> DsM a -> IO (Messages, Maybe a)
initDsWithModGuts hsc_env guts thing_inside
- = do { pm_iter_var <- newIORef 0
- ; cc_st_var <- newIORef newCostCentreState
+ = do { cc_st_var <- newIORef newCostCentreState
; msg_var <- newIORef emptyMessages
; let dflags = hsc_dflags hsc_env
type_env = typeEnvFromEntities ids (mg_tcs guts) (mg_fam_insts guts)
@@ -235,8 +233,8 @@ initDsWithModGuts hsc_env guts thing_inside
ids = concatMap bindsToIds (mg_binds guts)
envs = mkDsEnvs dflags this_mod rdr_env type_env
- fam_inst_env msg_var pm_iter_var
- cc_st_var complete_matches
+ fam_inst_env msg_var cc_st_var
+ complete_matches
; runDs hsc_env envs thing_inside
}
@@ -264,9 +262,9 @@ initTcDsForSolver thing_inside
thing_inside }
mkDsEnvs :: DynFlags -> Module -> GlobalRdrEnv -> TypeEnv -> FamInstEnv
- -> IORef Messages -> IORef Int -> IORef CostCentreState
- -> [CompleteMatch] -> (DsGblEnv, DsLclEnv)
-mkDsEnvs dflags mod rdr_env type_env fam_inst_env msg_var pmvar cc_st_var
+ -> IORef Messages -> IORef CostCentreState -> [CompleteMatch]
+ -> (DsGblEnv, DsLclEnv)
+mkDsEnvs dflags mod rdr_env type_env fam_inst_env msg_var cc_st_var
complete_matches
= let if_genv = IfGblEnv { if_doc = text "mkDsEnvs",
if_rec_types = Just (mod, return type_env) }
@@ -285,7 +283,6 @@ mkDsEnvs dflags mod rdr_env type_env fam_inst_env msg_var pmvar cc_st_var
lcl_env = DsLclEnv { dsl_meta = emptyNameEnv
, dsl_loc = real_span
, dsl_delta = initDelta
- , dsl_pm_iter = pmvar
}
in (gbl_env, lcl_env)
@@ -393,22 +390,6 @@ getPmDelta = do { env <- getLclEnv; return (dsl_delta env) }
updPmDelta :: Delta -> DsM a -> DsM a
updPmDelta delta = updLclEnv (\env -> env { dsl_delta = delta })
--- | Increase the counter for elapsed pattern match check iterations.
--- If the current counter is already over the limit, fail
-incrCheckPmIterDs :: DsM Int
-incrCheckPmIterDs = do
- env <- getLclEnv
- cnt <- readTcRef (dsl_pm_iter env)
- max_iters <- maxPmCheckIterations <$> getDynFlags
- if cnt >= max_iters
- then failM
- else updTcRef (dsl_pm_iter env) (+1)
- return cnt
-
--- | Reset the counter for pattern match check iterations to zero
-resetPmIterDs :: DsM ()
-resetPmIterDs = do { env <- getLclEnv; writeTcRef (dsl_pm_iter env) 0 }
-
getSrcSpanDs :: DsM SrcSpan
getSrcSpanDs = do { env <- getLclEnv
; return (RealSrcSpan (dsl_loc env)) }