summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/iface/MkIface.lhs8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs
index 6dbcc8c68b..af4d933422 100644
--- a/compiler/iface/MkIface.lhs
+++ b/compiler/iface/MkIface.lhs
@@ -234,7 +234,8 @@ mkIface_ hsc_env maybe_old_fingerprint
-- put exactly the info into the TypeEnv that we want
-- to expose in the interface
- = do { usages <- mkUsageInfo hsc_env this_mod dir_imp_mods used_names
+ = do { usages <- mkUsageInfo hsc_env this_mod dir_imp_mods used_names
+ ; safeInf <- hscGetSafeInf hsc_env
; let { entities = typeEnvElts type_env ;
decls = [ tyThingToIfaceDecl entity
@@ -253,7 +254,10 @@ mkIface_ hsc_env maybe_old_fingerprint
; iface_insts = map instanceToIfaceInst insts
; iface_fam_insts = map famInstToIfaceFamInst fam_insts
; iface_vect_info = flattenVectInfo vect_info
- ; trust_info = (setSafeMode . safeHaskell) dflags
+ ; safeMode = if safeInferOn dflags && not safeInf
+ then Sf_None
+ else safeHaskell dflags
+ ; trust_info = setSafeMode safeMode
; intermediate_iface = ModIface {
mi_module = this_mod,