X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FBinIface.hs;h=782badad04400f45f142c138406f90eea5592022;hb=ab5b8aa357c685a7c702262903bce04c66f79156;hp=3e79a3947cce4f55d12763e278bf68d04f32e014;hpb=b00b5bc04ff36a551552470060064f0b7d84ca30;p=ghc-hetmet.git diff --git a/compiler/iface/BinIface.hs b/compiler/iface/BinIface.hs index 3e79a39..782bada 100644 --- a/compiler/iface/BinIface.hs +++ b/compiler/iface/BinIface.hs @@ -1,7 +1,5 @@ -{-% 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. @@ -9,45 +7,38 @@ module BinIface ( writeBinIface, readBinIface, v_IgnoreHiWay ) where #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 @@ -260,6 +251,7 @@ instance Binary ModIface where mi_boot = is_boot, mi_mod_vers = mod_vers, mi_orphan = orphan, + mi_finsts = hasFamInsts, mi_deps = deps, mi_usages = usages, mi_exports = exports, @@ -278,6 +270,7 @@ instance Binary ModIface where put_ bh is_boot put_ bh mod_vers put_ bh orphan + put_ bh hasFamInsts lazyPut bh deps lazyPut bh usages put_ bh exports @@ -314,6 +307,7 @@ instance Binary ModIface where 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 @@ -330,6 +324,7 @@ instance Binary ModIface where mi_boot = is_boot, mi_mod_vers = mod_vers, mi_orphan = orphan, + mi_finsts = hasFamInsts, mi_deps = deps, mi_usages = usages, mi_exports = exports, @@ -364,11 +359,14 @@ instance Binary Dependencies where 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 @@ -1013,7 +1011,6 @@ instance Binary IfaceNote where 4 -> do ac <- get bh return (IfaceCoreNote ac) - ------------------------------------------------------------------------- -- IfaceDecl and friends -------------------------------------------------------------------------