... |
... |
@@ -30,7 +30,7 @@ module GHC.Tc.Types( |
30
|
30
|
|
31
|
31
|
-- The environment types
|
32
|
32
|
Env(..),
|
33
|
|
- TcGblEnv(..), TcLclEnv(..), modifyLclCtxt, TcLclCtxt(..),
|
|
33
|
+ TcGblEnv(..), seqTcGblEnv, TcLclEnv(..), modifyLclCtxt, TcLclCtxt(..),
|
34
|
34
|
setLclEnvTcLevel, getLclEnvTcLevel,
|
35
|
35
|
setLclEnvLoc, getLclEnvLoc, lclEnvInGeneratedCode,
|
36
|
36
|
IfGblEnv(..), IfLclEnv(..),
|
... |
... |
@@ -171,10 +171,11 @@ import GHC.Unit.Module.Deps |
171
|
171
|
import GHC.Unit.Module.ModDetails
|
172
|
172
|
|
173
|
173
|
import GHC.Utils.Error
|
174
|
|
-import GHC.Utils.Outputable
|
175
|
174
|
import GHC.Utils.Fingerprint
|
176
|
|
-import GHC.Utils.Panic
|
177
|
175
|
import GHC.Utils.Logger
|
|
176
|
+import GHC.Utils.Misc ( seqList )
|
|
177
|
+import GHC.Utils.Outputable
|
|
178
|
+import GHC.Utils.Panic
|
178
|
179
|
|
179
|
180
|
import GHC.Builtin.Names ( isUnboundName )
|
180
|
181
|
|
... |
... |
@@ -697,6 +698,19 @@ data TcGblEnv |
697
|
698
|
-- ^ See Note [Generating fresh names for FFI wrappers]
|
698
|
699
|
}
|
699
|
700
|
|
|
701
|
+-- | Force the final result bits of a 'TcGblEnv'. This is used
|
|
702
|
+-- to
|
|
703
|
+seqTcGblEnv :: TcGblEnv -> ()
|
|
704
|
+seqTcGblEnv env =
|
|
705
|
+ tcg_type_env env `seq`
|
|
706
|
+ tcg_ann_env env `seq`
|
|
707
|
+ maybe () (`seqList` ()) (tcg_rn_exports env) `seq`
|
|
708
|
+ seqList (tcg_import_decls env) `seq`
|
|
709
|
+ seqList (tcg_merged env) `seq`
|
|
710
|
+ maybe () (`seq` ()) (tcg_rn_decls env) `seq`
|
|
711
|
+ tcg_dus env `seq`
|
|
712
|
+ ()
|
|
713
|
+
|
700
|
714
|
-- NB: topModIdentity, not topModSemantic!
|
701
|
715
|
-- Definition sites of orphan identities will be identity modules, not semantic
|
702
|
716
|
-- modules.
|