diff options
author | David Terei <davidterei@gmail.com> | 2011-11-01 22:54:38 -0700 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2011-11-04 13:51:41 -0700 |
commit | baab7c1760fbf2ecf759b152aa2a19c6cd0bc54c (patch) | |
tree | 07e565294b2e5bf0b9f807830fb50eace1455b4a /compiler | |
parent | 70f631ee065a9b05ea128b02cf3666fd948d77cf (diff) | |
download | haskell-baab7c1760fbf2ecf759b152aa2a19c6cd0bc54c.tar.gz |
Correctly handle safe inference in Safe Haskell.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/iface/MkIface.lhs | 8 |
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, |