-{-% DrIFT (Automatic class derivations for Haskell) v1.1 %-}
-{-% DrIFT (Automatic class derivations for Haskell) v1.1 %-}
--
--- (c) The University of Glasgow 2002
+-- (c) The University of Glasgow 2002-2006
--
-- Binary interface file support.
#include "HsVersions.h"
-import TcRnMonad ( TcRnIf, ioToIOEnv )
+import TcRnMonad
import IfaceEnv
import HscTypes
import BasicTypes
import NewDemand
import IfaceSyn
-import Module ( ModuleName, mkModule, modulePackageId, moduleName )
+import Module
import Name
-import OccName ( OccName )
+import OccName
import VarEnv
-import InstEnv ( OverlapFlag(..) )
-import Class ( DefMeth(..) )
-import DynFlags ( DynFlags )
-import UniqFM ( UniqFM, eltsUFM )
-import UniqSupply ( uniqFromSupply, splitUniqSupply )
+import InstEnv
+import Class
+import DynFlags
+import UniqFM
+import UniqSupply
import CostCentre
-import StaticFlags ( opt_HiVersion, v_Build_tag )
-import Type ( Kind,
- isLiftedTypeKind, isUnliftedTypeKind, isOpenTypeKind,
- isArgTypeKind, isUbxTupleKind, liftedTypeKind,
- unliftedTypeKind, openTypeKind, argTypeKind,
- ubxTupleKind, mkArrowKind, splitFunTy_maybe )
-import PackageConfig ( PackageId )
+import StaticFlags
+import PackageConfig
import Panic
import Binary
-import SrcLoc ( noSrcLoc )
+import SrcLoc
import Util
-import ErrUtils ( debugTraceMsg )
-import Config ( cGhcUnregisterised )
-import FastMutInt ( readFastMutInt )
-
-import Data.Word ( Word32 )
-import Data.Array ( Array, array, elems, listArray, (!) )
-import DATA_IOREF
-import EXCEPTION ( throwDyn )
-import Monad ( when )
+import ErrUtils
+import Config
+import FastMutInt
import Outputable
-#include "HsVersions.h"
+import Data.Word
+import Data.Array
+import Data.IORef
+import Control.Exception
+import Control.Monad
-- ---------------------------------------------------------------------------
-- Reading and writing binary interface files
mi_boot = is_boot,
mi_mod_vers = mod_vers,
mi_orphan = orphan,
+ mi_finsts = hasFamInsts,
mi_deps = deps,
mi_usages = usages,
mi_exports = exports,
put_ bh is_boot
put_ bh mod_vers
put_ bh orphan
+ put_ bh hasFamInsts
lazyPut bh deps
lazyPut bh usages
put_ bh exports
is_boot <- get bh
mod_vers <- get bh
orphan <- get bh
+ hasFamInsts <- get bh
deps <- lazyGet bh
usages <- {-# SCC "bin_usages" #-} lazyGet bh
exports <- {-# SCC "bin_exports" #-} get bh
mi_boot = is_boot,
mi_mod_vers = mod_vers,
mi_orphan = orphan,
+ mi_finsts = hasFamInsts,
mi_deps = deps,
mi_usages = usages,
mi_exports = exports,
put_ bh deps = do put_ bh (dep_mods deps)
put_ bh (dep_pkgs deps)
put_ bh (dep_orphs deps)
+ put_ bh (dep_finsts deps)
get bh = do ms <- get bh
ps <- get bh
os <- get bh
- return (Deps { dep_mods = ms, dep_pkgs = ps, dep_orphs = os })
+ fis <- get bh
+ return (Deps { dep_mods = ms, dep_pkgs = ps, dep_orphs = os,
+ dep_finsts = fis })
instance (Binary name) => Binary (GenAvailInfo name) where
put_ bh (Avail aa) = do